图像阶矩及重心计算

文章介绍了如何使用图像的矩来分析二值图像的特性,如通过零阶矩计算白色区域面积,一阶矩确定图像重心,以及二阶矩估算物体形状的方向。通过OpenCV库中的moments函数,可以便捷地计算这些矩并应用到实际问题中。
📄 AI 智能文档扫描仪 -

📄 AI 智能文档扫描仪 -

图片编辑
Python
PyTorch

基于OpenCV透视变换算法,提供文档自动扫描与矫正服务,支持边缘检测、歪斜拉直及去阴影增强,集成WebUI,纯算法零依赖版

理论:

在这里插入图片描述

图像的矩

零阶矩

在这里插入图片描述
这里的图像是单通道图像, V(i,j)V(i,j)表示图像在 (i,j)(i,j)点上的灰度值。
我们可以发现,当图像为二值图时, M00就是这个图像上白色区域的总和,因此, M00可以用来求二值图像(轮廓,连通域)的面积

一阶矩

在这里插入图片描述
当图像为二值图时, V(i,j) 只有0(黑),1(白)两个值。 M10 就是图像上所以白色区域 x坐标值与坐标乘积的累加。因此,一阶矩可以用来求二值图像的重心:
在这里插入图片描述

二阶矩

在这里插入图片描述
二阶矩可以用来求物体形状的方向:
在这里插入图片描述
在这里插入图片描述
##代码
Mat image = imread(imagename, 0);//读入灰度图
Mat binary;
//二值,椭圆是黑色的,所以反色下
threshold(image, binary, 200, 255, CV_THRESH_BINARY_INV);
Moments m = moments(binary, true);//moments()函数计算出三阶及一下的矩
Point2d center(m.m10 / m.m00, m.m01 / m.m00);//此为重心
//计算方向
double a = m.m20 / m.m00 - center.xcenter.x;
double b = m.m11 / m.m00 - center.x
center.y;
double c = m.m02 / m.m00 - center.ycenter.y;
double theta = fastAtan2(2
b,(a - c))/2;//此为形状的方向

您可能感兴趣的与本文相关的镜像

📄 AI 智能文档扫描仪 -

📄 AI 智能文档扫描仪 -

图片编辑
Python
PyTorch

基于OpenCV透视变换算法,提供文档自动扫描与矫正服务,支持边缘检测、歪斜拉直及去阴影增强,集成WebUI,纯算法零依赖版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值