OpenCV 4.11.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的矩阵并将其除以元素个数进行归一化来构建卷积核。