OpenCV 4.10.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() 函数,因此您不必编写所有这些运算。
\[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's\)的矩阵,并将其除以元素数量来构建内核。