所以我下面的圖片:在二進制圖像中識別獨立形狀的最簡單方法是什麼?
現在我希望能夠找到每一個人斷開形狀的中心點。如果可能的話,我也想找到寬度和高度。
我正在使用Java和java.awt.image包,但即使只是這個問題的一般解決方案將有所幫助。
我自己的想法是:
- 通過迭代,找到第一個白色像素。
- 從該像素執行BFS,標記其找到的數字1爲白色的像素。
- 一旦完成,繼續在第一個白色像素處停止迭代並且沒有分配/標記的數字。
- 一旦找到它,執行BFS並標記找到的所有像素數爲2.
- 泡沫,漂洗並重復。我的意思是...繼續這樣做直到圖像結束。
- 您要達到的數量是不同形狀的數量。
但是,這似乎有點密集,我將不得不找到中心,寬度和高度。有一種更簡單的方法嗎?有任何想法嗎?
你的意思是連成分標籤?維基百科上有一篇很好的文章,包括一個僞代碼算法:http://en.wikipedia.org/wiki/Connected-component_labeling – Niki
啊,好吧,幾乎。除非你知道怎麼稱呼它們,否則很難找到這些東西。雖然不是完全有助於找到中心或大小,但是到達那裏。 –
您可以通過查找其質心(http://en.wikipedia.org/wiki/Image_moment)找到組件的中心。對於它的大小,您可以計算組件中白色像素的數量,或者如果您更喜歡邊界框,請找到最頂部,最左側,最底部和最右側的白色像素,並用此構造一個矩形信息。 – Zaphod