2011-03-26 171 views
1

我創造了一些MATLAB代碼,即找到薩姆形狀使用regionprosbwbounaries功能的圖像 英寸識別形狀用Matlab

我:

STATS = regionprops(L, 'all'); 

STATS我可以很容易地找到我所有的形狀面積和周長。 我的問題如下:我想找到「方形」的形狀,我做所有形狀 下面的計算16 * area/(perimeter * perimeter), 如果這個值接近一,那麼我「可能」有一個正方形。但其他形狀也如 圓形或矩形也接近一個。 (也可以將一些方塊在圖像中旋轉 )。

有沒有更好的方法來區分形狀(如圓形,三角形等)?

回答

2

Matlab具有的功能

procrustes(X,Y) 

這將計算基於所述類型的變換兩種形狀,將採取移動由X到由Y.定義對於許多形狀分類任務的點所限定的點之間的距離,將這個距離最小化是對噪聲形狀進行分類的有用方法。如果你的問題具有「完美」的形狀,這應該工作得非常好。只要將Y固定爲一個完美的正方形,並且任何時候從X到Y的線性變換都是純縮放,那麼您知道X也是一個正方形。你可以做一些簡單的邏輯檢查,只選擇滿足這種屬性的形狀。

+0

+1命名matlab函數我沒有意識到。 – John 2011-12-22 17:21:39

+0

Python包PyGeometry具有類似的Procrustes優化功能,如果你曾經在Python中做過這些事情。 – ely 2011-12-22 18:14:05