共找到2條詞條名為sobel的結果 展開

sobel

Sobel運算元

使用擴展 Sobel 運算元計算一階、二階、三階或混合圖像差分

基本介紹


void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );
• src
• 輸入圖像.
• dst
• 輸出圖像.
• xorder
• x 方向上的差分階數
• yorder
• y 方向上的差分階數
• aperture_size
• 擴展 Sobel 核的大小,必須是 1, 3, 5 或 7。除了尺寸為 1,其它情況下, aperture_size ×aperture_size 可分離內核將用來計算差分。對 aperture_size=1的情況,使用 3x1 或 1x3 內核(不進行高斯平滑操作)。這裡有一個特殊變數 CV_SCHARR (=-1),對應 3x3 Scharr 濾波器,可以給出比 3x3 Sobel 濾波更精確的結果。
• 對 x-方向 或矩陣轉置后對 y-方向。
函數 cvSobel 通過對圖像用相應的內核進行卷積操作來計算圖像差分
由於Sobel 運算元結合了 Gaussian 平滑和微分,所以,其結果或多或少對雜訊有一定的魯棒性。通常情況,函數調用採用如下參數 (xorder=1, yorder=0, aperture_size=3) 或 (xorder=0, yorder=1, aperture_size=3) 來計算一階 x- 或 y- 方向的圖像差分。
由於該函數不進行圖像尺度變換,所以和輸入圖像(數組)相比,輸出圖像(數組)的元素通常具有更大的絕對數值(譯者註:即像素的位深)。為防止溢出,當輸入圖像是 8 位的,要求輸出圖像是 16 位的。當然可以用函數 cvConvertScale 或 cvConvertScaleAbs 把運算結果(dst)轉換為 8 位的。除了8-點陣圖像,函數也接受 32-位 浮點數圖像。所有輸入和輸出圖像都必須是單通道的,並且具有相同的圖像尺寸或者ROI尺寸。