Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

算术运算

由于数字图像本质上是一个数值数组,我们可以对它逐像素地应用各种数学运算。这些被称为点运算的操作,构成了图像处理技术的基础类别。在本节中,我们将考虑两幅具有相同空间维度(M×NM \times N)的图像 ffgg。虽然示例是针对二维图像的,但这些原理可以直接推广到任何维度的图像。

图像加法

图像加法计算一幅新图像 hh,其中每个像素是两个输入图像 ffgg 相应像素的总和:

(m,n),h(m,n)=f(m,n)+g(m,n)\forall (m, n), \quad h(m,n) = f(m,n) + g(m,n)

图像加法的一个主要应用是通过图像平均来降低噪声。如果我们有多张受随机、零均值噪声干扰的同一静态场景的图像,对这些图像进行平均可以显著提高信噪比。

考虑图像的位深度至关重要。如果 ffgg 是8位图像(强度范围为[0, 255]),它们的和可能会超过255。这需要在实现时做出选择:

  • 截断/饱和: 任何大于255的像素值都被截断为255。这是最常见的方法。

  • 重新缩放: 将整个结果图像重新缩放以适应[0, 255]的范围。

  • 更高的位深度: 输出图像 hh 使用更高的位深度(例如16位)存储,以容纳和的完整动态范围。

Figure 1 提供了一个用于艺术效果的图像加法简单示例。

右边的图像是左边两张图像相加的结果。

Figure 1:右边的图像是左边两张图像相加的结果。

图像减法

图像减法是检测两幅图像 ffgg 之间差异的强大技术。得到的差异图像 hh 计算如下:

h(m,n)=f(m,n)g(m,n)h(m,n) = f(m,n) - g(m,n)

这个操作是变化检测的基石。例如,将在不同时间拍摄的同一场景的两张图像相减,可以揭示出变化,比如出现了一个新物体或者一个现有物体移动了。这在医学成像(例如,数字减影血管造影)、视频监控和遥感中被广泛使用。

减法操作的输出可能包含负值。对于8位输入, hh 的范围是[-255, 255]。为了可视化,结果通常通过以下两种方式之一处理:

  • 绝对差值: 取差值的绝对值,得到一幅图像,其中强度代表了变化的幅度:

    h(m,n)=f(m,n)g(m,n)h(m,n) = | f(m,n) - g(m,n) |
  • 重新缩放: 将整个[-255, 255]范围重新缩放到一个可见的范围,例如[0, 255],其中值128通常代表零差异。

右图是左边两幅图像的差值,突出了图像不同的区域。

Figure 2:右图是左边两幅图像的差值,突出了图像不同的区域。

图像除法

图像除法是校正不均匀光照和阴影伪影的关键操作。该操作定义为:

(m,n),h(m,n)=f(m,n)g(m,n)\forall (m, n), \quad h(m,n) = \frac{f(m,n)}{g(m,n)}

一个常见的应用是平场校正。让 f(m,n)f(m,n) 是一个具有不均匀光照的采集图像,让 g(m,n)g(m,n) 是一个“平场”图像,即在相同光照下拍摄的均匀白色表面的图像。光照的不均匀性被记录在 gg 中。将 ff 除以 gg 可以有效地消除光照伪影,如 Figure 3 所示。

在实现除法时必须小心:

  • 数据类型: 结果图像 hh 将具有浮点强度值。这些值必须适当地缩放到一个可显示的范围(例如[0, 255])。

  • 除以零: 除数图像 g(m,n)g(m,n) 可能包含值为零的像素。通常会在分母上加上一个小的常数 ϵ\epsilon 来防止除以零的错误: h(m,n)=f(m,n)/(g(m,n)+ϵ)h(m,n) = f(m,n) / (g(m,n) + \epsilon)

用于光照校正的图像除法。右图是将带阴影的图像(左)除以光照模式图像(中)的结果,有效地去除了阴影。

Figure 3:用于光照校正的图像除法。右图是将带阴影的图像(左)除以光照模式图像(中)的结果,有效地去除了阴影。

🤖