求计算Zernike矩和七个hu不变矩的C++代码!

yangqingyue1985 2009-03-24 12:55:51
我按照公式算了七个Hu不变矩后,测试发现没有旋转不变性,不知道是什么原因,请大家给个计算代码!谢谢!!
...全文
1044 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjpsnow 2010-05-04
  • 打赏
  • 举报
回复
请教,几何不变矩对数字图像和模拟图像都适应吗?
liqunbin12 2010-01-13
  • 打赏
  • 举报
回复
标记下
zhangyj0330 2010-01-03
  • 打赏
  • 举报
回复
学习中,参考以下。我马上就试试去。谢谢!
ERERE121 2009-05-31
  • 打赏
  • 举报
回复
学习了,参考一下
zhaodefangde 2009-04-30
  • 打赏
  • 举报
回复
标记一下,以备参考
brk1985 2009-04-27
  • 打赏
  • 举报
回复
资料不错,学习了,呵呵
yangqingyue1985 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zxx_0405 的回复:]
C/C++ codedouble* Getsquare(int **Array1,int Width,int Height//Array1图像灰度矩阵
{
int x,y;
double pSum,dx,dy;
int xmax,xmin,ymax,ymin,xSum,ySum,PointSum;
double dd,n1,n2,xAve,yAve;
pSum=Height*Width;
xSum=0;ySum=0;PointSum=0;
xmin=10000;ymin=10000;xmax=-1;ymax=-1;

for (y=0 ;y<Height; y++)
{
for (x=0; x<Width; x++)
{
if (Array1[x][y]==255)
{…
[/Quote]
我的邮箱是yangqingyue1985@163.com 有些问题需要问你,不知道您方便留一下您的邮箱吗?谢谢
yangqingyue1985 2009-04-01
  • 打赏
  • 举报
回复
谢谢LS
zxx_0405 2009-03-26
  • 打赏
  • 举报
回复
double* Getsquare(int **Array1,int Width,int Height//Array1图像灰度矩阵
{
int x,y;
double pSum,dx,dy;
int xmax,xmin,ymax,ymin,xSum,ySum,PointSum;
double dd,n1,n2,xAve,yAve;
pSum=Height*Width;
xSum=0;ySum=0;PointSum=0;
xmin=10000;ymin=10000;xmax=-1;ymax=-1;

for (y=0 ;y<Height; y++)
{
for (x=0; x<Width; x++)
{
if (Array1[x][y]==255)
{
continue;
}
xSum=xSum+x;ySum=ySum+y;++PointSum;
if (x<xmin)
{
xmin=x;
}
if (x>xmax)
{
xmax=x;
}
}
if (y<ymin)
{
ymin=y;
}
if (y>ymax)
{
ymax=y;
}
}
if (pSum==0)
{
goto Loop;
}
xAve=xSum/pSum;
yAve=ySum/pSum;
///////////////////////////////////////////上面为计算x,y平均值
for (x=1; x<16; x++)
{
SqureNumber[x]=0;
}
// 11 20 02 21+ 21- 12+ 12- 30+ 30- 03+ 02-
for (y=0; y<Height; y++)
{
for (x=0; x<Width; x++)
{
if (Array1[x][y]==255)
{
continue;
}
dx=x-xAve;dy=y-yAve;
SqureNumber[1]=SqureNumber[1]+dx*dx; // 计算 u(11) 11
SqureNumber[2]=SqureNumber[2]+dx*dx; // 计算 u(20) 20
SqureNumber[3]=SqureNumber[3]+dy*dy; // 计算 u(02) 02
if (dy>0)
{
SqureNumber[4]=SqureNumber[4]+dx*dx*dy; // 计算 u(21)+ 21+
}
else
{
SqureNumber[5]=SqureNumber[5]+dx*dx*dy; // 计算 u(21)- 21-
}
if( dx>0 )
{
SqureNumber[6]=SqureNumber[6]+dx*dy*dy; // 计算 u(12)+ 12+
}
else
{
SqureNumber[7]=SqureNumber[7]+dx*dy*dy; // 计算 u(12}- 12-
}
if (dx>0 )
{
SqureNumber[8]=SqureNumber[8]+dx*dx*dx ;// 计算 u(30)+ 30+
}
else
{
SqureNumber[9]=SqureNumber[9]+dx*dx*dx; // 计算 u(30)- 30-
}
if (dy>0)
{
SqureNumber[10]=SqureNumber[10]+dy*dy*dy ;// 计算 u(03)+ 03+
}
else
{
SqureNumber[11]=SqureNumber[11]+dy*dy*dy;// 计算 u(03)- 03-
}
}//end for x
}// end for y;
for (x=1; x<12; x++)
{
SqureNumber[x]=SqureNumber[x]/pSum;
}
///////////////////////////////////////////////////////计算图像的各阶矩
for (x=12; x<21; x++)
{
SqureNumber[x]=0;
}
SqureNumber[12]=((SqureNumber[2]-SqureNumber[3])/(SqureNumber[2]+SqureNumber[3]))/2; //长宽比特征

dd=sqrt((SqureNumber[2]-SqureNumber[3])*(SqureNumber[2]-SqureNumber[3])+4*SqureNumber[1]*SqureNumber[1]);
dd=dd+(SqureNumber[2]-SqureNumber[3]);
SqureNumber[16]=2*atan(dd/(2*SqureNumber[1]))/M_PI; ///字型倾斜度

dd=sqrt((SqureNumber[2]-SqureNumber[3])*(SqureNumber[2]-SqureNumber[3])+4*SqureNumber[1]*SqureNumber[1]);
n1=((SqureNumber[2]+SqureNumber[3])+dd)/2;
n2=((SqureNumber[2]+SqureNumber[3])-dd)/2;
SqureNumber[14]=(n1-n2)/(n1+n2); //拉长度

n1=sqrt((ymax-ymin)*(xmax-xmin));
dd=sqrt((SqureNumber[2]+SqureNumber[3])/PointSum);
SqureNumber[15]=dd/n1; //伸展度

dd=(SqureNumber[8]-SqureNumber[9])/(SqureNumber[8]+SqureNumber[9]);
SqureNumber[16]=(dd+1)/2; //水平偏移度

dd=(SqureNumber[10]-SqureNumber[11])/(SqureNumber[10]+SqureNumber[11]);
SqureNumber[17]=(dd+1)/2; //垂直偏移度

dd=(SqureNumber[4]-SqureNumber[5])/(SqureNumber[4]+SqureNumber[5]);
SqureNumber[18]=(dd+1)/2; //水平伸展度度

dd=(SqureNumber[6]-SqureNumber[7])/(SqureNumber[6]+SqureNumber[7]);
SqureNumber[19]=(dd+1)/2; //垂直伸展度
Loop:;
}


看这个行不
oraclelogan 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 yangqingyue1985 的帖子:]
我按照公式算了七个Hu不变矩后,测试发现没有旋转不变性,不知道是什么原因,请大家给个计算代码!谢谢!!
[/Quote]

学习,关注了!
yangqingyue1985 2009-03-25
  • 打赏
  • 举报
回复
DDDDDDDDDDDD

4,506

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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