数字图像处理实验作业及代码.docx

上传人:b****3 文档编号:4803482 上传时间:2022-12-09 格式:DOCX 页数:23 大小:1.30MB
下载 相关 举报
数字图像处理实验作业及代码.docx_第1页
第1页 / 共23页
数字图像处理实验作业及代码.docx_第2页
第2页 / 共23页
数字图像处理实验作业及代码.docx_第3页
第3页 / 共23页
数字图像处理实验作业及代码.docx_第4页
第4页 / 共23页
数字图像处理实验作业及代码.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数字图像处理实验作业及代码.docx

《数字图像处理实验作业及代码.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验作业及代码.docx(23页珍藏版)》请在冰豆网上搜索。

数字图像处理实验作业及代码.docx

数字图像处理实验作业及代码

数字图像处理—实验一

源程序:

a=imread('rice.png');

figure,imshow(a),title('原图');axison;

a=double(a)/256;

figure,imhist(a),title('原直方图');axison;

r=[0:

0.001:

1];

s1=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1+0.3*(r-1));

s2=[r<=0.5].*(r.^5)*15.9744+[r>0.5].*((r-0.5).^0.2+0.12);

a1=[a<0.35].*a*0.3+[a<=0.65].*[a>=0.35].*(0.105+2.6333*(a-0.35))+[a>0.65].*(1+0.3*(a-1));

a2=[a<=0.5].*(a.^5)*15.9744+[a>0.5].*((a-0.5).^0.2+0.12);

figure,imshow(a1),title('改后一');axison;

figure,imhist(a1),title('改后直方图一');axison;

figure,plot(r,s1),title('变换函数一');axison;

figure,imshow(a2),title('改后二');axison;

figure,imhist(a2),title('改后直方图二');axison;

figure,plot(r,s2),title('变换函数二');axison;

imwrite(a1,'改后rice一.jpg');

imwrite(a2,'改后rice二.jpg');

b=imread('kids.tif');

figure,imshow(b),title('原图');axison;

b=double(b)/256;

figure,imhist(b);title('原直方图');axison;

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('改后一');axison;

figure,imhist(b1),title('改后直方图一');axison;

figure,plot(r,s1),title('变换函数一');axison;

figure,imshow(b2),title('改后二');axison;

figure,imhist(b2),title('改后直方图二');axison;

figure,plot(r,s2),title('变换函数二');axison;

figure,imshow(b3),title('改后三');axison;

figure,imhist(b3),title('改后直方图三');axison;

figure,plot(r,s3),title('变换函数三');axison;

imwrite(b1,'改后kids一.jpg');

imwrite(b2,'改后kids二.jpg');

imwrite(b3,'改后kids三.jpg');

c=imread('circuit.tif');

figure,imshow(c),title('原图');axison;

c=double(c)/256;

figure,imhist(c),title('原直方图');axison;

s=1-r;

c=1-c;

figure,imshow(c),title('变换后');axison;

figure,imhist(c),title('变换后直方图');axison;

figure,plot(r,s),title('变换函数');axison;

imwrite(c,'改后circuit.jpg');

d=imread('rice.png');

figure,imshow(d),title('原图');axison;

d=double(d)/256;

figure,imhist(d),title('原直方图');axison;

r=[0:

0.001:

1];

s=[r<=0.4].*[r>=0.2]*0.6;

d=[d<=0.4].*[d>=0.2]*0.6+[d>0.4].*d+[d<0.2].*d;

figure,imshow(d),title('变换后');axison;

figure,imhist(d),title('变换后直方图');axison;

figure,plot(r,s),title('变换函数');axison;

imwrite(d,'第二次改后rice.jpg');

e=imread('Picture.jpg');

e=e(:

:

1);

e=im2double(e);

figure,imshow(e),title('原图');axison;

figure,imhist(e),title('原直方图');axison;

r=[0:

0.001:

1];

s=[r<0.3].*r*1.1+[r>0.65].*r*0.8+[r>=0.3].*[r<=0.65].*(0.11+r*1.5);

e=[e<0.3].*e*1.1+[e>0.65].*e*0.8+[e>=0.3].*[e<=0.65].*(0.11+e*1.5);

figure,imshow(e),title('变换后');axison;

figure,imhist(e),title('变换后直方图');axison;

figure,plot(r,s),title('变换函数');axison;

imwrite(e,'改后Picture.jpg');

处理前后图像:

结论:

不同的灰度变换对最终图像的影响效果是不同的。

通过matlab灰度变化可以增加图像亮度,提高比照度,使视觉效果更好。

数字图像处理—实验二

源代码:

I1=imread('mountain.jpg');

[J1,T1]=histeq(I1,256);

figure,subplot(2,3,1),imshow(I1),title('原图');axison;

subplot(2,3,2),imhist(I1),title('原图直方图');axison;

subplot(2,3,4),imshow(J1),title('均衡化后图像');axison;

subplot(2,3,5),imhist(J1),title('均衡化后直方图');axison;

subplot(2,3,6),plot(T1),title('变换函数');axison;

I2=uint8(I1);

r=0:

1:

255;

n=([r<=5].*r*1400+[r>5].*[r<=20].*(7000-r*310)+[r>20].*[r<=180].*(900-r*5)...

+[r>180].*[r<=225].*(r*8-1440)+[r>225].*[r<=255].*(3060-r.*12));

[J2,T2]=histeq(I2,n);

figure,subplot(2,3,1),imshow(I2),title('原图');axison;

subplot(2,3,2),imhist(I2),title('原图直方图');axison;

subplot(2,3,4),imshow(J2),title('规定化后图像');axison;

subplot(2,3,5),imhist(J2),title('规定化后直方图');axison;

subplot(2,3,6),plot(T2),title('变换函数');axison;

I3=im2double(I1);

[mn]=size(I3);

r1=zeros(1,256);p=r1;s1=r1;s2=r1;

a=0;

fork=1:

256

fori=1:

m

forj=1:

n

if(I3(i,j)==((k-1)/255));

r1(k)=r1(k)+1;

end

end

end

p(k)=r1(k)/65536;

s1(k)=a+p(k);

a=s1(k);

s2(k)=round(s1(k)/(1/255))/255;

end

[mn]=size(I3);

t=0;

fork=1:

256

t=t+1;

if(k==256||s2(k)~=s2(k+1))

fori=1:

m

forj=1:

n

if(I3(i,j)>=(k-t)/255&&I3(i,j)<=(k-1)/255)

I4(i,j)=s2(k);

end

end

end

t=0;

end

end

I3=mat2gray(I3);

I4=mat2gray(I4);

figure,subplot(2,3,1),imshow(I3),title('原图');axison;

subplot(2,3,2),imhist(I3),title('原图直方图');axison;

subplot(2,3,4),imshow(I4);title('自编函数均衡化');axison;

subplot(2,3,5);imhist(I4);title('自编函数均衡化后直方图');axison;

subplot(2,3,6),plot(s1),title('变换函数');axison;

处理前后图像:

结论:

直方图均衡化通过使用累积函数对灰度值进行“调整”以实现比照度的增强,

通常用来增加许多图像的局部比照度,尤其是当图像的有用数据的比照度相当接近的时候。

通过这种方法,亮度可以更好地在直方图上分布。

这样就可以用于增强局部的比照度而不影响整体的比照度。

数字图像处理—实验三

源代码:

closeall;

I=imread('test3_1.jpg');

I=im2double(I);

tic

J=nlfilter(I,[55],@mean2);

toc

tic

T=nlfilter(I,[55],@std2);

toc

figure

(1),subplot(2,3,1),imshow(I),title('原始图像');axison;

subplot(2,3,2),imshow(J),title('邻域均值图像');axison;

subplot(2,3,3),imshow(T),title('邻域均值标准差图像');axison;

imwrite(J,'nlfilterl滤波后.jpg');

I=imnoise(I,'gaussian',0,0.02);

J=nlfilter(I,[55],@mean2);

T=nlfilter(I,[55],@std2);

subplot(2,3,4),imshow(I),title('加噪图像');axison;

subplot(2,3,5),imshow(J),title('加噪邻域均值图像');axison;

subplot(2,3,6),imshow(T),title('加噪邻域均值标准差图像');axison;

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,[55]);

tic

J4=nlfilter(J2,[55],@mean2);

toc

figure

(2),subplot(2,2,1),imshow(I2),title('原始图像');axison;

subplot(2,2,2),imshow(J2),title('filter2处理后图像');axison;

subplot(2,2,3),imshow(J3),title('medfilt2处理后图像');axison;

subplot(2,2,4),imshow(J4),title('nlfilter处理后图像');axison;

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(I2),title('滤波前');axison;

subplot(1,2,2),imshow(F),title('中值滤波后');axison;

imwrite(F,'自编中值滤波后.jpg');

调用函数一:

functionmid=middle(F1)%求窗口元素的中值

[m,n]=size(F1);

x=m*n;

y=m*n;

k=0;

fori=1:

m

forj=1:

n

k=k+1;

x(k)=F1(i,j);%组成一维数组

end

end

fori=1:

y

k=i;

forj=i+1:

y

ifx(j)

k=j;

end

end

ifk~=i

t=x(k);

x(k)=x(i);

x(i)=t;

end

end

mid=x(ceil(y/2));

functionave=midf(F,m,n)

[X,Y]=size(F);

fori=ceil(m/2):

X-fix(m/2)

forj=ceil(n/2):

Y-fix(n/2)

F1=F(i-fix(m/2):

i+fix(m/2),j-fix(n/2):

j+fix(n/2));%扣出窗口内的元素组成一矩阵

F(i,j)=middle(F1);%求该矩阵的中值

end

end

ave=uint8(F);

处理前后图像:

结论:

平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。

但是这些很容易引起边缘的模糊,常用的有均值滤波、中值滤波,在使用时,针对不同的噪声,也需要不同的滤波法,没有哪种方法是绝对好,必须具体情况具体分析。

数字图像处理—实验四

源代码:

a=imread('cameraman.tif');

a=im2double(a);

figure;

subplot(1,3,1);imshow(a);title('inputimage');

h1=fspecial('sobel');

MotionBlur1=imfilter(a,h1);

subplot(1,3,2);imshow(MotionBlur1);title('sobel-MotionBlurredImage');

h2=fspecial('Laplacia',0);

MotionBlur2=imfilter(a,h2);

subplot(1,3,3);imshow(MotionBlur2);title('Laplacia-MotionBlurredImage');

figure('name','直接输入算子锐化处理','NumberTitle','Off');

subplot(1,3,1);imshow(a);title('inputimage');

dx=[-1-2-1;000;121];

dy=[-101;-202;-101];

d=(dx.^2+dy.^2).^0.5;

MotionBlur3=imfilter(a,d);

subplot(1,3,2);imshow(MotionBlur3);title('sobel-directinput-MotionBlurredImage');

l=[0-10;-14-1;0-10];

MotionBlur4=imfilter(a,l);

subplot(1,3,3);imshow(MotionBlur4);title('Laplacia-directinput-MotionBlurredImage');

a=imread('skeleton.jpg');

a=im2double(a);

figure;

subplot(1,3,1);imshow(a);title('inputimage');

L=[-1-1-1;-18-1;-1-1-1];

MotionBlur1=imfilter(a,L);

subplot(1,3,2);imshow(MotionBlur1);title('对角线Laplacian算子');

MotionBlur2=MotionBlur1+a;

subplot(1,3,3);imshow(MotionBlur2);title('叠加后图形');

figure;

subplot(2,3,1);imshow(a);title('inputimage');

h1=fspecial('sobel');

h2=imfilter(a,h1);

subplot(2,3,2);imshow(h2);title('sobel-MotionBlurredImage');

MotionBlur3=imfilter(h2,[55]);

subplot(2,3,3);imshow(MotionBlur3);title('sobel-领域平均');

MotionBlur4=imsubtract(MotionBlur2,h2);

subplot(2,3,4);imshow(MotionBlur4);title('相乘图象');

MotionBlur5=MotionBlur4+a;

subplot(2,3,5);imshow(MotionBlur5);title('与原始图叠加后图形');

MotionBlur6=imadjust(MotionBlur5,[],[],0.2);

subplot(2,3,6);imshow(MotionBlur6);title('幂指数为0.2的灰度变换');

a1=imread('cell.jpg');

a=im2double(a1);

f=double(a1);

[m,n]=size(f);

fori=1:

m

forj=1:

n

ifi==m

G(i,j)=G(i-1,j);

elseifj==n

G(i,j)=G(i,j-1);

else

G(i,j)=abs(f(i,j)-f(i+1,j+1))+abs(f(i+1,j)-f(i,j+1));

end

end

end

Z=f;

figure;

fori=4:

8

k=find(G>=i);Z(k)=255;

q=find(G

subplot(2,3,1);imshow(a);title('inputimage');

subplot(2,3,i-2);imshow(Z);title(['门限T为',num2str(i)]);

end;

处理前后图像:

结论:

Sobel对噪声的增强作用小,具有一定的平滑特性和方向特性,处理后的图象边界比较粗略,反映边界信息较少,但反映的边界比较清晰。

Laplacian算子对噪声的增强作用较大,处理后的图象边缘较sobel弱,反映的边界信息不是太清晰。

原图像经叠加,增强了噪声,但处理后的图像细节部分比原图像清晰。

.经线性滤波处理后,去除噪声的同时使图象的边缘变得模糊了。

 

实验小结:

通过对数字图像处理这门课的学习及matlab上机的实验操作,虽然学习不很深入,但我也算认识到了对图像基本的变换方式。

我们知道图像处理是对图像进行加工,从而满足人类的心理、视觉或应用需求的一种行为。

而很多图像由于生成时更方面的干扰,使得图像并不如人们所期望的那样清晰和便于分析,这就需要对图像进行后期的处理,如去噪,增加亮度或比照度,减小亮度或比照度,以到达更符合人们需求的图像。

而Matlab四个实验的学习则有效地实现了部分功能。

初学matlab,知道了它是一种基于矩阵数值计算的软件,实际操作中应该充分认识到这一点。

对图像进行处理的时候,还有多方面的因素要考虑,像图像用imread读取的时候,图像的保存路径是否正确,读取的图像是不是bmp格式的,处理后的像素值是不是在0~255之间等,期间犯了很多错误,也改了很多错误,虽然课时不长,但确实学到了很多。

从四个小实验及课堂的学习也可以想象得到图像数字处理的大应用。

在航空航天技术、生物医学工程、通信工程、军事、文化艺术和电子商务方面大有可为,初学的我们,所了解的只是九牛一毛。

希望今后能再进行深入的学习,通过学习到达更深入的目的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1