2011-09-06 25 views
5

所以我有一個二維數組表示一個座標平面,一個圖像。在該圖像上,我正在尋找「紅色」像素,並根據我的相機找到的所有紅色像素找到(希望)紅色LED目標的位置。目前,我只是拍着我的十字線到所有的紅色像素的重心:一個數組的加權質心

​​

這種方法的問題是,雖然這種算法自然會將重心更接近最大BLOB(與區域大多數紅色像素),但由於眩光或其他微小干擾,當紅色閃爍到一邊時,我仍然看到我的十字線從目標上跳下。

我的問題是這樣的:

我如何改變這種格局,尋找一個更加權心?簡而言之,我想讓更大的紅色斑點比更小的紅色斑點更重要,甚至可能完全無視遙遠的小斑點。

+1

如果您在飛機的左側和右側必須有「相同的」紅點。質心算法不會在沒有紅色的圖像中心繪製十字線?如果你增加了等式的權重,即使它不太可能,問題仍會持續存在。 – aLevelOfIndirection

+0

是的,這是算法執行非常可怕的情況。然而,這一切都與我打算跟蹤某個特定目標的實際演示有關,並且這個想法是雖然會有一些干擾,但應該永遠不會有任何與該領域目標完全相同的東西(它是一個非常明顯的目標)。這裏的想法是讓算法更注意我的大紅色光源,同時保持一定的能力,以便在距離較遠或稍有阻礙時保持「鎖定」狀態。 – Andrew

回答

1

您可以在圖像中找到connected components,並且只包括那些在質心計算中總大小超過特定閾值的組件。

+0

我自己想出了這個概念的基本概念,並且認爲它太離譜了,我從來不會知道在Google搜索中稱它爲什麼。非常感謝你向我展示這一點,當我有機會時我會嘗試。 – Andrew

+0

這是一個非常常見的圖像處理操作。如果你正在使用圖像處理工具包,它可能有一個功能已經這樣做。 – tkerwin

+0

這工作壯觀!首先,實現這個概念正是我想要的:我的小浮動十字線保持在屏幕上最大斑點的中心,幾乎忽略了小的干擾,只是在較大的錯誤斑點上輕微拖拽。除此之外,我的十字線已經變得非常穩定。而在無人機輕微移動或照明改變時,在它以一種突然的方式跳躍之前,現在它在屏幕上流暢地流動。 – Andrew

1

我認爲最簡單的(也許是天真的)答案是:而不是隻計算像素值,還計算周圍的8個像素(共9個)。現在,每個值可以從0到9,並且包含相同顏色的斑點的更大值。現在,您將不再使用vals++,而是將值增加周圍區域的像素數。

+0

有趣的是,你提出這個建議,更有意思的是,你把它稱爲天真的,因爲在將它視爲一個愚蠢而黑客的概念之前,我實際上已經考慮過很多類似這樣的事情。我告訴自己我應該堅持更傳統的路線。但是,正如你和tkerwin今天向我展示的那樣,我不是唯一一個提出這個概念的人,而且它顯然被廣泛使用並且相當有效。我會在明天嘗試實施。謝謝! – Andrew