python opencv Sobel、Laplace、canny算子的邊緣提取 以及參數解析


前提:各種算子不完全區分好壞,但根據我實際操作分析得到,有的算子之間效果大相徑庭,但有的也很相似,也就是各有各的用法,這里按

Sobel、Laplace、canny三種算子作比較,看其結果

 

一、  Sobel、Laplace、canny邊緣提取()

  1. Sobel算子邊緣提取

注釋:gray 灰度轉換后的圖像,前面省略了一部灰度轉換的步驟,后面代碼會補上

1,表示x方向的差分階數,1或0------------------------------>如果只寫一個1,代表x方向提取---》1,0

1,表示y方向的差分階數,1或0------------------------------->如果只寫一個1,代表y方向提取---》0,1

sobel = cv2.Sobel(gray, cv2.CV_8U, 1, 1)#sobel算子邊緣檢測

PointInvert_sobel=255-sobel#反色

  

    2.Laplace算子邊緣提取

注釋:這里要說的是通過對比sobel算子的結果,發現Laplace比sobel效果更好,可以說是加強版,效果如下所示

laplace = cv2.Laplacian(gray, cv2.CV_8U, ksize=3)#laplace算子邊緣檢測

PointInvert_laplace=255-laplace

 

    3.Canny算子邊緣提取

注釋:上一節提到過:其效果多變,主要是看設置的閾值的范圍,

當我們改變閾值后,圖像后漸漸過濾掉一些背景,當然,重在閾值的選取上,當閾值選大的時候,也是會將圖像的特征完全損壞的。

canny=cv2.Canny(gray, 50, 150)#canny邊緣檢測
PointInvert_canny=255-canny#canny圖像反色
函數中閾值1和閾值2兩者的小者用於邊緣連接,而大者用來控制強邊緣的初始段,推薦的高低閾值比在2:1到3:1之間

 

二、四種圖像的代碼演示

  

 

三、源碼

 


免責聲明!

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



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