求图像不变距函数

  1. void Calculate_Moment_Fea(unsigned char* Img_Data ,int Img_H ,int Img_W)  
  2. {  
  3.     int i=0 ,j=0;  
  4.     unsigned char temp = 0;  
  5.     double m_00 =0 ,m_01 =0 ,m_10 =0;  
  6.     double X_c =0 ,Y_c =0 ,Center_x =0 ,Center_y =0;  
  7.     double H_00=0,H_02=0,H_03=0,H_11=0,H_12=0,H_20=0,H_21=0,H_30=0;  
  8.     float eta_02=0,eta_03=0,eta_11=0,eta_12=0,eta_20=0,eta_21=0,eta_30=0;  
  9.     //阶矩  
  10.     for (i=0;i<Img_H;i++)  
  11.     {  
  12.         for (j=0;j<Img_W;j++)  
  13.         {  
  14.             temp = Img_Data[i*Img_W + j];  
  15.             m_00 = m_00 + (powf(i,0)*powf(j,0)*temp);  
  16.             m_01 = m_01 + (powf(i,0)*powf(j,1)*temp);  
  17.             m_10 = m_10 + (powf(i,1)*powf(j,0)*temp);  
  18.         }  
  19.     }  
  20.     X_c = m_10/m_00;  
  21.     Y_c = m_01/m_00;  
  22.     //中心矩  
  23.     for (i=0;i<Img_H;i++)  
  24.     {  
  25.         for (j=0;j<Img_W;j++)  
  26.         {  
  27.             temp = Img_Data[i*Img_W + j];  
  28.             Center_x = i - X_c;  
  29.             Center_y = j - Y_c;  
  30.             H_00 = H_00 + pow(Center_x,0)*pow(Center_y,0)*temp;  
  31.             H_02 = H_02 + pow(Center_x,0)*pow(Center_y,2)*temp;  
  32.             H_03 = H_03 + pow(Center_x,0)*pow(Center_y,3)*temp;  
  33.             H_11 = H_11 + pow(Center_x,1)*pow(Center_y,1)*temp;  
  34.             H_12 = H_12 + pow(Center_x,1)*pow(Center_y,2)*temp;  
  35.             H_20 = H_20 + pow(Center_x,2)*pow(Center_y,0)*temp;  
  36.             H_21 = H_21 + pow(Center_x,2)*pow(Center_y,1)*temp;  
  37.             H_30 = H_30 + pow(Center_x,3)*pow(Center_y,0)*temp;  
  38.         }  
  39.     }  
  40.     //矩的归一化  
  41.     eta_02 = H_02/pow(H_00 ,2);  
  42.     eta_03 = H_03/pow(H_00 ,2.5);  
  43.     eta_11 = H_11/pow(H_00 ,2);  
  44.     eta_12 = H_12/pow(H_00 ,2.5);  
  45.     eta_20 = H_20/pow(H_00 ,2);  
  46.     eta_21 = H_21/pow(H_00 ,2.5);  
  47.     eta_30 = H_30/pow(H_00 ,2.5);  
  48.     //矩不变特征  
  49.     float m_mo_1 = eta_20 + eta_02;  
  50.     float m_mo_2 = pow(eta_20 - eta_02,2) + 4*pow(eta_11,2);  
  51.     float m_mo_3 = pow(eta_30 - 3*eta_12,2) + pow(3*eta_21 - eta_03,2);  
  52.     float m_mo_4 = pow(eta_30 + eta_12,2) + pow(eta_21 + eta_03,2);  
  53.     float m_mo_5 = (eta_30 - 3*eta_12)*(eta_03 + eta_21)*(pow(eta_30+eta_12,2) - 3*pow(eta_21+eta_03,2)) +   
  54.              (3*eta_12 - eta_03)*(eta_21+eta_30)*(3*pow(eta_30+eta_12,2)-pow(eta_21+eta_03,2));  
  55.     float m_mo_6 = (eta_20 - eta_02)*(pow(eta_30+eta_12,2) - pow(eta_21+eta_03,2))+  
  56.              4*eta_11*(eta_30+eta_12)*(eta_03+eta_21);  
  57. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值