資源簡介
[原創]在PCA法矢重建的基礎上,對法矢方向進行了嚴格設定,解決了法矢反向的問題。同時提供了點表面變化率的求解,參照了文獻Mark P,et al. Multi-scale Feature Extraction on Point-Sampled Surfaces[J]. Computer Graphics Forum, 2010, 22(3): 281-289.
代碼片段和文件信息
%?PCA主元分析法求法向量
%?輸入:
%?p:3*n的數值矩陣
%?k:k近鄰參數
%?neighbors?=?transpose(knnsearch(transpose(p)?transpose(p)?‘k‘?k+1));
%?neighbors一般可缺省。若之前做過k鄰域求取操作也可直接調用,提高運算效率
%?輸出
%?n:法矢,已規定方向由鄰域擬合出的平面指向查詢點
%?w:用于評估曲率的參數,詳見:Mark?Pet?al.?Multi-scale?Feature?Extraction?on?Point-Sampled?Surfaces[J].?Computer?Graphics?Forum?2010?22(3):?281-289.
function?[nw]?=?norcur(p?k?neighbors)
if?nargin?2
????error(‘no?bandwidth?specified‘)
end
if?nargin?3
????neighbors?=?transpose(knnsearch(transpose(p)?transpose(p)?‘k‘?k+1));
end
m?=?size(p2);
n?=?zeros(3m);
w?=?zeros(1m);
for?i?=?1:m
????x?=?p(:neighbors(2:end?i));
????p_bar?=?1/k?*?sum(x2);
????
????P?=?(x?-?repmat(p_bar1k))?*?transpose(x?-?repmat(p_bar1k));?%鄰域協方差矩陣P
????
????[VD]?=?eig(P);
????
????[d0?idx]?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1194??2018-04-03?18:59??norcur.m
?????文件?????????249??2018-04-03?18:59??norcur_demo.m
評論
共有 條評論