2010-06-11 140 views

回答

3

使用'imfilter'過濾您的圖片。使用'fspecial'來定義你的過濾器。然後使用活動輪廓模型來分割大對象。谷歌'主動輪廓matlab'。使用「多邊形」和麪積函數來查找封閉輪廓的面積。

+0

我嘗試了一些代碼從mathworks網站主動輪廓。其中一些有效,但我無法獲得任何區域,而且這對小區域無效! 我想先裁剪圖片,爲了消除任何噪音,然後我用imadjust調整一點對比度。 我需要任何例子來更好地理解它。 – Beho86 2010-06-12 21:13:01

+3

您應該能夠使用[C,h] =輪廓(...)提取輪廓的x和y座標。請參閱http://www.mathworks.com/access/helpdesk/help/techdoc/ref/contour.html 然後查看此鏈接以查找該區域:http://www.mathworks.com/access/ helpdesk/help/techdoc/ref/polyarea.html 像任何其他圖像處理方法一樣的主動輪廓並不完美。您將不得不嘗試模型的參數以滿足您的需求。另外一個好主意是在主動輪廓方法上進行文獻搜索,並在MATLAB中自己實現它們。它應該很有趣! – hkf 2010-06-14 15:58:45

0

要添加到hkf的答案中,您可能需要對圖像應用一些預處理,以便於處理。

我覺得你正處在降低噪音的正確軌道上。您的輪廓看起來相對容易檢測 - 也許您可以簡單地對圖像進行二值化處理,應用imdilate,imclose和imerode組合處理僞影(這主要是試驗和錯誤),然後嘗試檢測輪廓。

然後,當然,挑戰是找到適用於所有圖像的配方,而不僅僅是一個樣品。

+0

我喜歡使用imdilate,imclose和imerode的方法,但有沒有辦法消除主要形狀周圍的所有噪音。我的意思是一些物體靠近圖像的邊界,這是造成問題的原因。 我看到它在mathworks演示中的一些地方,但不知道在什麼名字下! – Beho86 2010-06-26 16:42:27

+0

http://drop.io/319wyii 這就是我正在處理的圖像。我想填充裏面的白色區域,平滑邊界並清除周圍的所有噪音。 我試圖用iclose和ierode,沒有真正做出不同的。 提前致謝 – Beho86 2010-06-26 18:54:49

2

我可以reccomand你幾個方法可以做到這一點:

一)算術均值濾波:

f = imfilter(g, fspecial('average', [m n])) 

二)幾何均值濾波

f = exp(imfilter(log(g), ones(m, n), 'replicate')) .^ (1/(m*n)) 

C)調和平均數過濾

f = (m*n) ./ imfilter(1 ./ (g + eps), ones(m, n), 'replicate'); 

其中nm是一個面具的大小(例如,你可以設置m=3 n=3

0

我認爲你可以使用輪廓方法來解決這個問題。最後,您可以藉助輪廓數據提取功能進行提取。研究,你會在Mathworks網站上看到它。