Home > matGeom > polygons2d > curveCMoment.m

curveCMoment

PURPOSE ^

CURVECMOMENT Compute centered inertia moment of a 2D curve.

SYNOPSIS ^

function m = curveCMoment(curve, p, q)

DESCRIPTION ^

CURVECMOMENT  Compute centered inertia moment of a 2D curve.
   M = curveCMoment(CURVE, P, Q)

   Example
   curveCMoment

   See also
   polygons2d, curveMoment, 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 = curveCMoment(curve, p, q)
0002 %CURVECMOMENT  Compute centered inertia moment of a 2D curve.
0003 %   M = curveCMoment(CURVE, P, Q)
0004 %
0005 %   Example
0006 %   curveCMoment
0007 %
0008 %   See also
0009 %   polygons2d, curveMoment, 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 % compute curve centroid
0025 centroid = polylineCentroid(curve);
0026 
0027 % coordinate of vertices
0028 px  = curve(:,1)-centroid(1);
0029 py  = curve(:,2)-centroid(2);
0030 
0031 % compute centroids of line segments
0032 cx  = (px(1:end-1)+px(2:end))/2;
0033 cy  = (py(1:end-1)+py(2:end))/2;
0034 
0035 % compute length of each line segment
0036 dl  = hypot(px(2:end)-px(1:end-1), py(2:end)-py(1:end-1));
0037 
0038 % compute moment
0039 m = zeros(size(p));
0040 for i=1:length(p(:))
0041     m(i) = sum(cx(:).^p(i) .* cy(:).^q(i) .* dl(:));
0042 end

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