基于OpenCV的 桌面手机的尺寸测量
代码 见资源:基于OpenCV(C++)的桌面手机的尺寸测量
网址:https://download.csdn.net/download/Aquamarine__/16689432
实验数据:https://download.csdn.net/download/Aquamarine__/16690457
目录
(一)摘要:
在工业领域,物体的尺寸识别一直是一个需要耗费大量的人力和无力的事情。本文针对该问题,在前期对图像进行预处理,以减少噪声,改善图像的质量,使之更适合机器的处理,利用灰度化、二值化、高斯滤波、Canny算子检测边缘以及膨胀腐蚀对不连续线段进行连接;再对处理后的图像进行直线的标定及交点的确定,以对其进行倾斜矫正,并利用四个点之间的关系,求取校正后的图像的位置,以实现对部分图像的透视矫正;使之在之后的目标识别测量中的结构更精确,在实现测量便捷的同时,也提高了检测的效率。
实验针对10组数据,进行了检测,其中有10%能够实现透视矫正,有20%能够实现倾斜校正,有80%能够粗略的测量手机的尺寸。实验结果表明,本文的预处理及所运用的识别方法行之有效,较传统方法相比,有参考物体的比照,使之计算量大大减少,能够快速便捷有效地检测手机的尺寸。
(二)关键词:
图像识别;边缘检测;物体尺寸测量
(三)引言:
在这个科技高速发展的时代,数字化和自动化已经成为一个不可避免的趋势,传统的手工测量不仅存在成本高、效率低的特点,而且主观性强,而基于机器视觉的检测方法可以很大程度上克服上述弊端。付泰等人(2016)采用从CAD图纸获取参数精确控制面阵CCD工业相机移动拍摄再结合运动参数和视觉检测数据进行在线精密尺寸测量[1]。赵明等人(2016)提出了基于多通道色彩下的边缘检测和目标识别方法,以及后期的以圆为参照的目标尺寸计算方法[2]。王爱珍(2019)研究了低对比度物体二维图像尺寸测量的算法,克服了低对比度物体在机器视觉中难以测量零件尺寸的不足[3]。
在图像处理方面,透视矫正、倾斜矫正是图片变形的较大的影响因素。代勤等人(2012)根据透视变换的原理提出了基于改进的霍夫变换和透视变换的透视图像矫正技术,并利用该算法根据摄像机的成像机理进行透视图像校正[4]。郑全新等人(2012)通过长方体表面对边平行的性质确定图像的消失线,得到图像采集系统的成像模型,参照消失线的位置在图像平面和长方体表面所在平面上分别建立平面直角坐标系,并计算两坐标系的对应关系,再按对应关系对图像进行插值处理的方式对图像进行矫正[5]。苗立刚(2009)根据文档图像的文本行和竖直笔画边界,提出了一种基于数学形态学的分层校正算法,可以有效地恢复文档图像的正面平行视图[6]。
本文运用图像处理技术,直接对图片中的手机进行目标识别、矫正,根据参照物硬币的大小计算得手机的尺寸大小。
(四)图片预处理:
1.1 图片的基本处理
1.1.1 图像的缩小
在实验中,当直接导入原图后,窗口不能完整的显示出图片,因此先利用函数对原图进行缩小处理。
1.1.2 图像的灰度化
使用颜色空间转换函数实现图片的RGB颜色转向HSV、HIS等颜色空间的转换。在该实验中,我们实现的是其向灰度图的转换。
1.1.3 图像的二值化
使用自适应阈值化操作,从二值化图像中,根据像素的邻域块的像素值分布来确定该像素位置上的二值化的阈值,分离目标区域和背景区域。为每一个像素点单独计算的阈值,即每个像素点的阈值都是不同的,就是将该像素点周围x*x区域内的像素加权平均,然后再减去一个常熟c,从而得到该点的阈值。
由于每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来决定的;并且亮度较高的图像区域的二值化阈值通常较高,亮度低的图像区域的二值化阈值则会相适应的变小;除此之外,不同亮度、对比度、纹理的局部图像区域将会拥有相对的局部二值化阈值的这些优点,都使得其的分割效果较传统的更好。
1.1.4 图像的滤波
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。图像滤波的目的有两个,一是抽出对象的特征作为图像识别的特征模式,二是为适应图像处理的要求,消除图像数字化时所混入的噪声。
图像平滑处理操作的方法有很多,常用的有方框滤波、均值滤波、高斯滤波、中值滤波和双边滤波五种。在该实验中,我们采用的是高斯滤波,其根据高斯函数的形状来选择权值的线性平滑滤波器,对于抑制服从正态分布的噪声非常有效,函数越平缓效果越好。
1.1.5 图像的边缘检测
边缘检测,是识别数字图像中亮度变化明显的点,在图像属性中的显著变化通常反映了属性的重要事件和变化;其可以大幅度地减少数据量,并剔除可认作是不相关的信息,保留图像重要的结构属性。在进行图像的边缘检测时,必须满足两个条件,一是能有效地抑制噪声,二是必须尽量精确确定边缘的位置。
在该实验中,我们使用Canny算子的边缘检测方法,其属于先平滑后求导数的方法。Canny算法中的双阈值是指:如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;如果边缘像素的梯度值小于低阈值,则会被抑制。而阈值的选择取决于给定输入图像的内容。Canny算法在对图像中物体边缘敏感性的同时,还可以抑制或消除噪声的影响。
图1 原图Ⅰ 图2 原图Ⅱ 图3 原图Ⅰ的Canny检测效果
1.1.6 图像的膨胀腐蚀
图像的膨胀腐蚀,主要是为了消除噪声、分割出独立的图像元素并在图像中连接相邻的元素、寻找图像中的明显的极大值区域或极小值区域、求出图像的梯度。膨胀与腐蚀是一对闭合函数,需要成对出现,属于开闭运算,膨胀是将线条加粗,腐蚀是将线条变细。都是针对高亮部分而言的。
在该实验中,我们先利用膨胀函数,再使用腐蚀函数,主要是用于线条不连续时,先加粗使之连续,再变细之后就连续了。这么做的原因是,在之后最小边框检测时,需要封闭连续的图像做检测。
1.2 图片的直线检测
1.2.1 霍夫线变换
霍夫线变换是一种用于对边缘二值图像来寻找直线的方法,其利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点,以把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题,即把检测整体特性转化为检测局部特性。
在该实验中,我们使用累计概率霍夫变换,因为其发现的直线条数更多,能检测大部分的直线线条,效果更好。
1.2.2 线的过滤与绘制
在上一步的霍夫线的变换中,几乎可以检测出图像中绝大多数的线条,但大多数线条是无用的,不能用于框定目标物体,因此需要省去。在该实验中,根据图片的目标物体的位置属性,定义了两个点,一个是图片的中点,一个是将图片平分为左上、左下、右上、右下四个部分并取左上部分的中心点作为第二个参考点。遍历上一步检测出的所有线条,以这两个参考点来判断上一步检测出的线条是否满足要求,并利用四个标志位,来判断目标物体的四个方向上是否已经存在线条来确定。
1.2.3 交点的计算
利用数学中两直线求交点的方法,定义一个计算两直线交点的函数,并将求取后的交点有序的存取于容器中,并构造变换矩阵,为下面的图片矫正打基础。
图4 原图Ⅰ过滤后的直线及其交点的绘制
1.3 图片矫正
1.3.1 倾斜校正
根据直线检测过滤后的线的交点,来求取需要转的角度的正切值,求取角度并将其转换为弧度值,设置图片的缩小的比例值,再利用仿射函数对图像进行变换。倾斜校正的效果图如图5所示:
图5 原图Ⅰ倾斜校正效果
1.3.2 透视校正
根据直线检测过滤后的交点,求取透视校正后的点的对于位置,按照其位置,对该图进行透视校正,再裁剪出有用的图像,以待后续使用。透视校正的效果图如图6所示:
图6 原图Ⅱ透视校正效果
(五)目标识别:
5.1 流程
本实验的识别流程如下图7所示:
图7 整体流程图
首先对图片进行预处理,包括图像灰度化、二值化、高斯滤波、Canny边缘检测、膨胀腐蚀等,再进行直线检测,判断是否需要透视校正,若需要则进行透视校正,并对矫正后的图像进行裁剪;若不需要则进行尺寸测量,再判断是否需要倾斜校正,若需要则根据四个点的坐标位置按照数学关系进行校正,若不需要则实验的测量识别结束。
5.2 尺寸识别
首先,是轮廓查找,利用函数查找轮廓,并遍历所有顶层轮廓,绘制出每个连接组件的颜色。然后再将轮廓按照从左到右的顺序进行排序,标注出圆的长款,以得到矩形的长宽,完成测量识别。识别的效果图如下图8、图9所示:
图8 原图Ⅰ检测效果图
(六)结 论:
手机的官方尺寸为:长157.4mm,宽74.8mm。该实验中的测试结果如表1所示:
图 | 1 | 2 | 3 | 4 | 5 |
宽 | 145.631 | 159.224 | 154.647 | 161.357 | 159.865 |
长 | 72.3404 | 73.5622 | 79.2543 | 73.1185 | 80.2577 |
宽比 | 7.477 | 1.159 | 1.749 | 2.514 | 1.566 |
长比 | 0.329 | 1.655 | 5.955 | 2.248 | 7.296 |
图 | 6 | 7 | 8 | 9 | 10 |
宽 | 167.343 | 171.713 | 164.886 | 156.398 | 152.133 |
长 | 77.7815 | 82.5563 | 78.5556 | 79.009 | 61.1844 |
宽比 | 6.317 | 9.093 | 4.756 | 0.637 | 3.346 |
占比 | 3.986 | 10.369 | 5.021 | 5.627 | 18.202 |
表6.1 实验结果
本实验对手机尺寸的识别进行了研究,通过图像预处理、直线检测与过滤、透视变换、倾斜变换等步骤,实现了对手机尺寸的倾斜校正、尺寸轮廓提取的处理。通过以上测试和结果分析,有80%的图片可以识别,而有30%的图片可以较为准确的识别;因此本实验的方法在大多数情况下可以有效的识别并测量手机的长宽,目标尺寸的计算结果精确到小数点后4位,识别和计算过程简捷。但在图片的透视校正部分的校正方法还有待进一步的研究,以可满足不同的复杂的环境下的测量需求。
(七)参考文献(References):
[1] Fu T, Wang G T, Cheng S H, Xiong F .2016. Size Sophisticated Detection Based on Machine Vision Complex Plane. Electromechanical engineering technology ,45(08)(付泰,王桂棠,程书豪,熊峰. 2016.基于机器视觉的复杂平面零件尺寸精密检测. 机电工程技术,45(08)) [DOI:10.3969/j.issn.1009-9492.2016.08.003]
[2] Zhao M. 2016. Research on Image-based Object Size Measurement Algorithm. Software Guide,48-52 (赵明.2016.基于图像的物体尺寸测量算法研究. 软件导刊 ,48-52)[DOI:10.11907/rjdk.162445]
[3] Wang A Z. 2019. Research on Two-dimensional Measurement Method of Low Contrast Object Based on Machine Vision. Xi'an University of Technology: 64(王爱珍. 2019. 基于机器视觉的低对比度物体二维尺寸测量方法的研究. 西安理工大学: 64 )
[4] Dai Q, Wang Y J, Han G L. 2012. Perspective Image Rectification Based on Improved Hough Transformation and Perspective Transformation. Chinese Journal of Liquid Crystals and Displays. 552-556 (代勤, 王延杰, 韩广良. 2012. 基于改进Hough变换和透视变换的透视图像矫正. 液晶与显示, 552-556) [DOI:1007-2780(2012)04-0552-05]
[5] Zheng Q X, Yang M Q, Li W H. 2012. Perspective Distortion Correction Method of Cuboid's Surface Based on Vanishing Line. Computer Engineering, 261-265 (郑全新, 杨明强, 李文辉. 2012. 基于消失线的长方体表面透视变形校正方法. 计算机工程, 261-265) [DOI:1000-3428(2013)05-0261-05]
[6] Miao L G. 2009. Perspective Correction Algorithm of Document Image Based on Morphology. Journal of Optoelectronics.Laser, 1262-1266 (苗立刚. 2009. 基于形态学的文档图像透视校正算法. 光电子.激光, 1262-1266 )[DOI:10.16136/j.joel.2009.09.017]