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

  • 2020 年 3 月 15 日
  • 筆記

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

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之間

 

二、四種影像的程式碼演示

  

 

三、源碼

 

Tags: