实验二图像的代数运算
《数字图像处理》课程教学大纲
《数字图像处理》课程教学大纲课程代码:ABJD0619课程中文名称:数字图像处理课程英文名称:Dig让a1ImageProcessing课程性质:选修课程学分数:3学分课程学时数:48学时(32理论课时+16实验学时)授课对象:电子信息工程本课程的前导课程:高等数学,概率论,线性代数,数字信号处理,信息论,程序设计等一、课程简介数字图像处理是一门新兴的跨学科的前沿高科技,在军事、工业、科研、医学等领域获得了广泛应用,是国内外高校和科研院所的研窕生教育中一个重要的研究方向。
通过本课程的学习,同学们将掌握数字图像处理的基本理论与方法,包括图像变换、图像增强、图像分割、图像恢复、图像识别、图像压缩编码、数字图像处理系统及应用等内容。
二、教学基本内容和要求(-)数字图像处理方法概述教学内容:数字图像处理的研究对象、基本应用、研究内容等,数字图像的基本概念、彩色图像的调色板等概念。
课程的重点、难点:重点:CDIB类与程序框架结构介绍。
难点:调色板的基本概念和应用。
教学要求:D了解本课程研究的对象、内容及其在培养软件编程高级人才中的地位、作用和任务;2)了解数字图像处理的应用;3)理解数字图像的基本概念、与设备相关的位图(DDB)、与设备无关的位图(D1B);4)理解调色板的基本概念和应用;5)了解CD1B类与程序框架结构介绍;6)掌握位图图像处理技术。
(二)图像的几何变换教学内容:图像的几何变换种类以及概念,几何变换的实现原理和实施方法课程的重点、难点:重点:镜像变换。
难点:旋转。
教学要求:1)理解图像的缩放、平移、镜像变换、转置、旋转。
(三)图像灰度变换教学内容:直方图的概念、灰度的点运算(包含灰度信息的线性变化、指数变换等)、直方图的均匀化和规定化课程的重点、难点:重点:灰度直方图。
难点:灰度分布均衡化。
教学要求:1)了解非O元素取1法、固定阈值法、双固定阈值法的图像灰度变换;2)掌握灰度的线性变换、窗口灰度变换处理、灰度拉伸、灰度直方图、灰度分布均衡化。
图像基本运算实验指导
图像的缩放
1 、实验内容 对一幅图像实现按比例缩小和不按比例任意缩小的效果,以及图像的成倍放大和 不按比例放大效果。 2 、实验原理 数字图像的比例缩放是指将给定的图像在 x 方向和 y 方向按相同的比例缩放 a 倍, 从而 获得一幅新的图像,又称为全比例缩放。如果 x 方向和 y 方向缩放的比例不同,则图像的比 例缩放会改变原始图像像素间的相对位置,产生几何畸变。设原始图像中的点 A0 ( x0 , y0 ) 比 例缩放后,在新图中的对应点为 A1 ( x 1 , y1 ) ,则 A0 ( x0 , y0 ) 和 A1 ( x 1 , y1 ) 之间坐标关系可表 示如下:
J = i m 2 d o u b l e ( J ) ; K = I + 0 . 3 * J ; % 两幅图像相加 s u b p l o t ( 1 , 3 , 1 ) ; i m s h o w ( I ) ; t i t l e ( ' 人物图' ) ; s u b p l o t ( 1 , 3 , 2 ) ; i m s h o w ( J ) ; t i t l e ( ' 背景图' ) ; s u b p l o t ( 1 , 3 , 3 ) ; i m s h o w ( K ) ; t i t l e ( ' 相加后的图' ) ; i m w r i t e ( K , ' i _ l e n a 1 . j p g ' ) ; (2 )选取一幅混合图像,如上图相加得到的图像 i _ l e n a . j p g , 将混合图像与背景图像 做减法运算,程序如下,结果如图(b ) 。 A = i m r e a d ( ' i _ l e n a 1 . j p g ' ) ; B = i m r e a d ( ' r i c e . p n g ' ) ; C = A 0 . 3 * B ; % 混合图减去背景图 s u b p l o t ( 1 , 3 , 1 ) ; i m s h o w ( A ) ; t i t l e ( ' 混合图' ) ; s u b p l o t ( 1 , 3 , 2 ) ; i m s h o w ( B ) ; t i t l e ( ' 背景图' ) ; s u b p l o t ( 1 , 3 , 3 ) ; i m s h o w ( C ) ; t i t l e ( ' 分离后的图' ) ; (3 )选取一幅尺寸为 2 5 6 ×2 5 6 的灰度图,如 i _ l e n a . j p g 。设置掩膜模板,对于需要 保留下来的区域,掩膜图像的值置为 1,而在需要被抑制掉的区域,掩膜图像的值置为 0。 程序如下,结果如图(c) 。 A = i m r e a d ( ' i _ l e n a . j p g ' ) ; A = i m 2 d o u b l e ( A ) ; s u b p l o t ( 1 , 2 , 1 ) ; i m s h o w ( A ) ; t i t l e ( ' 原图' ) ; B = z e r o s ( 2 5 6 ) ; % 设置模板 B ( 4 0 : 2 0 0 , 4 0 : 2 0 0 ) = 1 ; K = A . * B ; % 两幅图像相乘 s u b p l o t ( 1 , 2 , 2 ) ; i m s h o w ( K ) ; t i t l e ( ' 局部图' ) ; 4 、实验结果与分析 (1 ) 、实验结果如图 3 . 8 所示。
matlab数字图像处理实验报告
《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。
二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。
从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。
其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。
此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。
频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。
常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。
假定原图像为f(x,y),经傅立叶变换为F(u,v)。
频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。
四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 1962.给定函数的累积直方图。
Matlab图像处理实验指导书
郑州大学《Matlab应用图像处理》课程实验指导书电气工程学院·生物医学工程系2006年11月实验一 Matlab图像显示方法一、实验目的1.了解Matlab的基本功能及操作方法2.练习图像读写和显示函数的使用方法3.掌握Matlab支持的五类图像的显示方法二、实验内容1.图像的读写A)图像读RGB = imread('ngc6543a.jpg');B)图像写先从一个.mat 文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp 文件,并将图像存入其中。
load clownwhosimwrite(X,map,'clown.bmp')C)图像文件格式转换bitmap = imread('clown.bmp','bmp');imwrite(bitmap,'clown.png','png');2.图像显示A)二进制图像的显示BW1=zeros(20,20); %创建仅包含0/1的双精度图像BW1(2:2:18,2:2:18)=1;imshow(BW1,'notruesize');whosBW2=uint8(BW1);figure,imshow(BW2,'notruesize')BW3=BW2~=0; %逻辑标志置为onfigure,imshow(BW3,'notruesize')whosBW=imread('circles.tif');imshow(BW);figure,imshow(~BW);figure,imshow(BW,[1 0 0;0 0 1]);B)灰度图像的显示I=imread('testpat1.tif');J=filter2([1 2;-1 -2],I);imshow(I)figure,imshow(J,[])C)索引图像的显示load clown %装载一幅图像imwrite(X,map,'clown.bmp'); %保存为bmp文件imshow(X)imshow(X,map)D)RGB图像的显示I=imread('flowers.tif');imshow(I)RGB=imread('ngc6543a.jpg');figure,imshow(RGB)imshow(I(:,:,3) % 显示第3个颜色分量E)多帧图像的显示mri=uint8(zeros(128,128,1,27)); % 27帧文件mri.tif初始化for frame=1:27[mri(:,:,:,frame),map]=imread('mri.tif',frame); % 读入每一帧endimshow(mri(:,:,:,3),map); % 显示第3帧figure,imshow(mri(:,:,:,6),map); % 显示第6帧figure,imshow(mri(:,:,:,10),map); % 显示第10帧figure,imshow(mri(:,:,:,20),map); % 显示第20帧F)显示多幅图像[X1,map1]=imread('forest.tif');[X2,map2]=imread('trees.tif');subplot(1,2,1),imshow(X1,map1)subplot(1,2,2),imshow(X2,map2)subplot(1,2,1),subimage(X1,map1)subplot(1,2,2),subimage(X2,map2)三、思考题:1.图像显示时,若不带参数’notruesize’,显示效果如何?2.如何显示RGB图像的某一个颜色分量?3.如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?实验二图像运算一、实验目的1.熟悉图像点运算和代数运算的实现方法2.了解图像几何运算的简单应用3.了解图像的邻域操作二、实验内容1.图像点运算读入图像‘rice.tif’,通过图像点运算改变对比度。
数字图像处理实验报告
目录实验一:数字图像的基本处理操作 (4):实验目的 (4):实验任务和要求 (4):实验步骤和结果 (5):结果分析 (8)实验二:图像的灰度变换和直方图变换 (9):实验目的 (9):实验任务和要求 (9):实验步骤和结果 (9):结果分析 (13)实验三:图像的平滑处理 (14):实验目的 (14):实验任务和要求 (14):实验步骤和结果 (14):结果分析 (18)实验四:图像的锐化处理 (19):实验目的 (19):实验任务和要求 (19):实验步骤和结果 (19):结果分析 (21)实验一:数字图像的基本处理操作:实验目的1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单变换。
3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。
:实验任务和要求1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。
2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。
3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。
4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
:实验步骤和结果1.对实验任务1的实现代码如下:a=imread('d:\');i=rgb2gray(a);I=im2bw(a,;subplot(1,3,1);imshow(a);title('原图像');subplot(1,3,2);imshow(i);title('灰度图像');subplot(1,3,3);imshow(I);title('二值图像');subplot(1,3,1);imshow(a);title('原图像');结果如图所示:图原图及其灰度图像,二值图像2.对实验任务2的实现代码如下:a=imread('d:\');A=imresize(a,[800 800]);b=imread('d:\');B=imresize(b,[800 800]);Z1=imadd(A,B);Z2=imsubtract(A,B);Z3=immultiply(A,B);Z4=imdivide(A,B);subplot(3,2,1);imshow(A);title('原图像 A'); subplot(3,2,2);imshow(B);title('原图像 B'); subplot(3,2,3);imshow(Z1);title('加法图像'); subplot(3,2,4);imshow(Z2);title('减法图像'); subplot(3,2,5);imshow(Z3);title('乘法图像'); subplot(3,2,6);imshow(Z2);title('除法图像');结果如图所示:3.对实验任务3的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j); %直流分量移到频谱中心I=log(abs(k)); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶变换频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶变换频谱');结果如图所示:4.对实验任务4的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j);I=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=imrotate(s,-90);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱');结果如图所示::结果分析对MATLAB软件的操作开始时不太熟悉,许多语法和函数都不会使用,写出程序后,调试运行,最开始无法显示图像,检查原因,是有些标点符号没有在英文状态下输入和一些其他的细节,学会了imread(),imshow(),rgb2gray()等函数。
《图像处理》实验指导书
现场考核(60%)+实验报告(40%)
七、实验报告
实验结束后,撰写实验报告,实验报告主题部分应包括:算法原理、程序流程、算法各部分主 要函数代码以及功能注释、运行结果四部分,每部分占实验报告的 10%,按照撰写情况打分。
《图像处理》实验二 图像增强பைடு நூலகம்
一、实验意义及目的
(1)进一步掌握图像处理工具 Matlab,熟悉基于 Matlab 的图像处理函数。 (2)掌握各种图像增强方法。
功能:实现两幅图像相除。
调用格式:
C=imdivide(A,B)。
四、参考代码
参考代码中实现了彩色图像的灰度化、旋转、缩放两种几何变换以及镜像及拼接。
Image1=imread('peppers.jpg'); %红绿通道互换 Image2=Image1; Image2(:,:,1)=Image1(:,:,2); Image2(:,:,2)=Image1(:,:,1); imshow(Image2); imwrite(Image2,'changecolor.jpg');
《图像处理》实验指导书
蔡利梅 编
信息与电气工程学院
学生实验守则
一、学生进入实验室必须遵守实验室的规章制度,遵守课堂纪律,保持实验室的安静和整洁,爱护 实验室的一切设施。 二、实验课前要认真预习实验指导书,写出实验预习报告,并经教师批阅后方可进行实验。 三、实验课中要遵守操作规程,不要带电连接、更改或拆除线路。线路接好后,经指导老师检查后, 方可接通电源进行实验。对于软件上机实验,不得随意删改计算机中原有的文件。 四、学生实验前对实验所用仪器设备要了解其操作规程和使用方法,凡因不预习或不按使用方法进 行操作而造成仪器设备损坏者,除书面检查外,按学校规定进行赔偿。 五、实验中主意安全,遇到事故应立即关断电源并报告教师检查处理。 六、实验完毕后要做好整理工作,实验数据必须经指导教师签阅后,才能拆除线路,并将仪器、设 备、凳子等按规定放好,经同意后方可离开实验室。 七、因故缺课的学生可向实验室申请一次补做机会。无故缺课或无故迟到(15 分钟以上)的不予补 做,该次实验无成绩;累计三次者,该实验课以不及格论,并不得参加该门理论课程的考试。 八、实验室仪器设备不能擅自搬动调换,更不能擅自带出实验室。
《数字图像处理》教学大纲
《数字图像处理》课程教学大纲Digital Image Processing一、课程说明课程编码:045236001 课程总学时(理论总学时/实践总学时):51(42/9),周学时:3,学分:3,开课学期:第6学期。
1.课程性质:专业选修课2.适用专业:电子信息与技术专业3.课程教学目的和要求《数字图像处理》是信号处理类的一门重要的专业选修课,通过本课程的学习,应在理论知识方面了解和掌握数字图像的概念、类型,掌握数字图像处理的基本原理和基本方法:图像变换、图像增强、图像编码、图像的复原和重建。
并通过实验加深理解数字图像处理的基本原理。
4.本门课程与其他课程关系本课程的先修课程为:数字信号处理和应用5.推荐教材及参考书推荐教材:阮秋琦,《数字图像处理学》(第二版),电子工业出版社,2007年参考书(1)姚敏等,《数字图像处理》,机械工业出版社,2006年(2)何东健,《数字图像处理》(第二版),西安电子工业出版社,2008年(3)阮秋琦,《数字图像处理基础》,清华大学出版社,2009年(4) (美)Rafael C. Gonzalez著,阮秋琦译,《数字图像处理》(第二版),电子工业出版社,2007年6.课程教学方法与手段主要采用课堂教学的方式,通过多媒体课件进行讲解,课外作业,答疑辅导。
并辅以适当的实验加深对数字图像处理的理解。
7.课程考核方法与要求本课程为考查课课程的实验成绩占学期总成绩的50%,期末理论考查占50%;考查方式为笔试。
8.实践教学内容安排实验一:图像处理中的正交变换实验二:图像增强实验三:图像复原详见实验大纲。
二、教学内容纲要与学时分配(一)数字图像处理基础(3课时)1.主要内容:图像处理技术的分类,数字图像处理的特点,数字图像处理的主要方法及主要内容,数字图像处理的硬件设备,数字图像处理的应用,数字图像处理领域的发展动向2.基本要求:了解图像处理技术的分类和特点,数字图像处理的主要方法及主要内容,熟悉数字图像处理的硬件设备。
数字图象处理基础
本科生实验报告实验课程数字图像处理基础学院名称信息科学与技术学院专业名称软件工程学生姓名学生学号指导教师实验地点6A502实验成绩实验一实验目的:1)熟练掌握MatLAB图像处理工具读入图像、显示图像、保存多种类型图像文件和图像基本信息显示。
2)熟练掌握MatLAB矩阵索引与图像基本处理(图像旋转、裁剪、抽样)3) 熟练掌握图像算术运算在图像处理中应用。
实验内容:(1) 读入一幅彩色图像文件,用rgb2gray(f)函数转换成灰度图象并作如下操作:1) 显示图像,提取本图像的基本信息,保存不同类型的图像文件并提取保存图像文件信息。
2) 应用矩阵索引作图像的裁剪、抽样和翻转等基本处理。
(2)用M文件分别采用循环方法和代数法编写生成一幅f(x,y)=A*sin(ux+vy) 图像程序。
令u= ,v=显示图像。
(3) 应用图像算术运算完成下面的操作:1)作图像与常数的算术运算2)作两幅图像的算术运算设计与实现:内容一:f=imread('d:\1.jpg');imshow(f);whos fimwrite(f,'d:\1a1.tif');imfin 'd:\1a1.tif'imfinfo 'd:\1a1.tif'imfinfo 'd:\1a2.jpg'imwrite(f,'d:\1112.jpg','quality',25); imfinfo 'd:\1112.jpg'g = rgb2gray(f);imshow(g);g1=g';g2=g(50:150,50:150);g3=g(1:2:end,1:2:end);g4=g(end:-1:1,:);subplot(2,2,1);imshow(g1);title('图像旋转90度');subplot(2,2,2);imshow(g2);title('图像裁剪');subplot(2,2,3);imshow(g3);title('图像抽取');subplot(2,2,4);imshow(g4);title('图像翻转');执行结果:f=imread('d:\1.jpg');f=sin;plot(f(100,:) );imwrite(f,'e:\13.tif'); function [f] = sin()A=1;u=1/(4*pi);v=1/(4*pi);M=256;N=256;ticfor x=1:Mux=u*(x-1);for y=1:Nvy=v*(y-1);f(x,y)=A*sin(ux+vy); endendt1=toc;t1;ticx=0:M-1;y=0:N-1;[Y,X]=meshgrid(y,x);g=A*sin(u*X+v*Y);t2=toc;t2;figure,imshow(f); figure,imshow(g);end执行结果:f=imread('d:\1.jpg');f1=imread('d:\2.jpg'); f=rgb2gray(f);f1=rgb2gray(f1);g=imadd(f,30);imshow(g);A=f(10:80,10:80);B=f(10:80,10:80);C=A+B;D=C-A;subplot(2,3,1);imshow(f);title('A图像');subplot(2,3,2);imshow(mat2gray(C)); title('C=A+B图像'); subplot(2,3,3);imshow(B);title('B图像');subplot(2,3,4);imshow(mat2gray(C)); title('C图像');subplot(2,3,5);imshow(A);title('A图像');subplot(2,3,6);imshow(mat2gray(D)); title('D=C-A图像');f=imread('d:\1b.jpg'); f1=imread('d:\2b.jpg'); f=grb2gray(f);f=rgb2gray(f);f1=rgb2gray(f1);f=f(10:80,10:80);A=f1(10:80,10:80);B=f+A;C=B-A;subplot(2,3,1);imshow(f);title('f图像');subplot(2,3,2);imshow(A);title('A图像');subplot(2,3,3);imshow(B);title('B=f+A图像');subplot(2,3,4);imshow(B);title('B图像');subplot(2,3,5);imshow(A);title('A图像');subplot(2,3,6);imshow(C);title('C=B-A图像');g=imcomplement(f1);gg=mat2gray(double(f1));g1=immultiply(gg,3);imshow(g);imshow(g1);>> a执行结果:心得体会:通过实验一的完成,初次熟练掌握了MATLAB的一些常用方法的使用如图像的裁剪,旋转,抽样,图像的灰度处理,图像的计算,图像的读入,显示,保存等方法。
《数字图像处理》-教学大纲
《数字图像处理》课程教学大纲Digital image processing一、教学目标及教学要求数字图像处理课程是智能科学与技术、数字媒体技术等专业的专业必修课。
主要目标及要求是通过该课程的学习,使学生初步掌握数字图像处理的基本概念、基本原理、基本技术和基本处理方法,了解数字图像的获取、存储、传输、显示等方面的方法、技术及应用,为学习相关的数字媒体、视频媒体和机器视觉等课程,以及今后从事数字媒体、视频媒体、图像处理和计算机视觉等领域的技术研究与系统开发打下坚实的理论与技术基础。
二、本课程的重点和难点(一)课程教学重点教学重点内容包括:图像的表示,空间分辨率和灰度级分辨率,图像直方图和直方图均衡,基于空间平滑滤波的图像增强方法,基于空间锐化滤波的图像增强方法,图像的傅里叶频谱及其特性分析,图像编码模型、霍夫曼编码和变换编码,图像的边缘特征及其检测方法,彩色模型,二值形态学中的有腐蚀运算和膨胀运算。
(二)课程教学难点教学难点包括:直方图均衡,二维离散傅里叶变换的若干重要性质、图像的傅里叶频谱及其特性分析,变换编码,小波变换的概念、嵌入式零树小波编码,图像的纹理特征及其描述和提取方法,Matlab图像处理算法编程。
三、主要实践性教学环节及要求本课程的实验及实践性环节要求使用Matlab软件平台,编写程序实现相关的数字图像处理算法及功能,并进行实验验证。
课程实验与实践共10学时,分别为:实验一:图像基本运算实验(2学时)。
实验二:图像平滑滤波去噪实验(2学时)。
实验三:图像中值滤波去噪实验(2学时)。
实验四:图像边缘检测实验(2学时)。
相关图像处理算法的课堂演示验证(2学时)。
要求每个学生在总结实验准备、实验过程和收获体会的基础上,写出实验报告。
四、采用的教学手段和方法利用多媒体课件梳理课程内容和讲授思路,合理运用启发式教学方式激发学生的思考力,采用讨论式教学方式增强教学过程的互动效果,理论教授与应用实例编程实践相结合,提高学生的分析和解决问题的能力。
MATLAB数字图像处理实验--图像基本运算
MATLAB数字图像处理实验--图像基本运算一、实验目的1.理解图像点运算、代数运算、几何运算的基本定义和常见方法;2.掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法;3.掌握在MATLAB中进行插值的方法4.运用MATLAB语言进行图像的插值缩放和插值旋转5.进一步熟悉了解MATLAB语言的应用。
二、实验设备与软件1.PC计算机系统2.MATLAB软件,包括图像处理工具箱(Image Processing Toolbox)3.实验图片三、实验内容及结果分析3.1图像的点运算选择pout.tif作为实验图像,实验原理及内容参照《MATLAB图像处理编程及应用》程序代码:I=imread('pout.tif');figure;subplot(1,3,1);imshow(I);title('原图');J=imadjust(I,[0.3;0.6],[0.1;0.9]);subplot(1,3,2);imshow(J);title('线性扩展');I1=double(I);I2=I1/255;C=2;K=C*log(1+I2);subplot(1,3,3);imshow(K);title('非线性扩展');M=255-I;figure;subplot(1,3,1);imshow(M);title('灰度倒置');N1=im2bw(I,0.4);N2=im2bw(I,0.7);subplot(1,3,2);imshow(N1);title('二值化阈值0.4');subplot(1,3,3);imshow(N2);title('二值化阈值0.7');执行结果:原图线性扩展非线性扩展灰度倒置二值化阈值0.4二值化阈值0.7实验1结果图3.2图像的代数运算选择两幅图像,一幅是原图像,一幅为背景图像,采用正确的图像代数运算方法,分别实现图像叠加、混合图像的分离和图像的局部显示效果。
数字图像处理四个实验
数字图像处理实验指导书目录实验一MATLAB数字图像处理初步实验二图像的代数运算实验三图像增强-空间滤波实验四图像分割实验五形态学运算3实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。
图像关于x和y坐标以及振幅连续。
要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样和量化的过程如图1所示。
因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。
图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类:亮度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
DIP实验报告
实验结果:
3.对图像1进行旋转,裁剪操作。
I=imread('1.jpg');
J=imrotate(I,35,'bilinear');
K=imcrop(I,[60,255,400,425]);
subplot(131);imshow(I);
3subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。
Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,
用于显示图形。
图像类型的转换
1rgb2gray把真彩图像转换为灰度图像
i=rgb2gray(j)
2im2bw通过阈值化方法把图像转换为二值图像
subplot(2,3,3);imshow(K);title('变换后图像')
subplot(2,3,4);imhist(B);title('变换前直方图')
subplot(2,3,5);imhist(J);title('变换后直方图')
实验结果:
五、结果分析
1.实验内容中需要注意imhist函数的使用,它本身具有与imshow函数相同的功能即显示图像的功能,因此在使用imhist函数时,无需使用imshow函数,如果重复使用,就会覆盖住原所要显示的图,无法达到实验要求,甚至无法显示出相应的直方图。
其他常用的灰度变换函数如下:
反转变换s = (L-1)- r
对数变换s = c * log(1 + r)
幂律变换s = c * rγ当γ< 1时,扩展暗处细节;当γ> 1时,扩展亮处细节
实验报告二 Matlab图像代数运算和几何变换
实验二Matlab图像代数运算和几何变换一、实验目的1、掌握不同图像类型的转换2、掌握图像代数运算和几何变换的方法;3、掌握灰度级插值法的实验方法。
二、实验内容1、练习图像类型转换的相关命令(ind2rgb,mat2gray,grayslice,rgb2gray,rgb2ind,im2bw,ind2gray,dither)(p69-73);2、练习课本6.3.2(p139-p143)图像代数运算的内容;3、练习图像平移 (p148),图像比例变换(p153),图像旋转(p156),图像镜像变换(p158),图像切割(p160)Matlab实现例题;4、练习灰度级插值法(p171)。
三、实验步骤和结果1、练习图像类型转换的相关命令(ind2rgb,mat2gray,grayslice,rgb2gray,rgb2ind,im2bw,ind2gray,dither)(1)mat2gray()函数I=imread('rice.png');>> J=filter2(fspecial('sobel'),I);>> K=mat2gray(J);>> imshow(I);>> figure,imshow(K)(2)、grayslice()函数>> I=imread('snowflakes.png');>> X=grayslice(I,16);>> imview(I)imview(X,jet(16))(3)、rgb2ind()函数> RGB=imread('peppers.png');>> imshow(RGB);>> figure,imshow(RGB)>> [X,map]=rgb2ind(RGB,128);>> figure,imshow(X,map) (4)、im2bw()函数>> load trees>> BW=im2bw(X,map,0.4);>> figure,imshow(X,map)>> figure,imshow(BW)(5)、ind2gray()函数load trees>> I=ind2gray(X,map);>> figure,imshow(X,map)>> figure,imshow(I)(6)、dither()函数>> RGB=imread('peppers.png'); >> [X,map]=rgb2ind(RGB,256); >> I=dither(RGB,map);>> BW=dither(I);>> imshow(RGB,map);>> figure,imshow(RGB,map); >> figure,imshow(BW)Result:(1)转换后图像(2)索引色图像(3)索引色图像(4)索引色图像(4)二值化后的图像(5)转换后的灰度图像(6)索引色图像(6)抖动转换图像2、练习课本6.3.2(p139-p143)图像代数运算的内容(1)加法运算I=imread('rice.png');>> figure(1),imshow(I,[])>> I2=imread('cameraman.tif')>> figure(2),imshow(I2,[])>> K=imadd(I,I2,'uint16');>> figure(3),imshow(K,[])>> I=imread('lena.bmp');>> I2=imadd(I,50);>> figure(1),imshow(I)>> figure(2),imshow(I2)(2)、减法运算>> I=imread('rice.png'); >> I2=imread('cameraman.tif'); >> I3=imsubtract(I,I2);>> figure,imview(I3)(3)乘法&除法运算>> I=imread('lena.bmp');>> I2=immultiply(I,0.5);>> figure,imshow(I)>> figure,imshow(I2)>> I3=immultiply(I,1.5);>> figure,imshow(I3)>> I4=imdivide(I,0.5);>> figure,imshow(I4)>> I5=imdivide(I,1);>> figure,imshow(I5)Result:(1)加法运算后的图像(1)加入常数后的图像(2)减法运算(3)乘以0.5后的图像乘以1后的图像除以0.5后的图像除以1后的图像3、练习图像平移 (p148),图像比例变换(p153),图像旋转(p156),图像镜像变换(p158),图像切割(p160)Matlab实现例题;(a)图像平移>> I=imread('trees.tif');>> figure,imshow(I)>> I=double(I);>> I_movesult=zeros(size(I));>> H=size(I);>> Move_x=50;>> Move_y=50;>>I_movesult(Move_x+1:H(1),Move_y+1:H(2))=I(1:H(1)-Move_x,1:H(2)-Move_y);>> figure,imshow(uint8(I_movesult))(b)图像比例变换J=imread('trees.tif');>> figure,imshow(J);>> X1=imresize(J,2);>> X2=imresize(J,0.5);>> figure,imshow(X1)>> figure,imshow(X2)(C)图像旋转变换>> I=imread('peppers.png');>> figure,imshow(I)>> X1=imrotate(I,30,'nearest');>> figure,imshow(uint8(X1))>> X2=imrotate(I,45,'nearest');>> figure,imshow(uint8(X2))>> X3=imrotate(I,60,'nearest');>> figure,imshow(uint8(X3))>> X4=imrotate(I,90,'nearest');>> figure,imshow(uint8(X4))(d)图像镜像变换>> I=imread('forest.tif');>> I=double(I);>> figure,imshow(uint8(I));>> H=size(I);>> figure(2),>> I2(1:H(1),1:H(2))=I(H(1):-1:1,1:H(2));>> imshow(uint8(I2));>> figure,imshow(uint8(I2));>> I3(1:H(1),1:H(2))=I(1:H(1),H(2):-1:1);>> figure,imshow(uint8(I3));>> I4(1:H(1),1:H(2))=I(H(1):-1:1,H(2):-1:1);>> figure,imshow(uint8(I4));(e)图像切割>> I1=imread('peppers.png');>> I2=imcrop(I1,[75 68 220 100]);>> imview(I2)I3=imcrop(I1,[30 40 120 100]);>> imview(I3)(a)平移后的图像(b)放大后图像(b)缩小后的图像(c)旋转30°后的图像旋转45°后的图像旋转60°后的图像旋转90°后的图像(d)原始图像垂直镜像水平镜像对角镜像(e)原始图像一次切割后图像二次切割后图像4、练习灰度级插值法(p171)>> I=imread('lena.bmp');>> X1=imresize(I,1);>> X2=imresize(I,1,'bilinear');>> X3=imresize(I,1,'bicubic');>> figure,imshow(X1)>> figure,imshow(X2)>> figure,imshow(X3)最近邻差值法双线性插值法三次插值法四、实验体会在本次实验中掌握不同图像类型的转换,掌握了转换函数及其语法格式,如ind2rgb()函数将索引图像转换成真彩色。
数字图像处理实验指导书(带源程序)
实验一Matlab图像处理工具箱的初步练习一. 实验目的1. 掌握有关数字图像处理的基本概念;2. 熟悉Matlab图像处理工具箱;3. 熟悉使用Matlab进行数字图像的读出和显示;4. 熟悉运用Matlab指令进行图像旋转和缩放变换。
二. 练习1. 文件的读入与显示(1) 运行Matlab。
(2) MATLAB窗口构成:在缺省的情况下,由三个窗口组成。
命令窗口(command window)、命令历史(command history)、工作空间(workspace)。
注意:缺省窗口的设置步骤为:MATLAB菜单/view选项/Desktop layout/default。
(3) 调入一个文件:i=imread('pout.tif');%注意:前面的“%”是用于注释的,不会被执行,只是说明这个语句的作用。
此时的i出现在什么窗口?是什么类型的变量?大小是多少?(4) 显示这幅图:imshow(i);(5) 将变量i转置成j,即j=i';显示j即imshow(j);%在胸前左侧花纹怎么会跑到右边的呢?举一个例子加以验证:设a=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15];b=a’;此时的b与a有什么区别?(6) 写入到一个新的图像文件'abc.tif'中,即imwrite(j,'abc.tif')。
(7) 清除变量命令:clear执行这个命令后,workspace窗口中的变量有没有?怎么验证?(8) 清除用户开设的窗口命令:close all(9) 调入图像文件'abc.tif'并显示。
问题:(1) 操作符“’”是图像的转置的意思,转置两次后,是否回到原图像?(2) 命令后的符号“;”所起的作用是什么?(3) 命令是否可以大写母?2. 灰度图像分别选择不同的灰度级(如2、4、16、64、128个)来显示同一幅图像(如testpat1.tif)。
数字图像处理上机实验报告(基于Matlab)
除法运算可用于校正成像设备的非线性影响。MATLAB中调用imdivide函数进行两幅图像相除。调用格式如下:
Z=imdivide(X,Y),其中Z=X÷Y。
图像四则运算
因对uint8、uintl6数据,每步运算都要进行数据截取,将会减少输出图像的信息量。图像四则运算较好的办法是使用函数imlincomb。该函数按双精度执行所有代数运算操作,仅对最后的输出结果进行截取,该函数的调用格式如下:
s=uint8(real(ifft2(s)));
subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数
subplot(2,3,5),imshow(s); title('ILPF滤波(d0=50)'); %显示ILPF滤波后的图像
运行结果窗口截图:
第二次实验
1.图像复原算法
图像在形成、传输和记录过程中,由于受到多种原因的影响,图像的质量就会有所下降,典型的表现为图像模糊、失真、有噪声等,这一过程称为图像的退化。
图像复原是试图利用退化过程的先验知识使已退化的图像恢复本来面目,即根据退化的原因,分析引起退化的环境因素,建立相应的数学模型,并沿着使图像降质的逆过程恢复图像。目的在于消除或减轻在图像获取以及传输的过程中造成的图像品质下降,恢复图像的本来面目。因此,复原技术就是把退化模型化,并采用相反的过程进行处理,以便尽可能复原被退化图像的本来面目。
C=A(:,:,1); %取单色%
D=B(:,:,1);
figure('Name','图像逻辑运算')
res1=C&D; %C&D%
res2=C|D; %C|D%
逻辑代数基础实验报告
一、实验目的1. 理解逻辑代数的基本概念和运算规则。
2. 掌握逻辑函数的表示方法及其化简方法。
3. 熟悉逻辑电路的基本原理和设计方法。
二、实验原理逻辑代数是数字电路和数字系统设计的基础,它是一种用二值逻辑来描述和计算的方法。
在逻辑代数中,基本元素是逻辑变量,它们取值为0或1,分别代表逻辑“假”和“真”。
逻辑运算包括与(AND)、或(OR)、非(NOT)等,它们遵循一定的运算规则。
三、实验内容1. 逻辑运算实验(1)实现与、或、非运算(2)实现复合逻辑运算2. 逻辑函数实验(1)建立逻辑函数的真值表(2)根据真值表写出逻辑函数表达式(3)根据逻辑函数表达式绘制逻辑图(4)根据逻辑图写出逻辑函数表达式(5)化简逻辑函数3. 逻辑电路实验(1)设计实现一个简单的逻辑电路(2)分析逻辑电路的功能和特性四、实验步骤1. 逻辑运算实验(1)利用实验箱上的逻辑门,实现与、或、非运算,观察实验结果。
(2)根据实验结果,总结与、或、非运算的规律。
2. 逻辑函数实验(1)选取一个逻辑函数,列出其真值表。
(2)根据真值表,写出逻辑函数表达式。
(3)根据逻辑函数表达式,绘制逻辑图。
(4)根据逻辑图,写出逻辑函数表达式。
(5)利用逻辑代数的基本公式和规则,对逻辑函数进行化简。
3. 逻辑电路实验(1)根据逻辑函数,设计一个简单的逻辑电路。
(2)分析逻辑电路的功能和特性,验证电路的正确性。
五、实验结果与分析1. 逻辑运算实验(1)与运算:当两个输入均为1时,输出为1;否则输出为0。
(2)或运算:当两个输入至少有一个为1时,输出为1;否则输出为0。
(3)非运算:输入为1时,输出为0;输入为0时,输出为1。
2. 逻辑函数实验(1)真值表:列出逻辑函数的输入和输出值。
(2)逻辑函数表达式:根据真值表,写出逻辑函数的表达式。
(3)逻辑图:根据逻辑函数表达式,绘制逻辑图。
(4)化简:利用逻辑代数的基本公式和规则,对逻辑函数进行化简。
3. 逻辑电路实验(1)设计:根据逻辑函数,设计一个简单的逻辑电路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
昆明理工大学信息工程与自动化学院学生实验报告( 2012 —2013 学年第二学期)一、实验目的1.了解图像的算术运算在数字图像处理中的初步应用。
2.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验原理图像的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。
如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式:C(x,y) = A(x,y) + B(x,y)C(x,y) = A(x,y) - B(x,y)C(x,y) = A(x,y) * B(x,y)C(x,y) = A(x,y) / B(x,y)图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。
例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。
使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。
为了更方便地对图像进行操作,MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。
下表列举了所有图像处理工具箱中的图像代数运算函数。
表2-1 图像处理工具箱中的代数运算函数能够接受uint8和uint16数据,并返回相同格式的图像结果。
虽然在函数执行过程中元素是以双精度进行计算的,但是MATLAB工作平台并不会将图像转换为双精度类型。
代数运算的结果很容易超出数据类型允许的范围。
例如,uint8数据能够存储的最大数值是255,各种代数运算尤其是乘法运算的结果很容易超过这个数值,有时代数操作(主要是除法运算)也会产生不能用整数描述的分数结果。
图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。
例如,如果数据类型是uint8,那么大于255的结果(包括无穷大inf)将被设置为255。
注意:无论进行哪一种代数运算都要保证两幅输入图像的大小相等,且类型相同。
三、实验步骤1.图像的加法运算图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。
直接采集的图像品质一般都较好,不需要进行加法运算处理,但是对于那些经过长距离模拟通讯方式传送的图像(如卫星图像),这种处理是必不可少的。
在MATLAB中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。
imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。
imadd函数的调用格式如下:Z = imadd(X,Y)其中,X和Y表示需要相加的两幅图像,返回值Z表示得到的加法操作结果。
图像加法在图像处理中应用非常广泛。
例如,以下代码使用加法操作将图2.1中的(a)、(b)两幅图像叠加在一起:I = imread(‘rice.tif’);J = imread(‘cameraman.tif’);K = imadd(I,J);imshow(K);叠加结果如图2.2所示。
图2.1 待叠加的两幅图像图2.2 叠加后的图像效果给图像的每一个像素加上一个常数可以使图像的亮度增加。
例如,以下代码将增加图3(a)所示的RGB图像的亮度,加亮后的结果如图3(b)所示。
RGB = imread(‘flower.tif’);RGB2 = imadd(RGB,50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB2);加50 减50原图加50 减50图2.3 亮度增加与变暗两幅图像的像素值相加时产生的结果很可能超过图像数据类型所支持的最大值,尤其对于uint8类型的图像,溢出情况最为常见。
当数据值发生溢出时,imadd函数将数据截取为数据类型所支持的最大值,这种截取效果称之为饱和。
为了避免出现饱和现象,在进行加法计算前最好将图像转换为一种数据范围较宽的数据类型。
例如,在加法操作前将uint8图像转换为uint16类型。
2.图像的减法运算图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。
图像减法可以作为许多图像处理工作的准备步骤。
例如,可以使用图像减法来检测一系列相同场景图像的差异。
图像减法与阈值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。
在利用图像减法处理图像时往往需要考虑背景的更新机制,尽量补偿由于天气、光照等因素对图像显示效果造成的影响。
在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。
imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。
imsubtract函数的调用格式如下:Z = imsubtract(X,Y);其中,Z是X-Y操作的结果。
以下代码首先根据原始图像(如图2.4(a)所示)生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去,从而生成图2.4(b)所示的图像:rice = imread(‘rice.tif’);background = imerode(rice, strel(‘disk’,15));rice2 = imsubtract(rice, background);subplot(1,2,1);imshow(rice);subplot(1,2,2);imshow(rice2);图2.4 原始图像、减去背景图像如果希望从图像数据I的每一个像素减去一个常数,可以将上述调用格式中的Y替换为一个指定的常数值,例如:Z = imsubtract(I,50);减法操作有时会导致某些像素值变为一个负数,对于uint8或uint16类型的数据,如果发生这种情况,那么imsubtract函数自动将这些负数截取为0。
为了避免差值产生负值,同时避免像素值运算结果之间产生差异,可以调用函数imabsdiff。
imabsdiff将计算两幅图像相应像素差值的绝对值,因而返回结果不会产生负数。
该函数的调用格式与imsubtract函数类似。
3. 图像的乘法运算两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。
一幅图像乘以一个常数通常被称为缩放,这是一种常见的图像处理操作。
如果使用的缩放因子大于1,那么将增强图像的亮度,如果因子小于1则会使图像变暗。
缩放通常将产生比简单添加像素偏移量自然得多的明暗效果,这是因为这种操作能够更好地维持图像的相关对比度。
此外,由于时域的卷积或相关运算与频域的乘积运算对应,因此乘法运算有时也被作为一种技巧来实现卷积或相关处理。
在MATLAB中,使用immultiply函数实现两幅图像的乘法。
immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值。
immulitply函数的调用格式如下:Z = immulitply(X,Y)其中,Z=X*Y。
例如,以下代码将使用给定的缩放因子对图2.5(a)所示的图像进行缩放,从而得到如图2.5(b)所示的较为明亮的图像:I = imread(‘moon.tif’);J = immultiply(I,1.2);subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(J);图2.5 原图和乘以因子1.5 的图像uint8图像的乘法操作一般都会发生溢出现象。
Immultiply函数将溢出的数据截取为数据类型的最大值。
为了避免产生溢出现象,可以在执行乘法操作之前将uint8图像转换为一种数据范围较大的图像类型,例如uint16。
4.图像的除法运算除法运算可用于校正成像设备的非线性影响,这在特殊形态的图像(如断层扫描等医学图像)处理中常常用到。
图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法也称为比率变换。
在MATLAB中使用imdivide函数进行两幅图像的除法。
imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。
imdivide函数的调用格式如下:Z = imdivide(X,Y)其中,Z=X/Y。
例如,以下代码将图4所示的两幅图像进行除法运算,请将这个结果和减法操作的结果相比较,对比它们之间的不同之处:Rice = imread(‘rice.tif’);I = double(rice);J= I * 0.43 + 90;Rice2 = uint8(J);Ip = imdivide(rice, rice2);Imshow(Ip, []);除法操作的结果如图2.6所示。
图2.6 原图和减背景后的图像相除的图像效果5.图像的四则代数运算可以综合使用多种图像代数运算函数来完成一系列的操作。
例如,使用以下语句计算两幅图像的平均值:I = imread(‘rice.tif’);I2 = imread(‘cameraman.tif’);K = imdivide(imadd(I,I2),2);建议最好不要用这种方式进行图像操作,这是因为,对于uint8或uint16数据,每一个算术函数在将其输出结果传递给下一项操作之前都要进行数据截取,这个截取过程将会大大减少输出图像的信息量。
执行图像四则运算操作较好的一个办法就是使用函数imlincomb。
函数imlincomb按照双精度执行所有代数运算操作,而且仅对最好的输出结果进行截取,该函数的调用格式如下:Z = imlincomb(A,X,B,Y,C);其中,Z=A*X+B*Y+C。
MATLAB会自动根据输入参数的个数判断需要进行的运算。
例如,以下语句将计算Z=A*X+C:Z = imlincomb(A,X,C)而以下语句将计算Z=A*X+B*Y:Z = imlincomb(A,X,B,Y,)四、实验报告要求1 描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果并进行必要的讨论。
2 必须包括原始图像及其计算处理后的图像以及相应的解释。
1)图像加法运算I = imread('2.bmp');J = imread('1.jpg');K = imadd(I,J);imshow(K); %使用加法操作将图2.1中的1.jpg、2.bmp两幅图像叠加在一起:RGB = imread('1.jpg');RGB2 = imadd(RGB,50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB2); %亮度加502)图像减法运算rice = imread('2.bmp');background = imerode(rice, strel('disk',1));rice2 = imsubtract(rice, background);subplot(1,2,1);imshow(rice);subplot(1,2,2);imshow(rice2);RGB = imread('1.jpg');RGB2 = imsubtract(RGB,50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB2); %亮度减503)图像乘法运算I = imread('1.jpg');J = immultiply(I,1.8);subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(J); % 原图和乘以因子1.8 的图像4)图像除法运算clear all;close all;rice = imread('2.bmp');I = double(rice);J= I * 0.01 + 10;rice2 = uint8(J);Ip = imdivide(rice, rice2);Imshow(Ip, []);5)图像四则代数运算I = imread('1.jpg');I2 = imread('2.bmp');subplot(2,2,1);imshow(I);subplot(2,2,2);imshow(I2);K = imdivide(imadd(I,I2),2);subplot(2,1,2);imshow(K);%计算两幅图像的平均值:五、思考题由图像算术运算的运算结果,思考图像减法运算在什么场合上发挥优势?答:使用背景减法进行运动目标检测可以提取出完整的目标图像.可将所得标用于进一步的图像处理工作中。