python opencv Sobel、Laplace、canny運算元的邊緣提取 以及參數解析
- 2020 年 3 月 15 日
- 筆記
前提:各種運算元不完全區分好壞,但根據我實際操作分析得到,有的運算元之間效果大相徑庭,但有的也很相似,也就是各有各的用法,這裡按
Sobel、Laplace、canny三種運算元作比較,看其結果:
一、 Sobel、Laplace、canny邊緣提取()
- 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之間
二、四種影像的程式碼演示

三、源碼


