• 大小: 797B
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签: 曲率  

资源简介

高斯曲率和平均曲率的代码,用matlab写的

资源截图

代码片段和文件信息

function  [KH]=Point_Curvature(datapartial_data)

%此函数的功能是模型上的部分点的曲率
%data    为模型上所有的点
%partial_data    为模型上的部分点(特征点或匹配候选点)

[ProwPcol]=size(partial_data);
[rowcol]=size(data);
for i=1:Prow
    
    distance=[];
    for j=1:row     
       distance(j)=sqEuclidean_distance(partial_data(i:)data(j:));        
    end
  
    [sortdisx]=sort(distance);
    mindis_five(1:5)=sortdis(2:6);
%计算最小5个距离的点的标号,存放于 矩阵mindis_label
    mindis_label(1:5i)=x(2:6);
    
%coef存放所有点的方程的系数
    for j=1:5
        x=data(mindis_label(ji)1);
        y=data(mindis_label(ji)2);
        z=data(mindis_label(ji)3);
        coef(5*(i-1)+j1:6)=[x^2 2*x*y y^2 x y z];  
    end 
    
% A存放的是第i个点的方程的系数
    A=[];
    A=[coef(5*(i-1)+1:);coef(5*(i-1)+2:);coef(5*(i-1)+3:);coef(5*(i-1)+4:);coef(5*(i-1)+5:)];
    
% 用高斯消元法解系数方程组
    Adet(i)=det(A(:1:5));
    [LU]=lu(A(:1:5));
    coef_value(1:5i)=U\(L\A(:6));

    a=coef_value(1i);
    b=coef_value(2i);
    c=coef_value(3i);
    d=coef_value(4i);
    e=coef_value(5i);

    K(i)=4*(a*c-b^2)/(1+d^2+e^2)^2;
    H(i)=(a+c+a*e^2+c*d^2-2*b*d*e)/(1+d^2+e^2)^(3/2);    



%%

  function    distance = sqEuclidean_distance(fistlast)
distance = norm(fist - last);
  end
  



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1375  2010-12-23 21:42  Point_Curvature.m

----------- ---------  ---------- -----  ----

                 1375                    1


评论

共有 条评论