MATLAB是否有一個內置函數來查找像質心的一般屬性&多邊形的慣性矩定義爲列表(非整數價值)點?使用matlab來計算定義爲點列表的多邊形的屬性
regionprops對整數值點執行此任務,假設它們表示圖像中像素的索引。但我能找到的處理非整數點列表的唯一函數是多區域和多邊形。
現在我的kludge是創建一個bwconncomp結構,所有點乘以一些大的值(比如10,000),然後將它提供給regionprops,但是想知道是否有更優雅的解決方案。
MATLAB是否有一個內置函數來查找像質心的一般屬性&多邊形的慣性矩定義爲列表(非整數價值)點?使用matlab來計算定義爲點列表的多邊形的屬性
regionprops對整數值點執行此任務,假設它們表示圖像中像素的索引。但我能找到的處理非整數點列表的唯一函數是多區域和多邊形。
現在我的kludge是創建一個bwconncomp結構,所有點乘以一些大的值(比如10,000),然後將它提供給regionprops,但是想知道是否有更優雅的解決方案。
您應該通過MathWorks File Exchange查看提交POLYGEOM的H.J. Sommer。它看起來像它有你想要的所有屬性測量值,以及描述代碼中使用的公式的很好的文檔。
一種可能性是計算Java Topology Suite。我不知道「慣性時刻」,但它至少有一個質心方法。
我不知道在MATLAB中可以爲你做這個功能。
但是,poly2mask可能有助於您創建像素遮罩以供入regionprops。我也建議,如果你決定走這條路,你會仔細測試離散化對結果的影響程度,這樣你就不會創建瘋狂的大陣列(並且浪費時間),而不會真正獲得準確的增益。
我的想法是乘以大數不會影響計時,因爲正在處理的點數不會改變。 (如gnovice所建議的,對於像polygeom這樣的代碼來說也是如此)。但是,我發現bwconncomp返回邊界上每個像素的索引,而不僅僅是頂點,因此像素的數量確實與乘法因子成比例。 因此,我不是乘以10,000,而是除以頂點列表中最小的非零步驟,這通常是一個不好的解決方案,但由於這些多邊形的創建方式,對我來說OK。 – Marc 2010-06-28 15:19:51
看起來很合理。他所做的巧妙技巧是將表面上的積分轉化爲輪廓積分。我喜歡。 – Marc 2010-06-28 15:16:56