(整理)实验一 MATLAB数字图像处理初步.
Matlab进行数字图像处理实验1

实验报告专业:信息与计算科学班级:07级(1)班指导老师:汪太月老师姓名:刘莲学号:0641210224 实验室:K7-407实验名称:Matlab图像工具箱的使用时间:2010.6.13一、实验目的及要求(一)实验目的1、掌握MATLAB中常用的图像处理语句;2、掌握图像的读入,信息查询以及显示;3、掌握采用不同的模板对图像进行滤波;4、掌握图像显示的调用格式;(二)实验要求1、练习MATLAB中常用的图像处理语句;2、练习图像的读入,信息查询以及显示;3、练习采用不同的模板对图像进行滤波;4、练习图像显示的调用格式;二、实验设备(环境)及要求1、支持Intel Pentium Ⅲ及其以上CPU,内存256MB以上、硬盘1GB以上容量的微机;软件配有Windows98/2000/XP操作系统及MATLAB软件;2、实验过程中,务必分析实验结果,按要求写出实验报告。
(建议同时网上提交电子版实验报告:yw6895@)三、实验内容与步骤1、练习MATLAB中常用的图像处理语句Matlab中为用户提供了一些特殊的函数,用于从图像格式的文件中读写图像。
其中:a、读取图形文件格式的图像需要用imread函数;b、写入一个图形文件格式的图像需要调用imwrite函数;c、获取图形文件格式的图像的信息需要调用imfinfo、ind2rgb函数;d、以Mat文件加载或保存矩阵数据用load、save函数;e、显示加载到Matlab中的图像用image、imagesc.此外,Matlab工具箱中还提供了图像转化函数,可以对图像类型进行转化,以达到某些图像处理工作的要求。
下面,我们将分别对这些常用的图像处理语句在Matlab中进行练习,并观察其输出结果:(1)在Matlab中读入一个灰度图像,并利用相关函数进行图像处理,并显示结果。
Matlab程序如下:I=imread('lena.bmp'); %读入原图像文件imshow(I) %图像文件的显示imwrite(I,'lena1.bmp'); %将原图像重命名为lena1.bmp,并保存图像figure,imhist(I,225) %显示原图像的直方图,225为指定的灰度级数目X=grayslice(I,64); %将原图像I均匀量化成64个等级,然后转化成索引色图像Xfigure,imshow(X,pink(64)) %显示索引色图像,pink(64)产生一个64×3的调色板,色度为粉红运行结果如下:500100015002000250030003500050100150200250(2)练习图像的读入,信息查询以及显示Matlab程序如下:load treesimage(50,80,X) %显示加载到Matlab中的图像imwrite(X,map,'trees.tif'); %将图像以tif格式保存inf=imfinfo('trees.tif') %图像文件信息的查询BW=im2bw(X,map,0.4); %将索引图像转化成二值图像figure,imshow(X,map) %显示图像figure,imshow(BW)运行结果如下:50100150200250300350100150200250300%显示从Matlab中加载的图像文件的信息inf = Filename: 'trees.tif'FileModDate: '18-六月-2010 19:41:48'FileSize: 75764Format: 'tif'FormatVersion: []Width: 350Height: 258BitDepth: 8ColorType: 'indexed'FormatSignature: [73 73 42 0]ByteOrder: 'little-endian'NewSubFileType: 0BitsPerSample: 8Compression: 'PackBits'PhotometricInterpretation: 'RGB Palette'StripOffsets: [12x1 double]SamplesPerPixel: 1RowsPerStrip: 23StripByteCounts: [12x1 double]XResolution: 72YResolution: 72ResolutionUnit: 'Inch'Colormap: [256x3 double]PlanarConfiguration: 'Chunky'TileWidth: []TileLength: []TileOffsets: []TileByteCounts: []Orientation: 1FillOrder: 1GrayResponseUnit: 0.0100MaxSampleValue: 255MinSampleValue: 0Thresholding: 12、练习采用不同的模板对图像进行滤波Matlab程序如下:I=imread('rice.png'); %读入图像文件rice.pngJ=filter2([1 3;-1 -3],I); %用模板[1 3;-1 -3]对图像滤波K=filter2([-3 -1;1 3],I); %用模板[-3 -1;1 3]对图像滤波imshow(I) %原图像显示figure,imshow(J,[]) %由于波波后图像灰度范围与滤波之前不同,所以用[]作为参考figure,imshow(K,[]) %用另一个模板得到的滤波后的图像显示运行结果如下:3、练习图像显示的调用格式Matlab中不同类型的图像显示方法也不同。
实验一 MATLAB数字图像处理初步

实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
6. 了解图像的算术运算在数字图像处理中的初步应用。
7.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验原理及知识点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]。
若图像是double类,则像素取值就是浮点数。
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\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。
matlab图像处理实验

matlab图像处理实验实验⼀ Matlab语⾔、数字图象基本操作⼀、实验⽬的1、复习MATLAB语⾔的基本⽤法;2、掌握MATLAB语⾔中图象数据与信息的读取⽅法;3、掌握在MATLAB中绘制灰度直⽅图的⽅法,了解灰度直⽅图的均衡化的⽅法。
⼆、实验原理MATLAB是集数值计算,符号运算及图形处理等强⼤功能于⼀体的科学计算语⾔。
作为强⼤的科学计算平台,它⼏乎能够满⾜所有的计算需求。
MATLAB软件具有很强的开放性和适⽤性。
在保持内核不变的情况下,MATLAB可以针对不同的应⽤学科推出相应的⼯具箱(toolbox)。
⽬前,MATLAB已经把⼯具箱延伸到了科学研究和⼯程应⽤的诸多领域,诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在⼯具箱(Toolbox)家族中有⾃⼰的⼀席之地。
在实验中我们主要⽤到MATLAB提供图象处理⼯具箱(Image ProcessingToolbox)。
1、MATLAB与数字图像处理MATLAB全称是Matrix Laboratory(矩阵实验室),⼀开始它是⼀种专门⽤于矩阵数值计算的软件,从这⼀点上也可以看出,它在矩阵运算上有⾃⼰独特的特点。
实际上MATLAB中的绝⼤多数的运算都是通过矩阵这⼀形式进⾏的。
这⼀特点也就决定了MATLAB在处理数字图像上的独特优势。
理论上讲,图像是⼀种⼆维的连续函数,然⽽在计算机上对图像进⾏数字处理的时候,⾸先必须对其在空间和亮度上进⾏数字化,这就是图像的采样和量化的过程。
⼆维图像进⾏均匀采样,就可以得到⼀幅离散化成M×N样本的数字图像,该数字图像是⼀个整数阵列,因⽽⽤矩阵来描述该数字图像是最直观最简便的了。
⽽MATLAB的长处就是处理矩阵运算,因此⽤MATLAB处理数字图像⾮常的⽅便。
MATLAB⽀持五种图像类型,即索引图像、灰度图像、⼆值图像、RGB图像和多帧图像阵列;⽀持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像⽂件格式的读,写和显⽰。
数字图像处理MATLAB程序【完整版】

第一部分数字图像处理实验一图像的点运算实验1.1直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。
三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif’);%读取图像subplot(1,2,1),imshow(I) %输出图像title(’原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1。
启动matlab双击桌面matlab图标启动matlab环境;2。
在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布.(a)原始图像(b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像.I=imread('cameraman.tif’);%读取图像subplot(2,2,1),imshow(I) %输出图像title(’原始图像’) %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title(’原始图像直方图’) %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title(’均衡化后图像’) %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图’)%在均衡化后直方图上加标题四.实验步骤1。
实验一MATLAB数字图像处理初步

实验一MATLAB数字图像处理初步实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
二、实验内容及步骤1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp 图像,设为flower.bmp。
7.用imread()读入图像:Lenna.jpg 和camema.jpg;8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;9.用figure,imshow()分别将Lenna.jpg和camema.jpg显示出来,观察两幅图像的质量。
10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow 显示出来观察图像的特征。
11.将每一步的函数执行语句拷贝下来,写入实验报告,并且将得到第3、9、10步得到的图像效果拷贝下来。
三、实验结果四、实验小结1、使用imread指令的时候,后边的地址不经要在括号内,还要注意:必须要有引号。
但是,把文件放在变量中间存储便可以,也一定不可以加引号。
2、whos 后边不需要加括号,只需要加空格就可以。
matlab数字图像处理实验解读

数字图像处理实验指导书目录实验一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]。
若图像是double类,则像素取值就是浮点数。
数字图像处理实验1 MATLAB图像处理编程基础 实验报告

实验报告课程名称数字图像处理实验项目MATLAB图像处理编程基础指导教师学院光电信息与通信工程__专业电子信息工程班级/学号学生姓名______ __________实验日期______ _成绩______________________实验1 MATLAB图像处理编程基础一、实验目的1.了解MATLAB产品体系和了解MATLAB图像处理工具箱。
2.掌握MATLAB的基本应用方法。
3.掌握MATLAB图像存储/图像数据类型/图像类型。
4.掌握图像文件的读/写/信息查询。
5.掌握图像显示--显示多幅图像、4种图像类型的显示方法、特殊图像的显示技术6.编程实现图像类型间的转换和图像算术操作。
二、实验的硬件、软件平台硬件:计算机软件:操作系统:Windows XP应用软件:MATLAB 7.0.1三、MATLAB图像处理工具箱的功能图像处理工具箱是一个函数的集合,它扩展了matlab数值计算环境的能力。
这个工具箱支持了大量图像处理操作,包括:空间图像变换 Spatial image transformations形态操作 Morphological operations邻域和块操作 Neighborhood and block operations线性滤波和滤波器设计 Linear filtering and filter design格式变换 Transforms图像分析和增强 Image analysis and enhancement图像登记 Image registration清晰化处理 Deblurring兴趣区处理 Region of interest operations四、说明使用MATLAB进行图像处理所需函数调用步骤在Command Window中,以命令行单句调用某一函数只需写xxx(函数名)xxxxxxx)这样就可以调用了.五、给出MATLAB图像处理工具箱的数据类型和4种基本图像类型工具箱里的函数都是M文件,可以通过type function_name来查看代码,也可以通过写自己的matlab函数来扩展工具箱。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像间如何转化。
6. 了解图像的算术运算在数字图像处理中的初步应用。
7.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验原理及知识点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]。
若图像是double类,则像素取值就是浮点数。
规定双精度型归一化亮度图像的取值范围是[0,1](2) 二值图像一幅二值图像是一个取值只有0和1的逻辑数组。
而一幅取值只包含0和1的uint8类数组,在MA TLAB中并不认为是二值图像。
使用logical函数可以把数值数组转化为二值数组或逻辑数组。
创建一个逻辑图像,其语法为:B=logical(A)其中,B是由0和1构成的数值数组。
要测试一个数组是否为逻辑数组,可以使用函数:islogical(c)若C是逻辑数组,则该函数返回1;否则,返回0。
(3) 索引图像索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。
一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。
(4) RGB图像一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色相似点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。
按照惯例,形成一幅RGB彩色图像的三个图像常称为红、绿或蓝分量图像。
令fR,fG和fB分别代表三种RGB分量图像。
一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像:rgb_image=cat(3,fR,fG,fB)在操作中,图像按顺序放置。
2、数据类和图像类型间的转化表1中列出了MATLAB和IPT为表示像素所支持的各种数据类。
表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。
工具箱中提供了执行必要缩放的函数(见表2)。
以在图像类和类型间进行转化。
表1-1 MATLAB和IPT支持数据类型表1-2 格式转换函数下面给出读取、压缩、显示一幅图像的程序(%后面的语句属于标记语句,编程时可不用输入)I=imread(‘原图像名.tif’); % 读入原图像,tif格式whos I % 显示图像I的基本信息imshow(I) % 显示图像% 这种格式只适用于jpg格式,压缩存储图像,q是0-100之间的整数imfinfo filename imwrite(I,'filename.jpg','quality',q);imwrite(I,'filename.bmp'); % 以位图(BMP)的格式存储图像% 显示多幅图像,其中n为图形窗口的号数figure(n), imshow('filename');gg=im2bw('filename'); % 将图像转为二值图像figure, imshow(gg) % 显示二值图像3、图像的代数运算代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。
如果输入图像为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图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。
下表列举了所有图像处理工具箱中的图像代数运算函数。
表1-3 图像处理工具箱中的代数运算函数能够接受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 叠加后的图像效果(2)图像的减法运算图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。
图像减法可以作为许多图像处理工作的准备步骤。
例如,可以使用图像减法来检测一系列相同场景图像的差异。
图像减法与阈值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。
在利用图像减法处理图像时往往需要考虑背景的更新机制,尽量补偿由于天气、光照等因素对图像显示效果造成的影响。
在MATLAB中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。
imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。
imsubtract函数的调用格式如下:Z = imsubtract(X,Y);其中,Z是X-Y操作的结果。
以下代码首先根据原始图像(如图2.4(a)所示)生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去,从而生成图2.4(b)所示的图像:rice = imread(‘rice.tif’);background = (rice, str el(‘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。