OpenCV 卷积

Ammar Ali 2022年5月17日
OpenCV 卷积

本教程将讨论在 Python 中使用 OpenCV 的 filter2D() 函数查找两个矩阵或图像的卷积。

在 Python 中使用 OpenCV 的 filter2D() 函数查找矩阵或图像的卷积

我们可以使用 OpenCV 的 filter2D() 函数来找到两个矩阵或带有核的图像的卷积。filter2D() 函数查找两个矩阵之间的相关性,但我们也可以使用它来查找卷积。

为了找到两个矩阵之间的卷积,我们必须使用 flip() 函数翻转第二个矩阵或内核,然后将它们传递给 filter2D() 函数,它将返回给定矩阵的卷积。

我们还必须使用 borderType 参数将边框类型设置为常量边框。

例如,让我们创建两个矩阵并使用 filter2D 函数找到它们的卷积。请参阅下面的代码。

import cv2
import numpy as np

matrix_1 = np.asarray(
    [
        [2, 2, 1, 1, 2],
        [2, 1, 2, 2, 2],
        [1, 1, 2, 2, 0],
        [3, 2, 2, 1, 0],
        [1, 2, 0, 2, 1],
    ],
    dtype=np.uint8,
)

matrix_2 = np.asarray([[1, 2, 1], [1, 2, 2], [2, 2, 1]], dtype=np.uint8)

convolution = cv2.filter2D(
    matrix_1, -1, cv2.flip(matrix_2, -1), borderType=cv2.BORDER_CONSTANT
)
print(convolution)

输出:

[[11 15 14 14 12]
 [16 21 21 23 15]
 [17 23 24 22 11]
 [16 24 22 17  8]
 [14 17 14  9  7]]

filter2D() 函数的第一个参数是我们想要与内核或矩阵进行卷积的输入矩阵或图像。第二个参数是输出图像的深度,如果设置为-1,则输出图像将与输入图像具有相同的深度。

查看此链接了解有关深度组合的更多详细信息。第三个参数是我们要将输入矩阵或图像卷积到的内核或矩阵。

第四个参数是可选的,用于设置锚点,默认设置为 (-1, -1) 或内核的中心。第五个参数也是可选的,用于设置添加到过滤像素的增量值,默认设置为 0。

第六个参数也是可选的,用于设置边框类型或像素外插方式,默认设置为默认边框。查看此链接了解有关不同边框类型的更多详细信息。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - OpenCV Image