日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像的边缘检测

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像的边缘检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們先看幾幅簡單的圖像:

這3幅圖像,都只有極其簡單的線條,組成了物體的輪廓,我們“人”一看就知道是什么物體。也就是說,我們人類視覺通過物體邊緣就能夠做到識別物體。因此,物體邊緣是圖像中最基本也是最重要的特征,圖像識別、理解的第一步就是邊緣檢測。

那么,什么是邊緣呢?很遺憾,盡管邊緣在圖像處理中有著極其重要的作用,但好像并沒有嚴格精確的定義。一般認為:兩個具有不同灰度的均勻圖像區域的邊界稱為邊緣。沿邊緣方向的灰度變化比較平緩,而邊緣法線方向的灰度變化比較劇烈。

對于邊緣檢測,我們并不陌生,在前面的文章中,提到了圖像的一階微分和二階微分。當時是用一階微分和二階微分來增強圖像。但是,本質上,一階微分和二階微分計算的就是灰度的變化情況。而邊緣恰恰也就是灰度變化的地方。

因此,這些傳統的一階微分算子如Robert、Sobel、prewitt等,以及二階微分算子Laplacian等等本質上都是可以用于檢測邊緣的。這些算子都可以稱為邊緣檢測算子。

我們動手感受下幾個邊緣檢測算子的效果:

import cv2 lenna = cv2.imread("images\\lenna.png", 0) sobel = cv2.Sobel(lenna, -1, 1, 1, ksize=5) laplacian = cv2.Laplacian(lenna, -1) canny = cv2.Canny(lenna, 100, 200) cv2.imshow("sobel", sobel) cv2.imshow("laplacian", laplacian) cv2.imshow("canny", canny) cv2.waitKey()


當然,sobel和laplacian只能算做是一種邊緣檢測算子,還算不上是一種邊緣檢測算法。canny與它們的區別在于,它是一個包含多個階段的算法。

我們用上面的代碼再看看有噪聲的情況。

可以看出,當有噪聲的時候,效果都很差。當然,這里都沒有事先進行圖像降噪。

總結

以上是生活随笔為你收集整理的图像的边缘检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。