?? m_getimagehuju_fast.m
字號:
function [result]=M_GetImageHuJu_Fast(im)
%% 快速計算
% 追求速度的hu矩計算
% im為double型的
% 本程序中橫向從左至右為x,縱向從上到下為y
%% 初始化
[height,width]=size(im);
[x,y]=meshgrid(1:width,1:height);
%% 構造中心矩,和2、3階中心距的分母
m00=sum(sum(im));
m00_2=m00^2;
m00_3=m00^2.5;
%% 生成(x-avgX)和(y-avgY)矩陣,這是以后的各階中心距都是基于這兩個矩陣的
x=x-sum(sum(im.*x))/m00;
y=y-sum(sum(im.*y))/m00;
%% 計算2階中心距
n20=sum(sum(im.*(x.^2)))/m00_2;
n02=sum(sum(im.*(y.^2)))/m00_2;
n11=sum(sum(im.*(x.*y)))/m00_2;
%% 計算3階中心距
n30=sum(sum(im.*(x.^3)))/m00_3;
n21=sum(sum(im.*(x.^2.*y)))/m00_3;
n12=sum(sum(im.*(x.*y.^2)))/m00_3;
n03=sum(sum(im.*(y.^3)))/m00_3;
%% 七個不變矩
f1=n20+n02;
f2=(n20-n02)^2+4*n11^2;
f3=(n30-3*n12)^2+(3*n21-n03)^2;
f4=(n30+n12)^2+(n21+n03)^2;
f5=(n30-3*n12)*(n30+n12)*((n30+n12)^2-3*(n21+n03)^2)+(3*n21-n03)*(n21+n03)*(3*(n30+n12)^2-(n21+n03)^2);
f6=(n20-n02)*((n30+n12)^2-(n21+n03)^2)+4*n11*(n30+n12)*(n21+n03);
f7=(3*n21-n03)*(n30+n12)*((n30+n12)^2-3*(n21+n03)^2)-(n30-3*n12)*(n21+n03)*(3*(n30+n12)^2-(n21+n03)^2);
result=[f1,f2,f3,f4,f5,f6,f7];
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -