图像的代数运算

图像的代数运算是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。

 

一、图像的加法运算

图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。

代码如下:

clear all;
close all;
I1 = imread('flower1.jpg');
I2 = imread('flower2.jpg');
I3 = imadd(I1, I2);                                             %图像的加法运算   
subplot(2, 2, 1), imshow(I1), title('原始图像1');
subplot(2, 2, 2), imshow(I2), title('原始图像2');
subplot(2, 2, 3), imshow(I3), title('处理后的图象');

处理后的图像显示如下:

 两幅图像的像素值相加时,产生的结果很可能超过图像数据类型所支持的最大值,尤其对于uint8类型的图像,溢出的情况最为常见。当数据值发生溢出时,imadd函数将数据截取为数据类型所支持的最大值,这种截取效果称之为饱和。为了避免出现饱和现象,在进行加法计算前,最好将图像转换为一种数据范围较宽的数据类型。

二、图像的减法运算

图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。

代码如下

clear all;
close all;
rice = imread('rice.jpg');
background = imerode(rice, strel('disk', 15));                      %生成背景亮度图像
rice2 = imsubtract(rice, background);
subplot(1, 2, 1), imshow(rice), title('原始图像');
subplot(1, 2, 2), imshow(rice2), title('处理后的图像');

 处理后的图象显示如下:

三、图像的乘法运算

 两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。一幅图像乘以一个常数通常被称为缩放,这是一种常见的图象处理操作。缩放通常将产生比简单添加像素偏移量自然得多的明暗效果,这是因为这种操作能够更好的维持图像的相关对比度。

代码如下:

clear all;
close all;
moon = imread('moon.jpg');
moon2 = immultiply(moon, 2);
subplot(1, 2, 1), imshow(moon), title('原始图像');
subplot(1, 2, 2), imshow(moon2), title('处理后的图像');

处理后的图像显示如下:

四、图像的除法运算

 除法运算可用于校正成像设备的非线性影响,这在特殊形态的图象(如断层扫描等医学图像)处理中常常用到。图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法也成为比率变换。

代码如下:

clear all;
close all;
I = imread('rice.jpg');
I2 = double(I);
J = double(I2 * 0.43 + 90);
K = imdivide(I2, J);
subplot(1, 2, 1), imshow(I), title('I');
subplot(1, 2, 2), imshow(K), title('K');

处理后的图像显示如下:

posted on 2015-10-07 20:51  奈何作贼  阅读(5869)  评论(0编辑  收藏  举报

导航