getweights.m

来自「active shape model的matlab代码实现」· M 代码 · 共 42 行

M
42
字号
function W=GetWeights(Xu);%function W=GetWeights(Xu);Distances=zeros(size(Xu,1)/2,size(Xu,1)/2,size(Xu,2));%using 3 dimensional matrix to contain the distances from landmark1(x) to landmark2(y) in a shape(z)hwtbar = waitbar(0,'Calculating distances between landmarks. Please wait...');for InShape=1:size(Xu,2),   for FromLandmark=1:size(Xu,1)/2,      for ToLandmark=1:size(Xu,1)/2,         %waitbar((InShape*ToLandmark*FromLandmark)/(size(Xu,2)*size(Xu,1)/2*size(Xu,1)/2));         p1x=Xu(FromLandmark,InShape);         p1y=Xu(FromLandmark+size(Xu,1)/2,InShape);         p2x=Xu(ToLandmark,InShape);         p2y=Xu(ToLandmark+size(Xu,1)/2,InShape);         Distances(FromLandmark,ToLandmark,InShape)=norm([p1x p1y]-[p2x p2y]);      end   end   waitbar(InShape/size(Xu,2));endclose(hwtbar);Variances=zeros(size(Xu,1)/2,size(Xu,1)/2);%now we take the variance of distances with shapes (eliminating the shape dimension)hwtbar = waitbar(0,'Calculating the variances of the landmarks. Please wait...');for FromLandmark=1:size(Xu,1)/2,   for ToLandmark=1:size(Xu,1)/2,      Variances(FromLandmark,ToLandmark)=std(Distances(FromLandmark,ToLandmark,:))^2;      waitbar((FromLandmark*ToLandmark)/(size(Xu,1)/2*size(Xu,1)/2));   endendclose(hwtbar);W=zeros(size(Xu,1)/2);for Landmark=1:size(Xu,1)/2,   W(Landmark,Landmark)=1/sum(Variances(Landmark,:));end%normalizeW=W/(W(1,1));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?