代数运算是指对两幅输入图像进行点对点的加、减、乘、除计算而得到输出图像的运算。对于相加和相乘的情况,则可能不止有两幅图像参加运算。下面来看一看这四种代数运算的数学表达式:
加运算 C ( x , y )= A ( x , y )+ B ( x , y )
(3-1)
减运算 C ( x , y )= A ( x , y )- B ( x , y )
(3-2)
乘运算 C ( x , y )= A ( x , y )× B ( x , y )
(3-3)
除运算 C ( x , y )= A ( x , y )÷ B ( x , y )
(3-4)
其中 A ( x , y )和 B ( x , y )为输入图像,而 C ( x , y )为输出图像。
以上四种代数运算在实际应用中有很重要的作用。
图像相加的一个重要应用就是对同一场景的多幅图像求平均值,它可以有效地降低随机噪声的影响。
图像相减可用于去除一幅图像中不需要的图案,也可以用于检测同一场景的两幅图像之间的变化,例如检测物体运动。对于同一场景的两幅图,背景大致相同,进行减运算时,相同位置的背景点变成黑点,而运动目标因为在两幅图中位置不同,相减后的值不为0,达到了检测运动物体的目的。减运算的目的是从图像中去除不需要的图像,只保留所关心的图像。
乘法和除法在数字图像处理中一般应用得不多,但它们的用途也很重要。图像相乘可以遮住图像中的某些部分,仅留下感兴趣的物体。图像相除可产生对颜色和多光谱图像分析十分重要的比率图像。
1.理论基础
图像相加可以有效地降低随机噪声的影响,这是因为:一幅有噪声的图像 S ( x , y ),可以看成是由原始无噪声的图像 F ( x , y )和噪声 G ( x , y )叠加而成的,即
S ( x , y )= G ( x , y )+ F ( x , y )
(3-5)
如果叠加在图像上的噪声 G ( x , y )是非相关的、具有零均值的随机噪声,那么,把针对同一目标物在相同条件下做 M 次重复摄取的图像相加,取平均值作为输出图像,即
(3-6)
输出的平均图像 中随机噪声的含量,比单幅图像 s ( x , y )的随机噪声含量大大削弱了,这样便达到了使图像变平滑的处理目的。随着图像数目的增多,其消除噪声的效果也就越来越好。
下面介绍两幅图的加法运算步骤:
(1)从三个来源处(即系统自带的测试图像、用户选择的图像文件、打开摄像头拍摄的图像)选择一幅图像(sFilePath)。
(2)选择【图像加运算】菜单项后,通过对话框选择另外一幅图像(nFilePath)。
(3)将两幅图像的数据相加。如果结果大于255,则置为255。
2.函数说明
该函数用于将原始图像调整为指定大小。
retval:输出指定大小的图像;
src:原始图像;
dsize:输出图像的尺寸(元组方式),注意desize的参数顺序是,第一个参数指定输出图像的宽度(列数),第二个参数指定输出图像的高度(行数);
fx:沿水平轴缩放的比例因子;
fy:沿垂直轴缩放的比例因子;
interpolation:插值方式,共有cv2.INTER_NEAREST(最近邻插值)、cv2.INTER_LINEAR(双线性插值)、cv2.INTER_AREA(使用像素区域关系进行重采样)、cv2.INTER_CUBIC(4×4像素邻域的双3次插值)、cv2.INTER_LANCZOS4(8×8像素邻域的Lanczos插值)五种方式,其中默认为双线性插值方法。
3.编程代码
4.效果展示
相加效果图如图3-1所示。可以看出,加运算将两幅不同的图重叠起来,并使原来图中较暗的部分变亮了。
图3-1 相加效果图
1.理论基础
图像相减可用于去除一幅图像中不需要的图案,也可以用于检测同一场景的两幅图像之间的变化。例如检测运动物体。对于同一场景的两幅图 S ( x , y )、 F ( x , y ),因为是同一场景,所以目标图像的背景是大致相同的,当两幅图像进行减运算时,相同位置的背景点因为灰度值相同,结果变成了黑点;而目标点因为位置不同,所以相减后的值不为0。这样一来,处理后的图像就只在两个目标点的位置有像素点,背景变为全黑,此时,计算两个目标点之间的距离就非常简单了,也就达到了检测物体运动的目的。
下面介绍两幅图的减法运算步骤:
(1)从三个来源处(即系统自带的测试图像、用户选择的图像文件、打开摄像头拍摄的图像),选择一幅图像(sFilePath)。
(2)选择【图像减运算】菜单项后,通过对话框选择另外一幅图像(nFilePath)。
(3)将两幅图像的数据相减。如果结果小于0,则置为0。
2.函数说明
该函数由OpenCV提供,用于实现图像减法运算。
result:表示计算的结果;
a、b:表示需要进行减法计算的两个像素值。
当使用cv2.subtract()函数进行图像减运算时。规则如下:
3.编程代码
4.效果展示
很明显,减运算将图像进行了分离,相减效果图如图3-2所示。
图3-2 相减效果图