数字图像处理实验指导书.ppt
数字图像处理实验指导书,谢洪波河南理工大学,2023/9/18,实验一 熟悉图像处理的Matlab平台,实验目的熟悉Matlab的工作环境,掌握Matlab下矩阵的基本操作,熟练掌握Matlab下图像处理的基本操作(读、分解、转换、显示、查看、写文件)。,2023/9/18,实验内容设置当前工作目录;读入一幅RGB图像,查看图像信息;将读入的图像分解为R、G、B三幅图像分别保存为三个图像文件;将读入的图像转换成灰度图像并保存为图象文件;显示、查看读入图像、分解图像、转换图像;,2023/9/18,实验要求独立完成实验内容;记录每一项实验内容实现的步骤;打印输出原始图像、分解图像、转换图像;独立撰写实验报告,2023/9/18,实验方法、步骤1.设置当前工作目录打开Matlab,从“文件”菜单选择“Set Path”,弹出“Set Path”窗体,单击“Add Folder”按钮或“Add with Subfolders”按钮,弹出“浏览文件夹”窗口,选择自己的文件夹添加到当前工作目录中,点击“确定”,返回到“Set Path”窗体,依次点击“Save”按钮、“Close”按钮,完成当前工作目录的设置。,2023/9/18,2023/9/18,实验方法、步骤2.读入一幅RGB图像,查看图像信息在“Command”窗口的命令提示符“”后输入“I=imread(ss.jpg)命令,读入RGB图像“ss.jpg”,数据存在“I”矩阵中;在“Command”窗口的命令提示符“”后输入“imfinfo(ss.jpg)命令,显示图像“ss.jpg”文件信息。,2023/9/18,2023/9/18,实验方法、步骤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/9/18,实验方法、步骤4.将读入的图像转换成灰度图像并保存为图象文件;在“Command”窗口的命令提示符“”后分别输入“I_Gray=rgb2gray(I)”将图像转变为灰度图像并存于矩阵“I_Gray”中,用“imwrite(I_Gray,ss_Gray.jpg)”将其写入ss_Gray.jpg”磁盘文件中。,2023/9/18,实验方法、步骤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/9/18,2023/9/18,思考题Matlab的当前工作目录;Matlab处理图像时把图像当作什么进行的?如何查看RGB图像的各分量图像?如何将RGB图像转换成灰度图像?,2023/9/18,实验目的 了解数字图像频域变换的目的,熟悉DFT、DCT变换的频谱特征及小波变换的特点,掌握数字图像FFT、DCT及DWT变换的方法。,实验二 图像的频域变换,2023/9/18,实验内容在Matlab下读入一幅图像,对其灰度图作快速傅立叶变换;在Matlab下读入一幅图像,对其灰度图作DCT变换;在Matlab下读入一幅图像,对其作DWT分解。,2023/9/18,实验要求独立完成各项实验内容;记录每一项实验内容实现的步骤;编写FFT、DCT、DWT变换Matlab程序;打印输出原始图像、FFT的频谱图、将频率平面坐标原点移至窗口中心的FFT频谱图、DCT频谱图以及1级小波分解图像;独立撰写实验报告,2023/9/18,实验方法、步骤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文件,2023/9/18,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(原点移到中心的傅立叶频谱图像),2023/9/18,2023/9/18,实验方法、步骤2.读入一幅图像,对其灰度图作DCT变换。用imread()函数读如工作目录下的“显微煤岩照片.JPG”图像存于I矩阵中,用rgb2gray()函数将其转换成灰度图像;用dct2()函数对其进行DCT变换,并将变换得到的傅立叶频谱存于dct_I矩阵中;显示DCT频谱图由于dct_I为复数矩阵,须用abs()函数求其模,并根据矩阵元素的特点将其归一化到0255之间;用subplot()函数及imshow函数在同一窗口下显示原始图像、灰度图像、DCT频谱图附:Lsyx_pp.m文件,2023/9/18,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(离散余弦频谱图像),2023/9/18,2023/9/18,实验方法、步骤3.读入一幅图像,对其作DWT分解。Matlab下对一幅图象进行小波分解有两种方法,一是利用Mtlab提供的“小波工具箱”,二是编写Matlab程序。方法一:点击“Start”按钮,选“Toolbox”“More”“Wavelet”“Wavelet Main Menu(wavemenu)”,弹出“Wavelet Main Menu”窗体;点击“Two-Dimensional”框架中的“Wavelet 2-d”按钮,弹出“Wavelet 2-d”窗体;,2023/9/18,2023/9/18,2023/9/18,实验方法、步骤点击“File”菜单,选“Load”“Image”,选择要做小波分解的图像”;从“Wavelet”列表中选择合适的小波母函数;从“Level”列表中选择小波分解的级别;点击“Analyze”按钮;调节各参数;对分解结果可以保存和输出。,2023/9/18,2023/9/18,实验步骤3.读入一幅图像,对其作DWT分解。方法二:读入进行小波分解的图像,并把它转成灰度图像,存于一个矩阵中,如:X;用wavedct2函数对X进行分解,该函数的格式如下:C,S=wavedt2(X,N,wname)用相关命令输出各图像附:Xbfj.m文件,2023/9/18,Xbfj.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/9/18,2023/9/18,实验结果分析对FFT频谱图、DCT频谱图及小波分解图做必要分析说明;,2023/9/18,思考题离散傅立叶变换有那些性质?这些性质说明了什么:从FFT变换得到频谱图说明FFT变换在数字图像处理方面有何可能的作用?小波变换的优点有哪些?在数字图像处理方面有何优势?,2023/9/18,实验目的 了解图像增强与复原的体系结构;熟悉灰度变换、直方图修正、图像平滑、图像锐化及伪彩色处理在数字图像增强方面的作用及各自的特点;掌握图像增强的灰度变换法、直方图修正法,掌握图像平滑、图像锐化的滤波器设计方法,掌握图像的伪彩色处理方法。,实验三 图像增强与复原,2023/9/18,实验内容读入一幅有明显明暗缺陷的灰度图像,分析其直方图特征,分别用分段灰度线性变换法、直方图均衡法和图像灰度调整法(imadjust)分别进行处理;读入一幅灰度图像,分别给其加上“乘性噪声”、“椒盐噪声”,然后分别用“均值滤波”、“中值滤波”和“巴特沃斯滤波”对其做平滑处理;,2023/9/18,实验内容读入一幅灰度图像,分别用“Sobel算子”、“Laplacian算子”、“梯形滤波器”对其做锐化处理;读入一幅灰度图像,分别用“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对其进行伪彩色增强;读入一幅图像,对其进行模糊化,然后用“逆滤波法”对其进行复原处理。,2023/9/18,实验要求独立完成各项实验内容;记录每一项实验内容实现的步骤;编写“灰度增强”、“平滑”、“锐化”、“伪彩色增强”、“图像复原”的Matlab程序;打印输出经“灰度增强”、“平滑”、“锐化”、“伪彩色增强”、“图像复原”处理的图像及各自的原始图像;独立撰写实验报告,2023/9/18,实验方法、步骤1.读入一幅有明显明暗缺陷的灰度图像,分析其直方图特征,分别用分段灰度线性变换法、直方图均衡法和图像灰度调整法(imadjust)分别进行处理;在“资源管理器”下以“缩略图”的方式浏览图片库,发现名为“6_gray.jpg”的图像明显整体偏暗,在Matlab下读入该图像,用imhist函数提取该图像的灰度直方图(图3-1)。从该图像的灰度直方图可以看出:该图像大多数像素的灰度值在140以下,140240灰度级间象素数分布均匀,缺少240255灰度级的象素,将0255灰度级归一化到01,140对应0.55。,2023/9/18,图3-1,2023/9/18,分段灰度线性变换:根据上述分析,将原图像灰度值在0140采用线性变换到0200,140200线性变换到200255。变换后的图像及其灰度直方图见图3-2。直方图均衡:在Matlab下用histeq函数可以对一幅图像直接进行直方图均衡,对“6_gray.jpg”做直方图均衡后的图像及其灰度直方图见图3-2。图像灰度调整:在Matlab下imadjust函数用以对图像的灰度级调整,根据前面分析,将0140调整到00.55,鉴于imadjust只能对一个灰度区间进行调整,对原图像140255不做调整。由于原图像明显偏暗,这里gamma去1的数0.7。调整后图像及其灰度直方图见图3-2。,2023/9/18,图3-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=f0 f1 f2;Y=g0 g1 g2;plot(X,Y);title(变换线);k1=(g1-g0)/(f1-f0);k2=(g2-g1)/(f2-f1);m n=size(I);I=double(I);,for i=1:m;for j=1:n if(I(i,j)=f0),shiyan_3_1.m,2023/9/18,实验方法、步骤2.读入一幅灰度图像,分别给其加上“乘性噪声”、“椒盐噪声”,然后分别用“均值滤波”、“中值滤波”对其做平滑处理;对“乘性噪声”图像进行“巴特沃斯滤波”做平滑处理;在Matlab下读入一幅灰度图像,I=imread(9_gray.jpg);分别对其添加“乘性噪声”、“椒盐噪声”。I_noise_salt_pepper=imnoise(I,salt,2023/9/18,对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);,2023/9/18,图3-3,%实验三_2:对加上“乘性噪声”、“椒盐噪声”%用“均值滤波”、“中值滤波”对其做平滑处理;%对“乘性噪声”图像进行“巴特沃斯滤波”做平滑处理;clear;J,map=imread(18.jpg);I=rgb2gray(J);%添加“椒盐噪声”I_noise_salt_pepper=imnoise(I,salt,shiyan_3_2.m,%巴特沃斯滤波:%对添加噪声的图像进行快速傅立叶变换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);endend%进行巴特沃斯滤波BUTTERG=BUTTERH.*fft_I_noise_salt_pepper;%快速傅立叶逆变换BUTTERfiltered=ifft2(BUTTERG);,2023/9/18,实验方法、步骤3.读入一幅灰度图像,分别用“Sobel算子”、“Laplacian算子”、“梯形滤波器”对其做锐化处理;Matlab下在空间域对图像做锐化处理有两种方法,对于Matlab提供的算子,可以直接用滤波的方法,对于知道模板矩阵的,也可采取“模板-卷积”的方法。Matlab提供了“Sobel算子”,这里采取滤波的方法,对“Laplacian算子,其模板矩阵为0 1 0,1-4 1,0 1 0,这里采取“模板-卷积”的方法。Matlab下在频率域对图像做锐化处理方法与平滑类似。,shiyan_3_3.m,2023/9/18,图3-4,实验方法、步骤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/9/18,图3-5,2023/9/18,“灰度变换法”:读入一幅灰度图像,计算图像的尺寸,根据图像尺寸设定循环,逐个像素进行灰度到彩色的转换(梯形法)。当像素的灰度值1/4最高灰度级,而1/2最高灰度级,3/4最高灰度级时,将其归到G(绿色)位平面,并用线性拉伸的方法映射到绿色的0255区间;将三个位平面合成为一幅彩色图像。,2023/9/18,图3-6,2023/9/18,“频域伪彩色处理法”:读入一幅灰度图像,进行FFT变换,分别进行低通滤波、带通滤波、高通滤波,得到三个独立的频率分量,人为地将它们分别归属为R、G、B分量,再分别将R、G、B分量进行快速傅立叶逆变换,得到R、G、B三个位平面,最后将三个位平面合成为一幅伪彩色图像。,%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;,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);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/9/18,图3-7,2023/9/18,实验方法、步骤5.读入一幅图像,对其进行模糊化,然后用“逆滤波法”对其进行复原处理。一幅质量改进或退化的图像可以近似地用方程g=Hf+n表示,其中g为图像,H为变形算子,又称点扩散函数(PSF),f为原始的真实图像,n为附加噪声,它在图像捕获过程中产生并且使图像质量下降。Matlab工具中有4个图像恢复函数:deconvwnr:用Wiener滤波器实现图像恢复deconvreg:用regularized滤波器实现图像恢复deconvlucy:用Lucy-Richardson算法实现图像恢复deconvblind:用Blind去卷积算法实现图像恢复这4个函数都将PSF和模糊图像作为主要变量。,2023/9/18,deconvwnr 函数求取最小二乘解,deconvreg函数求取有约束的最小二乘解,可以设置对输出图像的约束。使用这些函数中的任何一个,都应提供一些与噪声相关的信息来减少恢复过程中可能出现的噪声扩大。deconvlucy函数实现了一个加速衰减的Lucy-Richardson算法。使用该函数不需要提供有关模糊图像中附加噪声的信息。deconvblind函数用盲去卷积算法,它在不知道PSF的情况下进行图像恢复。调用该函数时,将PSF的初值作为一个变量进行传递。该函数不仅返回一个修复后的图像,还返回一个修复后的PSF。,2023/9/18,deconvwnr 函数求取最小二乘解,deconvreg函数求取有约束的最小二乘解,可以设置对输出图像的约束。使用这些函数中的任何一个,都应提供一些与噪声相关的信息来减少恢复过程中可能出现的噪声扩大。deconvlucy函数实现了一个加速衰减的Lucy-Richardson算法。使用该函数不需要提供有关模糊图像中附加噪声的信息。deconvblind函数用盲去卷积算法,它在不知道PSF的情况下进行图像恢复。调用该函数时,将PSF的初值作为一个变量进行传递。该函数不仅返回一个修复后的图像,还返回一个修复后的PSF。,I=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/9/18,图3-8,2023/9/18,实验结果分析1.比较分段灰度线性变换法、直方图均衡法和图像灰度调整法(imadjust)对灰度图像处理的效果,分析各自的优缺点;2.比较“均值滤波”、“中值滤波”及“巴特沃斯滤波”对图像平滑处理的效果,分析各自的优缺点;3.比较“Sobel”、“Laplacian”、“梯形滤波器”对图像做锐化处理的效果,分析各自的优缺点;4.分析“灰度级分层法”、“灰度变换法”和“频域伪彩色处理法”对图像进行伪彩色增强分析各自的优缺点及各自适用在什么情况下;,2023/9/18,思考题灰度变换的目的是什么?有哪些实现方法?什么是图像平滑?图像平滑的方法有哪些?图像锐化的目的是什么?有哪些方法可以实现?频域低通滤波的原理是什么?什么是同态滤波?伪彩色处理的方法有哪些?逆滤波复原的基本原理是什么?,2023/9/18,实验目的 了解插值运算常用的方法及其在图像几何变换中特点,熟悉图像代数变换与几何变换的原理、作用、特点;掌握图像算术运算、几何运算的方法。,实验四 图像的代数变换与几何变换,2023/9/18,实验内容1.读入两幅图像,对它们分别做+、-、/运算,分析处理结果;2.读入一幅图像,对其进行水平平移、垂直平移50像素(图像扩大);3.读入一幅图像,对其进行水平转置、垂直转置、对角转置;4.读入一幅图像,对其旋转操作;5.读入一幅图像,对其进行等比例、不等比例缩放;6.读入一幅图像,对其进行水平错切、垂直错切;,2023/9/18,实验要求1.独立完成各项实验内容;2.记录每一项实验内容实现的步骤;3.编写“平移”、“镜像”、“旋转”、“缩放”、“错切”的Matlab程序;4.打印输出“算数变换”、“几何变换”前后的图像;5.独立撰写实验报告,2023/9/18,实验方法、步骤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/9/18,运算:在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 endend,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 endendresult_im=uint8(MULT);subplot(1,3,3);imshow(result_im);title(图像1图像2);,2023/9/18,/运算:在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/9/18,实验方法、步骤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)outImage(1:m-abs(Tx),Ty+1:n,:)=inImage(abs(Tx)+1:m,1:n-abs(Ty),:);elseif(Tx=0,2023/9/18,实验方法、步骤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(平移图像);,2023/9/18,实验方法、步骤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/9/18,实验方法、步骤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(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2);%分配新显示区域矩阵ImageNew=zeros(round(Xnew),round(Ynew),n)+127;,2023/9/18,%计算原图像各像素的新坐标for indexX=0:(X-1)for indexY=0:(Y-1)for i=1:n ImageNew(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);end end endsubplot(1,2,1);imshow(Image);title(原始图像);subplot(1,2,2);imshow(ImageNew/255);title(旋转图像);,2023/9/18,实验方法、步骤4.读入一幅图像,对其旋转操作;方法二%Matlab图像旋转旋转clear;I=imread(17.jpg);I_rot30=imrotate(I,30,nearest);%旋转30I_rot45=imrotate(I,45,nearest);%旋转45I_rot60=imrotate(I,60,nearest);%旋转60subplot(2,2,1);imshow(I);title(原始图像);subplot(2,2,2);imshow(I_rot30);title(旋转30);subplot(2,2,3);imshow(I_rot45);title(旋转45);subplot(2,2,4);imshow(I_rot60);title(旋转60);,2023/9/18,实验方法、步骤5.读入一幅图像,对其进行等比例、不等比例缩放;方法一%Matlab采用等间隔采样对图像缩小function im_shrink=imshrink_eq(I,k)Type_I=uint8(isrgb(I);Size=size(I);%计算输入图像大小im_shrink_W=round(Size(1)*k)%计算缩放后图像宽