您好,欢迎访问三七文档
bb制作~v.v1图像处理技术实验指导书彭智勇实验一matlab数字图像处理基础基本内容:熟悉MatLab软件中图像输入/输出/显示/转换的基本命令;了解图像IO基本函数、矩阵与图像和图像格式的对应关系、灰度/彩色/二值图像的相互转换数字图像基础.数字图像读入与输出:InImg=imread(‘图像文件’):读入指定的图像文件到内存InImg:矩阵变量,保存读入的数字图像;图像文件:全路径的图像文件名(格式为:*.bmp或*.jpg);例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)imwrite(OutImg,‘图像文件’):输出内存中图像数据到文件OutImg:矩阵变量,保存的数字图像;图像文件:全路径的图像文件名(格式为:*.bmp或*.jpg);例如:ImWrite(OutImg,‘d:\DirName\demoImg_outPut.bmp’)将OutImg中的矩阵数据作为图像文件保存;whosImgData:屏幕输出图像的相关信息ImgData:矩阵变量,保存在内存中的数字图像数字图像显示:imshow(ImgData):将图像文件显示到屏幕ImgData:矩阵变量,保存待显示的数字图像;例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)Imshow(InImg)(显示读入的图像文件)subPlot(行数,列数,区域索引);imshow(ImgData):将图像文件显示到指定的屏幕区域ImgData:矩阵变量,保存待显示的数字图像;行数,列数:屏幕划分区域数(行数x列数);区域索引:第n块区域(1=n=行数x列数)例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)bb制作~v.v2subPlot(1,2,1);Imshow(InImg):将图像文件显示到屏幕第一块区域数字图像转换:I=rgb2gray(rgbImg):将彩色图像转换为灰度图像rgbImg:矩阵变量,保存彩色图像;I:矩阵变量,保存灰度图像例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)I=rgb2gray(InImg)subPlot(1,2,1);Imshow(InImg):显示彩色图像于屏幕第一块区域subPlot(1,2,2);Imshow(I):显示灰度图像于屏幕第二块区域bw=im2bw(Img,level):将灰度图像转换为二值图像;Img:矩阵变量,保存彩色图像或灰度图像;level:灰度级(level为1;level为0)bw:矩阵变量,二值图像例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)bw=im2bw(InImg,0.5)subPlot(1,2,1);Imshow(InImg):显示彩色图像于屏幕第一块区域subPlot(1,2,2);Imshow(bw):显示灰度图像于屏幕第二块区I=mat2gray(X):将矩阵转换为灰度图像;X:矩阵变量;I:灰度图像;练习要求:①熟悉运用以上命令,将给定彩色图像转换为灰度图像,设定不同的门限值将其二值化,对比前后结果,将16x16的矩阵转化为灰度图像,要求将以上结果在同一窗口的不同块区显示出来及保存成磁盘文件。思考题:1.二值化时设定的门限值为灰度值是怎样对应的?2.将矩阵转换为灰度图像时X的大小与图像分辨率有什么关系?实验二数字图像空域增强算法基本内容:数字图像灰度增强点运算,包括灰度对比度增强和直方图均衡,要求熟练运用MatLab软件中相关的命令,并编制直方图均衡的程序;bb制作~v.v3数字图像灰度增强领域运算,要求熟练运用MatLab软件中相关的命令进行空域灰度增强、中值滤波;1.数字图像灰度增强运算.J=imadjust(I,[lowhigh],[bottomtop],gamma):对灰度图像进行直接灰度变换.I:增强前灰度图像;J:增强后灰度图像;[lowhigh]:待增强的灰度级范围;[bottomtop]:增强后的灰度级范围(对应于[lowhigh]);gamma:描述I和J关系形状的曲线(gamma1,越亮输出值越加强;gamma1,越亮输出值越减弱;gamma=1,线性变换;例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’):灰度增强I=rgb2gray(InImg)J=imadjust(I,[0.10.8],[01],0.5)subPlot(1,2,1);Imshow(I):显示增强前灰度图像于屏幕第一块区域subPlot(1,2,2);Imshow(J):显示增强后灰度图像于屏幕第二块区例如:J=imadjust(I,[01],[10],1):灰度倒置subPlot(1,2,1);Imshow(I):显示增强前灰度图像于屏幕第一块区域subPlot(1,2,2);Imshow(J):显示增强后灰度图像于屏幕第二块区imhist(I):计算灰度图像直方图;J=histeq(I):图像直方图均衡化.I:灰度图像;J:直方图均衡化后灰度图像;例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)I=rgb2gray(InImg)J=histeq(I)subPlot(1,2,1);Imshow(I):显示直方图均衡化前灰度图像于屏幕第一块区域subPlot(1,2,2);Imshow(J):显示直方图均衡化后灰度图像于屏幕第二块区imhist(I):显示原灰度图像直方图imhist(J):显示直方图均衡化后灰度图像直方图练习要求:①熟悉运用以上命令②编写程序计算给定灰度图像的灰度直方图并进行均衡化,输出结果到屏幕区域及磁盘文件;③设计灰度增强程序对图像进行增亮处理及变暗处理。2.数字图像空域滤波J=imnoise(I,TYPE,…):向灰度图像中加入噪声.bb制作~v.v4I:输入的灰度图像;TYPE:噪声类型,取值为’gaussian’(高斯噪声),’salt&pepper’(椒盐噪声),’speckle’(斑点噪声);J:噪声图像;例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)I=rgb2gray(InImg)J1=imnoise(I,’gaussian’,M,V):加入均值为M(缺省值:0),方差为V(缺省值:0.01)的高斯噪声.J2=imnoise(I,’salt&pepper’,D):加入强度为D(缺省值:0.05)的椒盐黑白噪声.subPlot(1,3,1);Imshow(I):显示原始灰度图像于屏幕第一块区域subPlot(1,3,2);Imshow(J1):显示高斯噪声灰度图像于屏幕第二块区域subPlot(1,3,3);Imshow(J2):显示椒盐黑白噪声图像于屏幕第三块区域S=medfilt2(J):对图像进行中值滤波.J:输入的噪声图像;S:滤波后的图像;例如:InImg=ImRead(‘d:\\DirName\\demoImg_InPut.bmp’)I=rgb2gray(InImg)J1=imnoise(I,’gaussian’,0,0.01)S=medfilt2(J1)subPlot(1,2,1);Imshow(I):显示滤波前的图像于屏幕第一块区域subPlot(1,2,2);Imshow(J1):显示滤波后的图像于屏幕第二块区域练习要求:①熟悉运用以上命令,对图像上分别加入高斯噪声、椒盐噪声、斑点噪声对比其结果。②设计程序利用中值滤波对上述三种噪声进行滤波处理,对比其滤波结果。思考题:1.中值滤波对哪种噪声的滤波效果最有效?2.直方图均衡进行图像处理有什么作用?实验三数字图像变换及频域增强基本内容:熟悉MatLab软件中与图像变换相关的傅里叶变换、巴特沃斯(Butterworth)滤波器等基本命令;要求理解频域中反映的图像的基本信息;1.傅里叶变换:bb制作~v.v5F=fft2(I):2D傅里叶正变换I:矩阵变量,保存输入的灰度图像;F:矩阵变量,保存傅里叶正变换结果;Pha=ANGLE(F):计算相位谱(Pha:矩阵变量,保存傅里叶正变换结果;Pha:矩阵变量,保存傅里叶正变换相位分量)R=abs(F):计算功率谱(R:矩阵变量,保存傅里叶正变换结果;Pha:矩阵变量,保存傅里叶正变换功率分量)F1=real(F):获得傅里叶变换实部分量(F:矩阵变量,保存傅里叶正变换结果;F1:矩阵变量,保存傅里叶正变换实部分量)F2=imag(F):获得傅里叶变换虚部分量(F:矩阵变量,保存傅里叶正变换结果;F1:矩阵变量,保存傅里叶正变换虚部分量)fftshift(F):移动傅里叶频谱中心至零频率(F:矩阵变量,保存傅里叶正变换结果)I=ifft2(F):2D傅里叶逆变换I:矩阵变量,保存傅里叶逆变换结果;F:矩阵变量,保存傅里叶正变换结果;例如:InImg=ImRead(‘d:\DirName\demoImg_InPut.bmp’)I=rgb2gray(InImg)F1=fft2(I)//傅里叶正变换f1=ifft2(F1)//傅里叶逆变换I1=abs(f1)I1=mat2gray(I1)subPlot(1,2,1);Imshow(I)://显示灰度图像于屏幕第一块区域subPlot(1,2,2);Imshow(I1)://显示傅里叶正变换后图像于屏幕第二块区域Pha=ANGLE(F1)//计算相位谱Pha1=mat2gray(Pha)//将相位谱转换为灰度图像F=fftshift(F1)//移动傅里叶频谱中心至零频率R=abs(F)//计算功率谱R1=mat2gray(R)//将功率谱转换为灰度图像Imshow(R1)//灰度级相差太大,仅显示为中心亮点R1=log(R)//利用log函数对灰度级数进行非线性压缩R1=mat2gray(R1)subPlot(1,3,1);Imshow(I)://显示灰度图像于屏幕第一块区域bb制作~v.v6subPlot(1,3,2);Imshow(R1)://显示功率谱图像于屏幕第二块区域subPlot(1,3,3);Imshow(Pha1)://显示相位谱图像于屏幕第三块区域I2=ifft2(Pha)//仅由相位信息进行逆傅里叶变换重建图像I2=abs(I2)I2=mat2gray(I2)I1=ifft2(R)//仅由功率信息进行逆傅里叶变换重建图像I1=abs(I1)I1=mat2gray(I1)subPlot(1,3,1);Imshow(I)://显示灰度图像于屏幕第一块区域subPlot(1,3,2);Imshow(I1)://显示功率谱图像于屏幕第二块区域subPlot(1,3,3);Imshow(I2)://显示相位谱图像于屏幕第三块区域练习要求:①熟悉运用以上命令进行傅里叶变换,得出图像的功率谱与相位谱,及傅里叶逆变换结果。2.频域处理I=imread('pout.tif');figure,subplot(221);imshow(I);J1=imnoise(I,'salt&pepper');%叠加椒盐噪声subplot(222);imshow(J1);f=double(J1);%数据类型转换,MATLAB不支持图像的无符号整型的计算g=fft2(f);%傅立叶变换g=fftshift(g);%转换数据矩阵[M,N]=size(g);nn=2;%二阶巴特沃斯(Butterworth)低通滤波器d0=50;m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));%计算低通滤波器传递函数bb制作~v.v7result(i,j)=h*g(i,j);endendresult=iff
本文标题:图像实验指导书3
链接地址:https://www.777doc.com/doc-2598281 .html