数字图像处理实验作业及代码Word下载.docx
《数字图像处理实验作业及代码Word下载.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验作业及代码Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
![数字图像处理实验作业及代码Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/25/5247af9b-b736-4729-86fc-12accc16c10a/5247af9b-b736-4729-86fc-12accc16c10a1.gif)
figure,plot(r,s1),title('
变换函数一'
figure,imshow(a2),title('
改后二'
figure,imhist(a2),title('
改后直方图二'
figure,plot(r,s2),title('
变换函数二'
imwrite(a1,'
改后rice一.jpg'
imwrite(a2,'
改后rice二.jpg'
b=imread('
kids.tif'
figure,imshow(b),title('
b=double(b)/256;
figure,imhist(b);
title('
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('
figure,imhist(b1),title('
figure,imshow(b2),title('
figure,imhist(b2),title('
figure,imshow(b3),title('
改后三'
figure,imhist(b3),title('
改后直方图三'
figure,plot(r,s3),title('
变换函数三'
imwrite(b1,'
改后kids一.jpg'
结论:
不同的灰度变换对最终图像的影响效果是不同的。
通过matlab灰度变化可以增加图像亮度,提高对比度,使视觉效果更好。
数字图像处理—实验二
源代码:
I1=imread('
mountain.jpg'
[J1,T1]=histeq(I1,256);
figure,subplot(2,3,1),imshow(I1),title('
subplot(2,3,2),imhist(I1),title('
原图直方图'
subplot(2,3,4),imshow(J1),title('
均衡化后图像'
subplot(2,3,5),imhist(J1),title('
均衡化后直方图'
subplot(2,3,6),plot(T1),title('
变换函数'
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('
subplot(2,3,2),imhist(I2),title('
subplot(2,3,4),imshow(J2),title('
规定化后图像'
subplot(2,3,5),imhist(J2),title('
规定化后直方图'
subplot(2,3,6),plot(T2),title('
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
p(k)=r1(k)/65536;
s1(k)=a+p(k);
a=s1(k);
s2(k)=round(s1(k)/(1/255))/255;
end
t=0;
t=t+1;
if(k==256||s2(k)~=s2(k+1))
if(I3(i,j)>
=(k-t)/255&
&
I3(i,j)<
=(k-1)/255)
I4(i,j)=s2(k);
t=0;
I3=mat2gray(I3);
I4=mat2gray(I4);
figure,subplot(2,3,1),imshow(I3),title('
subplot(2,3,2),imhist(I3),title('
subplot(2,3,4),imshow(I4);
自编函数均衡化'
subplot(2,3,5);
imhist(I4);
自编函数均衡化后直方图'
subplot(2,3,6),plot(s1),title('
处理前后图像:
直方图均衡化通过使用累积函数对灰度值进行“调整”以实现对比度的增强,
通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以更好地在直方图上分布。
这样就可以用于增强局部的对比度而不影响整体的对比度。
数字图像处理—实验三
closeall;
I=imread('
test3_1.jpg'
I=im2double(I);
tic
J=nlfilter(I,[55],@mean2);
toc
T=nlfilter(I,[55],@std2);
figure
(1),subplot(2,3,1),imshow(I),title('
原始图像'
subplot(2,3,2),imshow(J),title('
邻域均值图像'
subplot(2,3,3),imshow(T),title('
邻域均值标准差图像'
imwrite(J,'
nlfilterl滤波后.jpg'
I=imnoise(I,'
gaussian'
0,0.02);
subplot(2,3,4),imshow(I),title('
加噪图像'
subplot(2,3,5),imshow(J),title('
加噪邻域均值图像'
subplot(2,3,6),imshow(T),title('
加噪邻域均值标准差图像'
加噪nlfilterl滤波后.jpg'
I2=imread('
test3_2.jpg'
J2=im2double(I2);
ave=fspecial('
average'
5);
J2=filter2(ave,J2);
J3=medfilt2(J2,[55]);
J4=nlfilter(J2,[55],@mean2);
figure
(2),subplot(2,2,1),imshow(I2),title('
subplot(2,2,2),imshow(J2),title('
filter2处理后图像'
subplot(2,2,3),imshow(J3),title('
medfilt2处理后图像'
subplot(2,2,4),imshow(J4),title('
nlfilter处理后图像'
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('
滤波前'
subplot(1,2,2),imshow(F),title('
中值滤波后'
imwrite(F,'
自编中值滤波后.jpg'
调用函数一:
functionmid=middle(F1)%求窗口元素的中值
[m,n]=size(F1);
x=m*n;
y=m*n;
k=0;
fori=1:
k=k+1;
x(k)=F1(i,j);
%组成一维数组
end
y
k=i;
forj=i+1:
ifx(j)<
x(k)
k=j;
ifk~=i
t=x(k);
x(k)=x(i);
x(i)=t;
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);
%求该矩阵的中值
ave=uint8(F);
平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。
但是这些很容易引起边缘的模糊,常用的有均值滤波、中值滤波,在使用时,针对不同的噪声,也需要不同的滤波法,没有哪种方法是绝对好,必须具体情况具体分析。
数字图像处理—实验四
cameraman.tif'
a=im2double(a);
figure;
subplot(1,3,1);
imshow(a);
inputimage'
h1=fspecial('
sobel'
MotionBlur1=imfilter(a,h1);
subplot(1,3,2);
imshow(MotionBlur1);
sobel-MotionBlurredImage'
h2=fspecial('
Laplacia'
0);
MotionBlur2=imfilter(a,h2);
subplot(1,3,3);
imshow(MotionBlur2);
Laplacia-MotionBlurredImage'
figure('
name'
'
直接输入算子锐化处理'
NumberTitle'
Off'
dx=[-1-2-1;
000;
121];
dy=[-101;
-202;
-101];
d=(dx.^2+dy.^2).^0.5;
MotionBlur3=imfilter(a,d);
imshow(MotionBlur3);
sobel-directinput-MotionBlurredImage'
l=[0-10;
-14-1;
0-10];
MotionBlur4=imfilter(a,l);
imshow(MotionBlur4);
Laplacia-directinput-MotionBlurredImage'
a=imread('
skeleton.jpg'
L=[-1-1-1;
-18-1;
-1-1-1];
MotionBlur1=imfilter(a,L);
对角线Laplacian算子'
MotionBlur2=MotionBlur1+a;
叠加后图形'
subplot(2,3,1);
h2=imfilter(a,h1);
subplot(2,3,2);
imshow(h2);
MotionBlur3=imfilter(h2,[55]);
subplot(2,3,3);
sobel-领域平均'
MotionBlur4=imsubtract(MotionBlur2,h2);
subplot(2,3,4);
相乘图象'
MotionBlur5=MotionBlur4+a;
imshow(MotionBlur5);
与原始图叠加后图形'
MotionBlur6=imadjust(MotionBlur5,[],[],0.2);
subplot(2,3,6);
imshow(MotionBlur6);
幂指数为0.2的灰度变换'
a1=imread('
cell.jpg'
a=im2double(a1);
f=double(a1);
[m,n]=size(f);
m
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));
Z=f;
fori=4:
8
k=find(G>
=i);
Z(k)=255;
q=find(G<
i);
Z(q)=0;
subplot(2,3,1);
subplot(2,3,i-2);
imshow(Z);
title(['
门限T为'
num2str(i)]);
end;
Sobel对噪声的增强作用小,具有一定的平滑特性和方向特性,处理后的图象边界比较粗略,反映边界信息较少,但反映的边界比较清晰。
Laplacian算子对噪声的增强作用较大,处理后的图象边缘较sobel弱,反映的边界信息不是太清晰。
原图像经叠加,增强了噪声,但处理后的图像细节部分比原图像清晰。
.经线性滤波处理后,去除噪声的同时使图象的边缘变得模糊了。
实验小结:
通过对数字图像处理这门课的学习及matlab上机的实验操作,虽然学习不很深入,但我也算认识到了对图像基本的变换方式。
我们知道图像处理是对图像进行加工,从而满足人类的心理、视觉或应用需求的一种行为。
而很多图像由于生成时更方面的干扰,使得图像并不如人们所期望的那样清晰和便于分析,这就需要对图像进行后期的处理,如去噪,增加亮度或对比度,减小亮度或对比度,以达到更符合人们需求的图像。
而Matlab四个实验的学习则有效地实现了部分功能。
初学matlab,知道了它是一种基于矩阵数值计算的软件,实际操作中应该充分认识到这一点。
对图像进行处理的时候,还有多方面的因素要考虑,像图像用imread读取的时候,图像的保存路径是否正确,读取的图像是不是bmp格式的,处理后的像素值是不是在0~255之间等,期间犯了很多错误,也改了很多错误,虽然课时不长,但的确学到了很多。
从四个小实验及课堂的学习也可以想象得到图像数字处理的大应用。
在航空航天技术、生物医学工程、通信工程、军事、文化艺术和电子商务方面大有可为,初学的我们,所了解的只是九牛一毛。
希望今后能再进行深入的学习,通过学习达到更深入的目的。