1 2 1 1 2 1
2 4 2 (A) (1/16) * 2 4 2 (B)
1 2 1 1 2 1
两个矩阵是相同的,只是矩阵 B 乘以它的元素之和。当与图像卷积时,它们会给出几乎相同的模糊图像。
它们之间的确切区别是什么以及何时应该使用它们?
1 2 1 1 2 1
2 4 2 (A) (1/16) * 2 4 2 (B)
1 2 1 1 2 1
两个矩阵是相同的,只是矩阵 B 乘以它的元素之和。当与图像卷积时,它们会给出几乎相同的模糊图像。
它们之间的确切区别是什么以及何时应该使用它们?
最右边的(除以总和)确保滤波器的输出与输入具有相同的动态范围。
实际上,输出的模糊图像并不相同,因为它们的像素值不同。您感觉它们很相似,因为您的软件(我假设是 Matlab)确实将像素的强度值重新映射到典型显示器可以接受的范围,即 0 到 255 之间的 8 位值。如果您使用更多“接近金属”的软件或库,那么您将不得不自己进行此操作。
数据动态范围
图像的动态范围由图像中存在的最小和最大强度值或由用于存储强度值的数字格式表示的最小和最大强度给出。(从上下文中,通常可以清楚地知道使用了哪个定义。)
典型范围是(整数间距),对应于 8 位量化,对应于浮点值(单精度或双精度)。在计算机图形学、OpenGL 等中使用相同的约定。
如果您在各处拍摄值为 1 的常量图像:
从这个简单的示例中,您可以看到一个过滤器保留了图像的能量,而第二个过滤器增加了它。
虽然在这种情况下它是无害的,但它在实践中会导致许多问题。例如,迭代算法可能会发散(由于数值溢出),您的计算机可能会用完表示数据的位,或者您可能会丢失精度(单精度和双精度浮点值在可能的值)。
当您使用过滤器对图像进行卷积时,结果取决于过滤器和图像像素值。如果滤波器总和不等于 1,那么它将对卷积有自己的积极贡献。例如,如果您将仅包含一个常数值的图像与一个总和不等于 1 的滤波器进行卷积,则卷积将产生具有更高常数值的图像。所以这个滤镜会改变图像的平均亮度,这可能是不可取的。
两个图像之间的确切差异将是一个常数项,即过滤器内核的总和,即正值和负值之间的差异的动态范围,将保持完全相同。