优秀的编程知识分享平台

网站首页 > 技术文章 正文

「二十四」MATLAB图像运算之二(matlab逻辑运算)

nanyue 2024-09-26 15:17:48 技术文章 4 ℃

图像的本质是矩阵,图像的四则运算本质上也是矩阵的四则运算。唯一需要注意的是,图像四则运算中的乘法和除法都是以元素为对象进行的,即对应于矩阵的点乘和点除。

图像的四则运算(也可以称为代数运算),是通过对输入图像进行点对点的加、减、乘、除运算后输出图像。图像的四则运算在数字图像处理中有着广泛的应用,它除了可以实现自身的算术操作,还能为许多复杂的图像处理提供准备。

MATLAB提供了对图像进行四则运算的四个函数,即图像加运算(imadd())、图像减运算(imsubtract())、图像乘运算(immultiply())和图像除运算(imdivide())。

下面,对这四种函数作详细介绍。

  • Z=imadd(X,Y):将X、Y数组中的对应元素相加,返回值Z和X、Y的大小一致;如果Y是标量,则X数组中的每一个元素都与该标量相加。

  • Z=imsubtract(X,Y):Z为输入图像X和Y相减的结果;减法操作可能使得某些元素变为负数,但像素不可能为负值,所以该函数会把负数截取为0。

  • Z=immultiply(X,Y):图像相乘,等同于X.*Y的操作;如果Y是标量,则X数组中的每一个元素都与该标量相乘。

  • Z=imdivide(X,Y):图像相除,相当于X./Y;如果Y是标量,则X数组中的每一个元素都与该标量相除。

上面也有它提到,图像数据终究不是一般矩阵,在执行图像运算得到结果图像的时候,一定要注意图像数据的物理意义,以保证运算结果的合理性。然而,在执行图像代数运算时,结果经常发生异常。常见的异常有以下两种:

(1)计算结果溢出

图像的像素值是有界的。例如,两幅256色图像在进行四则运算时,像素值可能出现负值,像素值也可能超过255,但其像素值应该是0~255。所以会出现计算结果溢出的情况,必须修正。

(2)计算结果类型无效

图像数据有多种存储类型,像素值要求为整数类型,然而进行除法四则运算时,很可能得到分数的计算结果。这是由于图像代数运算函数在执行运算时,会把图像数据以double类型来处理。所以会出现计算结果类型无效的情况,必须修正。

在MATLAB提供的代数运算函数时,它已经对以上两种异常情况作出

异常处理

,这个不需要我们操心。这些MATLAB

中函数异常修正遵循两个原则:

  • 超过整数类型有效范围的结果直接截断到限定范围的端点值;

  • 对于分数计算结果采取四舍五入。

下面,通过一个实例来具体说明图像四则运算的操作:

代码:

显示效果:

从上面的效果图可以看出,图像的加运算和点乘运算是图像亮度提高的途径;而图像的减运算和点除运算是图像亮度提高的途径。

最后,感谢您的耐心阅读!

最近发表
标签列表