数字图像处理实验.docx
《数字图像处理实验.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验.docx(14页珍藏版)》请在冰豆网上搜索。
数字图像处理实验
班级:
通信一班
学号:
********
姓名:
******
实验部分:
实验一:
图像的基本操作处理
1、目的:
熟悉MATLAB中图像处理工具箱,实践图像基本处理操作,掌握相关函数调用及其参数设置方法,查看实际效果。
2、具体内容:
1)、读入目标图像,赋给变量I;
I=imread('my.jpg');
2)、查看图像的基本信息;
>>info=imfinfo('my.jpg')
info=
Filename:
'my.jpg'
FileModDate:
'16-Sep-201208:
19:
40'
FileSize:
12913
Format:
'jpg'
FormatVersion:
''
Width:
194
Height:
139
BitDepth:
24
ColorType:
'truecolor'
FormatSignature:
''
NumberOfSamples:
3
CodingMethod:
'Huffman'
CodingProcess:
'Sequential'
Comment:
{}
3)、查看图像在内存中的情况;
>>whos
NameSizeBytesClassAttributes
I139x194x380898uint8
info1x11884struct
4)、对图像进行缩放处理(imresize),放大1.5倍,并在当前空间下存储名称为‘exp11’的图片;
J=imresize(I,1.5);imwrite(J,'exp11.jpg');
5)、对放大图像进行30°的旋转(imrotate),并在当前空间下存储名称为‘exp12’的图片;
B=imrotate(J,30);imwrite(B,'exp12.jpg');
6)、分别给原始图像和变换后图像赋予相应的标题名称(输入图片为
‘原图像’;输出图像为‘放大1.5倍图像’,‘旋转30°图像’),并在同一个窗口中同时显示几幅图片,进行比较;
subplot(2,2,1),subimage(I);title('原图像');subplot(2,2,2),subimage(J);title('放大1.5倍图像');subplot(2,2,3),subimage(B);title('旋转30°图像');
7)、将工作空间中的变量保存为‘exp13.mat’文件,同时写出将该文件重新装入工作空间的语句;
save('exp13');
loadexp13;
8)、给原图像增加颜色条显示;
imshow(I);colorbar;
9)、利用imcrop函数通过交互方式将图像中人脸区域剪切提取出来,存为名称为‘face’的新的图像;
A=imcrop(I)
imshow(A)
imwrite(A,'face.jpg');
10)将原始图片分别转换成灰度图像、HSV色彩空间下的图像和二值图像,并在同一窗口中比较。
C=rgb2gray(I);
imshow(C)
D=rgb2hsv(I);
imshow(D)
E=im2bw(I,0.5);
imshow(E)
subplot(2,2,1),subimage(C);title('灰度图像');subplot(2,2,2),subimage(D);title('HSV');subplot(2,2,3),subimage(E);title('二值图像');
3、实验报告要求:
1)、列出具体的实验过程(处理函数及对应的结果);
2)、进行必要的结果分析;
3)、给出相关的结论或心得。
另注:
要求原始图像采用包含自己头像的照片,图片大小控制在640×480大小之内,并将每一步显示的结果附在语句的下方。
实验二:
图像灰度统计特性及其相关变换
1、目的:
利用图像统计特性,了解直方图的形成原理,并根据实际要求对其进行相关操作,以改善视觉效果。
2、具体内容:
1)、读入RGB目标图像,赋给变量M;
M=imread('my.jpg');
2)、返回选定图像像素点的颜色值(impixel);
F=impixel(M)
F=
215185159
3)、将原图像转换成灰度图像,赋给变量N;
N=rgb2gray(M);
imshow(N)
4)、根据直方图定义,通过编程方式给出像素点统计形式的直方图,并与利用imhist函数获得的直方图在两个不同窗口中进行比较;
imhist(N);
[m,n]=size(N);
C=zeros(1,256);
fori=1:
m
forj=1:
n
C(N(i,j)+1)=C(N(i,j)+1)+1;
end
end
figure
(2);
bar(C,0.00)
5)、通过编程方式给出概率形式的直方图;/////////////////////////
6)、利用对比度调整方法来改善图像质量;imadjust
F=imadjust(N);
imshow(F)
7)、通过直方图均衡化原理编程和函数调用(histeq)两种方式,实现图像的均衡化处理,并比较处理的结果;///////////////////////////
G=histeq(N);
imshow(G)
8)、将图像转换成二值图像,设定相应的阈值,进行分割处理,并比较果;
H=im2bw(N,0.5);I=im2bw(N,0.2);J=im2bw(N,0.9);
subplot(2,2,1),subimage(H);subplot(2,2,2),subimage(I);subplot(2,2,3),subimage(J);%越大越黑;
9)、通过编程方式对转换后的图像N实施分段灰度变换处理,相关变换公式为:
/////////////////////////////////////////////////////
I=imread('my.jpg');figure%subplot(2,2,1)imshow(I)f0=0;g0=0;f1=20;g1=10;f2=180;g2=230;f3=255;g3=255;figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3])title('lineartransformation');r1=(g1-g0)/(f1-f0);%第一段斜
b1=g0-r1*f0;%第一段y轴截距r2=(g2-g1)/(f2-f1);%第二段斜率b2=g1-r2*f1;%第二段y轴截距r3=(g3-g2)/(f3-f2);%第三段斜率b3=g2-r3*f2;%第三段y轴截距[m,n]=size(I);x2=double(I);fori=1:
mforj=1:
nf=x2(i,j);g(i,j)=0;if(f=f1)&(f<=f2)g(i,j)=r2*f+b2;%elseif(f>=f2)&(f<=f3)elseg(i,j)=r3*f+b3;endendendfigure,imshow(mat2gray(g));
实验三:
图像增强
1、目的:
结合课上学习的相关图像增强(平滑和锐化)处理知识,利用编程和相关函数知识实现图像的处理和结果的比较分析。
着重加强对模板概念的理解,掌握利用模板通过编程实现图像的增强操作。
2、具体内容:
1)、给原图像分别加入高斯噪声和椒盐噪声,查看结果显示;
M=imread(my.jpg);
M=rgb2gray(M);
N=imnoise(M,'gaussian',0.02);
imshow(N)
O=imnoise(M,'salt&pepper',0.02);
figure;imshow(O)
2)、分别设计一个可用于平滑处理的3×3和5×5模板;
a=ones(3,3)/9;
b=ones(5,5)/25;
3)、采用上步骤设计的模板,结合模板平滑理论,通过编程和函数调用两种方式分别对加入高斯和椒盐噪声的图像进行平滑处理,并在同一窗口显示比较,分析处理过程和处理结果;
J=imfilter(N,a);
>>K=imfilter(O,a);
>>A=imfilter(N,b);
>>b=imfilter(O,b);
subplot(2,2,1),subimage(J);subplot(2,2,2),subimage(K);subplot(2,2,3),subimage(A);subplot(2,2,4),subimage(b);
P=filter2(fspecial('average',3),N)/255;
imshow(P)
R=filter2(fspecial('average',3),O)/255;
figure;imshow(R)
4)、用3×3模板分别对高斯噪声和椒盐噪声图像进行均值滤波和中值滤波,并在同一窗口显示结果,结合原理分析两种方法的差异,并给出两种方法的适用范围;
P=filter2(fspecial('average',3),O)/255;
R=filter2(fspecial('average',3),O)/255;
S=medfilt2(N);
T=medfilt2(O);
subplot(2,2,1),subimage(P);subplot(2,2,2),subimage(R);subplot(2,2,3),subimage(S);subplot(2,2,4),subimage(T);
5)、以sobel算子为例,采用它的两个模板,对加入高斯噪声的图像进行锐化处理并查看处理效果,分析其处理过程和处理的特点;
h3=fspecial('sobel');
U=filter2(h3,N);
imshow(U)
6)、分别用prewitt和拉普拉斯算子图像进行锐化处理,比较处理效果
并分析原因。
h4=fspecial('prewitt');
V=filter2(h4,N);
imshow(V)
h5=fspecial('laplacian');
W=filter2(h5,N);
imshow(W)
实验四:
边缘检测
1、目的:
利用相关函数,实现图像的边缘检测,为进一步分析图像提供预处理。
2、要求:
利用不同的算子,并设定不同的参数,来得到图像边缘检测,并进行比较分析。
edge
3、具体内容:
1)、robert算子;
2)、sobel算子;
3)、LoG算子;
4)、prewitt算子;
5)、canny算子;
6)、利用3×3模板实现对图像的平均滤波处理(要求:
自己编程,实现操作,给出相关结果)。
另注:
相关算子可到工具箱内查询其具体操作,及参数设定情况。
自编程序时要求每段给出说明。
BW1=edge(Q,'roberts');
BW2=edge(Q,'sobel');
BW3=edge(Q,'log');
BW4=edge(Q,'prewitt');
BW5=edge(Q,'canny');
subplot(3,2,1),subimage(BW1);subplot(3,2,2),subimage(BW2);subplot(3,2,3),subimage(BW3);subplot(3,2,4),subimage(BW4);subplot(3,2,5),subimage(BW5);
实验五:
频域变换
1、目的:
从频域角度来分析图像,熟悉频域变换及其特点。
2、具体内容:
1)、读入目标图像;
2)、进行傅里叶变换,查看频谱效果(分别用幅度和幅度对数);
M=imread('my.jpg');
Q=rgb2gray(M);
N=100;
f=zeros(50,50);
f(15:
35,23:
28)=1;
figure;
F=fft2(f,N,N);
imshow(abs(F))
H=fft2(f,N,N);
imshow(log(abs(F)))
3)、进行中心平移处理(M/2,N/2);
I=fftshift(F);
imshow(log(abs(I)))
4)、对原始图像进行离散余弦变换;
J=dct2(Q);imshow(log(abs(J)))
5)、比较两者效果,并分析原因;///////////////////////////////////////////////
6)、利用逆变换还原图像,并进行比较。
K=idct2(J);
imshow(K,[0255])
7)、利用subplot(m,n,p)函数显示多幅图片。
subplot(3,2,1),subimage(abs(F));subplot(3,2,2),subimage(log(abs(F)));subplot(3,2,3),subimage(log(abs(I)));subplot(3,2,4),subimage(log(abs(J)));subplot(3,2,5),subimage(K,[0255]);