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.
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