Python-OpenCV中的filter2D()函數
阿新 • • 發佈:2019-03-26
depth org ack open returns ... 支持 tran project
使用自定義內核對圖像進行卷積。該功能將任意線性濾波器應用於圖像。支持就地操作。當光圈部分位於圖像外部時,該功能會根據指定的邊框模式插入異常像素值。
語法
函數原型:
dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
參數:
參數 | 描述 |
src | 原圖像 |
dst | 目標圖像,與原圖像尺寸和通過數相同 |
ddepth | 目標圖像的所需深度 |
kernel | 卷積核(或相當於相關核),單通道浮點矩陣;如果要將不同的內核應用於不同的通道,請使用拆分將圖像拆分為單獨的顏色平面,然後單獨處理它們。 |
anchor | 內核的錨點,指示內核中過濾點的相對位置;錨應位於內核中;默認值(-1,-1)表示錨位於內核中心。 |
detal | 在將它們存儲在dst中之前,將可選值添加到已過濾的像素中。類似於偏置。 |
borderType | 像素外推法,參見BorderTypes |
改函數實際計算的是相關性,而不是卷積
$$\texttt{dst} (x,y) = \sum _{ \stackrel{0\leq x‘ < \texttt{kernel.cols},}{0\leq y‘ < \texttt{kernel.rows}} } \texttt{kernel} (x‘,y‘)* \texttt{src} (x+x‘- \texttt{anchor.x} ,y+y‘- \texttt{anchor.y} )$$
在內核足夠大(~11x11或者更大)的時候,該函數使用DFT算法,對於小內核則直接計算。
也可見,anchor相當於坐標軸平移。
其中ddepth表示目標圖像的所需深度,它包含有關圖像中存儲的數據類型的信息,可以是unsigned char(CV_8U),signed char(CV_8S),unsigned short(CV_16U)等等...
Input depth (src.depth()) | Output depth (ddepth) |
---|---|
CV_8U | -1/CV_16S/CV_32F/CV_64F |
CV_16U/CV_16S | -1/CV_32F/CV_64F |
CV_32F | -1/CV_32F/CV_64F |
CV_64F | -1/CV_64F |
Note:當ddepth=-1時,表示輸出圖像與原圖像有相同的深度。
參考鏈接:
1、Depth combination https://docs.opencv.org/master/d4/d86/group__imgproc__filter.html#filter_depths
2、
Python-OpenCV中的filter2D()函數