2012-03-17 182 views
3

我試圖想到一種有效的方式來跟蹤位圖圖像的均勻着色區域的輪廓並將它們保存爲GraphicsPath對象。C#中的邊緣檢測

退房這個小樣本圖片:

enter image description here

現在,我能找到的東西最邊緣檢測型要麼太複雜 - 工作照片上有不同程度的亮度等等 - 我邊緣很容易檢測到,簡單地說,RGB值的任何微小變化都意味着它的邊緣。

但也有一個更復雜的情況比最簡單的事情,掃描整個圖像的一個斑點邊緣檢測。我有地區共享邊界,我需要儘可能高效,因爲速度是一個大問題。

任何人都可以給我一些關於如何做到這一點的指針?僞代碼或實際代碼將會很棒

理想情況下,我可以一行一行地掃描每一個不同區域的輪廓,同時建立輪廓。但是這種編碼超出了我的技能,因爲我在數學上很蹩腳。

+0

圖像不可用,請嘗試上傳到另一個網站,如http://imageshack.us/ – Mortana 2012-03-17 21:19:27

+0

是否有任何已知的最小尺寸的blob可以是? – 2012-03-17 21:22:51

+0

沒有提到最小尺寸,但實際上我無法想象任何斑點例如1像素。 – Trant 2012-03-17 21:42:19

回答

1

我會嘗試:

這可能是可行的,以找到標準的庫,做到上述,並做到這一點,有效和正確。有了這個工作之後,你可以考慮優化,比如避免檢測兩次邊。

如果你需要這個優化,我的猜測是你必須自己寫這個。如果你不能,確保有人僱用誰可以。

+0

謝謝!從你的文章和鏈接Guy Coder看來,我將嘗試使用Marching Squares的解決方案,當然除了我沒有從背景中掃描一個blob ..實際上我沒有背景。如果您對如何改編遊行廣場以獲得共享邊界有任何想法,我很樂意聽到它。 – Trant 2012-03-17 23:47:40

+0

對於步行廣場,您選擇一種顏色作爲前景,然後將其餘所有其他視爲背景。我認爲你可以修改它來一次檢測多個對象。但是你應該先寫單個對象版本。 – 2012-03-18 08:54:41