数字图像处理实验指导书课件_第1页
数字图像处理实验指导书课件_第2页
数字图像处理实验指导书课件_第3页
数字图像处理实验指导书课件_第4页
数字图像处理实验指导书课件_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字图像处理实验指导书2023/4/21实验一

熟悉图像处理的Matlab平台实验目的熟悉Matlab的工作环境,掌握Matlab下矩阵的基本操作,熟练掌握Matlab下图像处理的基本操作(读、分解、转换、显示、查看、写文件)。2023/4/2实验内容设置当前工作目录;读入一幅RGB图像,查看图像信息;将读入的图像分解为R、G、B三幅图像分别保存为三个图像文件;将读入的图像转换成灰度图像并保存为图象文件;显示、查看读入图像、分解图像、转换图像;2023/4/2实验方法、步骤1.设置当前工作目录打开Matlab,从“文件”菜单选择“SetPath”,弹出“SetPath”窗体,单击“AddFolder…”按钮或“AddwithSubfolders…”按钮,弹出“浏览文件夹”窗口,选择自己的文件夹添加到当前工作目录中,点击“确定”,返回到“SetPath”窗体,依次点击“Save”按钮、“Close”按钮,完成当前工作目录的设置。2023/4/22023/4/2实验方法、步骤2.读入一幅RGB图像,查看图像信息在“Command”窗口的命令提示符“>>”后输入“I=imread(‘ss.jpg’)命令,读入RGB图像“ss.jpg”,数据存在“I”矩阵中;在“Command”窗口的命令提示符“>>”后输入“imfinfo(‘ss.jpg’)命令,显示图像“ss.jpg”文件信息。2023/4/2实验方法、步骤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”磁盘文件中。2023/4/2实验方法、步骤4.将读入的图像转换成灰度图像并保存为图象文件;在“Command”窗口的命令提示符“>>”后分别输入“I_Gray=rgb2gray(I)”将图像转变为灰度图像并存于矩阵“I_Gray”中,用“imwrite(I_Gray,’ss_Gray.jpg’)”将其写入ss_Gray.jpg”磁盘文件中。2023/4/2实验方法、步骤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(‘蓝色分量‘);2023/4/2思考题Matlab的当前工作目录;Matlab处理图像时把图像当作什么进行的?如何查看RGB图像的各分量图像?如何将RGB图像转换成灰度图像?2023/4/2实验目的了解数字图像频域变换的目的,熟悉DFT、DCT变换的频谱特征及小波变换的特点,掌握数字图像FFT、DCT及DWT变换的方法。实验二

图像的频域变换2023/4/2实验内容在Matlab下读入一幅图像,对其灰度图作快速傅立叶变换;在Matlab下读入一幅图像,对其灰度图作DCT变换;在Matlab下读入一幅图像,对其作DWT分解。2023/4/2实验方法、步骤1.读入一幅图像,对其灰度图作快速傅立叶变换。用imread()函数读如工作目录下的“风光壁纸33.jpg”图像存于I矩阵中,用rgb2gray()函数将其转换成灰度图像;用fft2()函数对其进行FFT变换,并将变换得到的傅立叶频谱存于fft_I矩阵中;用fftshift()函数将傅立叶频谱坐标原点移至窗口中央并存于sfft_I矩阵中;显示FFT频谱图、移动后的频谱图。由于fft_I和sfft_I均为复数矩阵,须用abs()函数求其模,并根据矩阵元素的特点将其归一化到0~255之间;用subplot()函数及imshow函数在同一窗口下显示原始图像、灰度图像、FFT频谱图及移动后的频谱图。附:FLY.m文件2023/4/2Fly.m文件内容%快速傅立叶变换,显示原始RGB图像、灰度图像、FFT频谱图functionfly(I)subplot(221)imshow(I);title('原始图像')I=rgb2gray(I);subplot(222)imshow(I);title('灰度图像')fft_I=fft2(I);%2-D快速傅立叶变换

A=abs(fft_I);%将频谱矩阵元素归一化到0~255A=(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);%将频谱矩阵元素归一化到0~255A=(A-min(min(A)))/(max(max(A))-min(min(A)))*255;subplot(224)imshow(A);title('原点移到中心的傅立叶频谱图像')2023/4/22023/4/2Lsyx_pp.m文件内容%DCT变换,显示原始RGB图像、灰度图像、DCT频谱图functionlsyx_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('离散余弦频谱图像')2023/4/22023/4/2实验方法、步骤3.读入一幅图像,对其作DWT分解。Matlab下对一幅图象进行小波分解有两种方法,一是利用Mtlab提供的“小波工具箱”,二是编写Matlab程序。方法一:点击“Start”按钮,选“Toolbox”→“More…”→“Wavelet”→“WaveletMainMenu(wavemenu)”,弹出“WaveletMainMenu”窗体;点击“Two-Dimensional”框架中的“Wavelet2-d”按钮,弹出“Wavelet2-d”窗体;2023/4/22023/4/2实验方法、步骤点击“File”菜单,选“Load”→“Image”,选择要做小波分解的图像”;从“Wavelet”列表中选择合适的小波母函数;从“Level”列表中选择小波分解的级别;点击“Analyze”按钮;调节各参数;对分解结果可以保存和输出。2023/4/2Xbfj.m文件内容%小波图像分解clearclcX=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('一次小波分解对角细节分量图像')2023/4/22023/4/2实验结果分析对FFT频谱图、DCT频谱图及小波分解图做必要分析说明;2023/4/2思考题离散傅立叶变换有那些性质?这些性质说明了什么:从FFT变换得到频谱图说明FFT变换在数字图像处理方面有何可能的作用?小波变换的优点有哪些?在数字图像处理方面有何优势?2023/4/2实验目的了解图像增强与复原的体系结构;熟悉灰度变换、直方图修正、图像平滑、图像锐化及伪彩色处理在数字图像增强方面的作用及各自的特点;掌握图像增强的灰度变换法、直方图修正法,掌握图像平滑、图像锐化的滤波器设计方法,掌握图像的伪彩色处理方法。实验三

图像增强与复原

2023/4/2实验内容读入一幅有明显明暗缺陷的灰度图像,分析其直方图特征,分别用分段灰度线性变换法、直方图均衡法和图像灰度调整法(imadjust)分别进行处理;读入一幅灰度图像,分别给其加上“乘性噪声”、“椒盐噪声”,然后分别用“均值滤波”、“中值滤波”和“巴特沃斯滤波”对其做平滑处理;2023/4/2实验内容读入一幅灰度图像,分别用“Sobel算子”、“Laplacian算子”、“梯形滤波器”对其做锐化处理;读入一幅灰度图像,分别用“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对其进行伪彩色增强;读入一幅图像,对其进行模糊化,然后用“逆滤波法”对其进行复原处理。2023/4/2实验要求独立完成各项实验内容;记录每一项实验内容实现的步骤;编写“灰度增强”、“平滑”、“锐化”、“伪彩色增强”、“图像复原”的Matlab程序;打印输出经“灰度增强”、“平滑”、“锐化”、“伪彩色增强”、“图像复原”处理的图像及各自的原始图像;独立撰写实验报告2023/4/2实验方法、步骤1.读入一幅有明显明暗缺陷的灰度图像,分析其直方图特征,分别用分段灰度线性变换法、直方图均衡法和图像灰度调整法(imadjust)分别进行处理;在“资源管理器”下以“缩略图”的方式浏览图片库,发现名为“6_gray.jpg”的图像明显整体偏暗,在Matlab下读入该图像,用imhist函数提取该图像的灰度直方图(图3-1)。从该图像的灰度直方图可以看出:该图像大多数像素的灰度值在140以下,140~240灰度级间象素数分布均匀,缺少240~255灰度级的象素,将0~255灰度级归一化到0~1,140对应0.55。2023/4/2图3-12023/4/2分段灰度线性变换:根据上述分析,将原图像灰度值在0~140采用线性变换到0~200,140~200线性变换到200~255。变换后的图像及其灰度直方图见图3-2。直方图均衡:在Matlab下用histeq函数可以对一幅图像直接进行直方图均衡,对“6_gray.jpg”做直方图均衡后的图像及其灰度直方图见图3-2。图像灰度调整:在Matlab下imadjust函数用以对图像的灰度级调整,

根据前面分析,将0~140调整到0~0.55,鉴于imadjust只能对一个灰度区间进行调整,对原图像140~255不做调整。由于原图像明显偏暗,这里gamma去<1的数0.7。调整后图像及其灰度直方图见图3-2。2023/4/2图3-22023/4/2%实验三_1:分段灰度线性变换、%直方图均衡和图像灰度调整clear;I=imread('6_gray.jpg');subplot(2,3,1);imshow(I);title('原始灰度图像');subplot(2,3,2);imhist(I);title('原始图像灰度直方图');%分段灰度线性变换法g0=0;f0=0;g1=200;f1=140;g2=255;f2=255;subplot(2,3,3);X=[f0f1f2];Y=[g0g1g2];plot(X,Y);title('变换线');k1=(g1-g0)/(f1-f0);k2=(g2-g1)/(f2-f1);[mn]=size(I);I=double(I);fori=1:m;forj=1:nif(I(i,j)>=f0)&(I(i,j)<f1)G(i,j)=k1*I(i,j);elseG(i,j)=k2*(I(i,j)-f1)+g1;endendendsubplot(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,[00.55],[01],0.7);subplot(2,3,6);imshow(K);title('图像灰度调整Low=0,High=0.55gamma=0.7');shiyan_3_1.m2023/4/2实验方法、步骤2.读入一幅灰度图像,分别给其加上“乘性噪声”、“椒盐噪声”,然后分别用“均值滤波”、“中值滤波”对其做平滑处理;对“乘性噪声”图像进行“巴特沃斯滤波”做平滑处理;在Matlab下读入一幅灰度图像,I=imread(‘9_gray.jpg‘);分别对其添加“乘性噪声”、“椒盐噪声”。I_noise_salt_pepper=imnoise(I,’salt&pepper’);I_noise_speckle=imnoise(I,’speckle’);对I_noise_salt_pepper和I_noise_speckle用3×3模板做均值滤波

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;2023/4/2对I_noise_salt_pepper和I_noise_speckle用3×3模板做中值滤波

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(u^2+v^2);

BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)^2);进行巴特沃斯滤波

BUTTERG=BUTTERH.*fft_I_noise_speckle;

快速傅立叶逆变换

BUTTERfiltered=ifft2(BUTTERG);2023/4/2

图3-32023/4/2%实验三_2:对加上“乘性噪声”、“椒盐噪声”%用“均值滤波”、“中值滤波”对其做平滑处理;%对“乘性噪声”图像进行“巴特沃斯滤波”做平滑处理;clear;[J,map]=imread('18.jpg');I=rgb2gray(J);%添加“椒盐噪声”I_noise_salt_pepper=imnoise(I,'salt&pepper');%添加“乘性噪声”I_noise_speckle=imnoise(I,'speckle');%对I_noise_salt_pepper用3×3模板做均值滤波I_noise_salt_pepper_average=filter2(fspecial('average',3),I_noise_salt_pepper)/255;%对I_noise_speckle用3×3模板做均值滤波I_noise_speckle_average=filter2(fspecial('average',3),I_noise_speckle)/255;%对I_noise_salt_pepper用3×3模板做中值滤波I_noise_salt_pepper_med=medfilt2(I_noise_salt_pepper,[3,3]);%I_noise_speckle用3×3模板做中值滤波I_noise_speckle_med=medfilt2(I_noise_speckle,[3,3]);shiyan_3_2.m2023/4/2%巴特沃斯滤波:%对添加噪声的图像进行快速傅立叶变换fft_I_noise_salt_pepper=fft2(double(I_noise_salt_pepper));%移动频谱坐标中心到屏幕中心fftshift(fft_I_noise_salt_pepper);%设定截止频率:Dcut=100;%计算巴特沃斯传递函数:[MN]=size(I);foru=1:Mforv=1:ND(u,v)=sqrt(u^2+v^2);BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)^2);endend%进行巴特沃斯滤波BUTTERG=BUTTERH.*fft_I_noise_salt_pepper;%快速傅立叶逆变换BUTTERfiltered=ifft2(BUTTERG);2023/4/2subplot(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('“椒盐噪声”图像3×3模板均值滤波');subplot(3,3,6);imshow(I_noise_salt_pepper_med);title('“椒盐噪声”图像3×3模板中值滤波');subplot(3,3,7);imshow(I_noise_speckle_average);title('“乘性噪声”图像3×3模板均值滤波');subplot(3,3,8);imshow(I_noise_speckle_med);title('“乘性噪声”图像3×3模板中值滤波');subplot(3,3,9);imshow(BUTTERfiltered,map);title('“椒盐噪声”图像经“巴特沃斯滤波”');2023/4/2实验方法、步骤3.读入一幅灰度图像,分别用“Sobel算子”、“Laplacian算子”、“梯形滤波器”对其做锐化处理;Matlab下在空间域对图像做锐化处理有两种方法,对于Matlab提供的算子,可以直接用滤波的方法,对于知道模板矩阵的,也可采取“模板-卷积”的方法。Matlab提供了“Sobel算子”,这里采取滤波的方法,对“Laplacian算子,其模板矩阵为[010,1-41,010],这里采取“模板-卷积”的方法。Matlab下在频率域对图像做锐化处理方法与平滑类似。2023/4/2%实验三_3:%用“Sobel算子”、“Laplacian算子”、%“梯形滤波器”对图像做锐化处理clear;[Imap]=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=[010,1-41,010]J=conv2(I,h,'same');subplot(2,3,5);imshow(J);title('Laplacian算子锐化');%“梯形滤波器”对图像做锐化处理[MN]=size(I);F=fft2(double(I));fftshift(F);D0=200;D1=100;foru=1:Mforv=1:ND(u,v)=sqrt(u^2+v^2);ifD(u,v)<D1TRAPEH(u,v)=0;elseifD(u,v)<=D0TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1);elseTRAPEH(u,v)=1;endendendTRAPEG=TRAPEH.*F;TRAPEfiltered=ifft2(TRAPEG);subplot(2,3,6);imshow(TRAPEfiltered,map);title('梯形高通滤波');shiyan_3_3.m2023/4/2图3-42023/4/2实验方法、步骤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)伪彩色图像');2023/4/2图3-52023/4/2“灰度变换法”:读入一幅灰度图像,计算图像的尺寸,根据图像尺寸设定循环,逐个像素进行灰度到彩色的转换(梯形法)。当像素的灰度值<1/4最高灰度级(L=256)时,将其归到G(绿色)位平面,并用线性拉伸的方法映射到绿色的0~255区间;当像素的灰度值>1/4最高灰度级,而<1/2最高灰度级时,将其归到B(兰色)位平面,并用线性拉伸的方法映射到绿色的0~255区间;当某像素的灰度值>1/2最高灰度级,<3/4最高灰度级时,将其归到R(红色)位平面,并用线性拉伸的方法映射到绿色的0~255区间;当某像素的灰度值>3/4最高灰度级时,将其归到G(绿色)位平面,并用线性拉伸的方法映射到绿色的0~255区间;将三个位平面合成为一幅彩色图像。2023/4/2%Matlab中灰度变换法伪彩色图象的实现clear;I=imread('高对比度:精美高清风光壁纸5.jpg');%I=rgb2gray(I);subplot(1,2,1);imshow(I);title('原始灰度图像');I=double(I);[MN]=size(I);L=256;fori=1:Nforj=1:MifI(j,i)<L/4R(j,i)=0;G(j,i)=4*I(j,i);B(j,i)=L;elseifI(j,i)<=L/2R(j,i)=0;G(j,i)=L;B(j,i)=-4*I(j,i)+2*L;

elseifI(j,i)<=3*L/4R(j,i)=4*I(j,i)-2*L;G(j,i)=L;B(j,i)=-0;elseR(j,i)=L;G(j,i)=-4*I(j,i)+4*L;B(j,i)=-0;endendendOUT=zeros(M,N,3);OUT(:,:,1)=R;OUT(:,:,2)=G;OUT(:,:,3)=B;OUT=uint8(OUT);subplot(1,2,2);imshow(OUT);title('灰度分级伪彩色图像');2023/4/2图3-62023/4/2“频域伪彩色处理法”:读入一幅灰度图像,进行FFT变换,分别进行低通滤波、带通滤波、高通滤波,得到三个独立的频率分量,人为地将它们分别归属为R、G、B分量,再分别将R、G、B分量进行快速傅立叶逆变换,得到R、G、B三个位平面,最后将三个位平面合成为一幅伪彩色图像。2023/4/2%Matlab频域伪彩色图象的实现clear;I=imread('风景04.jpg');I=rgb2gray(I);I=imadjust(I);subplot(1,2,1);imshow(I);title('原始灰度图像');I=double(I);[MN]=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;2023/4/2foru=1:Mforv=1:ND(u,v)=sqrt(u^2+v^2);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);endEndRed=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('频率域伪彩色图像');2023/4/2图3-72023/4/2实验方法、步骤5.读入一幅图像,对其进行模糊化,然后用“逆滤波法”对其进行复原处理。一幅质量改进或退化的图像可以近似地用方程g=Hf+n表示,其中g为图像,H为变形算子,又称点扩散函数(PSF),f为原始的真实图像,n为附加噪声,它在图像捕获过程中产生并且使图像质量下降。Matlab工具中有4个图像恢复函数:

deconvwnr:用Wiener滤波器实现图像恢复

deconvreg:用regularized滤波器实现图像恢复

deconvlucy:用Lucy-Richardson算法实现图像恢复

deconvblind:用Blind去卷积算法实现图像恢复 这4个函数都将PSF和模糊图像作为主要变量。2023/4/2deconvwnr

函数求取最小二乘解,deconvreg函数求取有约束的最小二乘解,可以设置对输出图像的约束。使用这些函数中的任何一个,都应提供一些与噪声相关的信息来减少恢复过程中可能出现的噪声扩大。deconvlucy函数实现了一个加速衰减的Lucy-Richardson算法。使用该函数不需要提供有关模糊图像中附加噪声的信息。deconvblind函数用盲去卷积算法,它在不知道PSF的情况下进行图像恢复。调用该函数时,将PSF的初值作为一个变量进行传递。该函数不仅返回一个修复后的图像,还返回一个修复后的PSF。2023/4/2deconvwnr函数求取最小二乘解,deconvreg函数求取有约束的最小二乘解,可以设置对输出图像的约束。使用这些函数中的任何一个,都应提供一些与噪声相关的信息来减少恢复过程中可能出现的噪声扩大。deconvlucy函数实现了一个加速衰减的Lucy-Richardson算法。使用该函数不需要提供有关模糊图像中附加噪声的信息。deconvblind函数用盲去卷积算法,它在不知道PSF的情况下进行图像恢复。调用该函数时,将PSF的初值作为一个变量进行传递。该函数不仅返回一个修复后的图像,还返回一个修复后的PSF。2023/4/2I=imread('31.jpg');%读入原始图像IPSF=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逆滤波图象');2023/4/2图3-82023/4/2实验结果分析1.比较分段灰度线性变换法、直方图均衡法和图像灰度调整法(imadjust)对灰度图像处理的效果,分析各自的优缺点;2.比较“均值滤波”、“中值滤波”及“巴特沃斯滤波”对图像平滑处理的效果,分析各自的优缺点;3.比较“Sobel”、“Laplacian”、“梯形滤波器”对图像做锐化处理的效果,分析各自的优缺点;4.分析“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对图像进行伪彩色增强分析各自的优缺点及各自适用在什么情况下;2023/4/2思考题灰度变换的目的是什么?有哪些实现方法?什么是图像平滑?图像平滑的方法有哪些?图像锐化的目的是什么?有哪些方法可以实现?频域低通滤波的原理是什么?什么是同态滤波?伪彩色处理的方法有哪些?逆滤波复原的基本原理是什么?2023/4/2实验目的了解插值运算常用的方法及其在图像几何变换中特点,熟悉图像代数变换与几何变换的原理、作用、特点;掌握图像算术运算、几何运算的方法。实验四

图像的代数变换与几何变换2023/4/2实验内容1.读入两幅图像,对它们分别做+、-、×、/运算,分析处理结果;2.读入一幅图像,对其进行水平平移、垂直平移50像素(图像扩大);3.读入一幅图像,对其进行水平转置、垂直转置、对角转置;4.读入一幅图像,对其旋转操作;5.读入一幅图像,对其进行等比例、不等比例缩放;6.读入一幅图像,对其进行水平错切、垂直错切;2023/4/2实验要求1.独立完成各项实验内容;2.记录每一项实验内容实现的步骤;3.编写“平移”、“镜像”、“旋转”、“缩放”、“错切”的Matlab程序;4.打印输出“算数变换”、“几何变换”前后的图像;5.独立撰写实验报告2023/4/2实验方法、步骤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));2023/4/2×运算:在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);[mnl]=size(I);MULT=zeros(m,n,l);fori=1:lforj=1:nfork=1:mMULT(k,j,i)=I(k,j,i).*J(k,j,i);endendendmax_mult=max(max(max(MULT)));min_mult=min(min(min(MULT)));fori=1:lforj=1:nfork=1:mMULT(k,j,i)=MULT(k,j,i).*(255/(max_mult-min_mult));endendendresult_im=uint8(MULT);subplot(1,3,3);imshow(result_im);title('图像1×图像2');2023/4/2/运算:在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);2023/4/2实验方法、步骤2.读入一幅图像,对其进行水平平移、垂直平移50像素(图像扩大); 方法一:%图像平移functionoutImage=immove(inImage,Tx,Ty)outImage=zeros(size(inImage));Tx=fix(Tx);Ty=fix(Ty);[m,n,l]=size(inImage);if(Tx<0&Ty<0)outImage(1:m-abs(Tx),1:n-abs(Ty),:)=inImage(abs(Tx)+1:m,abs(Ty)+1:n,:);elseif(Tx<0&Ty>0)outImage(1:m-abs(Tx),Ty+1:n,:)=inImage(abs(Tx)+1:m,1:n-abs(Ty),:);elseif(Tx>=0&Ty>=0)outImage(Tx+1:m,Ty+1:n,:)=inImage(1:m-Tx,1:n-Ty,1:l);elseoutImage(Tx+1:m,1:n-abs(Ty),:)=inImage(1:m-Tx,abs(Ty)+1:n,:);endsubplot(1,2,1);imshow(inImage);title('原始图像');subplot(1,2,2);imshow(uint8(outImage));title('平移图像');2023/4/2实验方法、步骤2.读入一幅图像,对其进行水平平移、垂直平移50像素(图像扩大);

方法二:用translate、imdilate函数

%图像平移clear;I=imread('ss.jpg');se=translate(strel(1),[5050]);J=imdilate(I,se);subplot(1,2,1)imshow(I),title('原始图像')subplot(1,2,2)imshow(J);title('平移图像');2023/4/2实验方法、步骤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('对角镜像');2023/4/2实验方法、步骤4.读入一幅图像,对其旋转操作;

方法一%Matlab图像旋转旋转functionim_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(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]);%分配新显示区域矩阵ImageNew=zeros(round(Xnew),round(Ynew),n)+127;2023/4/2%计算原图像各像素的新坐标forindexX=0:(X-1)forindexY=0:(Y-1)fori=1:nImageNew(round(indexX*cos(Angle)-indexY*sin(Angle))+round(abs(min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])))+1,1+round(indexX*sin(Angle)+indexY*cos(Angle))+round(abs(min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]))),i)=Image(indexX+1,indexY+1,i);endendendsubplot(1,2,1);imshow(Image);title('原始图像');subplot(1,2,2);imshow((ImageNew/255));title('旋转图像');2023/4/2实验方法、步骤4.读入一幅图像,对其旋转操作;

方法二%Matlab图像旋转旋转clear;I=imread('17.jpg');I_rot30=imrotat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论