1、数字图像处理实验作业及代码数字图像处理实验一源程序:a=imread( rice.png); figure,imshow(a),title(原图);axis on; a=double(a)/256; figure,imhist(a),title(原直方图);axis on; r=0:0.001:1; s1=r0.35.*r*0.3+r=0.35.*(0.105+2.6333*(r-0.35)+r0.65.*(1+0.3*(r-1); s2=r0.5.*(r-0.5).0.2+0.12); a1=a0.35.*a*0.3+a=0.35.*(0.105+2.6333*(a-0.35)+a0.65.
2、*(1+0.3*(a-1); a2=a0.5.*(a-0.5).0.2+0.12); figure,imshow(a1),title(改后一);axis on; figure,imhist(a1),title(改后直方图一);axis on; figure,plot(r,s1),title(变换函数一);axis on; figure,imshow(a2),title(改后二);axis on; figure,imhist(a2),title(改后直方图二);axis on; figure,plot(r,s2),title(变换函数二);axis on; imwrite(a1,改后rice 一
3、.jpg);imwrite(a2,改后rice 二.jpg);b=imread( kids.tif);figure,imshow(b),title(原图);axis on; b=double(b)/256; figure,imhist(b);title(原直方图);axis on; s1=r.0.6; s2=r.0.4; s3=r.0.3; b1=imadjust(b,0.6); b2=imadjust(b,0.4); b3=imadjust(b,0.3); figure,imshow(b1),title(改后一);axis on; figure,imhist(b1),title(改后直方图一
4、);axis on; figure,plot(r,s1),title(变换函数一);axis on; figure,imshow(b2),title(改后二);axis on; figure,imhist(b2),title(改后直方图二);axis on; figure,plot(r,s2),title(变换函数二);axis on; figure,imshow(b3),title(改后三);axis on; figure,imhist(b3),title(改后直方图三);axis on; figure,plot(r,s3),title(变换函数三);axis on; imwrite(b1,
5、改后kids 一.jpg); imwrite(b2,改后kids 二.jpg); imwrite(b3,改后kids 三.jpg); c=imread(circuit.tif); figure,imshow(c),title(原图);axis on; c=double(c)/256; figure,imhist(c),title(原直方图);axis on; s=1-r;c=1-c; figure,imshow(c),title(变换后);axis on; figure,imhist(c),title(变换后直方图);axis on; figure,plot(r,s),title(变换函数);
6、axis on; imwrite(c,改后circuit.jpg); d=imread(rice.png); figure,imshow(d),title(原图);axis on; d=double(d)/256; figure,imhist(d),title(原直方图);axis on; r=0:0.001:1; s=r=0.2*0.6; d=d=0.2*0.6+d0.4.*d+d0.2.*d; figure,imshow(d),title(变换后);axis on; figure,imhist(d),title(变换后直方图);axis on; figure,plot(r,s),title
7、(变换函数);axis on; imwrite(d,第二次改后rice.jpg); e=imread(Picture.jpg); e=e(:,:,1); e=im2double(e); figure,imshow(e),title(原图);axis on; figure,imhist(e),title(原直方图);axis on; r=0:0.001:1; s=r0.65.*r*0.8+r=0.3.*r=0.65.*(0.11+r*1.5); e=e0.65.*e*0.8+e=0.3.*e=0.65.*(0.11+e*1.5); figure,imshow(e),title(变换后);axis
8、 on; figure,imhist(e),title(变换后直方图);axis on; figure,plot(r,s),title(变换函数);axis on; imwrite(e,改后Picture.jpg);处理前后图像:结论:不同的灰度变换对最终图像的影响效果是不同的。通过matlab灰度变化可以增加图像亮度,提高比照度,使视觉效果更好。数字图像处理实验二源代码:I1=imread(mountain.jpg);J1,T1=histeq(I1,256); figure,subplot(2,3,1),imshow(I1),title(原图);axis on; subplot(2,3,2)
9、,imhist(I1),title(原图直方图);axis on; subplot(2,3,4),imshow(J1),title(均衡化后图像);axis on; subplot(2,3,5),imhist(J1),title(均衡化后直方图);axis on; subplot(2,3,6),plot(T1),title(变换函数);axis on; I2=uint8(I1); r=0:1:255; n=(r5.*r20.*r180.*r225.*r=(k-t)/255&I3(i,j)=(k-1)/255) I4(i,j)=s2(k); end end end t=0; end end I3
10、=mat2gray(I3); I4=mat2gray(I4); figure,subplot(2,3,1),imshow(I3),title(原图);axis on; subplot(2,3,2),imhist(I3),title(原图直方图);axis on; subplot(2,3,4),imshow(I4);title( 自编函数均衡化);axis on; subplot(2,3,5);imhist(I4);title( 自编函数均衡化后直方图);axis on; subplot(2,3,6),plot(s1),title(变换函数);axis on;处理前后图像:结论:直方图均衡化通过
11、使用累积函数对灰度值进行“调整”以实现比照度的增强,通常用来增加许多图像的局部比照度,尤其是当图像的有用数据的比照度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的比照度而不影响整体的比照度。数字图像处理实验三源代码:close all;I=imread(test3_1.jpg); I=im2double(I);tic J=nlfilter(I,5 5,mean2); toc tic T=nlfilter(I,5 5,std2); toc figure(1),subplot(2,3,1),imshow(I),title(原始图像);axis on; subp
12、lot(2,3,2),imshow(J),title(邻域均值图像);axis on; subplot(2,3,3),imshow(T),title(邻域均值标准差图像);axis on; imwrite(J,nlfilterl 滤波后.jpg);I=imnoise(I,gaussian,0,0.02); J=nlfilter(I,5 5,mean2); T=nlfilter(I,5 5,std2); subplot(2,3,4),imshow(I),title(加噪图像);axis on; subplot(2,3,5),imshow(J),title(加噪邻域均值图像);axis on; s
13、ubplot(2,3,6),imshow(T),title(加噪邻域均值标准差图像);axis on; imwrite(J,加噪nlfilterl 滤波后.jpg); I2=imread(test3_2.jpg); J2=im2double(I2);tic ave=fspecial(average,5); J2=filter2(ave,J2);toc J3=medfilt2(J2,5 5); tic J4=nlfilter(J2,5 5,mean2); toc figure(2),subplot(2,2,1),imshow(I2),title(原始图像);axis on; subplot(2,
14、2,2),imshow(J2),title(filter2 处理后图像);axis on; subplot(2,2,3),imshow(J3),title(medfilt2 处理后图像);axis on; subplot(2,2,4),imshow(J4),title(nlfilter 处理后图像);axis on; imwrite(J2,filter2 滤波后.jpg); imwrite(J3,medfilt2 滤波后.jpg); imwrite(J4,nlfilter 滤波后(2).jpg);F=midf(I2,3,3); figure(3),subplot(1,2,1),imshow(I
15、2),title(滤波前);axis on; subplot(1,2,2),imshow(F),title(中值滤波后);axis on; imwrite(F, 自编中值滤波后.jpg); 调用函数一: function mid=middle(F1)%求窗口元素的中值 m,n=size(F1); x=m*n; y=m*n; k=0; for i=1:m for j=1:n k=k+1; x(k)=F1(i,j);%组成一维数组 end endfor i=1:y k=i; for j=i+1:y if x(j)=i);Z(k)=255; q=find(Gi);Z(q)=0; subplot(2,
16、3,1);imshow(a);title(input image); subplot(2,3,i-2);imshow(Z);title(门限T为,num2str(i);end;处理前后图像:结论:Sobel对噪声的增强作用小,具有一定的平滑特性和方向特性,处理后的图象边界比较粗略,反映边界信息较少,但反映的边界比较清晰。Laplacian算子对噪声的增强作用较大,处理后的图象边缘较sobel 弱,反映的边界信息不是太清晰。原图像经叠加,增强了噪声,但处理后的图像细节部分比原图像清晰。.经线性滤波处理后,去除噪声的同时使图象的边缘变得模糊了。实验小结:通过对数字图像处理这门课的学习及matlab
17、上机的实验操作,虽然学习不很深入,但我也算认识到了对图像基本的变换方式。我们知道图像处理是对图像进行加工,从而满足人类的心理、视觉或应用需求的一种行为。而很多图像由于生成时更方面的干扰,使得图像并不如人们所期望的那样清晰和便于分析,这就需要对图像进行后期的处理,如去噪,增加亮度或比照度,减小亮度或比照度,以到达更符合人们需求的图像。而Matlab四个实验的学习则有效地实现了部分功能。初学matlab,知道了它是一种基于矩阵数值计算的软件,实际操作中应该充分认识到这一点。对图像进行处理的时候,还有多方面的因素要考虑,像图像用imread读取的时候,图像的保存路径是否正确,读取的图像是不是bmp格式的,处理后的像素值是不是在0255之间等,期间犯了很多错误,也改了很多错误,虽然课时不长,但确实学到了很多。从四个小实验及课堂的学习也可以想象得到图像数字处理的大应用。在航空航天技术、生物医学工程、通信工程、军事、文化艺术和电子商务方面大有可为,初学的我们,所了解的只是九牛一毛。希望今后能再进行深入的学习,通过学习到达更深入的目的。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1