1、数字图像处理期中大作业 数字图像处理期中大作业 姓名:罗树英学号:24092200017序号:21湖南理工学院南湖学院2012年4月 第一部分:IPT函数的应用1、 读取并显示一张彩色图像,然后将其灰度化,并将灰度化后的结果存入计算机中,最后再将其二值化;解答: (1)程序 f=imread(luo.jpg) %读入图像fan imshow(f) %显示图像fan g=rgb2gray(f) %调用灰度处理函数对fan进行灰度处理 figure,imshow(g) %显示原图,显示灰度处理后的图像g h=im2bw(g) %调用二值转换函数将图像g转换成二值图像 figure,imshow(h
2、) %显示原图,显示灰度处理图像g,显示二值图像h imwrite(g,g.jpg) %将灰度图像g写入计算机 imwrite(h,g.jpg) %将二值图像h写入计算机 (2)运行结果 (3)结果分析调用灰度函数rgb2gray对图像进行灰度化,然后进行二值处理,默认阈值为0.5.可以看出图像的明显变化,趋于0的部分变亮,趋于1的部分变暗。2、调用函数完成图像的DFT变换及平移(1)程序f5=rgb2gray(imread(luo.jpg) %读入图像并进行灰度处理imshow(f5) %显示图像F=fft2(f5) %对图像进行DFT计算S=abs(F) %得到频谱图figure,imsh
3、ow(S,) %显示原图及频谱图Fc=fftshift(F) %进行图像的平移figure,imshow(abs(Fc),) %显示之前图像,显示平移后图像S2=log(1+abs(Fc) %进行对数变换figure,imshow(S2,) %显示图像(2)运行结果 图1 灰度图像 2 进行DFT计算后图像图3 平移后图像 图4 进行对数变换后图像(3)结果分析通过调用函数fft2进行DFT计算,然后利用fftshift将变换的原点平移到频率矩阵中心,可以明显 看到图像中心点的变化(图3),然后利用对数变化增强视觉效果(图4),结果变化明显,一目了然。3、计算图像的直方图并对其进行均衡化和规定
4、化;(1.1)直方图均衡化(1)程序f2=rgb2gray(imread(luo.jpg); %读入图像fan,并进行灰度处理imshow(f2); %显示灰度图像f2figure,imhist(f2); %显示灰度图像f2,显示f2的直方图ylim(auto); %设定刻度线和取值范围g2=histeq(f2,256); %对图像f2进行直方图均衡化处理,生成图像g2figure,imshow(g2); %显示之前的所有图像,显示g2figure,imhist(g2) %显示之前所有图像,显示g2的直方图ylim(auto) %设定刻度线和取值范围imwrite(f2,f2.jpg) %将灰
5、度图像f2写入计算机imwrite(g2,g2.jpg) %将均衡化后的图像g2写入计算机(1.2)直方图均衡化运行结果: 图1 灰度处理后的图像f2 图2 f2直方图 图3均衡化处理后效果g2 图4 g2直方图(2.1)直方图的规定化(1)程序f4=rgb2gray(imread(luo.jpg) %读入图像fan,并进行灰度处理imshow(f4) %显示灰度图像f4imwrite(f4,f4.jpg) %将灰度图像f4写入计算机figure,imhist(f4) %得到f4直方图ylim(auto) %设定刻度值和取值范围xlim(auto) %设定刻度值和取值范围g4=histeq(f
6、4,0 50 100 150 200 256)%进行直方图规定化,生成图像g4figure,imshow(g4) %保持显示之前图像,显示g4figure,imhist(g4) %保持显示之前图像,显示g4直方图ylim(auto) %设定刻度值和取值范围xlim(auto) %设定刻度值和取值范围imwrite(g4,g4.jpg) %将g4写入计算机(2.2)直方图规定化运行结果: 图1 灰度图像f4 图2 f4直方图 图3 进行规定化之后的效果g4 图4 g4直方图(3)结果分析将直方图进行均衡化之后,不难发现直方图抽样点被拉伸,对比图1,图3的平均亮度和对比度的增强十分明显。均衡化后的
7、图像的直方图中的灰度级平均值高于原始值。而直方图规定化,是使图像获得最为匹配的效果。使图像按我们所设定的方向进行,进行图像的规定化。4、调用噪声函数对读入的图像加噪,然后调用空间噪声滤波函数进行滤波,并对滤波效果进行分析(1)程序w=rgb2gray(imread(luo.jpg) %将图像灰度化imshow(w) %显示图像k=imnoise(w,salt & pepper) %加椒盐噪声figure,imshow(k) %显示原图,显示被噪声污染的图像k1=medfilt2(k) %使用中值滤波器滤波figure,imshow(k1) %保留显示之前所有图像,并显示滤波后图像imwrite
8、(k,k.jpg) %将噪声图像写入计算机imwrite(w,w.jpg) %见灰度图像写入计算机(2)运行结果 图1 灰度图像w 图2 加椒盐噪声图像 图3 滤波处理后图像(3)结果分析首先得到灰度图像,然后加入默认噪声密度为0.05的椒盐噪声。得到被噪声轻度污染的图像(图2),然后用中值滤波器进行滤波,滤除椒盐噪声,且滤波效果良好,接近原图,较为清晰。 5、查找Matlab图像处理工具箱(IPT)中的亮度变换函数,并使用亮度变换函数完成一张灰度图片的亮度调整。(1)程序f1=rgb2gray(imread(luo.jpg) %读入图像fan并进行灰度处理g1=imadjust(f1,0.5
9、 0.85,0 1) %对灰度图像f1进行亮度调整imshow(f1),figure,imshow(g1) %显示灰度图像f1和亮度调整后图像g1imwrite(f1,f1.jpg) %将灰度图像f1写入计算机imwrite(g1,g1.jpg) %将亮度处理后的图像g1写入计算机(2)运行结果图1 原灰度图像 图2 进行亮度处理后的图像(3)结果分析调用亮度处理函数imadjust处理图像后,将0.5至0.85之间的灰度级拓展到0 1。突出其中的灰度级。由图2可以看出,图像的亮暗发生了明显的变化。6、调用库函数,完成对加噪图像的滤波,并和空间滤波函数效果进行比较。(1)程序f6=imread
10、(luo.jpg) %读入噪声图像h=fspecial(motion) %创建一个滤波器g6=imfilter(f6,h) %空间滤波imshow(f6),figure,imshow(g6) %显示噪声图像和滤波后图像imwrite(g6,g6.jpg) %将滤波后图像写入计算机g6=medfilt2(f6) %调用库函数对噪声图像进行中值滤波figure,imshow(g6) %显示滤波后图像 imwrite(g6,g6.jpg) %将中值滤波后图像写入计算机(2)运行结果 图1 噪声图像 图2 空间滤波处理后图像 图3调用库函数滤波后图像(3)运行结果通过分别调用空间滤波函数和库函数对图像
11、进行滤波,不难发现,空间滤波函数在处理椒盐噪声图像始终不如中值滤波函数的处理效果好。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。第二部分:自编函数完成下述算法1、完成图像的几何变换算法设计,包括平移、旋转、缩放、错切等;(1)程序:.commond:clearclose allclcI=imread(2.bmp); %图像平移figureoutimage=imtranslate1(I,50,50);subplot(1,2,1),imshow(I),title(原图)subplot(1
12、,2,2),imshow(outimage,),title(平移后图像) %图像镜像figureoutimage_h=immirr(I,horizontal);outimage_v=immirr(I,vertical);outimage=immirr(I,both);subplot(2,2,1),imshow(I),title(原图)subplot(2,2,2),imshow(outimage_h,),title(水平镜像)subplot(2,2,3),imshow(outimage_v,),title(垂直镜像)subplot(2,2,4),imshow(outimage,),title(水
13、平垂直镜像) %图像旋转figureoutimage=imrotate0(I,30);subplot(1,2,1),imshow(I),title(原图)subplot(1,2,2),imshow(outimage,),title(旋转30图像) %图像缩放figureoutimage_NNI=imzoom(I,0.2,NNI);outimage_BL=imzoom(I,0.2,BL);outimage_BC=imzoom(I,0.2,BC);subplot(2,2,1),imshow(I),title(原图)subplot(2,2,2),imshow(outimage_NNI,),title
14、(最近邻插值法放大0.2倍)subplot(2,2,3),imshow(outimage_BL,),title(双线性插值法放大0.2倍)subplot(2,2,4),imshow(outimage_BC,),title(双三次插值法放大0.2倍) %图像错切figureoutimage=imageskew(I,45,0);subplot(1,3,1),imshow(I),title(原图)subplot(1,3,2),imshow(outimage,),title(沿水平方向错切45图像)outimage=imageskew(I,-45,1);subplot(1,3,3),imshow(ou
15、timage,),title(沿垂直方向错切-45图像)2). Imageskew:function r=imageskew(I,theta,mode)h0 w0=size(I);th=theta*pi/180;tga=tan(th);ctga=1/tan(th);%图像原四个顶点坐标srcx1=0;srcy1=0;srcx2=w0;srcy2=0;srcx3=0;srcy3=h0;srcx4=w0;srcy4=h0;%图像旋转后四个顶点坐标if mode=0 dstx1=srcx1;dsty1=srcy1; dstx2=srcx2;dsty2=tga*srcx2+srcy2; dstx3=s
16、rcx3;dsty3=srcy3; dstx4=srcx4;dsty4=tga*srcx4+srcy4;else dstx1=srcx1;dsty1=srcy1; dstx2=srcx2;dsty2=srcy2; dstx3=srcx3+ctga*srcy3;dsty3=srcy3; dstx4=srcx4+ctga*srcy4;dsty4=srcy4; end %计算旋转后图像的宽与高度h=max(abs(dsty4-dsty1),abs(dsty2-dsty3)+0.5;w=max(abs(dstx4-dstx1),abs(dstx2-dstx3)+0.5;h=floor(h);w=flo
17、or(w);r=zeros(h,w);f1=w0*tga;f2=h0*ctga;for x=1:w for y=1:h if mode=0 x0=x; if (theta0) y0=floor(-x*tga+y+f1); else y0=floor(-x*tga+y); end else y0=y; if (theta0 & x00 & y00 & x00 & y00 & x0(k)0 & y0(k)3 zoom=zoo;endif zoom outimage=zeros(m+deltay,n+deltax);else outimage=zeros(m,n);endm0 n0=size(out
18、image);for y=1:m0 for x=1:n0 x0=x-deltax; y0=y-deltay; if x0=1 & x0=1 & y0=m outimage(y,x)=I(y0,x0); end endend%show imagesubplot(121),imshow(I);subplot(122),imshow(outimage,);7). Imzoom:function result=imzoom(I,r,mode)%Input: I the image to be zoom%Output: result the image zoomed%mode is NNI,BL or
19、BC.if (ndims(I)=2) error(the input I must be an image of two dimensional!);endif (r=0);endm n=size(I);result=zeros(round(m*r),round(n*r);for i=ceil(2*r):m*r-2*r for j=ceil(2*r):n*r-2*r switch (mode) case NNI result(i,j)=I(ceil(i/r),ceil(j/r); case BL u=i/r-floor(i/r);v=j/r-floor(j/r); result(i,j)=(1
20、-u)*(1-v)*I(floor(i/r),floor(j/r) + . (1-u)*v*I(floor(i/r),floor(j/r)+1) + . u*(1-v)*I(floor(i/r)+1,floor(j/r) + . u*v*I(floor(i/r)+1,floor(j/r)+1); case BC u=i/r-floor(i/r);v=j/r-floor(j/r); A= S(u + 1) S(u + 0) S(u - 1) S(u - 2) ; B=I(floor(i/r)-1, floor(j/r)-1) I(floor(i/r)-1, floor(j/r)+0) I(floor(i/r)-1, floor(j/r)+1) I(floor(i/r)-1, floor(j/r)+2); I(floor(i/r)+0, floor(j/r)-1) I(floor(i/r)+0,
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2