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