average diffusion distance

本文介绍了一种名为平均扩散距离(ADD)的算法,并通过具体的3D模型实例演示了其应用过程。该算法能有效计算出3D模型中各点的重要性,其中边界和极端点的值较高,而段落中心点的值较低。

average diffusion distance(ADD) 

定义见: [1]




说明见: [2]




主要代码:


% test for farthest point sampling on 3D meshes
%%%%%%%%%%%%%%   sphere   %%%%%%%%%%%%%%%%
% name = 'sphere40.obj';
% X0=read_obj(name); 
% vertex=X0.xyz';  %坐标
% faces=X0.tri'; %三角形顺序索引
%%%%%%%%%%%%%%   elephant   %%%%%%%%%%%%%%%%
[vertex,faces] = read_mesh('elephant-50kv');
vertex = vertex';
faces = faces';
%dis=squareform(pdist(vertex));%euclidian distance 


numvert = size(vertex, 1);
colorvector = (1:numvert)'/ numvert;
%figure(1);
%scatter3(vertex(:,1),vertex(:,2),vertex(:,3),10,colorvector,'filled'); 
L = cotmatrix(vertex,faces);
M = massmatrix(vertex,faces,'voronoi');
M = diag(M);
M = M * ones(1,size(L,2));
L = L./M;% the discrete Laplacian matrix

eigennum = 51;

[U,S] = eigs(L, eigennum, 'sr');

%[U,S,V] = svds(L,size(L,1));
eigenvals=diag(S);
t = 1 / (2 * eigenvals(2)); % select time
eigenvals = eigenvals(eigenvals<-log(0.1)/t);% choose eigen number

eigennum = min(eigennum - 1, size(eigenvals,1) - 1);

e_minus_lambda_t = exp(-eigenvals(2:eigennum+1).*t);   
e_minus_lambda_t = ones(size(U,1),1)*e_minus_lambda_t';
X = U(:,2:eigennum+1).*e_minus_lambda_t;
%figure(2);
%scatter3(X(:,1),X(:,2),X(:,3),10,colorvector,'filled'); 
dis=squareform(pdist(X).^2);%diffusion distance 
D = sum(dis, 2);

col = D;
col = perform_histogram_equalization(col, linspace(0,1,length(col)));
options.face_vertex_color = col;
clf;
hold on;
plot_mesh(vertex, faces, options);
colormap jet(256);
camlight;
shading interp;


最终结果:




正如[1]说的那样,the ADD presents highvalues for boundary and extrema points, and small valuesfor points in the center of the segment.



[1]A Hierarchical Segmentation of Articulated Bodies

[2]Symmetry-Aware Nonrigid Matching of Incomplete 3D Surfaces


完整源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值