2012-02-04 108 views
8

我希望能夠處理芒果樹的特寫圖像,以便我可以識別和計數芒果。芒果大致呈橢圓形或橢圓形,與圖像中的樹葉和樹枝獨特不同。我希望能夠對可能被其他對象覆蓋20%的芒果進行計數(但人眼仍然很明顯)。我相信在MatLab中有一種算法可以做到這一點,我將不勝感激任何幫助或建議。形狀識別 - 計數芒果

+0

http://opencv.willowgarage.com – 2012-02-04 04:01:49

+0

也http://stackoverflow.com/questions/6307263/ellipse-detection-using-hough-transform – 2012-02-04 04:08:26

回答

4

我認爲針對該問題的更強大的解決方案是將背景中的芒果(即樹葉)按顏色分段,並在產生的二值圖像中統計出connected components的數量。正如btown指出的那樣,您可以使用bwconncomplabelmatrix函數獲取二進制映像的連接組件。

要按照顏色對芒果進行分割,首先將圖像轉換爲HSV color space,然後使用色相組件進行二值化。我相信芒果的色調成分會與圖像的其他部分不同。 This blog post給出了一些關於如何在Matlab中做到這一點的見解。

+1

一個例子是在http://www.mathworks.com/ help/toolbox/images/ref/labelmatrix.html – btown 2012-02-04 17:44:22

+0

@btwon在問題答案中增加了建議鏈接。 – 2012-02-04 19:07:31

+1

有關顏色分割的示例,請參閱[如何將RGB圖像轉換爲灰度但保留一種顏色?](http://stackoverflow.com/q/4063965/52738) – gnovice 2012-02-04 19:35:09

1

也許你可以:

  1. 前處理後的圖像(灰度/門限等)。
  2. 從二進制圖像中提取所有的countours/connected組件。
  3. 計算每個輪廓/連接組件的面積和周長。
  4. 使用計算形狀因子/圓度:

形狀因子 - (4 * PI *面積)/(周長^ 2)。這給出了關於對象形狀的指示 。圈子的最大面積爲 周長比率,並且此公式對於 完美圈子的值接近1。正方形大約是0.78。細線狀物體 將具有接近0的最低形狀因子。

圓度 - (周長^ 2)/ 4 * PI *面積)。這給了那些習慣使用它的形狀因子的倒數值 。 圓形的值將略大於或等於1.其他 形狀的值將增加。

所以你可以近似一個「理想」芒果的形狀因子,看看是否有任何組件位於近似值內?

查看this瞭解更多詳情。

+0

在此特定情況下使用形狀測量可能會有點難,因爲有些物體(芒果)可能會被葉子部分遮擋。 – 2012-02-07 18:41:21

+0

正確;您可以使用這種方法與您一起驗證不規則形狀(芒果模糊),通過返回並獲取色調顏色信息給出不規則的「潛在芒果」輪廓的位置。事實上,您可以對所有等值線進行驗證。你必須知道什麼樣的色調值範圍可以看作是芒果。 +1爲您的方法! – Jeb 2012-02-07 18:56:03