2013-04-21 113 views
2

如果有一個圖像的給定二維數組,其中閾值已完成,現在是二進制信息。簡單的多斑點檢測二值圖像?

是否有任何特定的方式來處理此圖像,我得到圖像上的多個斑點的座標?

,因爲這個過程需要在10+仿真機器人上的自定義仿真器同時運行在C

我需要的斑點xy座標我不能用OpenCV的,但首先我需要首先找到那些多斑點。

像素組大小的最簡單標準應該足夠了。但我不知道如何開始編碼。

PS:單個blob應該沒問題。問題是多個斑點。

剛剛開始?

+0

嘗試谷歌連接組件。您也可以根據高斯算子的拉普拉斯算子來查找斑點檢測。 – Zaphod 2013-04-21 15:06:27

+0

好吧,高斯算符拉普拉斯算子,我不明白如何在代碼中實現它.... – ivanwong888899999 2013-04-21 15:17:04

回答

1

你可以通過二進制圖像與類似下面的算法標籤連接部分:

  1. 創建整型,labelArray的二維數組,將容納連接區域的標籤,併發起全零。
  2. 遍歷每個二進制像素,P,逐行

    A.如果p爲真和在labelArray該位置對應的值是0(未標記的),將其分配給一個新的標籤,並做了廣度優先搜索,將添加所有周圍的二進制像素,同樣的標籤也是如此。

現在唯一的問題是如果您有多個相互接觸的斑點。由於您知道斑點的大小,因此您應該能夠計算出給定連通區域中有多少個斑點。這是棘手的部分。您可以嘗試在此時進行k-means聚類。您也可以嘗試使用其他方法,如使用二進制擴展。

3

看看QuickBlob這是一個小巧的獨立C庫,聽起來非常適合您的需求。

QuickBlob帶有一個小的命令行工具(csv-blobs),其輸出所述輸入圖像內找到的每個斑點的位置和大小:

./csv-blobs white image.png 
X,Y,size,color 
28.37,10.90,41,white 
51.64,10.36,42,white 
... 

下面是一個例子(輸出圖像產生得益於show-blobs.py隨QuickBlob微小的Python實用程序):

​​output image