OpenCV——Sobel和拉普拉斯變換


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一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM