武汉高职高专-sunnydays
课程报告
课程名称:数字图像处理
专业班级:电子901
姓 名:施 婷
学 号:090640104
日 期:2012.11.9
1.数字图像处理的基本变换
1.1彩色图像变成灰度图像
灰度图像是灰度值从0到255,经由黑——灰——白灰度值变化的图像。
原理:利用Matlab软件自带的函数:rgb2gray,将彩色图像转成灰度图像。
实现程序:
I=imread('');
K=rgb2gray(I);
figure,subplot(1,2,1),imshow(I),title('原图');
subplot(1,2,2),imshow(K),title('灰度图像');
图(1-1)彩色图像变成灰度图像
1.2灰度图像变成2值图像 < br>二值图像是灰度图像的一种特例,它是将整幅图像的灰度等级划分为两种,一种为0,一种为255。(取 一个灰
度值为分界点)
实现程序:
I=imread('');
K=rgb2gray(I);
L=graythresh(K);
BW=im2bw(I,L);
subplot(2,2,1),imshow(K),title('原灰度图像');
subplot(2,2,2),imshow(BW),title('2值图像');
subplot(2,2,3),imhist(K),title('灰度图像直方图');
subplot(2,2,4),imhist(BW),title('转为2值图像的直方图');
图(1-2)灰度图像变成2值图像
右图是左图转化后的2值图像,很明显的看到 只有两种灰度级,这样将原灰度图像中的一些细节就丢失了,比
如以前图像中的背景根头发有很明显的分 界线,而转化成2值图像后,头发和背景由于在灰度分界值得同一侧,故
被处理成为一种灰度级。而面部 也有一些细节损失掉了,从直方图也能看出,处理后的图像只有两种灰度级,这样
处理有种木刻画的效果
。
1.3灰度图像的裁剪
图像的裁剪 是依据改变图像的像素数目来对图像进行裁剪的。裁剪的目的是是突出显示重要部位,裁剪后的图
像的像 素数目比裁剪之前减少。
实现程序:
I=imread('');
K=rgb2gray(I);
J=K(65:280,65:240);
subplot(1,2,1),imshow(K),title('原始灰度图像');
subplot(1,2,2),imshow(J),title('裁剪以后的图像');
图(1-3)灰度图像的裁剪
如上图所示,裁剪之后图像会减小,若是 将裁剪以后的图像放大到跟原始图像一样大小,那么裁剪图像会出现
马赛克。
1.4灰度图像的旋转
图像旋转是对图像的空间角度做调整。图像旋转可以通过直接调用旋转角度的函数来完成。
实现程序:
I=imread('');
K=rgb2gray(I);
M1=imrotate(K,45);
M2=imrotate(K,70);
M3=imrotate(K,90);
figure,subplot(1,4, 1),imshow(K),title('原始灰度图像');
subplot(1,4, 2),imshow(M1),title('旋转45度图像');
subplot(1, 4,3),imshow(M2),title('旋转70度图像');
subplot( 1,4,4),imshow(M3),title('旋转90度图像');
figure ,subplot(1,4,1),imhist(K),title('原始灰度直方图');
subplot(1,4,2),imhist(M1),title('旋转45度直方图');
subplot(1,4,3),imhist(M2),title('旋转70度直方图');
subplot(1,4,4),imhist(M3),title('旋转90度直方图') ;
图(1-4a)与绘图图像的旋转
从以上图像的寻转过程可以看到, 在中间两幅图中会出现黑色边角,但实际照片中的像素值没有改变。旋转只
是对同享空间上做了变换,并 不影响原照片的灰度级。
图(1-4b)旋转直方图
从直方图可以看出,旋转之 前和旋转九十度的图像的直方图并没有改变,只说明图像和直方图并不是一一对应的关系,一个直方
图可 能有好多个图像与之对应。而中间两幅图像也是由于旋转以后增加的黑色边角似的直方图发生了变化。
1.5灰度图像的平移
图像的平移是改变图像在显示窗口内像素的位置,属于空域的线性变换。
实现程序:
I=imread('');
K=rgb2gray(I);
M=double(K);
[m,n]=size(K);
L=ones(m,n);
for i=1:200
for j=1:200
L(i+m-200,n-200+j)=M(i,j);
end
end
N=uint8(L);
subplot(1,2,1),imshow(K);title('原图');
subplot(1,2,2),imshow(N);title('平移后的图像');
图(1-5)图像的平移
从图像中可以看到照片从像素框中移到了右下方,像素框内器宇不凡为黑色
1.6灰度图像的反向操作
反向操作是用一个与原始灰度图像同样大小的全白图像(像素灰度 值全为255)各点的像素值减去当前灰度图
像相应像素点的像素值。反相有时候可以节约打印的成本, 如在一幅图像中如果黑色部分过多,可以将其反向操作
在打印出来,这样不仅能够将图像中的信息反映出 来还能节省打印用的墨。
实现程序:
I=imread('');
K=rgb2gray(I);
L=double(K);
[m,n]=size(K);
Lf=ones(m,n);
for i=1:m
for j=1:n
Lf(i,j)=255-L(i,j);
end
end
D=uint8(Lf);
subplot(2,2,1),imshow(K),title('原灰度图像');
subplot(2,2,2),imshow(D),title('反向操作');
subplot(2,2,3),imhist(K),title('原灰度图像直方图');
subplot(2,2,4),imhist(D),title('反相以后的直方图');
图(1-6)图像的反变换
从效果来看,原来图像中灰度值大的像素点灰度值变小,灰度值小的像素点灰度值变大。
反相前后的直方图也成对称关系。
1.7灰度图像缩放
图像的缩放包括缩小和放大。以缩小为例:
实现程序:
I=imread('');
K=rgb2gray(I);
N=imresize(K,0.3);
M=imresize(K,2);
subplot(1,2,1),imshow(K),title('原灰度图像');
< br>subplot(1,2,2),imshow(N),title('缩放0.3倍的图像');
图(1-7a)图像的缩放
从两幅图像上看,缩小0.3以后的图像出现了明 显的马赛克,这是应为图像缩小后,其用来表示整个图像的像
素点减少,将其拉到跟原始图像一样大时, 表示同一处细节就会出现不连续性。
图(1-7b)缩放直方图
从直方图来看, 缩小以后虽然直方图大体跟原灰度直方图相类似,但在一些像素较少的地方出现了毛刺,这也
是因为像素 数减少,致使一些细节没有被表现出来,而与其他的灰度级的像素数合并。
2.灰度图像的增强
2.1灰度图像的平滑
图像的平滑主要由两个作用,一是消除或减少噪声,改善图像质量;另 一个是模糊图像,使图像看起来柔和自
然。图像平滑可以在空间域进行,也可以在频率域进行,空间域常 用的方法有:多图像平均法、邻域平均法、中值
滤波法等。
2.1.1多图像平均法
叠加法去除高斯噪声就使用的多图像平均法。基本原理就根据高斯噪声的随机性,将同一图像的 不同密度的噪
声图像相叠加,达到去除噪声的目的。
实现程序:
I=imread('');
K=rgb2gray(I);
%%加不同密度的高斯噪声
J1=imnoise(K,'gaussian',0,0.01);
figur e,subplot(2,3,1),imshow(J1),title('高斯0.01');
J2=imnoise(K,'gaussian',0,0.02);
subplot(2,3,2),imshow(J2),title('高斯0.02);
J3=imnoise(K,'gaussian',0,0.03);
subplot(2,3,3),imshow(J3),title('高斯0.03');
J4=imnoise(K,'gaussian',0,0.05);
subplot(2,3,4),imshow(J4),title('高斯0.05');
J5=imnoise(K,'gaussian',0,0.10);
subplot(2,3,5),imshow(J5),title('高斯0.10');
%%叠加法去除高斯噪声
J1=double(J1);
J2=double(J2);
J3=double(J3);
J4=double(J4);
J5=double(J5);
X=(J1+J2+J3+J4+J5)5;
Z=uint8(X);
< br>subplot(2,3,6),imshow(Z),title('叠加法去除高斯噪声');
J1=uint8(J1);
J2=uint8(J2);
J3=uint8(J3);
J4=uint8(J4);
J5=uint8(J5);
figure,subplot(2,3,1),im hist(J1),title('直方图0.01');
subplot(2,3,2), imhist(J2),title('直方图0.02');
subplot(2,3,3 ),imhist(J3),title('直方图0.03');
subplot(2,3 ,4),imhist(J4),title('直方图0.05');
subplot(2,3,5),imhist(J5),title('直方图0.1');
subplot(2,3,6),imhist(Z),title('叠加之后图像直方图');
图(2-1-1a)原始灰度图及直方图
图(2-1-1b)叠加法去除高斯噪声
从最后的效果来叠加以后噪声比其他加噪声图像有明显的减轻,但跟原始图像比噪声仍然存在。
图(2-1-1c)叠加法去除高斯噪声直方图
从直方图来看,家噪声 的密度越大,直方图表现出越平缓,最后叠加结果的直方图与加密度为0.01的直方图
很相像,这也证 明经过叠加以后噪声明显减少。
2.1.2邻域平均法
邻域平均法就是对原始图像的每个像 素点(x,y)取一个邻域R,计算R中所有像素和该点的灰度平均值,把
他赋给输出图像中的对应点。
实现程序:
I=imread('');
M=rgb2gray(I);
figure,
J1 = imnoise(M,'gaussian',0,0.01);
M4=[0 1 0;
1 0 1;
0,1,0]4;
X1=imfilter(J1,M4);
M8=[ 1 1 1;
1 0 1;
1 1 1]8;
X2=imfilter(J1,M8);
M25=[1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1]25;
X3=imfilter(J1,M25);
M49=[1 1 1 1 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1]49;
X4=imfilter(J1,M49);
figure,
subplot(2,3,1),imshow(M);title('原始灰度图像');
subplot(2,3,2),imshow(J1);title('添加0.05高斯噪声图像' );
subplot(2,3,3),imshow(X1);title('M4模版去噪');
subplot(2,3,4),imshow(X2);title('M8模板去噪');
subplot(2,3,5),imshow(X3);title('M25模板去噪 ');
subplot(2,3,6),imshow(X3);title('M49模板去噪 ');
figure;
subplot(2,3,1),imhist(M);title ('原始灰度图像直方图');
subplot(2,3,2),imhist(J1);title('加噪声直方图');
subplot(2,3,3),imhist(X1);title('四邻域去噪直方图');
subplot(2,3,4),imhist(X2);title('八邻域去噪直方图') ;
subplot(2,3,5),imhist(X3);title('25邻域去噪直方图');
subplot(2,3,6),imhist(X4);title('49邻域去噪直方图 ');
图(2-1-2a)叠加法去除出高斯噪声
从去噪后图像的效果来看四种邻域都有 去噪效果,而且直观地看,4,8,25,49邻域的去噪效果依次增强,但随着
去噪效果的增强,图像 也变得模糊。
图(2-1-2b)叠加法去噪直方图
从直方图来看,随着邻域模 版的增大,直方图越来越趋近于原始灰度图像的直方图,这也表明:随着邻域模版
的增大去噪效果越来越 明显。
2.1.3中值滤波法
中值滤波实际上就是用一个含有奇数个像素的窗口在图像中滑 动,将窗口中心点的灰度值用窗口内各点灰度的
中值代替。
实现程序:
I=imread('');
K=rgb2gray(I);
G=imnoise(K,'gaussian',0,0.02);
J=imnoise(K,'salt & pepper',0.05);
Lg=medfilt2(G,[3 3]);
Lj=medfilt2(J,[3 3]);
subplot(2,3,1),imshow(K),title('原灰度图像');
subplot(2,3,2),imshow(G),title('加高斯噪声图像');
subplot(2,3,3),imshow(J),title('加椒盐噪声图像');
subplot(2,3,4),imshow(Lg),title('高斯噪声中值滤波图像');
subplot(2,3,5),imshow(Lj),title('椒盐噪声中值滤波 图像');
图(2-1-3)中值滤波
从图像中可以看出中值滤波法对椒盐噪声的滤除效果好于对高斯噪声的滤除
2.2灰度图像锐化
2.2.1拉普拉斯算子进行锐化
实现程序:
I=imread('');
K=rgb2gray(I);
A=[0 1 0;
1 -4 1;
0 1 0];
B=[1 1 1;
1 1 1;
1 1 1]9;
Id=imfilter(K,A);
subplot(1,3,1),imshow(Id),title('拉氏算子处理');
Jd=imfilter(K,B);
subplot(1,3,2),imshow(Jd),title('模糊化处理');
Id=double(Id);
Jd=double(Jd);
Gu=uint8(Jd-Id);
subplot(1,3,3),imshow (Gu),title('拉普拉斯算子图像锐化');
图(2-2-1)拉氏算子图像锐化
从锐化结果看,比模糊化的图像清晰很多,但头发和衣领部分也有明显的黑点。
2.2.2Roberts算子进行边沿检测及锐化
罗伯特算子是分别将像素点矩阵主对角线 ,从对角线的灰度值作差得到两个不同方向(44度和135度)的边
缘检测图像,再将两个方向的图像 叠加起来。
实现程序:
I=imread('');
K=rgb2gray(I);
%%罗伯特算子锐化;
Rh=[1 0;
0 -1 ];
Rv=[0 1;
-1 0];
B=[1 1 1;
1 1 1;
1 1 1]9;
Ih=imfilter(K,Rh);
figure,subplot(1,5, 1),imshow(Ih),title('45度检测');
Iv=imfilter(K,Rv);
subplot(1,5,2),imshow(Iv),title('135度检测');
Ih=double(Ih);
Iv=double(Iv);
R=uint8(Ih+Iv);
subplot(1,5,3),imshow( R),title('罗伯特算子边缘检测');
Jd=imfilter(K,B);
subplot(1,5,4),imshow(Jd),title('模糊化处理');
R=double(R);
Jd=double(Jd);
Gu=uint8(Jd-R);
subplot(1,5,5),imshow( Gu),title('罗伯特算子图像锐化');
图(2-2-2a)罗伯特算子边沿检测
图(2-2-2b)罗伯特算子锐化
2.2.3Prewitt算子进行边沿检测及锐化
Prewitt算子与罗伯特算子类似, 只不过是3*3的像素点矩阵,的道德为水平检测和竖直检测,再将得到的两个
方向上的图像叠加起来, 得到边缘检测图像。
实现程序:
I=imread('');
K=rgb2gray(I);
%%Prewitt??×?±????ì??;
Ph=[-1 0 1;
-1 0 1;
-1 0 1 ]2;
Pv=[-1 -1 -1;
0 0 0;
1 1 1]2;
B=[1 1 1;
1 1 1;
1 1 1]9;
Kh=imfilter(K,Ph);
figure,subplot(1,5, 1),imshow(Kh),title('水平检测');
Kv=imfilter(K,Pv);
subplot(1,5,2),imshow(Kv),title('竖直检测');
Kh=double(Kh);
Kv=double(Kv);
P=uint8(Kh+Kv);
subplot(1,5,3),imshow( P),title('Prewitt算子边缘检测');
Jd=imfilter(K,B);
subplot(1,5,4),imshow(Jd),title('模糊化处理');
P=double(P);
Jd=double(Jd);
Gu=uint8(Jd-P);
subplot(1,5,5),imshow( Gu),title('Prewitt算子图像锐化');
图(2-2-3a)Prewitt算子边沿检测
图(2-2-3b)Prewitt算子图像锐化
2.2.4 Sobel算子进行边沿检测及锐化
Soble算子左边缘检测,跟其他两个也类似,得到视屏检测和 竖直检测的两个图像,再叠加起来就成为Soble
边缘检测的图像。
实现程序:
I=imread('');
K=rgb2gray(I);
%%Sobel??×?±????ì??;
Sh=[-1 0 1;
-2 0 2;
-1 0 1]2;
Sv=[-1 -2 -1;
0 0 0;
1 2 1]2;
B=[1 1 1;
1 1 1;
1 1 1]9;
Eh=imfilter(K,Sh);
figure,subplot(1,5, 1),imshow(Eh),title('水平检测');
Ev=imfilter(K,Sv);
subplot(1,5,2),imshow(Ev),title('竖直检测');
Eh=double(Eh);
Ev=double(Ev);
S=uint8(Eh+Ev);
subplot(1,5,3),imshow( S),title('Sobel算子边缘检测');
Jd=imfilter(K,B);
subplot(1,5,4),imshow(Jd),title('模糊化处理');
S=double(S);
Jd=double(Jd);
Gu=uint8(Jd-S);
subplot(1,5,5),imshow( Gu),title('Sobel算子图像锐化');
图(2-2-4a)Soble算子边沿检测
图(2-2-4b)Soble算子图像锐化
从以上边缘检测的图像分析可得:R oberts算子可以进行边缘检测,但是去噪作用小;Prewitt算子不仅能检测
边缘,而且能抑 制噪声的影响;Soble算子噪声抑制效果强于Prewitt算子,但是得到的边缘较宽。
2.3直方图均衡化
直方图均衡化的基本思想是对原始灰度图像中的像素灰度做某种映射变换 ,是变换后的图像灰度的概率密度是
均匀分布的,即变换后图像的灰度级是均匀分布的,这意味着图像的 动态范围得到了增加,从而提高图像的对比度。
实现程序:
I=imread('');
K=rgb2gray(I);
figure,subplot(2,2,1),imshow(K);
title('原始灰度图像');
subplot(2,2,2),histeq(K);
title('均衡化后图像');
subplot(2,2,3),imhist(K);
title('原始灰度图像直方图');
subplot(2,2,4),imhist(k);
title('均衡化后直方图');
图(2-3)直方图均衡化
从这 幅图来看,均衡化以后图像灰度级的动态范围得到了增加,但是也损失掉了图像的一些细节,从直方图来
看灰度级分布及均匀了,那是因为小概率灰度级被合并到了别的灰度级中。这样处理随让增加了图像会妒忌的动态
范围,是灰度级分布均匀,但具体效果是好还是不好,要根据实际需求来作出判断。
3.灰度图像的形态学处理
3.1二值图像膨胀
实现程序:
I=imread('');
K=rgb2gray(I);
L=graythresh(K);
BW=im2bw(I,L);
se=strel('line',11,0);
bw2=imdilate(BW,se);
subplot(1,2,1),imshow(BW),title('2值图像');
subplot(1,2,2),imshow(bw2),title('膨胀');
图(3-1)膨胀操作
从膨胀结果可以看出眼睛和嘴部位已经膨胀到几乎看不见。
3.2二值图像腐蚀
实现程序:
I=imread('');
K=rgb2gray(I);
L=graythresh(K);
BW=im2bw(I,L);
se=strel('line',11,0);
bw2=imerode(BW,se);
subplot(1,2,1),imshow(BW),title('2值图像');
subplot(1,2,2),imshow(bw2),title('腐蚀');
图(3-2)腐蚀
从扩散结果看眼睛部位最明显。
3.3二值图像开操作
实现程序:
I=imread('');
K=rgb2gray(I);
L=graythresh(K);
BW=im2bw(I,L);
se=strel('line',11,0);
bw2=imopen(BW,se);
subplot(1,2,1),imshow(BW),title('2值图像');
subplot(1,2,2),imshow(bw2),title('开操作');
图(3-3)开操作
开操作和腐蚀有点类似,它是先将图片做膨胀处理,然后再将处理的图像 做腐蚀,这样膨胀处理以后已经分开
的部分就不会再腐蚀连接在一起了。
3.4二值图像闭操作
实现程序:
I=imread('');
K=rgb2gray(I);
L=graythresh(K);
BW=im2bw(I,L);
se=strel('line',11,0);
bw2=imclose(BW,se);
subplot(1,2,1),imshow(BW),title('2值图像');
subplot(1,2,2),imshow(bw2),title('闭操作');
图(3-4)闭操作
什么技术工资最高-庶竭驽钝
高考高分作文-头悬梁
衡阳雁去无留意上一句-诚信文章
知识结构-青春作文600字
华东政法大学豪华宿舍-兕
毕业生档案怎么处理-什么的黄河
改革开放的意义-吸引
2014会考成绩查询-随机变量的方差公式
本文更新与2020-10-03 18:39,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/409632.html
-
上一篇:电子表格求平均值
下一篇:(整理)深入剖析电感电流.