在MATLAB上已经实现了计算HU不变矩,但是老师让做一个修正的,求大神知道该怎么做,有程序更好啦

xbc992583341 2016-05-18 11:33:35
img=imread('文件路径\文件名\jpg');
fai1=two_dim_moment(img);

img1=imresize(img,[100 100]);
fai2=two_dim_moment(img1);

img2=imresize(img,[300 300]);
fai3=two_dim_moment(img2);
%function fai=two_dim_moment(img)
[m, n]=size(img);
img=double(img);

%图像的各阶矩
mm=zeros(4,4);
for y=1:m
for x=1:n
for q=1:4
for p=1:4
mm(q,p)=mm(q,p)+x^(p-1)*y^(q-1)*img(y,x);
end
end
end
end
mean_x=mm(2,1)/mm(1,1);
mean_y=mm(1,2)/mm(1,1);

%三阶中心矩
u00=mm(1,1);
u11=mm(2,2)-mean_y*mm(2,1);
u20=mm(3,1)-mean_x*mm(2,1);
u02=mm(1,3)-mean_y*mm(1,2);
u30=mm(4,1)-3*mean_x*mm(3,1)+2*mean_x^2*mm(2,1);
u03=mm(1,4)-3*mean_y*mm(1,3)+2*mean_y^2*mm(1,2);
u21=mm(3,2)-2*mean_x*mm(2,2)-mean_y*mm(3,1)+2*mean_x^2*mm(1,2);
u12=mm(2,3)-2*mean_y*mm(2,2)-mean_x*mm(1,3)+2*mean_y^2*mm(2,1);
%归一化中心矩
n20=u20/u00^2;
n02=u02/u00^2;
n11=u11/u00^2;
n30=u30/u00^2.5;
n03=u03/u00^2.5;
n12=u12/u00^2.5;
n21=u21/u00^2.5;

%7个不变矩
fai(1) = n20 + n02;
fai(2) = (n20-n02)^2 + 4*n11^2;
fai(3) = (n30-3*n12)^2 + (3*n21-n03)^2;
fai(4) = (n30+n12)^2 + (n21+n03)^2;
fai(5) = (n30-3*n12)*(n30+n12)*((n30+n12)^2-3*(n21+n03)^2)+(3*n21-n03)*(n21+n03)*(3*(n30+n12)^2-(n21+n03)^2);
fai(6) = (n20-n02)*((n30+n12)^2-(n21+n03)^2)+4*n11*(n30+n12)*(n21+n03);
fai(7) = (3*n21-n03)*(n30+n12)*((n30+n12)^2-3*(n21+n03)^2)+(3*n12-n30)*(n21+n03)*(3*(n30+n12)^2-(n21+n03)^2);

%end
...全文
512 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37092963 2016-12-18
  • 打赏
  • 举报
回复
楼主,把你的Hu不变矩的matlab程序发给我行吗,急用 1073321804@qq.com/感激不尽

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧