⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_getimagehuju_fast.m

📁 基于MATLAB平台上
💻 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 + -