2011-12-05 33 views
3

我正在使用Python圖像庫進行一些基本的圖像操作。我希望檢測圖像的邊緣,但只能檢測圖像的邊緣。如何過濾圖像的粗邊?

我該怎麼做?

+0

http://en.wikipedia.org/wiki/Edge_detection有很多算法可以使用,像這樣一個:http://en.wikipedia.org/wiki/Sobel_operator – Flo

回答

0

我有一種感覺厚邊會被檢測爲2邊 - 在這種情況下,你將不得不做非最大抑制。你有沒有嘗試過使用中值過濾器或其他會拋出極薄邊緣的東西? (在中值濾波之後平滑會抑制很薄的邊緣,雖然我有點不確定會發生什麼。)

另一個想法是使用霍夫變換並保持閾值高檢測邊緣/線條所需的票數。

0

如何將圖像縮放到較低的分辨率並在那裏找到邊緣?

然後,您將通過縮放回原始大小來重新計算邊緣的位置。

+0

嘿,我喜歡你的想法,但是有沒有其他非粗暴的方法? – Vishwanath

+0

請向我們展示您想要實現的一些示例。 – Krab

+0

@Vishwanath,這實際上是一種很好的「非暴力」技術。看看cvPyrDown函數。嘗試應用一次,然後對結果下采樣圖像執行邊緣檢測。 – Throwback1986

2

我想我會開始腐蝕圖像,以消除較薄的邊緣,留下較厚的邊緣,然後邊緣檢測。請參閱erosion and dilation - 可能有所幫助。

+0

嘿,我試過你的方法,它確實爲我工作。謝謝。 – Vishwanath

+0

出於興趣,你使用了哪個ersosion內核/過濾器? – Jeb

+0

我使用以下:{(0,1,0),(1,1,1),(0,1,0)}。如果可能,請提出更好的方法。 – Vishwanath