![]() |
OpenCV 4.12.0
开源计算机视觉
|
上一教程: 使用 inRange 进行阈值操作
下一教程: 为图像添加边框
| 原始作者 | Ana Huamán |
| 兼容性 | OpenCV >= 3.0 |
在本教程中,您将学习如何
从非常广泛的意义上讲,相关性是图像的每个部分与一个算子(核)之间的操作。
核本质上是一个固定大小的数值系数数组,以及该数组中的一个锚点,锚点通常位于中心。
假设您想知道图像中某个特定位置的最终值。相关性的值按以下方式计算:
将上述过程用方程表示,我们得到:
\[H(x,y) = \sum_{i=0}^{M_{i} - 1} \sum_{j=0}^{M_{j}-1} I(x+i - a_{i}, y + j - a_{j})K(i,j)\]
幸运的是,OpenCV 为您提供了 filter2D() 函数,因此您无需编写所有这些操作的代码。
执行归一化盒式滤波器。例如,对于大小为 \(size = 3\) 的核,核将是:
\[K = \dfrac{1}{3 \cdot 3} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}\]
程序将使用大小为 3、5、7、9 和 11 的核执行滤波操作。
本教程的代码如下所示。
执行一个无限循环,更新核大小并将线性滤波器应用于输入图像。让我们更详细地分析一下。
第一行是将 kernel_size 更新为范围 \([3,11]\) 内的奇数值。第二行通过将其值设置为一个由 \(1\) 填充的矩阵并除以元素数量进行归一化来实际构建核。