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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《数字图像处理》期中大作业姓名:钟涛学号:24102200147序号: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灰度图像图2f4直方图图3进行规定化之后的效果g4图4g4直方图(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图2f2直方图图3均衡化处理后效果g2图4g2直方图(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,[050100150200256])%进行直方图规定化,生成图像g4figure,imshow(g4)%保持显示之前图像,显示g4figure,imhist(g4)%保持显示之前图像,显示g4直方图ylim('auto')%设定刻度值和取值范围xlim('auto')%设定刻度值和取值范围imwrite(g4,'g4.jpg')%将g4写入计算机(2.2)直方图规定化运行结果0123456x1040501001502002500123456x104050100150200250图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中值滤波处理后图像0123456x104050100150200250300024681012x104050100150200250300(3)结果分析首先得到灰度图像,然后加入默认噪声密度为0.05的椒盐噪声。得到被噪声轻度污染的图像(图2),然后用中值滤波器进行滤波,滤除椒盐噪声,且滤波效果良好,接近原图,较为清晰,但一些细节之处还是有所丢失。5、查找Matlab图像处理工具箱(IPT)中的亮度变换函数,并使用亮度变换函数完成一张灰度图片的亮度调整。(1)程序f1=rgb2gray(imread('pic.jpg'))%读入图像fan并进行灰度处理g1=imadjust(f1,[0.50.85],[01])%对灰度图像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之间的灰度级拓展到[01]。突出其中的灰度级。由图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);%预创建存放灰度出现概率的向量fork=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);fori=1:256forj=1:iS1(i)=GP(j)+S1(i);%计算SkendS2=round(S1*256);end%将Sk归到相近级的灰度fori=1:256GPeq(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;fori=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;%总像素个数fori=1:Mforj=1:Nnum=double(I(i,j))+1;%获取像素灰度级nk(num)=nk(num)+1;%统计nkendendfigure,bar(0:255,nk,'g')title('原图像直方图')%计算直方图概率估计fori=1:LPs(i)=nk(i)/n;%计算累积直方图ifi==1Rk(i)=Ps(i);else1=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';%计算规定化累积直方图forc=1:Lifc==1Rk2(c)=Ps2(c);elseRk2(c)=Rk2(c-1)+Ps2(c);endend%计算原图像与目标图像累计直方图数值的差的绝对值doubleScMin=zeros(256,256);forY=1:LforX=1:LScMin(X,Y)=abs(Rk(Y)'-Rk2(X)');endend%建立映射HisM=zeros(L:1);forP=1:Lmin=0;minV=ScMin(1,P);forQ=1:Lif(minVScMin(Q,P))minV=ScMin(Q,P);min=Q;endendHisM(P)=min;end%将原图像的每个像素灰度转换为直方图均衡化后的灰度forx=1:Mfory=1:NNum=double(I(x,y))+1;ifNum==iNew(x,y)=HisM(i);endendendend%计算直方图规定化后的直方图forp

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功