《数字图像处理》实验指导书.docx
《《数字图像处理》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数字图像处理》实验指导书.docx(42页珍藏版)》请在冰豆网上搜索。
《数字图像处理》实验指导书
《数字图像处理》
实验指导书
山东建筑大学
信息与电气工程学院
2016年6月
实验守则……………………………………………………………………1
实验一灰度变换与空间域滤波……………………………………………2
实验二图像频域滤波……………………………………………………10
实验三图像形态学处理…………………………………………………17
实验四图像分割…………………………………………………………21
实验五图像的几何变换………………………………………………27
实验六数字图像处理应用………………………………………………29
实验守则
为了加强实验室管理,提高实验教学质量,培养学生理论联系实际的学风,提高实际操作技能,确保人身和设备的安全,特制定如下守则:
1.实验前要认真预习,了解实验目的、实验原理、实验线路、实验步骤及欲测的物理量。
熟悉和实验有关的仪器设备的用途、使用方法及注意事项。
能回答指导教师的提问。
2.每个实验小组要选出组长1名,实验时要认真分工,轮流当记录员和操作者,以便每个人都能得到较全面的训练。
实验线路接好后,各组学生要自行检查,然后请指导教师检查,经检查无误后方可接通电源。
改接线路必须先断开电源,以免触电及损坏仪表。
改接后的线路仍需经教师检查。
3.实验时应听从教师指导,严格按实验步骤进行,如实记录实验数据,积极思考和分析实验中发生的现象。
实验中如遇事故应立即关断电源、保持现场,报告指导教师及时处理。
如有损坏仪器或器件,要填写事故原因及报损单。
4.实验完毕应立即关断电源,把实验记录交指导教师检查合格后方可拆除线路。
如发现实验记录有不当和错误之外,应立即重作。
要把所有仪器、仪表、工具、导线整理好。
经指导教师清点后方可离开实验室。
5.要爱护公物。
实验室所有的仪表、工具、器件等一律不得擅自带出。
实验中如需更换仪器、仪表、工具、器件等,必须经指导教师同意。
不得擅自更换或乱拿他组物品。
未经允许,不得擅自拆卸实验用的仪器、设备。
6.实验时要严肃认真,讲究文明、礼貌,要保持安静和室内整洁,不随地吐痰和乱抛杂物。
实验完毕要打扫实验室卫生。
7.书写实验报告时,语言要力求简练,书写应端正,作图应正规。
实验报告一般应包括以下内容:
(1)实验目的;所用仪器、仪表、器件的名称及规格型号;实验电路原理图。
(2)实验项目(指导书中的详细内容不必抄录);测试记录表;波形图及现象记录。
(3)实验数据整理,计算后的结果、及根据实验数据绘制的曲线。
(4)实验分析,应包括与理论计算值的比较、现象分析。
8.关于实验考核:
学生在实验课中的实际技能水平与实验报告的质量是评定本课程实验成绩的标准。
因各种原因缺做实验和缺交实验报告者,实验成绩要受影响。
实验一灰度变换与空间域滤波
一.实验目的及要求
1.了解MATLAB的操作环境和图像处理工具箱ImageProcessingToolbox的功能;
2.加深理解图像灰度变换与空间域滤波概念和算法原理;
3.掌握MATLAB中图像灰度变换与空间域滤的实现方法。
二、实验内容
㈠研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
利用MATLAB帮助文档熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
(可将每段程序保存为一个.m文件)
1.图像及视频文件的基本操作
⑴RGB彩色图像数据的读写操作
⑵索引图像与RGB彩色图像之间的转换
closeall;
clearall;
%读入一幅RGB彩色图像
IRGB=imread('Fig0701_fruits.jpg');
figure,imshow(IRGB);title('OriginalRGBimage');
%把RGB彩色图像转换为索引图像,为了比较差异,选择颜色表中的颜色数量为64
[Xind,map]=rgb2ind(IRGB,64);
%显示转换后的索引图像
figure,imshow(Xind,map);title('ConvertedtoIndexdimage');
%将结果保存为tif格式图像文件
imwrite(Xind,map,'fruits_indexed.tif');
%
%读入一幅彩色索引图像并显示
[Ind,map2]=imread('trees.tif');
figure,imshow(Ind,map2);title('OriginalIndexdimage');
%查看图像像素信息,在图像上移动鼠标,注意左下角的信息
impixelinfo;
%暂停,按空格键继续
pause;
%把索引图像转换为RGB彩色图像
Irgb=ind2rgb(Ind,map2);
%显示得到的彩色图像
figure,imshow(Irgb);title('ConvertedtoRGBimage');
%将结果保存为jpg格式图像文件
imwrite(Irgb,'trees_rgb.jpg');
%-----------------------------------------------------------------------------
⑶彩色图像转换为灰度图像和无彩色图像
closeall;
clearall;
%读取一幅RGB彩色图像
Irgb=imread('Fig0701_fruits.jpg');
%将其转换为灰度图像
Igray1=rgb2gray(Irgb);
%显示转换结果
figure,imshow(Irgb);title('OriginalRGBimage');
figure,imshow(Igray1);title('Convertedgrayimage');
%
%将上述RGB彩色图像转换为无彩(灰色)彩色图像,
%即转换后的图像数据仍为RGB彩色图像格式
%创建一个与真彩色图像转维数相同的uint8型矩阵
Iachro=uint8(zeros(size(Irgb)));%
Iachro(:
:
1)=Igray1;
Iachro(:
:
2)=Igray1;
Iachro(:
:
3)=Igray1;
figure,imshow(Iachro);title('Convertedachromaticcolorimage');
%--------------------------------------------------------------------------------
⑷灰度彩色图像转换为二值图像
clc,clear,closeall,closeall;
%读取一幅灰度图像并显示
I=imread('rice.png');
figure,imshow(I);
%利用阈值分割把灰度图像转换为二值图像
level=graythresh(I);
bw=im2bw(I,level);
figure,imshow(bw);title('Convertedbinaryimage');
%查看图像像素信息,在图像上移动鼠标,注意左下角的信息
impixelinfo;
%----------------------------------------------------------------------------
⑸视频文件的读取及图像帧的抽取
%采用参考图像实现运动目标分割
%Thism-fileimplementsthebackgroundsubtractionusingreferenceimage
%formovingobjectsegmentation.
clearall;closeall;
%Constructavideoreaderclasstoreadaavifile,firstthe'traffic.avi',
%thenthe‘highwayII_raw.avi'.
videoObj=VideoReader('traffic.avi');
numFrames=videoObj.NumberOfFrames;
%Readthefirstframeinthevideosequenceasthereferencebackgroundimage
newframe=read(videoObj,1);
Iref=double(newframe);
%Gettheheight,width,andnumberofcolorcomponentsoftheframe
[height,width,numColor]=size(newframe);
%Assignavaluetothethreshold
Threh=20;
fg=zeros(height,width);
%Toavoidconsumingtoomuchmemories,readonlyaoneframeeachtime.
forn=1:
numFrames
newframe=read(videoObj,n);
%Calculatetheabsolutedifferrenceimagebetweenthenewframe
%andthereferrenceframeIref.
Idiff=abs(double(newframe)-Iref);
%motionsegment,detectionmovingobjectbythreholdingIdiff
fg=Idiff>Threh;
if(numColor==3)%colorimage
fg=fg(:
:
1)|fg(:
:
2)|fg(:
:
3);
end
figure
(1);
subplot(1,2,1),imshow(newframe);
title(strcat('CurrentImage,No.',int2str(n)));
subplot(1,2,2),imshow(fg);
title('Segmentedresultusingreferenceimage');
end
%------------------------------------------------------------
2.图像灰度变换
⑴使用工具箱函数imadjust的直接灰度变换
clearall;closeall
I=imread('cameraman.tif');
注意:
imadjust()
功能:
调整图像灰度值或颜色映像表,也可实现伽马校正。
语法:
J=imadjust(I,[low_inhigh_in],[low_outhigh_out],gamma)
newmap=imadjust(map,[low_inhigh_in],[low_outhigh_out],gamma)
RGB2=imadjust(RGB1,...)
J=imadjust(I,[00.2],[0.51]);
imshow(I)
figure,imshow(J)
[X,map]=imread('forest.tif');
figure,imshow(X,map)
I2=ind2gray(X,map);
J2=imadjust(I2,[],[],0.5);
figure,imshow(I2);
figure,imshow(J2);
J3=imadjust(I2,[],[],1.5);
figure,imshow(J3);
helpimadjust%Displaytheimadjust()functioninformation.
%------------------------------------------------------------
⑵直方图均衡化
%CleartheMATLABworkspaceofanyvariablesandcloseopenfigurewindows.
clearall;closeall;
%Readsthesampleimages,andstoresitinanarraynamedI,anddisplaytheimage
I=imread('Fig0310(b)(washed_out_pollen_image).tif');
imshow(I);
%Createahistogramoftheimageanddisplayitinanewfigurewindow
figure,imhist(I);
%Histogramequalization.
[I2,T]=histeq(I);
%Displaythenewequalizedimage,I2,inanewfigurewindow.
figure,imshow(I2);
%CreateahistogramoftheequalizedimageI2.
figure,imhist(I2);
%plotthetransformationcurve.
figure,plot((0:
255)/255,T);
%WritethenewlyadjustedimageI2toadiskfilenamed‘pollen_image2.tif’.
imwrite(I2,'pollen_image2.tif');
%Checkthecontentsofthenewlywrittenfile
imfinfo('pollen_image2.tif')
%------------------------------------------------------------
3.空间域滤波
⑴平滑滤波(模糊、去噪)
clearall;closeall;
I=imread('eight.tif');
h1=ones(3,3)/9;
h2=ones(5,5)/25;
I1=imfilter(I,h1);
I2=imfilter(I,h2);
figure
(1),imshow(I),title('OriginalImage');
figure
(2),imshow(I1),title('FilteredImageWith3*3')
figure(3),imshow(I2),title('FilteredImageWith5*5')
%加入Gaussian噪声
J1=imnoise(I,'gaussian',0,0.005);
%加入椒盐噪声
J2=imnoise(I,'salt&pepper',0.02);
%对J1、J2进行平均值平滑滤波
K1=imfilter(J1,fspecial('average',3));
K2=imfilter(J2,fspecial('average',3));
figure(4);
subplot(2,2,1),imshow(J1),title('gaussian');
subplot(2,2,2),imshow(J2),title('salt&pepper');
subplot(2,2,3),imshow(K1),title('average');
subplot(2,2,4),imshow(K2);
%对J1、J2进行中值滤波
K3=medfilt2(J1,[33]);
K4=medfilt2(J2,[33]);
figure(5);
subplot(2,2,1),imshow(J1),title('gaussian');
subplot(2,2,2),imshow(J2),title('salt&pepper');
subplot(2,2,3),imshow(K3),title('Medianfiltering');
subplot(2,2,4),imshow(K4)
%------------------------------------------------------------
⑵锐化滤波
clearall;closeall
f=imread('Fig0338(a)(blurry_moon).tif');
w4=fspecial('laplacian',0);
w8=[1,1,1;1,-8,1;1,1,1];
f=im2double(f);
g4=f-imfilter(f,w4,'replicate');
g8=f-imfilter(f,w8,'replicate');
g4=im2uint8(g4);
g8=im2uint8(g8);
imshow(f);
figure,imshow(g4);
figure,imshow(g8);
%------------------------------------------------------------
㈡采用MATLAB底层函数编程实现
(参看自编建议或PPT中的相关内容)
1.灰度变换之动态范围扩展
假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至[c,d],则线性变换可表示为:
用MATLAB底层函数编程实现上述变换函数。
观察图像‘pout.tif’的灰度直方图,选择合适的参数[a,b]、[c,d]对图像‘pout.tif’进行灰度变换,以获得满意的视觉效果。
2.非锐化掩蔽和高升滤波
从原图像中减去其非锐化(平滑过的)图像的过程称为非锐化掩蔽,其基本步骤为:
⑴对原图像进行平滑滤波得到模糊图像
;
⑵从原图像中减去模糊图像,产生的差值图像称为模板
;
⑶将模板加到原图像上,得到锐化后的图像
。
即,
用MATLAB函数编程实现上述功能。
3.对图片中人脸区域做模糊处理
人脸是准确鉴定一个人的身份,推断出一个人的种族、地域,地位等信息的重要依据。
科学界从图像处理、计算机视觉等多个学科对人脸进行研究。
人脸识别在满足人工智能应用和保护信息安全方面都有重要的意义,是当今信息化时代必须解决的问题。
电视采访、街景地图等应用中,为保护当事人或行人的隐私权,需要将视频图像中当事人的人脸区域作模糊或马赛克处理。
找一幅含正面人脸的图片,使用函数impixelinfo找出图片中人脸区域的范围(左上角、右下角的行列坐标),然后对图像中人脸区域模糊或马赛克处理。
三、实验设备
1.微机
2.MATLAB2014或以上版本
四、预习与思考
1.预习实验内容,阅读教材熟悉实验原理;
2.查阅资料,熟悉MATLAB的操作环境和基本功能。
熟悉实验中涉及的有关函数。
3.利用课余时间,用MATLAB底层函数编程实现实验内容
(二)中的灰度线性变换。
4.你能否给出实现样例程序功能的其它方法?
5.简述高斯噪声和椒盐噪声的特点。
6.结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?
7.结合实验内容,定性评价滤波窗口对去噪效果的影响?
五、实验报告要求
1.简述实验目的和实验原理;
2.叙述各段程序功能,介绍关键函数的使用方法;
3.改变有关参数,用数据和图片分析比较实验结果;
4.写出本实验的心得体会。
实验二频率域处理
一.实验目的及要求
1.掌握MATLAB傅里叶变换方法
2.掌握频率域滤波的概念及方法
3.熟练掌握频率域各类滤波器的特点及设计方法
4.利用MATLAB程序进行频域滤波
二、实验内容
㈠研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1.简单二值图像的傅里叶变换及幅度谱
clearall;closeall;clc;
%创建一个二值图像
f=zeros(256,256);
f(100:
156,118:
138)=1;
%计算其傅里叶变换
F=fft2(f);
F1=fftshift(F);%中心化
%显示原图像及其幅度谱
figure,imshow(f)
figure,imshow(abs(F),[]);colormap(gray);colorbar;
%将幅度谱对数变换后再显示
figure,imshow(log(1+abs(F)),[]);colormap(gray);colorbar;
figure,imshow(log(1+abs(F1)),[]);colormap(gray);colorbar;
figure,mesh(1:
256,1:
256,abs(F1));
%将图像旋转45度,然后重做上述步骤
f45=imrotate(f,45,'crop');
F2=fft2(f45);
F3=fftshift(F2);
figure,imshow(f45);
figure,imshow(log(1+abs(F3)),[]);colormap(gray);colorbar
figure,mesh(1:
256,1:
256,abs(F3));
%------------------------------------------------------------
2.频率域平滑(低通)滤波
⑴空间域高斯低通滤波器的频率域实现
closeall;clearall;clc;
I=imread('text.png');
f=im2double(I);
%定义高斯低通滤波器标准差变量,初始化为1
sigma=2;
%根据标准差sigma大小,确定滤波模板的尺寸
hsize=floor(6*sigma);
ifmod(hsize,2)==0
hsize=hsize+1;
end
%生成指定大小的空间域高斯低通滤波模板
h=fspecial('gaussian',hsize,sigma);
AB=size(f);
CD=size(h);
PQ=AB+CD-1;
F=fft2(f,PQ
(1),PQ
(2));
H=fft2(h,PQ
(1),PQ
(2));
g=real(ifft2(F.*H));
g=imcrop(g,[1,1,AB
(2)-1,AB
(1)-1]);
g=im2uint8(g);
figure,imshow(I);title('OriginalImage');