发布时间 : 星期三 文章图像灰度变换实验报告更新完毕开始阅读18fdc6c64028915f804dc2c9
实验2a 图像的灰度变换
一、实验目的:
学会用Matlab软件对图像进行运算和灰度变换。 二、实验内容:
用+、-、*、/、imabsdiff、imadd、imcomplment、imdivide、imlincomb、immultiply、imsubtract和imadjust等函数生成各类灰度变换图像。 三、实验相关知识
1、代数运算
两幅图像之间进行点对点的加、减、乘、除运算后得到输出图像。我们可以分别使用MATLAB的基本算术符+、-、*、/来执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型(命令函数为double())。为了更方便对图像进行操作,图像处理工具箱中也包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。如下所示:
imabsdiff:计算两幅图像的绝对差值 imadd:两个图像的加法
imcomplment:一个图像的补 imdivide:两个图像的除法
imlincomb:计算两幅图像的线性组合 immultiply:两个图像的乘法 imsubtract:两个图像的减法
使用图像处理工具箱中的图像代数运算函数无需再进行数据类型间的转换,这些函数能够接受uint8和uint16数据,并返回相同格式的图像结果。
代数运算的结果很容易超出数据类型允许的范围。图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。
2、灰度变换
点运算也称为灰度变换,是一种通过对图像中的每个像素值进行运算,从而改善图像显示效果的操作。
对于特定变换函数f的灰度变换,用户可以利用MATLAB强大的矩阵运算能力,对图像数据矩阵调用各种MATLAB计算函数进行处理。需要注意的是由于MATLAB不支持uint8类型数据的矩阵运算,所以首先要将图像数据转换为双精度类型,计算完成后再将其转换为uint8类型(命令为uint8( ))。
而在MATLAB图像处理工具箱中也提供了一个灰度变换函数imadjust,其语法格式为:J=imadjust(I, [low_in high_in], [low_out high_out], gamma)。[low_in high_in]是原图像中要变换的灰度范围,[low_out high_out]是指定变换后的灰度范围,两者的默认值均为[0 1]。gamma的取值决定了输入图像到输出图像的灰度映射方式,即决定是增强低灰度还是增强高灰度。gamma大于1、等于1和小于1的映射方式如下图所示。
四、实验步骤:
1、仔细阅读imabsdiff、imadd、imcomplment、imdivide、imlincomb、immultiply
和imsubtract的帮助文件(help imabsdiff),并练习相关函数的使用。
2、加法运算:将rice.tif和cameraman.tif相加并显示相加结果。若图像每个
像素加上一个常数则亮度会增加,将rice.tif每个像素加上100,显示出结果图像。
rice.tif和cameraman.tif相加实验结果:如图(1)
rice.tif每个像素加上100 结果图像:如图(2)
图(1) 图(2)
3、减法运算:将上一步中亮度增加的rice图像减去原rice.tif图像,显示出
结果,并想想为什么会有这样的结果。 将图2减去减去原rice.tif图像:如图(3)
图(3)
4、乘、除法运算:一个图像乘以一个大于1的数会使图像变亮,乘以一个
小于1的数会使图像变暗,使用immultiply对图像进行乘法运算,乘以一个常数或是乘以另一个图像。两幅图像的除法操作可以给出相应像素值的变化比率,使用imdivide函数进行两幅图像的除法。 乘以6时的图像,如下图(4);用imdivide函数除6得到的如图(5):
图(4) 图(5) 5、使用imadjust函数对图像进行灰度变换。 用imadjust函数对图像进行灰度变换 的图像如图(6)
图(6) 五、 实验心得
通过这次实验,对图像的变换有了一定的了解。图像的相加减必须是行列相同。掌握了图像的灰度变换,能够简单运用imabsdiff、imadd、imcomplment、imdivide、imlincomb、immultiply和imsubtract的帮助文件(help imabsdiff)对图像进行简单的处理。