资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,83,数字图像处理实验指导书,2024/9/22,1,实验一,熟悉图像处理的,Matlab,平台,实验目的,熟悉,Matlab,的工作环境,掌握,Matlab,下矩阵的基本操作,熟练掌握,Matlab,下图像处理的基本操作,(,读、分解、转换、显示、查看、写文件,),。,2024/9/22,实验内容,设置当前工作目录;,读入一幅,RGB,图像,查看图像信息;,将读入的图像分解为,R,、,G,、,B,三幅图像分别保存为三个图像文件;,将读入的图像转换成灰度图像并保存为图象文件;,显示、查看读入图像、分解图像、转换图像;,2024/9/22,实验要求,独立完成实验内容;,记录每一项实验内容实现的步骤;,打印输出原始图像、分解图像、转换图像;,独立撰写实验报告,2024/9/22,实验方法、步骤,1.,设置当前工作目录,打开,Matlab,,从“文件”菜单选择“,Set Path”,,弹出“,Set Path”,窗体,单击“,Add Folder”,按钮或“,Add with Subfolders”,按钮,弹出“浏览文件夹”窗口,选择自己的文件夹添加到当前工作目录中,点击“确定”,返回到“,Set Path”,窗体,依次点击“,Save”,按钮、“,Close”,按钮,完成当前工作目录的设置。,2024/9/22,2024/9/22,实验方法、步骤,2.,读入一幅,RGB,图像,查看图像信息,在“,Command”,窗口的命令提示符“,”,后输入“,I=,imread(ss.jpg,),命令,读入,RGB,图像“,ss.jpg,”,,数据存在“,I”,矩阵中;,在“,Command”,窗口的命令提示符“,”,后输入“,imfinfo(ss.jpg,),命令,显示图像“,ss.jpg,”,文件信息。,2024/9/22,2024/9/22,实验方法、步骤,3.,将读入的图像分解为,R,、,G,、,B,三幅图像分别保存为三个图像文件;,在“,Command”,窗口的命令提示符“,”,后分别输入“,I_R=I”,、“,I_G=I;,、“,I_G=I”,,拷贝“,I”,的,3,个副本分别存入矩阵“,I_R”,、“,I_G”,、“,I_B”,中;,用,I_R(:,:,2)=0,;”、,I_R(:,:,3)=0;”,、“,I_G(:,:,1)=0;”,、“,I_G(:,:,3)=0;”,和“,I_B(:,:,1)=0;”,、“,I_B(:,:,2)=0;”,使得“,I_R”,、“,I_G”,、“,I_B”,保留的分别只有,R,、,G,、,B,分量。,分别用“,imwrite(I_R,ss_R.jpg,)”,、“,imwrite(I_R,ss_G.jpg,)”,和“,imwrite(I_R,ss_B.jpg,)”,将它们分别写入“,ss_R.jpg,”,、“,ss_G.jpg,”,和“,ss_B.jpg,”磁盘文件中。,2024/9/22,实验方法、步骤,4.,将读入的图像转换成灰度图像并保存为图象文件;,在“,Command”,窗口的命令提示符“,”,后分别输入“,I_Gray,=rgb2gray(I)”,将图像转变为灰度图像并存于矩阵“,I_Gray,”,中,用“,imwrite(I_Gray,ss_Gray.jpg,)”,将其写入,ss_Gray.jpg,”磁盘文件中。,2024/9/22,实验方法、步骤,5.,显示、查看读入图像、分解图像、转换图像;,用,imshow(),和,imview(),显示和查看各图像;,用下面命令序列在一个视窗显示各图像:,subplot(231);imshow(I);title(,原始图像,);,subplot(233);imshow(I_Gray);title(,灰度图像,);,subplot(234);imshow(I_R);title(,红色分量,);,subplot(235);imshow(I_G);title(,绿色分量,);,subplot(236);imshow(I_B);title(,蓝色分量,);,2024/9/22,2024/9/22,思考题,Matlab,的当前工作目录;,Matlab,处理图像时把图像当作什么进行的?,如何查看,RGB,图像的各分量图像?,如何将,RGB,图像转换成灰度图像?,2024/9/22,实验目的,了解数字图像频域变换的目的,熟悉,DFT,、,DCT,变换的频谱特征及小波变换的特点,掌握数字图像,FFT,、,DCT,及,DWT,变换的方法。,实验二,图像的频域变换,2024/9/22,实验内容,在,Matlab,下读入一幅图像,对其灰度图作快速傅立叶变换;,在,Matlab,下读入一幅图像,对其灰度图作,DCT,变换;,在,Matlab,下读入一幅图像,对其作,DWT,分解。,2024/9/22,实验要求,独立完成各项实验内容;,记录每一项实验内容实现的步骤;,编写,FFT,、,DCT,、,DWT,变换,Matlab,程序;,打印输出原始图像、,FFT,的频谱图、将频率平面坐标原点移至窗口中心的,FFT,频谱图、,DCT,频谱图以及,1,级小波分解图像;,独立撰写实验报告,2024/9/22,实验方法、步骤,1.,读入一幅图像,对其灰度图作快速傅立叶变换。,用,imread(),函数读如工作目录下的“风光壁纸,33.jpg”,图像存于,I,矩阵中,用,rgb2gray(),函数将其转换成灰度图像;,用,fft2(),函数对其进行,FFT,变换,并将变换得到的傅立叶频谱存于,fft_I,矩阵中;,用,fftshift(),函数将傅立叶频谱坐标原点移至窗口中央并存于,sfft_I,矩阵中;,显示,FFT,频谱图、移动后的频谱图。,由于,fft_I,和,sfft_I,均为复数矩阵,须用,abs(),函数求其模,并根据矩阵元素的特点将其归一化到,0255,之间;,用,subplot(),函数及,imshow,函数在同一窗口下显示原始图像、灰度图像、,FFT,频谱图及移动后的频谱图。,附:,FLY.m,文件,2024/9/22,Fly.m,文件内容,%,快速傅立叶变换,显示原始,RGB,图像、灰度图像、,FFT,频谱图,function fly(I),subplot(221),imshow(I);,title(,原始图像,),I=rgb2gray(I);,subplot(222),imshow(I);,title(,灰度图像,),fft_I=fft2(I); % 2-D,快速傅立叶变换,A=abs(fft_I);,%,将频谱矩阵元素归一化到,0255,A=(A-min(min(A)/(max(max(A)-min(min(A)*255;,subplot(223),imshow(A);,title(,傅立叶频谱图像,),sfft_I=fftshift(fft_I); %,傅立叶频谱平面中心移至窗口中心,A=abs(sfft_I);,%,将频谱矩阵元素归一化到,0255,A=(A-min(min(A)/(max(max(A)-min(min(A)*255;,subplot(224),imshow(A);,title(,原点移到中心的傅立叶频谱图像,),2024/9/22,2024/9/22,实验方法、步骤,2.,读入一幅图像,对其灰度图作,DCT,变换。,用,imread(),函数读如工作目录下的“显微煤岩照片,.JPG”,图像存于,I,矩阵中,用,rgb2gray(),函数将其转换成灰度图像;,用,dct2(),函数对其进行,DCT,变换,并将变换得到的傅立叶频谱存于,dct_I,矩阵中;,显示,DCT,频谱图,由于,dct_I,为复数矩阵,须用,abs(),函数求其模,并根据矩阵元素的特点将其归一化到,0255,之间;,用,subplot(),函数及,imshow,函数在同一窗口下显示原始图像、灰度图像、,DCT,频谱图,附:,Lsyx_pp.m,文件,2024/9/22,Lsyx_pp.m,文件内容,% DCT,变换,显示原始,RGB,图像、灰度图像、,DCT,频谱图,function lsyx_pp(I),subplot(221),imshow(I);,title(,原始图像,),I=rgb2gray(I);,subplot(223),imshow(I);,title(,原始灰度图像,),dct_I=dct2(I);,A=abs(dct_I);,A=(A-min(min(A)/(max(max(A)-min(min(A)*255;,subplot(224),imshow(A);,title(,离散余弦频谱图像,),2024/9/22,2024/9/22,实验方法、步骤,3.,读入一幅图像,对其作,DWT,分解。,Matlab,下对一幅图象进行小波分解有两种方法,一是利用,Mtlab,提供的“小波工具箱”,二是编写,Matlab,程序。,方法一:,点击“,Start”,按钮,选“,Toolbox”“More”“Wavelet”“Wavelet Main Menu (wavemenu)”,,弹出,“Wavelet Main Menu ”,窗体;,点击“,Two-Dimensional”,框架中的“,Wavelet 2-d”,按钮,弹出“,Wavelet 2-d”,窗体;,2024/9/22,2024/9/22,2024/9/22,实验方法、步骤,点击“,File”,菜单,选“,Load”“Image”,,选择要做小波分解的图像”;,从“,Wavelet”,列表中选择合适的小波母函数;,从“,Level”,列表中选择小波分解的级别;,点击“,Analyze”,按钮;,调节各参数;,对分解结果可以保存和输出。,2024/9/22,2024/9/22,实验步骤,3.,读入一幅图像,对其作,DWT,分解。,方法二:,读入进行小波分解的图像,并把它转成灰度图像,存于一个矩阵中,如:,X,;,用,wavedct2,函数对,X,进行分解,该函数的格式如下:,C,S = wavedt2(X,N,wname),用相关命令输出各图像,附:,Xbfj.m,文件,2024/9/22,Xbfj.m,文件内容,%,小波图像分解,clear,clc,X=imread(,风光壁纸(蓝色主题),8.jpg);,subplot(231),imshow(X),title(,原始图像,),X=rgb2gray(X);,subplot(234),imshow(X),title(,原始灰度图像,),%,对图象用,2D,小波进行一次分解,c,s=wavedec2(X,1,haar);,%,提取特征分量和细节分量,a1=wrcoef2(a,c,s,haar);,h1=wrcoef2(h,c,s,haar);,v1=wrcoef2(v,c,s,haar);,d1=wrcoef2(d,c,s,haar);,%,显示一次小波分解各分量图像,subplot(232),a1=uint8(a1);,imshow(a1),title(,一次小波分解特征分量图像,),subplot(235),h1=uint8(h1);,imshow(h1),title(,一次小波分解水平细节分量图像,),subplot(233),v1=uint8(v1);,imshow(v1),title(,一次小波分解垂直细节分量图像,),subplot(236),d1=uint8(d1);,imshow(d1),title(,一次小波分解对角细节分量图像,),2024/9/22,2024/9/22,实验结果分析,对,FFT,频谱图、,DCT,频谱图及小波分解图做必要分析说明;,2024/9/22,思考题,离散傅立叶变换有那些性质?这些性质说明了什么:,从,FFT,变换得到频谱图说明,FFT,变换在数字图像处理方面有何可能的作用?,小波变换的优点有哪些?在数字图像处理方面有何优势?,2024/9/22,实验目的,了解图像增强与复原的体系结构;,熟悉灰度变换、直方图修正、图像平滑、图像锐化及伪彩色处理在数字图像增强方面的作用及各自的特点;,掌握图像增强的灰度变换法、直方图修正法,掌握图像平滑、图像锐化的滤波器设计方法,掌握图像的伪彩色处理方法。,实验三,图像增强与复原,2024/9/22,实验内容,读入一幅有明显明暗缺陷的灰度图像,分析其直方图特征,分别用分段灰度线性变换法、直方图均衡法和图像灰度调整法,(,imadjust,),分别进行处理;,读入一幅灰度图像 ,分别给其加上“乘性噪声”、“椒盐噪声”,然后分别用“均值滤波”、“中值滤波”和“巴特沃斯滤波”对其做平滑处理;,2024/9/22,实验内容,读入一幅灰度图像,分别用“,Sobel,算子”、“,Laplacian,算子”、“梯形滤波器”对其做锐化处理;,读入一幅灰度图像,分别用“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对其进行伪彩色增强;,读入一幅图像,对其进行模糊化,然后用“逆滤波法”对其进行复原处理。,2024/9/22,实验要求,独立完成各项实验内容;,记录每一项实验内容实现的步骤;,编写“灰度增强”、“平滑”、“锐化”、“伪彩色增强”、“图像复原”的,Matlab,程序;,打印输出经“灰度增强”、“平滑”、“锐化”、“伪彩色增强”、“图像复原”处理的图像及各自的原始图像;,独立撰写实验报告,2024/9/22,实验方法、步骤,1.,读入一幅有明显明暗缺陷的灰度图像,分析其直方图特征,分别用分段灰度线性变换法、直方图均衡法和图像灰度调整法,(imadjust),分别进行处理;,在“资源管理器”下以“缩略图”的方式浏览图片库,发现名为“,6_gray.jpg,”,的图像明显整体偏暗,在,Matlab,下读入该图像,用,imhist,函数提取该图像的灰度直方图,(,图,3-1),。,从该图像的灰度直方图可以看出: 该图像大多数像素的灰度值在,140,以下,,140240,灰度级间象素数分布均匀,缺少,240255,灰度级的象素,将,0255,灰度级归一化到,01,,,140,对应,0.55,。,2024/9/22,图,3-1,2024/9/22,分段灰度线性变换:,根据上述分析,将原图像灰度值在,0140,采用线性变换到,0200,,,140200,线性变换到,200255,。变换后的图像及其灰度直方图见图,3-2,。,直方图均衡:,在,Matlab,下用,histeq,函数可以对一幅图像直接进行直方图均衡,对“,6_gray.jpg,”,做直方图均衡后的图像及其灰度直方图见图,3-2,。,图像灰度调整:,在,Matlab,下,imadjust,函数用以对图像的灰度级调整,,根据前面分析,将,0140,调整到,00.55,鉴于,imadjust,只能对一个灰度区间进行调整,对原图像,140255,不做调整。由于原图像明显偏暗,这里,gamma,去,=f0)&(I(i,j)f1),G(i,j)=k1*I(i,j);,else,G(i,j)=k2*(I(i,j)-f1)+g1;,end,end,end,subplot(3,3,4);,G=uint8(G);,imshow(G);,title(,分段灰度线性变换,);,%,直方图均衡法法,I=uint8(I);,J=histeq(I);,subplot(2,3,5);,imshow(J);,title(,直方图均衡图像,);,%,图像灰度调整,K=imadjust(I,0 0.55,0 1,0.7);,subplot(2,3,6);,imshow(K);,title(,图像灰度调整,Low=0, High=0.55 gamma=0.7);,shiyan_3_1.m,2024/9/22,实验方法、步骤,2.,读入一幅灰度图像 ,分别给其加上“乘性噪声”、“椒盐噪声”,然后分别用“均值滤波”、“中值滤波”对其做平滑处理;对“乘性噪声”图像进行,“,巴特沃斯滤波”做平滑处理;,在,Matlab,下读入一幅灰度图像,,I=imread(9_gray.jpg);,分别对其添加“乘性噪声”、“椒盐噪声”。,I_noise_salt_pepper=imnoise(I,salt ,I_noise_speckle=imnoise(I,speckle);,对,I_noise_salt_pepper,和,I_noise_speckle,用,33,模板做,均值滤波,I_noise_salt_pepper_average=filter2(fspecial(average,3),I_noise_salt_pepper)/255;,I_noise_speckle_average=filter2(fspecial(average,3),I_noise_speckle)/255;,2024/9/22,对,I_noise_salt_pepper,和,I_noise_speckle,用,33,模板做,中值滤波,I_noise_salt_pepper_med=medfilt2(I_noise_salt_pepper,3,3);,I_noise_speckle_med=medfilt2(I_noise_speckle,3,3);,巴特沃斯滤波:,首先对添加噪声的图像进行快速傅立叶变换,fft_I_noise_speckle=fft2(double(I_noise_speckle);,移动频谱坐标中心到屏幕中心,fftshift(fft_I_noise_speckle);,设定截止频率:,Dcut=100,;,计算巴特沃斯传递函数:,D(u,v)=sqrt(u2+v2);,BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)2);,进行巴特沃斯滤波,BUTTERG=BUTTERH.*fft_I_noise_speckle;,快速傅立叶逆变换,BUTTERfiltered=ifft2(BUTTERG);,2024/9/22,图,3-3,2024/9/22,%,实验三,_2:,对加上“乘性噪声”、“椒盐噪声”,%,用“均值滤波”、“中值滤波”对其做平滑处理;,%,对“乘性噪声”图像进行“巴特沃斯滤波”做平滑处理;,clear;,J,map=imread(18.jpg);,I=rgb2gray(J);,%,添加“椒盐噪声”,I_noise_salt_pepper=imnoise(I,salt ,%,添加“乘性噪声”,I_noise_speckle=imnoise(I,speckle);,%,对,I_noise_salt_pepper,用,33,模板做均值滤波,I_noise_salt_pepper_average=filter2(fspecial(average,3), I_noise_salt_pepper)/255;,%,对,I_noise_speckle,用,33,模板做均值滤波,I_noise_speckle_average=filter2(fspecial(average,3), I_noise_speckle)/255;,%,对,I_noise_salt_pepper,用,33,模板做中值滤波,I_noise_salt_pepper_med=medfilt2(I_noise_salt_pepper,3,3);,% I_noise_speckle,用,33,模板做中值滤波,I_noise_speckle_med=medfilt2(I_noise_speckle,3,3);,shiyan_3_,2,.m,2024/9/22,%,巴特沃斯滤波:,%,对添加噪声的图像进行快速傅立叶变换,fft_I_noise_salt_pepper=fft2(double(I_noise_salt_pepper);,%,移动频谱坐标中心到屏幕中心,fftshift(fft_I_noise_salt_pepper);,%,设定截止频率:,Dcut=100;,%,计算巴特沃斯传递函数:,M N=size(I);,for u=1:M,for v=1:N,D(u,v)=sqrt(u2+v2);,BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)2);,end,end,%,进行巴特沃斯滤波,BUTTERG=BUTTERH.*fft_I_noise_salt_pepper;,%,快速傅立叶逆变换,BUTTERfiltered=ifft2(BUTTERG);,2024/9/22,subplot(3,3,1);,imshow(J);,title(,原始图像,);,subplot(3,3,2);,imshow(I);,title(,灰度图像,);,subplot(3,3,3);,imshow(I_noise_salt_pepper);,title(,加“椒盐噪声”,(salt&pepper),图像,);,subplot(3,3,4);,imshow(I_noise_speckle);,title(,加“乘性噪声”,(speckle),图像,);,subplot(3,3,5);,imshow(I_noise_salt_pepper_average);,title(“,椒盐噪声”图像,33,模板均值滤波,);,subplot(3,3,6);,imshow(I_noise_salt_pepper_med);,title(“,椒盐噪声”图像,33,模板中值滤波,);,subplot(3,3,7);,imshow(I_noise_speckle_average);,title(“,乘性噪声”图像,33,模板均值滤波,);,subplot(3,3,8);,imshow(I_noise_speckle_med);,title(“,乘性噪声”图像,33,模板中值滤波,);,subplot(3,3,9);,imshow(BUTTERfiltered,map);,title(“,椒盐噪声”图像经“巴特沃斯滤波”,);,2024/9/22,实验方法、步骤,3.,读入一幅灰度图像,分别用“,Sobel,算子”、“,Laplacian,算子”、“梯形滤波器”对其做锐化处理;,Matlab,下在空间域对图像做锐化处理有两种方法,对于,Matlab,提供的算子,可以直接用滤波的方法,对于知道模板矩阵的,也可采取“模板,-,卷积”的方法。,Matlab,提供了“,Sobel,算子”,这里采取滤波的方法,对“,Laplacian,算子,其模板矩阵为,0 1 0,1 -4 1,0 1 0,,,这里采取“模板,-,卷积”的方法。,Matlab,下在频率域对图像做锐化处理方法与平滑类似。,2024/9/22,%,实验三,_3,:,%,用“,Sobel,算子”、“,Laplacian,算子”、,% “,梯形滤波器”对图像做锐化处理,clear;,I map=imread(BANNER.jpg);,subplot(2,2,1);,imshow(I,map);,title(,原始图像,);,I=rgb2gray(I);,subplot(2,2,2);,imshow(I,map);,title(,灰度图像,);,%,用“,Sobel,算子”对图像做锐化处理,H=fspecial(sobel);,J=filter2(H,I);,subplot(2,3,4);,imshow(J);,title(Sobel,算子锐化,);,%,用“,Laplacian,算子”对图像做锐化处理,I=double(I);,h=0 1 0,1 -4 1,0 1 0,J=conv2(I,h,same);,subplot(2,3,5);,imshow(J);,title(Laplacian,算子锐化,);,%“,梯形滤波器”对图像做锐化处理,M N=size(I);,F=fft2(double(I);,fftshift(F);,D0=200;,D1=100;,for u=1:M,for v=1:N,D(u,v)=sqrt(u2+v2);,if D(u,v)D1,TRAPEH(u,v)=0;,elseif D(u,v)=D0,TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1);,else,TRAPEH(u,v)=1;,end,end,end,TRAPEG=TRAPEH.*F;,TRAPEfiltered=ifft2(TRAPEG);,subplot(2,3,6);,imshow(TRAPEfiltered,map);,title(,梯形高通滤波,);,shiyan_3_,3,.m,2024/9/22,图,3-4,2024/9/22,实验方法、步骤,4.,读入一幅灰度图像,分别用“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对其进行伪彩色增强;,“灰度级分层法”:,Matlab,下用,grayslice,函数对灰度图像进行分层,在显示该分层图像时指定颜色模型,就可以对该灰度图像进行彩色显示,从而达到伪彩色增强的目的;,%Matlab,中灰度分层法伪彩色图象的实现,clear;,I=imread(1.jpg);,imshow(I);,title(,原始灰度图像,);,I=rgb2gray(I);,X=grayslice(I,24);,figure,imshow(X,copper(24);,title(24,级灰度分层,copper(24),伪彩色图像,);,2024/9/22,图,3-5,2024/9/22,“灰度变换法”:,读入一幅灰度图像,计算图像的尺寸,根据图像尺寸设定循环,逐个像素进行灰度到彩色的转换,(,梯形法,),。,当像素的灰度值,1/4,最高灰度级,而,1/2,最高灰度级,,3/4,最高灰度级时,将其归到,G(,绿色,),位平面,并用线性拉伸的方法映射到绿色的,0255,区间;,将三个位平面合成为一幅彩色图像。,2024/9/22,%Matlab,中灰度变换法伪彩色图象的实现,clear;,I=imread(,高对比度:精美高清风光壁纸,5.jpg);,%I=rgb2gray(I);,subplot(1,2,1);,imshow(I);,title(,原始灰度图像,);,I=double(I);,M N=size(I);,L=256;,for i=1:N,for j=1:M,if I(j,i)L/4,R(j,i)=0;,G(j,i)=4*I(j,i);,B(j,i)=L;,elseif I(j,i)=L/2,R(j,i)=0;,G(j,i)=L;,B(j,i)=-4*I(j,i)+2*L;,elseif I(j,i)=3*L/4,R(j,i)=4*I(j,i)-2*L;,G(j,i)=L;,B(j,i)=-0;,else,R(j,i)=L;,G(j,i)=-4*I(j,i)+4*L;,B(j,i)=-0;,end,end,end,OUT=zeros(M,N,3);,OUT(:,:,1)=R;,OUT(:,:,2)=G;,OUT(:,:,3)=B;,OUT=uint8(OUT);,subplot(1,2,2);,imshow(OUT);,title(,灰度分级伪彩色图像,);,2024/9/22,图,3-6,2024/9/22,“频域伪彩色处理法”:,读入一幅灰度图像,进行,FFT,变换,分别进行低通滤波、带通滤波、高通滤波,得到三个独立的频率分量,人为地将它们分别归属为,R,、,G,、,B,分量,再分别将,R,、,G,、,B,分量进行快速傅立叶逆变换,得到,R,、,G,、,B,三个位平面,最后将三个位平面合成为一幅伪彩色图像。,2024/9/22,%Matlab,频域伪彩色图象的实现,clear;,I=imread(,风景,04.jpg);,I=rgb2gray(I);,I=imadjust(I);,subplot(1,2,1);,imshow(I);,title(,原始灰度图像,);,I=double(I);,M N=size(I);,F=fft2(I);,fftshift(F);,Red_cut=5;,Green_cut=205;,Blue_center=100;,Blue_width=200;,Blue_u0=10.5;,Blue_v0=10.3;,2024/9/22,for u=1:M,for v=1:N,D(u,v)=sqrt(u2+v2);,Red_L(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Red_cut)2);,Green_H(u,v)=1/(1+(sqrt(2)-1)*(Green_cut/D(u,v)2);,Blue_D(u,v)=sqrt(u-Blue_u0)2+(v-Blue_v0)2);,Blue_H(u,v)=1-1/(1+Blue_D(u,v)*Blue_width/(Blue_D(u,v)2-(Blue_center)2)2);,end,End,Red=Red_L.*F; Red_color=ifft2(Red);,Green=Green_H.*F; Green_color=ifft2(Green);,Blue=Blue_H.*F; Blue_color=ifft2(Blue);,Red_color=real(Red_color)/256; Red_color=imadjust(Red_color);,Green_color=real(Green_color)/256; Green_color=imadjust(Green_color);,Blue_color=real(Blue_color)/256; Blue_color=imadjust(Blue_color);,OUT=zeros(M,N,3);,OUT(:,:,1)=Red_color; OUT(:,:,2)=Green_color; OUT(:,:,3)=Blue_color;,OUT=abs(OUT);,subplot(1,2,2);,imshow(OUT);,title(,频率域伪彩色图像,);,2024/9/22,图,3-7,2024/9/22,实验方法、步骤,5.,读入一幅图像,对其进行模糊化,然后用“逆滤波法”对其进行复原处理。,一幅质量改进或退化的图像可以近似地用方程,g=Hf+n,表示,其中,g,为图像,,H,为变形算子,又称点扩散函数,(PSF),,,f,为原始的真实图像,,n,为附加噪声,它在图像捕获过程中产生并且使图像质量下降。,Matlab,工具中有,4,个图像恢复函数:,deconvwnr,:,用,Wiener,滤波器实现图像恢复,deconvreg,:,用,regularized,滤波器实现图像恢复,deconvlucy,:,用,Lucy-Richardson,算法实现图像恢复,deconvblind,:,用,Blind,去卷积算法实现图像恢复,这,4,个函数都将,PSF,和模糊图像作为主要变量。,2024/9/22,deconvwnr,函数求取最小二乘解,,deconvreg,函数求取有约束的最小二乘解,可以设置对输出图像的约束。使用这些函数中的任何一个,都应提供一些与噪声相关的信息来减少恢复过程中可能出现的噪声扩大。,deconvlucy,函数实现了一个加速衰减的,Lucy-Richardson,算法。使用该函数不需要提供有关模糊图像中附加噪声的信息。,deconvblind,函数用盲去卷积算法,它在不知道,PSF,的情况下进行图像恢复。调用该函数时,将,PSF,的初值作为一个变量进行传递。该函数不仅返回一个修复后的图像,还返回一个修复后的,PSF,。,2024/9/22,deconvwnr,函数求取最小二乘解,,deconvreg,函数求取有约束的最小二乘解,可以设置对输出图像的约束。使用这些函数中的任何一个,都应提供一些与噪声相关的信息来减少恢复过程中可能出现的噪声扩大。,deconvlucy,函数实现了一个加速衰减的,Lucy-Richardson,算法。使用该函数不需要提供有关模糊图像中附加噪声的信息。,deconvblind,函数用盲去卷积算法,它在不知道,PSF,的情况下进行图像恢复。调用该函数时,将,PSF,的初值作为一个变量进行传递。该函数不仅返回一个修复后的图像,还返回一个修复后的,PSF,。,2024/9/22,I=imread(31.jpg);,%,读入原始图像,I,PSF=fspecial(motion,30,10);,%,生成点扩散函数,MF=imfilter(I,PSF,circular);,%,用点扩散函数实现图像模糊,(,退化,),noise=imnoise(zeros(size(I),gaussian);,%,产生高斯噪声,INITPSF=ones(size(MF);,J=deconvwnr(MF,PSF);,K=deconvreg(MF,PSF);,M=deconvblind(MF,INITPSF,3);,subplot(2,2,1);,imshow(I);,title(,原始图象,);,subplot(2,2,2);,imshow(MF);,title(,运动模糊图象,);,subplot(2,3,4);,imshow(J);,title(,维纳逆滤波图象,);,subplot(2,3,5);,imshow(K);,title(,拉格郎日逆滤波图象,);,subplot(2,3,6);,imshow(M);,title(Blind,逆滤波图象,);,2024/9/22,图,3-8,2024/9/22,实验结果分析,1.,比较分段灰度线性变换法、直方图均衡法和图像灰度调整法,(imadjust),对灰度图像处理的效果,分析各自的优缺点;,2.,比较“均值滤波”、“中值滤波”及,“,巴特沃斯滤波”对图像平滑处理的效果,分析各自的优缺点;,3.,比较“,Sobel,”、“,Laplacian,”、“梯形滤波器”对图像做锐化处理的效果,分析各自的优缺点;,4.,分析“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对图像进行伪彩色增强分析各自的优缺点及各自适用在什么情况下;,2024/9/22,思考题,灰度变换的目的是什么?有哪些实现方法?,什么是图像平滑?图像平滑的方法有哪些?,图像锐化的目的是什么?有哪些方法可以实现?,频域低通滤波的原理是什么?,什么是同态滤波?,伪彩色处理的方法有哪些?,逆滤波复原的基本原理是什么?,2024/9/22,实验目的,了解插值运算常用的方法及其在图像几何变换中特点,熟悉图像代数变换与几何变换的原理、作用、特点;掌握图像算术运算、几何运算的方法。,实验四,图像的代数变换与几何变换,2024/9/22,实验内容,1.,读入两幅图像,对它们分别做,+,、,-,、,、,/,运算,分析处理结果;,2.,读入一幅图像 ,对其进行水平平移、垂直平移,50,像素,(,图像扩大,),;,3.,读入一幅图像,对其进行水平转置、垂直转置、对角转置;,4.,读入一幅图像,对其旋转操作;,5.,读入一幅图像,对其进行等比例、不等比例缩放;,6.,读入一幅图像,对其进行水平错切、垂直错切;,2024/9/22,实验要求,1.,独立完成各项实验内容;,2.,记录每一项实验内容实现的步骤;,3.,编写“平移,”,、“镜像”、“旋转”、“缩放”、“错切”的,Matlab,程序;,4.,打印输出“算数变换”、“几何变换”前后的图像;,5.,独立撰写实验报告,2024/9/22,实验方法、步骤,1.,读入两幅图像,对它们分别做,+,、,-,、,、,/,运算,分析处理结果;,+,运算:在,matlab,下可以用“,+”,运算符,(,注意溢出问题,),,也可以用“,imadd”,函数实现。,I = imread(rice.png);,J = imread(cameraman.tif);,K = imadd(I,J); figure, imshow(K);,L = double(I)+ double(J); figure, imshow(uint8(L);,-,运算:在,matlab,下可以用“,-”,运算符,(,注意溢出问题,),,“,imsubtract,” 函数,(,注意节段问题,),和,imabsdiff,函数实现。,I = imread(rice.png);,J = imread(cameraman.tif);,K = imsubtract(I,J); figure, imshow(K);,L = imabsdiff(I,J); figure, imshow(L);,M = double(I) - double(J); figure, imshow(uint8(L);,2024/9/22,运算:在,matlab,下可以用,“,”,运算符逐像素进行,也可以,“immultiply”,函数,两种方法都要注意溢出问题。,%,抠图,clear;,I=imread(SS.JPG);,subplot(1,3,1);,imshow(I);,title(,图像,1);,I=double(I);,J=imread(SSBW.jpg);,subplot(1,3,2);,imshow(J);,title(,图像,2);,J=double(J);,m n l=size(I);,MULT=zeros(m,n,l);,for i=1:l,for j=1:n,for k=1:m,MULT(k,j,i)=I(k,j,i).*J(k,j,i);,end,end,end,max_mult=max(max(max(MULT);,min_mult=min(min(min(MULT);,for i=1:l,for j=1:n,for k=1:m,MULT(k,j,i)=MULT(k,j,i).*(255/(max_mult-min_mult);,end,end,end,result_im=uint8(MULT);,subplot(1,3,3);,imshow(result_im);,title(,图像,1,图像,2);,2024/9/22,/,运算:在,matlab,下可以用,“,/”,运算符实现,也可以,“imdivide”,函数实现。,clear;,I=imread(18.jpg);,JJ=rgb2gray(I);,J(:,:,1)=JJ;,J(:,:,2)=JJ;,J(:,:,3)=JJ;,I_LS=double(I);,J_LS=double(J);,L=(imdivide(I_LS,J_LS);,subplot(2,2,1);,imshow(I);,title(,图像,1);,subplot(2,2,2);,imshow(J);,title(,图像,2);,subplot(2,1,2);,imshow(L);,2024/9/22,实验方法、步骤,2.,读入一幅图像 ,对其进行水平平移、垂直平移,50,像素,(,图像扩大,),;,方法一:,%,图像平移,function outImage=immove(inImage,Tx,Ty),outImage = zeros(size(inImage);,Tx=fix(Tx);,Ty=fix(Ty);,m, n,l = size(inImage);,if (Tx0 & Ty=0 & Ty=0),outImage(Tx+1:m,Ty+1:n,:)=inImage(1:m-Tx,1:n-Ty,1:l);,else,outImage(Tx+1:m,1:n-abs(Ty),:)=inImage(1:m-Tx,abs(Ty)+1:n,:);,end,subplot(1,2,1);,imshow(inImage);,title(,原始图像,);,subplot(1,2,2);,imshow(uint8(outImage);,title(,平移图像,);,2024/9/22,实验方法、步骤,2.,读入一幅图像 ,对其进行水平平移、垂直平移,50,像素,(,图像扩大,),;,方法二:,用,translate,、,imdilate,函数,%,图像平移,clear;,I = imread(ss.jpg);,se = translate(strel(1), 50 50);,J = imdilate(I,se);,subplot(1,2,1),imshow(I),title(,原始图像,),subplot(1,2,2),imshow(J);,title(,平移图像,);,2024/9/22,实验方法、步骤,3.,读入一幅图像,对其进行水平、垂直、对角转置;,%,图像镜像变换,clear;,I=double(imread(9.jpg);,SIZE=size(I);,%,水平镜像,I_flip_LR(1:SIZE(1),1:SIZE(2),:)=I(1:SIZE(1),SIZE(2):-1:1,:);,%,垂直镜像,I_flip_UD(1:SIZE(1),1:SIZE(2),:)=I(SIZE(1):-1:1,1:SIZE(2),:);,%,对角镜像,I_flip_LR_UD(1:SIZE(1),1:SIZE(2),:)=I(SIZE(1):-1:1,SIZE(2):-1:1,:);,subplot(2,2,1),imshow(uint8(I);,title(,原始图像,);,subplot(2,2,2),imshow(uint8(I_flip_LR);,title(,水平镜像,);,subplot(2,2,3),imshow(uint8(I_flip_UD);,title(,垂直镜像,);,subplot(2,2,4),imshow(uint8(I_flip_LR_UD);,title(,对角镜像,);,2024/9/22,实验方法、步骤,4.,读入一幅图像,对其旋转操作;,方法一,%Matlab图像旋转旋转,function im_rotate(Image,Angle) %Image为位图数据,X,Y,n=size(Image); %X,Y为其行列数,%计算四个角点的新坐标,确定旋转后的显示区域,LeftTop(1,1)=-(Y-1)*sin(Angle);,LeftTop(1,2)=(Y-1)*cos(Angle);,LeftBottom(1,1)=0;,LeftBottom(1,2)=0;,RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle);,RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle);,RightBottom(1,1)=(X-1)*cos(Angle);,RightBottom(1,2)=(X-1)*sin(Angle);,%计算显示区域的行列数,Xnew=max(LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)-min(LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1);,Ynew=max(LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)-min(LeftTop
展开阅读全文