我想在MATLAB(特別是)的圖像中做一個對象的形狀分析。爲此,我找到了邊界像素。對於每個邊界像素,我使用8鄰域理論計算它的鄰居。現在我正在計算一個點與其唯一鄰居的切線(取決於我如何選擇順時針或其他方式)。如果每個像素恰好有兩個鄰居,我的算法就可以正常工作。對於this picture(訂購9 X 15像素)中顯示的形狀。尋找最佳鄰居像素
但是,如果有一個像素超過2個鄰居,那麼我的算法會變得困惑。例如(如9×15像素)所示。
我想利用每個邊界像素的切線與順時針或逆時針方向的相鄰像素,如果您發現第二個圖像,這是有效的邊界圖像,如果我在順時針方向正在移動,然後紅色像素的鄰居將是綠色的,順時針方向的綠色鄰居將是「1」,鄰居的「1」是「2」,但是我不能回到藍色和棕色像素,我不能訪問並取得每個邊界的切線像素與其相鄰像素。
我已經學習了圖形的節點訪問算法,其中你維護隊列或堆棧,但在這種情況下,我不只是想訪問每個像素,而且還根據我的方向採用每個像素的正切鄰居像素正在移動。
這是一個示例問題,類似的問題可能以其他方式發生,所以我試圖爲它生成一些通用算法。我會感謝你的幫助。謝謝。
應查看計算爲發生的像素上,而不是像素之間的邊界。那麼沒有問題。所以順時針你會發現綠藍色導致藍紅色導致紅藍色導致藍褐色並且沒有問題。 – btilly
但第二張圖像是所有像素都是邊界像素的有效圖像。因此,在遍歷像素時,請記住每個白色像素都是邊界像素。 –