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

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@inrae.fr
0021 % Created: 2009-03-25, using Matlab 7.7.0.471 (R2008b)
0022 % Copyright 2009-2024 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 Thu 21-Nov-2024 11:30:22 by m2html © 2003-2022