求二值图像的形心

  对于一张二值图像而言,假如白色像素区域为目标像素区域,黑色像素为背景,用1表示白色,0表示黑色像素,则图像目标的形心求取公式如下:

其中x0,y0是质心坐标,f(x,y)是二值化图像在点(x,y)处的像素值

根据上面的公式,通过像素的遍历,利用Opencv可以写出一个函数,来求形心代码如下:

CvPoint GetCenterPoint(IplImage *src)
{
 int i,j;
 int x0=0,y0=0,sum=0;
 CvPoint center;
 CvScalar pixel;
 for (i=0;i<src->width;i++)
  for(j=0;j<src->height;j++)
  {
   pixel=cvGet2D(src,j,i);
   if(pixel.val[0]==1)
   {
    x0=x0+i;
    y0=y0+j;
    sum=sum+1;
   }
  }
 center.x=x0/sum;
 center.y=y0/sum;
 return center;
}

经测试效果如下:

完整代码下载:http://download.csdn.net/detail/gxiaob/5149306

参考资料:

http://blog.stevenwang.name/image-centroid-217001.html

 http://bbs.sciencenet.cn/thread-531905-1-1.html

http://dongtingyueh.blog.163.com/blog/static/461945320126238303158/

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值