基于图像的物体尺寸测量算法研究

时间:2022-10-22 11:58:17

基于图像的物体尺寸测量算法研究

摘 要:提出了基于多通道色彩下的边缘检测和目标识别方法,以及后期的以圆为参照的目标尺寸计算方法。在前期预处理中采用卷积运算和锐化等图像增强手段,利用Canny 算子检测边缘,然后通过目标的几何特征高效识别,以近似曲线逼近算法减小边界点数据量。对于已经透视变形目标,立体识别模式采用余弦修正法,平面识别模式采用最小包围矩形法进行校正,提高了目标的计算精度。最后在 PC 端和Android 平台下进行算法实现。实验结果表明,该预处理及检测识别方法行之有效,能在移动设备上进行快捷有效的图像识别处理。

关键词关键词:图像识别;边缘检测;物体测量

DOIDOI:10.11907/rjdk.162445

中图分类号:TP312

文献标识码:A 文章编号文章编号:16727800(2016)011004805

0 引言

在数字化和自动化时代,人们倾向于用更快捷有效的方法替代传统的手工工作,如在一些自动化生产车间、物流公司的配送系统,往往需要便捷获取

物体(如箱子)尺寸,方法是手工测量或肉眼估计,效率和精度不高。目前,国内外已开展了物体识别、图像矫正等方面的研究,但是

直接通过参照物标定未知目标尺寸的例子还比较少[15]。在物体识别方面,常见的是用数据训练识别器,然后再对物体进行识别(比如人脸识别)。

在图像处理方面,透视变形是最常见也是影响较大的因素,对透视变形的矫正,已经有一些技术[68],但只是对已知物体尺寸进行校正(如 A4 文档矫正)或者同比例(保持长宽比)情况下对目标进行矫正,而针对一张张独立图片还没有适合的方法。

本文开发了一款基于 Android 手机平台的物体长度测量 APP。运用图像处理技术,直接对手机相册里的图片进行目标识别、矫正和计算,得到物体尺寸。

1 算法设计

为实现从任意给定的一张图片中识别出目标物体并计算尺寸,需要经过图片预处理(过滤去噪)、边缘检测、目标识别匹配、透视变形矫正和参照对比等步骤。每一环节的处理效果及速度,都会对最终结果产生明显影响。

1.1 预处理

图像处理中,首先需要对给定图片数据进行预处理,预处理主要是进行去噪、锐化、图像增强等操作,目的是为后期处理减少干扰,突出目标。本文处理的图片随机拍照生成,拍摄背景、拍摄条件不尽相同,可能导致背景噪声干扰淹没目标物,因而预处理目标是确保原始信息不丢失且关键信息得到增强。

1.1.1 卷积运算

对图像进行卷积运算,可突出图像细节,增强对比度。卷积运算是利用一个矩阵核对一个小区域进行操作,即掩码运算。

要得到图像某个特定位置的卷积值,可用下列方法计算:①将核的锚点放在该特定位置像素上,同时,核内其它值与该像素邻域的各像素重合;②将核内各值与相应像素值相乘,并将乘积相加;③将所得结果放到与锚点对应的像素上;④对图像所有像素重复上述过程。

1.1.2 锐化

图像锐化是补偿图像的轮廓,增强图像边缘及灰度跳变部分,使图像变得清晰。在计算机图像处理中可用微分运算和高通滤波器来实现图像锐化,即对空间域和频域进行锐化。

根据频率分析,任何一幅图像都是由决定图像反差的低频信号和决定图像细节的高频信号组成,所以频率域图像的锐化可以采用高通滤波器滤波,以加强图像所需的高频信号。

1.1.3 降采样和插值

对图片进行一次降采样,可以降低图片的数据量,减少计算量,然后进行插值恢复,保持图像关键信息的完整性。可以去噪滤波,消除背景噪声和预处理带来的部分噪声。

1.2 边缘检测

边缘检测是目标识别的前提,也是整个算法流程中非常重要的一环。边缘是指其周围像素灰度急剧变化的那些像素集合,它是图像最基本的特征。边缘存在于目标、背景和区域之间,所以,它是图像分割的重要依据。有许多方法用于边缘检测,一般分为基于查找和基于零穿越两类方法。基于查找方法通过寻找图像一阶导数中最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。

在边缘检测算法中,大多数情况下仅仅需要边缘检测器指出边缘出现在图像某一像素点附近,而没有必要指出边缘的精确位置或方向。本文只需要确定目标轮廓,不需要具置信息,步骤如下:

1.2.1 图像色彩通道提取

检测算子操作的都是单通道灰度图或二值图,传统做法是直接对源图像进行灰度化或者二值化处理,通过一定的阈值截断数据,这就丢失了不同色彩通道下的目标信息。不同拍照环境下,目标与背景的色彩区分度较大。比如目标是黄色,而背景是蓝色,综合进行二值化的结果是目标与背景的边界没那么明显。如果进行色彩通道提取然后再处理,在一种色彩通道下,能很好地将目标与背景分割开。

常见的图片只涉及 RGB 三原色,所以本法是每次提取3种颜色的一种,然后再进行边缘检测处理。

1.2.2 检测算子选取

常见的边缘检测算子有Roberts Cross算子、 Prewitt算子、 Sobel算子、 Canny算子等。其中,Sobel算子和Canny算子效果较好。

Sobel算子是一阶微分算子,它利用像素邻近区域的梯度值来计算1个像素的梯度,然后根据一定的阈值来取舍。Sobel 算子是算子模板,它由两个算子核构成,一个核对垂直边缘响应最大,另一个核对水平边缘响应最大。2个卷积的最大值作为该点的输出值。本文给出2个算子对同一图像的边缘检测效果。

图1 实物照片

从图1-图3可以看出,Canny算子对图像的边缘信息保留较好,出现的轮廓断裂或缺失情况小,而Sobel算子检测后的轮廓图很模糊,边缘信息丢失很厉害。本文检测算子采用Canny算子。

1.2.3 阈值自适应获取

Canny使用了滞后阈值。滞后阈值需要两个阈值――高阈值与低阈值。假设图像中的重要边缘都是连续曲线,这样就可以跟踪给定曲线中的模糊部分,避免将没有组成曲线的噪声像素当成边缘。从一个较大阈值开始,标识出比较确信的真实边缘,使用前面导出的方向信息,从这些真正的边缘开始在图像中跟踪整个边缘。跟踪时本文使用一个较小阈值,这样就可以跟踪曲线的模糊部分直至回到起点。

图2 Canny 算子效果图3 Sobel 算子效果

设置阈值过高可能会漏掉重要信息;阈值过低,枝节信息又变得很重要,很难给出一个适用于所有图像的通用阈值。传统方法是让用户根据经验手动输入两个阈值,这不但麻烦,而且同样的阈值对不同的图片检测效果不一样,缺乏泛化能力。本文提出了基于类间距的自适应阈值算法。该算法一般都能求出两个高低阈值,如果自适应获取失败,就采用最常用的经验值作为默认值。

1.3 目标识别

确定好目标轮廓线后就可对目标进行识别处理。识别之前,还应考虑实际情况对轮廓线进一步筛选。实际应用中目标物的尺寸在整个图片中属于大物体,前面步骤处理后,一些类似的小物体也保留下来,而这些需要剔除。剔除方法是面积筛选法,只有当闭合轮廓线面积满足某个面积阈值时才被保留。这样既排除了干扰,也加快了处理速度。

轮廓线由许多点组成,轮廓线保存的就是这些点,这些点存在着大量冗余。例如确定一个矩形,只需要4个点。对已经保留下来的轮廓线进行一次几何曲线拟合,用一个只包含最少点的几何曲线来表示原来的轮廓线,会大大降低数据量,减少存储空间,同时也加快了后续处理速度。

拟合算法采用的是RamerDouglasPeucker algorithm (RDP)算法。该算法递归地从原始点集选取两点作为线段,然后找离线段最远的点。如果这个点到线段的距离大于阈值就保留,否则剔除。阈值一般采用比较常用的经验值0.02。

目标识别方法很多,图像纹理特征、几何特征、模式分类器都可以作为识别依据,其中几何特征法针对规则目标的识别具有高效快捷、数据量小的优点。因此,本文采用几何特征法进行识别。

一张包含参照物和目标物的图片经过预处理、边缘检测、轮廓拾取等步骤,将参照物和目标同时进行识别,提高了处理效率。

采用了多通道的分别检测识别方法,同一个目标物会被多次识别,解决此问题的方法是去重:如果两次识别的目标物大小一样,特定点(如中心或左顶角)的坐标位置一样,那么就认为是同一物体,只保留一份即可。

1.3.1 参照物识别

(1)参照物选取。

参照物选取原则:①不能和待识别的矩形或立方体混淆干扰;②参照物自身应当易识别,且始终保持一致。基于上述考虑,本文选择圆(球)作为参照物。圆(球)的投影能保持很好的一致性。

(2)参照物几何特性。

对于圆来说,它的几何特性比较特殊,具有“1”的特性:任何小于1的几何图形都不是圆。考虑到实际情况,图片的拍摄质量、透视形变等原因,在实际识别过程中,阈值设置为0.8,当大于这个值时就判定为圆。

图片除了参照物的圆外还可能存在多个干扰圆,解决方法是确保参照物圆是所有圆里最大的一个。

1.3.2 平面目标(矩形)识别

平面目标识别主要是对一个照片里多个目标物(矩形)进行识别,这些矩形可以任意角度旋转,推荐最大个数不超过10个,否则会导致取景框装不下,需要将拉长距缩小,导致识别和计算精度下降。

识别过程:

①判断拟合曲线的顶点数是否为4;

②计算4个角的余弦值。 由于只知道4个顶点坐标,所以需要3个1组分别计算余弦值;

③筛选。 理想情况下,如果4个余弦值都为0,则代表目标物是一个矩形。考虑到实际情况下图片的拍摄质量和透视变形,4个余弦值只会与 0 很接近。解决方法是求4个余弦值的最大值,然后判断最大值是否小于阈值0.3。如果是,则目标物是一个矩形;

④去重。 如果同一个目标已被检测,则以后直接跳过,不更新矩形集合;

⑤排序。经过以上步骤,可以获得一个矩形集合,但是这个集合里可能还有一些边边角角的干扰小矩形被收录。这时可根据面积,对所有矩形进行排序,把面积大的用户感兴趣的目标列出来,其它的剔除或者跳过处理。

1.3.3 立体目标(长方体)识别

对于立体目标,从一个角度拍最多只能看到3个面,透视变形现象较严重。正对着相机的2个面会变形拉伸为梯形,而顶部的一个面则直接变形为菱形。基于以上考虑,需将识别规则进行修改:

(1)单个识别。一张图片里只能保留一个立体目标(长方体),且尽量居于图片正中央,这样可以减轻透视变形。

(2)判定拟合几何曲线的顶点是否为4 ,透视现象导致矩形退化为一般的四边形。

(3)去重。 同平面目标一样,立体目标也会由于多通道提取检测识别而出现多次检测,解决方法也是及时去重,保留一份结果。

(4)排序定位 。经过上述步骤识别出的目标,可能包含顶部已经废掉的菱形及其它四边形,此时需要对这些四边形进行一个基于面积的排序,只取面积最大的和次最大的两个,这就是本文后续计算尺寸需要的2个面。

1.4 透视矫正

物体成像过程是一个单点投影过程,该过程无可避免地产生了透视变形。透视变形最直接的效应是远小近大、平行线相交。落脚到目标物上,导致目标的几何形状发生改变,或水平或竖直方向进行了拉伸或缩小。如果仅仅为了识别出目标物,则可通过一定算法将变形后的目标识别出来,但是目标在像素空间的尺寸已经发生了改变;如果要进一步计算目标的实际尺寸,就必须对目标进行校正,才能保证结果的精确性。

3 结语

通过以上测试和结果分析,本文方法在大多数场景下

可以正确快捷地实现平面及立体目标物的识别和尺寸计算(见图4)。目标尺寸的计算结果精确到小数点后4位,识别和计算过程简捷,实现了开发简便快捷手机端APP的目标。

在预处理、检测识别、校正等关键步骤中,本文算法优化处理效果明显。即使在使用 JNI 的接口机制下,手机移动端的响应速度仍然较快。

参考文献:

[1] J R COZAR, N GUIL, E L ZAPATA.Detection of arbitrary planar shapes with 3D pose[M]. Elsevier Image and Vision Computing , 2001(19): 10571070 .

[2] DMITRY LAGUNOVSKY,SERGEY ABLAMEYKO. Fast line and rectangle detection by clustering and grouping[EB/OL].http:///chapter/10.1007%2F3540634606_156.

[3] ZI QIANG LI.Generalized hough transform:fast detection for hybrid multicircle and multirectangle[C].Proceedings of the 6th World Congress on Intelligent Control and Automation, Dalian,China,2006(6):2123.

[4] JUNG C R,SCHRAMM R. Rectangle detection based on a windowed hough transform[C].Computer Graphics and Image Processing, Proceedings, 2004.

[5] BAZIN J C,INSO KWEON,DEMONCEAUX, et al. Rectangle extraction in catadioptric images[C].Computer Vision, ICCV 2007, IEEE 11th International Conference,2007.

[6] GEETHA KIRAN ,MURALI.Automatic rectification of perspective distortion from a single image using plane homography[J]. International Journal on Computational Sciences & Applications (IJCSA), 2013(10):35.

[7] ZHENGYOU ZHANG. Weak perspective projection[Z].Microsoft Research, Redmond, WA, USA.

[8] DENNIS PARK,DEVA RAMANAN,CHARLESS FOWLKES.Multiresolution models for object detection[C].Lecture Notes in Computer Science,2010(6413):241254.

[9] 袁国栋, 秦开怀, 孙汉秋. 逆向投影点绘制算法[J]. 计算机辅助设计与图形学学报,2005 (2):25142521.

[10] 郑全新, 杨明强, 李文辉. 基于消失线的长方体表面透视变形校正方法[J]. 计算机工程,2013(5):162169.

[11] 苗立刚. 基于形态学的文档图像透视校正算法[J]. 光电子激光,2009(10):112116.

[12] 代勤, 王延杰, 韩广良. 基于改进霍夫变换和透视变换的透视图像矫正[J]. 中国液晶与显示,2012(6):2629.

[13] GARY BRADSKI ,ADRIAN KAEBLER. Learning OpenCV [M]. 中文版.北京:清华大学出版社,2009.

[14] Nash.Automatic perspective correction for quadrilateral objects[EB/OL].http:///tutorials/automaticperspectivecorrectionforquadrilateralobjects/.

上一篇:天森采 再好的商机还得认真严谨做扎实 下一篇:房地产商做鲜花饼全产业链开发