一种基于二维码的单目摄像头测量物体尺寸的方法
文献发布时间:2023-06-19 13:46:35
技术领域
本发明涉及电子信息技术领域,具体涉及一种基于二维码的单目摄像头测量物体尺寸的方法。
背景技术
判断物体实际的尺寸大小是日常生活中经常遇到的问题,比较常见的方式是利用一些信号发射装置与接受装置来进行位置的测量,如利用超声波,红外线和激光等,这些传感器在工业领域中比较常见,但在实际的生活中由于成本过高,或者需要一定的专业知识,所以难以作为一种日常使用的测距方式。随着手机等智能终端的普及,人们可以方便的利用这些设备所配备的摄像头来进行拍照,如果能把测量物体尺寸的功能集成在这些智能设备中,就可方便快捷的进行测量。
目前,已经有一些技术可以使用在手机等智能设备来进行物体尺寸的测量,主要是使用了以下三种方法:
第一种方法,是使用TOF传感器,用过粒子或波传播一段距离所花费的时间的度量。飞行时间传感器种类繁多,但大多数是飞行时间相机和激光扫描仪,它们使用称为激光雷达(光检测和测距)的技术,通过用红外光照射来测量图像中各个点的深度。这种技术大多都应用在一些高端智能设备上,当前手机端可用的主流TOF传感器分辨率相对较低(180*240,240*320,240*480等),因此在近距离的精度和X/Y分辨率也会相对较低,并且元件在工作时的功耗与发热量也相对较大,长时间工作需要很好的散热条件,在消费类电子设备上使用还需要不断优化。
第二种方法,是利用双目摄像头的视差来计算深度信息,即通过两台相机模拟双目,通过拍摄的不同位置的检测物图像进行分析,确定距离。其精度要受相机性能、光照和基线长度(两台相机之间距离)影响,组成双目摄像系统需要提前进行摄像头参数的校准,同时因为算法复杂,所以在应用上会有很多限制。
第三种方法,是利用视觉惯性测量系统,如果只有一个摄像头只靠图像无法恢复出物理尺度,而这种方式只有一个摄像头,但它加入了IMU的数据,把图像数据和IMU数据进行视觉惯性测量融合,也可以恢复出真实物理尺度。具体的过程是,当相机拍摄出一张照片,会分析图像中的特征点,再对比下一张照片中的特征点并结合陀螺仪与加速器的数据,可以得出两帧之间手机的相对位移,知道了不同时间点拍摄照片的相对位移便可利用双目摄像头计算视差的方法进行深度,距离的计算。这种方法对硬件传感器的要求较高,一个微小的错误,在画面每秒刷新1000次的情况下,持续几秒钟后可能会导致30%甚至更大的计量尺度误差,并且在进行测量前需要移动设备进行校准,对每张图片进行特征点的分析也需要很强的计算能力,长时间使用也会要求智能设备有较好的散热条件。
综上所述,上述方法都需要一些额外硬件设备的支持才能进行对物体的测量。
发明内容
本发明的目的在于提出一种基于二维码的单目摄像头测量物体尺寸的方法,以使用尽可能少的额外设备,在一个摄像头与两个二维码的情况下进行物体的测量。
实现本发明目的的技术解决方案为:一种基于二维码的单目摄像头测量物体尺寸的方法,包括如下步骤:
步骤1:获取相机的内参矩阵和外参矩阵,用于对相机拍摄到的图片进行畸变矫正;
步骤2:选取两个尺寸相同且已知的二维码,以对角线的方式贴在需要识别的平面上;
步骤3:获取二维码的四个角点信息,计算当前平面每个像素所代表的实际距离;
步骤4:在两个二维码之间的图片区域进行边缘检测,检测物体的轮廓,并用矩形边框进行包裹;
步骤5:获取最小外接矩形横向、纵向所占用的像素个数,结合每个像素所代表的实际距离,计算物体的尺寸。
进一步的,步骤1中,使用张正友标定法,获取相机的内参矩阵和外参矩阵。
进一步的,步骤3中,获取二维码的四个角点信息,计算当前平面每个像素所代表的实际距离,具体方法为:
步骤3.1、获取两个二维码的角点坐标,设每个二维码的左上、右上、右下、左下四个角点分别为tl、tr、br、bl,X为画面中横向的像素坐标,Y为画面中纵向的像素坐标,通过以下公式计算出二维码四条边的中点:
(X
(X
(X
(X
步骤3.2、计算上边中点与下边的欧几里得距离,以及左边中点与右边中点的欧几里得距离,设两个二维码的横向像素距离为WidthA、WidthB,纵向像素距离为HeightA、HeightB,二维码真所有边的真实尺寸的和为RealSize,由以下公式计算图片中每个像素所代表的实际距离DistancePerPixel:
DistancePerPixel=RealSize÷(WidthA+WidthB+HeightA+HeightB)÷4。
进一步的,步骤4中,使用Canny算子进行边缘检测。
进一步的,步骤5中,获取最小外接矩形横向、纵向所占用的像素个数,结合每个像素所代表的实际距离,计算物体的尺寸,具体方法为:
设最小外接矩形边框在图像中横向、纵向所占的像素距离为Pixels
Distance
Distance
其中Distance
一种基于二维码的单目摄像头测量物体尺寸的系统,基于所述的基于二维码的单目摄像头测量物体尺寸的方法,实现物体尺寸测量。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,基于所述的基于二维码的单目摄像头测量物体尺寸的方法,实现物体尺寸测量。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,基于所述的基于二维码的单目摄像头测量物体尺寸的方法,实现物体尺寸测量。
本发明与现有技术相比,其显著优点为:1)在一个摄像头与两个二维码的情况下进行物体的测量,相比已有的单摄像头测距方式节省了初始化的过程,只要画面中拍摄到二维码,获取像素与实际大小的比例,就可以计算出尺寸,无需用到其他传感器;2)使用边缘检测的方法,相比需要特征点识别的方法,大大降低了对计算性能的要求。
附图说明
图1是本发明基于二维码的单目摄像头测量物体尺寸的方法流程图。
图2是本发明的效果图。
图3是本发明的原理解释图。
图4是本发明的初步误差分析图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1-4所示,一种基于二维码的单目摄像头测量物体尺寸的方法,主要包括以下5个步骤:
步骤1:使用张正友标定法,获取相机的内参矩阵和外参矩阵,对相机拍摄到的图片进行畸变矫正。
相机标定是建立相机图像像素位置与场景点位置之间的关系。根据相机成像模型,由特征点在图像中坐标与世界坐标的对应关系,求解相机模型的参数,包括内部参数和外部参数,据此可以对相机拍摄到的图片进行畸变矫正。
相机标定过程中,首先选用一张标定图片(一般以黑白棋盘作为标定图片),然后针对这张照片从不同的角度拍摄若干张照片(10-20张),在图像中检测特征点,利用解析解估算方法可以计算出5个内部参数,以及6个外部参数。
后期使用OpenCV开源库中的undistort函数,输入之前所求的相机内参,外参以及原始图片,便可得到去除畸变之后的图像。这一步是保证本发明测量精确度的手段之一,能够防止相机本身所拍摄的画面产生的畸变所导致的像素分布与真实视角不同的问题。
步骤2:打印两个尺寸相同且已知的二维码,以对角线的方式贴在需要识别的平面上。
打印两个大小相同且已知的二维码(这里获取二维码真实大小可以是通过手动测量,也可是在通过程序打印二维码,并把大小信息保存在二维码之中),这里选用二维码来做为参照物的原因是,因为二维码容错能力强,具有纠错功能且译码可靠性高,于是经常被使用在计算机视觉方面与机器人视觉定位系统之中。
步骤3:获取二维码的四个角点信息,计算二维码在图片中所占的像素数量,换算出当前平面每个像素所代表的实际距离。
1)获取两个二维码的角点坐标。设每个二维码的四个角点为tl,tr,br,bl(左上,右上,右下,左下),X为画面中横向的像素坐标,Y为画面中纵向的像素坐标,则可通过以下公式计算出二维码四条边的中点:
(X
(X
(X
(X
2)分别对上边中点和下边中点,以及左边中点与右边中点计算欧几里得距离。如图3所示可以分别计算出两个二维码的横向像素距离WidthA、WidthB,以及纵向像素距离HeightA、HeightB。设二维码的真实尺寸(所有边的和)为RealSize,于是图片中每个像素的所代表的实际距离可以由以下公式得出:
DistancePerPixel=RealSize÷(WidthA+WidthB+HeightA+HeightB)÷4
步骤4:使用Canny算子在两个二维码之间的区域进行边缘检测,检测物体的轮廓,并用一个最小的矩形边框来进行包裹。
在上一步中已经知道了二维码的角点信息,为了限定识别范围,如附图3中所显示,只对以两个二维码为对角线的矩形区域内做边缘检测。边缘检测算法在对图像的边缘进行检测时,先大概检测出图像轮廓的一些像素点,然后通过一些连接规则将那些像素点连接起来,最后再检测并连接一些之前未被识别的边界点、去除检测到的虚假的像素点和边界点并形成一个整体的边缘。
本发明使用Canny算子来进行边缘检测。Canny算子是一个综合了滤波、增强、检测等多阶段的边缘检测算子,其目标是找到一个最优的边缘轮廓。该算法的具体步骤如下:
高斯滤波:
该算法首先需要过滤点图像可能存在的噪声。高斯滤波是目前较为流行的去噪算法。它的原理是根据高斯公式生成一个滤波算子,然后将待处理的像素点及邻域像素点的灰度值与这个滤波算子进行卷积运算来实现加权平均运算,这样就可以有效的去除掉图像中的那些高频率的噪声。其中二维的高斯公式为:
计算梯度图像:
Canny算子以高斯滤波器为基础来进行梯度计算的,其滤波算子与Sobel算子类似,距离中心点越近其权重也就越大。2×2的滤波算子为:
计算图像某一像素点的梯度G(x,y)和角度θ(x,y):
梯度图像的非极大值抑制处理:
由上一步得到的梯度图像存在边缘宽度不均、模糊和误识别问题,因此需要对梯度图像的非极大值点进行抑制来剔除那些非边缘的像素点。
双阈值算法检测并连接图像边缘:
上一步得到的边缘图像还是存在很多伪边缘,因此Canny算法使用双阈值算法对边缘进行检测和连接。具体的思路为选取两个阈值,小于低阈值的像素点确定为假边缘;而大于高阈值的像素点将被确定为强边缘。
在计算完物体轮廓之后再使用OpenCV的boundingRect函数便可获得被测试物体的最小外接矩形。
步骤5:计算上一步生成最小矩形横向、纵向所占用的像素个数乘以第3步中计算出的每个像素所代表的实际距离,便可近似估算出物体的尺寸。
在得到最小外接矩形之后,可以通过步骤3的方法计算出矩形在图像中横向、纵向所占的像素距离,分别记为Pixels
Distance
Distance
之后回到步骤3,对每帧进行同样的操作直至结束。
本发明还提出一种基于二维码的单目摄像头测量物体尺寸的系统,基于所述的基于二维码的单目摄像头测量物体尺寸的方法,实现物体尺寸测量。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,基于所述的基于二维码的单目摄像头测量物体尺寸的方法,实现物体尺寸测量。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,基于所述的基于二维码的单目摄像头测量物体尺寸的方法,实现物体尺寸测量。
综上所述,本发明在一个摄像头与两个二维码的情况下进行物体的测量,相比已有的单摄像头测距方式节省了初始化的过程,只要画面中拍摄到二维码,获取像素与实际大小的比例,就可以计算出尺寸,无需用到其他传感器。此外,使用边缘检测的方法,相比需要特征点识别的方法,大大降低了对计算性能的要求。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 一种基于二维码的单目摄像头测量物体尺寸的方法
- 一种单目摄像头测量物体尺寸及距离的方法和系统