matlab数字图像处理 课程设计论文 期中大作业要点

  • 格式:doc
  • 大小:5.15 MB
  • 文档页数:12

《数字图像处理》期中大作业姓名:**学号:***********序号:23南湖学院机电系2013年4月第一部分:IPT函数的应用1、读取并显示一张彩色图像,然后将其灰度化,并将灰度化后的结果存入计算机中,最后再将其二值化;2、解答:(1)程序f=imread('pic.jpg') %读入图像meimshow(f) %显示图像mea=rgb2gray(f) %调用灰度处理函数对头像进行灰度处理figure,imshow(a) %显示灰度处理后的图像b=im2bw(a) %调用二值转换函数将图像转换成二值图像figure,imshow(b) %显示灰度处理后的二值图像imwrite(a,'pic-gai.jpg') %将灰度图像写入计算机imwrite(b,'pic-gai.jpg') %将二值图像写入计算(2)运行结果图1:原图pic.jpg 图2:灰度处理后的pic.jpg图3:灰度处理加二值处理后的pic-gai.jpg(3)结果分析调用灰度系统函数对图像进行灰度化,然后进行二值处理。

灰度处理后去掉了彩色,二值处理让深灰色变成黑色浅灰色变成了白色。

2、使用亮度变换函数完成一张灰度图片的亮度调整:解答:(1)程序:f2=rgb2gray(imread('pic.jpg')) %读入图像并进行灰度处理imshow(f2) %显示灰度处理后的图像F=fft2(f2) %对图像进行DFT计算S=abs(F) %得到频谱图figure,imshow(S,[]) %显示频谱图Fc=fftshift(F) %进行图像的平移figure,imshow(abs(Fc),[]) %显示平移后图像S2=log(1+abs(Fc)) %进行对数变换figure,imshow(S2,[]) %显示对数变换后的图像(3)运行结果图1 灰度图像图2 f4直方图图3 进行规定化之后的效果g4 图4 g4直方图(3)结果分析通过调用函数fft2进行DFT计算,然后利用fftshift将变换的原点平移到频率矩阵中心,可以明显看到图像中心点的变化(图3),然后利用对数变化增强视觉效果(图4),结果变化明显,一目了然。

3、计算图像的直方图并对其进行均衡化和规定化;(1.1)直方图均衡化(1)程序f2=rgb2gray(imread('pic.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') %将灰度图像f2写入计算机imwrite(g2,'g2.jpg') %将均衡化后的图像g2写入计算机(1.2)直方图均衡化运行结果:图1 灰度处理后的图像f2图2 f2直方图图3均衡化处理后效果g2 图4 g2直方图(2.1)直方图的规定化(1)程序f4=rgb2gray(imread('pic.jpg')) %读入图像fan,并进行灰度处理imshow(f4) %显示灰度图像f4imwrite(f4,'f4.jpg') %将灰度图像f4写入计算机figure,imhist(f4)%得到f4直方图ylim('auto') %设定刻度值和取值范围xlim('auto') %设定刻度值和取值范围g4=histeq(f4,[0 50 100 150 200 256])%进行直方图规定化,生成图像g4figure,imshow(g4) %保持显示之前图像,显示g4figure,imhist(g4) %保持显示之前图像,显示g4直方图ylim('auto') %设定刻度值和取值范围xlim('auto') %设定刻度值和取值范围imwrite(g4,'g4.jpg') %将g4写入计算机(2.2)直方图规定化运行结果0050100150200250050100150200250图1 灰度图像 图2直方图图3 进行规定化后的效果 图4 直方图4、调用噪声函数对读入的图像加噪,然后调用空间噪声滤波函数进行滤波,并对滤波效果进行分析(1)程序w=rgb2gray(imread('pic.jpg')) %将图像灰度化imshow(w) %显示图像k=imnoise(w,'salt & pepper') %加椒盐噪声figure,imshow(k) %显示原图,显示被噪声污染的图像k1=medfilt2(k) %使用中值滤波器滤波figure,imshow(k1) %保留显示之前所有图像,并显示滤波后图像imwrite(k,'k.jpg') %将噪声图像写入计算机imwrite(w,'w.jpg') %见灰度图像写入计算机(2)运行结果图1 灰度图像 图2 加椒盐噪声后的效果图3 中值滤波处理后图像0501001502002503000050100150200250300(3)结果分析首先得到灰度图像,然后加入默认噪声密度为0.05的椒盐噪声。

得到被噪声轻度污染的图像(图2),然后用中值滤波器进行滤波,滤除椒盐噪声,且滤波效果良好,接近原图,较为清晰,但一些细节之处还是有所丢失。

5、查找Matlab图像处理工具箱(IPT)中的亮度变换函数,并使用亮度变换函数完成一张灰度图片的亮度调整。

(1)程序f1=rgb2gray(imread('pic.jpg')) %读入图像fan并进行灰度处理g1=imadjust(f1,[0.5 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('pic.jpg') %读入图像h=fspecial('motion') %创建一个滤波器g6=imfilter(f6,h) %空间滤波figure,imshow(f6) %显示图像figure,imshow(g6) %滤波后图像imwrite(g6,'g6.jpg') %将滤波后图像写入计算机g60=medfilt2(f6) %调用库函数对噪声图像进行中值滤波figure,imshow(g60) %显示滤波后图像imwrite(g6,'g60.jpg') %将中值滤波后图像写入计算机(2)运行结果图1 原图图2空间滤波图3调用库函数对噪声图像进行中值滤波第二部分:自编函数完成下述算法2、绘制灰度直方图,完成直方图均衡化算法和直方图归定化(匹配)算法,并对算法原理进行说明;算法如下:直方图均衡化P=imread('pic.jpg'); %读入彩色图像文件imshow(P) %显示图像title('原始彩色图像')P1=rgb2gray(P); %显示灰度图像imwrite(P1,'P1.jpg'); %保存图像figure,imshow(P1) %显示图像title('灰度化后图像')[m,n]=size(P1); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255GP(k+1)=length(find(P1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endfigure,bar(0:255,GP,'g') %绘制直方图title('原图像直方图')xlim('auto')ylim('auto')S1=zeros(1,256);for i=1:256for j=1:iS1(i)=GP(j)+S1(i); %计算SkendS2=round(S1*256); end %将Sk归到相近级的灰度for i=1:256 GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率endfigure,bar(0:255,GPeq,'b') %显示均衡化后的直方图title('均衡化后直方图')xlim('auto')ylim('auto')figure,plot(0:255,S2,'r') %显示灰度变化曲线legend('灰度变化曲线')xlabel('原图像灰度级')ylabel('均衡化后灰度级')P2=P1;for i=0:255P2(find(P1==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素endfigure,imshow(P2) %显示均衡化后的图像title('均衡化后图像')imwrite(P2,'P2.jpg');简要说明:首先调用灰度函数对图像灰度处理,然后测得灰度图像的相关数据量,计算现有各级灰度出现概率。

然后绘制直方图,计算均衡变化后各灰度级出现概率,显示均衡化后直方图。

(2)运行结果直方图规定化:f=rgb2gray(imread('pic.jpg'))imshow(f)title('原始图像')I=f;J=I;New=I;L=256; %灰度级Ps=zeros(L,1); % 存储原图像直方图概率数据nk=zeros(L,1); % 存储原图像直方图数据nk2=zeros(L,1); % 存储直方图规定化后的图像的直方图Rk=zeros(L,1); % 存储原图像累积直方图数据Ps2=zeros(L,1);Rk2=zeros(L,1);[M,N]=size(I); % 计算图像数据矩阵的行列数n=M*N; %总像素个数for i = 1:Mfor j = 1:Nnum = double( I(i,j))+1; %获取像素灰度级nk(num) = nk(num)+1; %统计nkendendfigure,bar(0:255,nk,'g')title('原图像直方图')%计算直方图概率估计for i=1:LPs(i)=nk(i)/n;%计算累积直方图if i==1Rk(i)=Ps(i);else 1<=256Rk(i)=Rk(i-1)+Ps(i);end%规定化直方图Ps2Temp=[0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0. 05,zeros(1,39),0.05,zeros(1,19),0.05,zeros(1,19),0.05,zeros(1,19),ones(1,80).*0.0045,ones(1,16).*0.0088];Ps2=Ps2Temp';%计算规定化累积直方图for c=1:Lif c==1Rk2(c)=Ps2(c);elseRk2(c)=Rk2(c-1)+Ps2(c);endend%计算原图像与目标图像累计直方图数值的差的绝对值double ScMin=zeros(256,256);for Y=1:Lfor X=1:LScMin(X,Y)=abs(Rk(Y)'-Rk2(X)');endend%建立映射HisM=zeros(L:1);for P=1:Lmin = 0;minV=ScMin(1,P);for Q=1:Lif(minV>ScMin(Q,P))minV=ScMin(Q,P);min = Q;endendHisM(P)= min;end%将原图像的每个像素灰度转换为直方图均衡化后的灰度for x = 1:Mfor y = 1:NNum = double( I(x,y))+1;if Num==iNew(x,y)=HisM(i);endendendend%计算直方图规定化后的直方图for p = 1:Mfor q = 1:NNN = double( New(p,q))+1;nk2(NN) = nk2(NN)+1;endendfigure,bar(0:255,nk2,'b')title('规定化后直方图')figure,imshow(New),title('规定化后图像');简要说明:计算原始图像和期望图像的灰度概率密度函数,对原始图像和期望图像均作直方图均衡化处理,处理后原图像概率密度函数与理想图像概率密度函数相等,而后对直方图的归一化逆变换使直方图规定化。