Home > matGeom > polygons2d > curveMoment.m

curveMoment

PURPOSE ^

CURVEMOMENT Compute inertia moment of a 2D curve.

SYNOPSIS ^

function m = curveMoment(curve, p, q)

DESCRIPTION ^

CURVEMOMENT  Compute inertia moment of a 2D curve.
   M = curveMoment(CURVE, P, Q)

   Example
   curveMoment

   See also
   polygons2d, curveCMoment, curveCSMoment

   Reference
   Based on ideas and references in:
   "Affine curve moment invariants for shape recognition"
   Dongmin Zhao and Jie Chen
   Pattern Recognition, 1997, vol. 30, pp. 865-901


 ------
 Author: David Legland
 e-mail: david.legland@grignon.inra.fr
 Created: 2009-03-25,    using Matlab 7.7.0.471 (R2008b)
 Copyright 2009 INRA - Cepia Software Platform.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function m = curveMoment(curve, p, q)
0002 %CURVEMOMENT  Compute inertia moment of a 2D curve.
0003 %   M = curveMoment(CURVE, P, Q)
0004 %
0005 %   Example
0006 %   curveMoment
0007 %
0008 %   See also
0009 %   polygons2d, curveCMoment, curveCSMoment
0010 %
0011 %   Reference
0012 %   Based on ideas and references in:
0013 %   "Affine curve moment invariants for shape recognition"
0014 %   Dongmin Zhao and Jie Chen
0015 %   Pattern Recognition, 1997, vol. 30, pp. 865-901
0016 %
0017 %
0018 % ------
0019 % Author: David Legland
0020 % e-mail: david.legland@grignon.inra.fr
0021 % Created: 2009-03-25,    using Matlab 7.7.0.471 (R2008b)
0022 % Copyright 2009 INRA - Cepia Software Platform.
0023 
0024 % coordinate of vertices
0025 px  = curve(:,1);
0026 py  = curve(:,2);
0027 
0028 % compute centroids of line segments
0029 cx  = (px(1:end-1)+px(2:end))/2;
0030 cy  = (py(1:end-1)+py(2:end))/2;
0031 
0032 % compute length of each line segment
0033 dl  = hypot(px(2:end)-px(1:end-1), py(2:end)-py(1:end-1));
0034 
0035 % compute moment
0036 m = zeros(size(p));
0037 for i=1:length(p(:))
0038     m(i) = sum(cx(:).^p(i) .* cy(:).^q(i) .* dl(:));
0039 end

Generated on Wed 16-Feb-2022 15:10:47 by m2html © 2003-2019