OpenCV 卷積
Ammar Ali
2022年5月17日
本教程將討論在 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