% M = HU_MOMENTS (IM) % % Calculates 7 moments of Hu on image IM, invariant to translation, % rotation and scale. % % After: M. Sonka et al., Image processing, analysis and machine vision. function m = hu_moments (im) p = [ 1 0 2 1 2 0 3 ]; q = [ 1 2 0 2 1 3 0 ]; n = moments(im,p,q,1,1); m(1) = n(2) + n(3); m(2) = (n(3) - n(2))^2 + 4*n(1)^2; m(3) = (n(7) - 3*n(4))^2 + (3*n(5) - n(6))^2; m(4) = (n(7) + n(4))^2 + ( n(5) + n(6))^2; m(5) = ( n(7) - 3*n(4)) * (n(7) + n(4)) * ... ( (n(7) + n(4))^2 - 3*(n(5) + n(6))^2) + ... (3*n(5) - n(6)) * (n(5) + n(6)) * ... (3*(n(7) + n(4))^2 - (n(5) + n(6))^2); m(6) = (n(3) - n(2)) * ((n(7) + n(4))^2 - (n(5) + n(6))^2) + ... 4*n(1) * (n(7)+n(4)) * (n(5)+n(6)); m(7) = (3*n(5) - n(6)) * (n(7) + n(4)) * ... ( (n(7) + n(4))^2 - 3*(n(5) + n(6))^2) - ... ( n(7) - 3*n(4)) * (n(5) + n(6)) * ... (3*(n(7) + n(4))^2 - (n(5) + n(6))^2); return;