2012-11-22 46 views
0

我的應用程序將處理我從相機獲取的12位二進制圖像。下面以jpeg顯示相同的圖像。使用cvMinMaxLoc識別白色區域()

任務是確定每個白色發光區域。
這4個區域作爲一堆,隨機進入每個圖像。 可以假定4個白色區域總是從一個圖像一起移動到另一個圖像。 與黑色或接近黑色背景相比,每個點的強度都非常高。每個點實際上不是一個像素,而是一個14 x 14的ROI。 此外,圖像的高度是200像素。
每個白色區域之間的距離始終是固定的。

如果我應用CVMinMaxLoc();我只會得到一個最亮的位置。

如何識別每個區域?

enter image description here

回答

1

你可以做的是:

  1. 使用threshold()得到一個黑色和白色圖像,每個白色區域的至少一個白點。

  2. 在閾值圖像上:應用minMaxLoc()以獲得第一個白色區域,但使用floodFill()將其塗成黑色以消除該白色區域。

  3. 重複第2步,直到獲得所有白色區域。 (你會發現每個白色連接組件一度因爲你畫的各個黑)

如果你的白色區域不threshold()連接後,就可以使用dilate(),使它們相連。

如果要檢測白色區域的中心,也可以在步驟1後使用erode()