Sobel變換和拉普拉斯變換都是高通濾波器。
什么是高通濾波器呢?就是保留圖像的高頻分量(變化劇烈的部分),抑制圖像的低頻分量(變化緩慢的部分)。而圖像變化劇烈的部分,往往反應的就是圖像的邊沿信息了。
1. Sobel算子(主要用於邊緣檢測)
//Sobel變化實例 Mat sobelX; Sobel(image,sobelX,CV_8U,1,0,3,0.4,128); imshow("X方向Sobel結果",sobelX); Mat sobelY; Sobel(image,sobelY,CV_8U,0,1,3,0.4,128); imshow("Y方向Sobel結果",sobelY);
//函數說明 void Sobel(InputArray src, OutputArray dst, int ddepth, int xorder, int yorder, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT )
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-方向。 */
2.Laplacian變換
Laplacian變換功能1:用來檢測物體的邊緣信息
具體說明:
在圖像平坦(灰度值無變換的區域),拉普拉斯濾波后的圖像在該區域的強度值為0.在圖像灰度值劇烈變換的區域(邊緣),拉普拉斯濾波后的圖像的強度值(絕對值)相對較大。
物體邊緣一般在強度值的零交點(注意:並不是在強度值為0的點,而是在強度值從正變換到負,或從負變換到正的過程中,隱含存在的為0的亞像素級的點)。
Laplacian變換功能2:可用於圖像增強(原圖像減去拉普拉斯變換的圖像)
原理大體為:
圖像相對平坦的區域拉普拉斯變換后的值約等於0。像素(原)-0=像素(原),即該區域圖像幾乎沒有變化。
在圖像中強度值變換劇烈的地方,通常是物體的邊緣處,拉普拉斯變換后的該區域的強度值(絕對值)較大。那么 像素(原)-像素(變換后),肯定會發生變化。例如:150(原)-50(變換后的 )=100,該點處的像素變黑。
函數:
void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );
/* src 輸入圖像. dst 輸出圖像. aperture_size 核大小 (與 cvSobel 中定義一樣) */
函數 cvLaplace 計算輸入圖像的 Laplacian變換,方法是先用 sobel 算子計算二階 x- 和 y- 差分,再求和:

對 aperture_size=1 則給出最快計算結果,相當於對圖像采用如下內核做卷積:

類似於 cvSobel 函數,該函數也不作圖像的尺度變換,所支持的輸入、輸出圖像類型的組合和cvSobel一致。
