数字图像的运算
一、图像的像素运算
1.图像点运算
点运算又称为对比度增强、对比度拉伸或灰度变换,是一种通过图像中的每一个像素值(即像素点上的灰度值)进行运算的图像处理方式。它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的灰度值决定,运算结果不会改变图像内像素点之间的空间关系,其运算的数学关系式:
其中A表示原图像,B表示经过点运算处理后的图像,f表示点运算的关系函数。按照灰度变换的数学关系点运算可以分为线性灰度变换、分段线性灰度变换和非线性灰度变换三种。
2.图像代数运算
图像的代数运算是指将两幅或多幅图像通过对应像素之间的加、减、乘、除运算得到输出图像的方法,它们运算的数学表达式:
其中,和表示进行代数运算的两幅图像,表示和运算后的结果。
3.图像逻辑运算
图像的逻辑运算主要是针对二值图像,以像素对像素为基础进行的两幅或多幅图像间的操作。常用的逻辑运算有与、或、非、或非、与非、异或等。在MATLAB中,提供了逻辑操作符与(&)、或(|)\非(~)、异或(OR)等进行逻辑运算,复杂逻辑运算可通过基本运算推导得到。
二、图像的几何变换
图像的几何变换是将一幅图像中的坐标映射到另外一幅图像中的新坐标位置,它不改变图像的像素值,只是改变像素所在的几何位置,使原始图像按照需要产生位置、形状和大小的变化。本小节主要介绍图像的一些基本几何变换,包括图像的平移、镜像变换、转置、放缩等。
1.图像的平移
图像的平移是几何变换中最简单最常见的变换之一,它是将一幅图像上的所有点都按照给定的偏移量在水平方向沿轴、在垂直方向上沿轴移动,平移后的图像与原图像大小相同。设为原图像上的一点,图像水平平移量为,垂直平移量为,则平移后点坐标将变为,它们之间的数学关系式:
2.图像的镜像
图像的镜像分为两种垂直镜像和水平镜像,其中水平镜像是指图像的左半部分和右半部分以图像竖直中轴线为中心轴进行对换。如是原图像上的点坐标是,中心轴如图 (a)所示,经过水平镜像对应的新坐标点为,它们之间的数学关系式为:
垂直镜像是指图像的上半部分和下半部分以图像水平中轴线为中心轴进行对换,如原图像上的点坐标是,中心轴如图 (b)所示,垂直镜像对应的新坐标点为,它们之间的数学关系式为:
3.图像的缩放
图像缩放是指将给定的图像在轴方向按比例缩放倍,在y轴方向按比例缩放倍,从而获得一幅新的图像。如果,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果,图像的比例缩放会改变原始图像的像素间的相对位置,产生几何畸变。
4.图像的转置
图像转置即为图像的行列坐标互换,如原图像上的点,转置后对应的新坐标点,它们之间的数学表达式为:
需要注意的是,进行图像转置后,图像的大小会发生改变。在MATLAB中,没有提供实现图像转置函数,直接运用MATLAB指令编程即可实现图像的转置操作。
5.图像的旋转
图像的旋转变换属于图像的位置变换,通常是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度,旋转后,图像的大小一般会改变。
6.图像的剪切
在进行图像处理的过程中,有时候采集的图像用户只对部分区域感兴趣,这时候就需要对原始图像进行剪切。在MATLAB图像处理工具箱中的提供了函数imcrop( )进行图像的剪切操作,其具体的调用格式如下:
I2=imcrop(I,rect):该函数是按照四元素数组rect剪切图像I,rect的具体形式[xmin ymin width height]说明剪切矩形区域大小。
[I2,rect]=imcrop(…):该函数是执行后首先显示原图像,然后利用鼠标选择剪切区域,并把剪切区域图像返回给I2以及剪切区域的范围大小返回给rect。
X2=imcrop(X, map):该函数是执行后首先按照map的颜色映射显示图像X,并创建剪切工具与X关联。
[X,Y,I2,rect]=imcrop(…):该函数是执行后首先显示原图像,然后利用鼠标选择剪切区域,返回当前剪切区域图像的像素点的x和y坐标给X和Y,以及剪切区域的范围大小返回给rect。
7.图像的空间变换
在MATLAB的图像处理工具箱中提供一个专门的函数intransform( ),用户可以定义参数实现多种类型的空间变换,包括放射变换(如平移、缩放、旋转、剪切)、投影变换等。
三、图像的邻域和块操作
1.图像的邻域操作
图像的邻域操作是指输出图像的像素点取值决定于输入图像的某个像素点及其邻域内的像素,通常像素点的邻域是一个远小于图像自身尺寸、形状规则的像素块,例2*2正方形、2*3矩形、或近似圆形的多边形。邻域操作根据邻域的类型又可分为:滑动邻域操作和分离邻域操作。
在MATLAB中,提供了几个实现邻域操作的函数,用户可直接调用这些函数,实现各种操作。
通用滑动邻域操作函数nlfilter( )
列方向邻域操作函数colfilt( )
分离邻域操作函数blockproc( )
2.图像的区域选取
在进行图像处理过程中,用户通常选择感兴趣的区域进行相关操作,MATLAB也提供了一些图像区域选择和操作的函数。
多边形区域选择函数roipoly( )
灰度ROI区域选择函数roicolor( )
区域填充函数roifill( )
区域滤波函数roifilt2( )