基于OpenCV的 桌面手机的尺寸测量

基于OpenCV的 桌面手机的尺寸测量

代码   见资源:基于OpenCV(C++)的桌面手机的尺寸测量

              网址:https://download.csdn.net/download/Aquamarine__/16689432

实验数据:https://download.csdn.net/download/Aquamarine__/16690457

目录

基于OpenCV的 桌面手机的尺寸测量

 

(一)摘要:

(二)关键词:

(三)引言:

(四)图片预处理:

1.1 图片的基本处理

1.2 图片的直线检测

1.3 图片矫正

(五)目标识别:

5.1 流程

5.2 尺寸识别

(六)结  论:

表6.1 实验结果

(七)参考文献(References):


(一)摘要:

在工业领域,物体的尺寸识别一直是一个需要耗费大量的人力和无力的事情。本文针对该问题,在前期对图像进行预处理,以减少噪声,改善图像的质量,使之更适合机器的处理,利用灰度化、二值化、高斯滤波、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]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1618563.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉OpenCV基础】实验四 尺寸测量

实验四 尺寸测量 计算机视觉OpenCV基础实验合辑(实验1234扩展) 资源下载地址: https://download.csdn.net/download/weixin_53403301 合辑:(加在下载地址后面) /87113581 讲义(包括理论、图例、…

opencv 物体尺寸测量

1 原图,已知左上角正方形的实际大小为 2cm 2 转为灰度图 高斯模糊 gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.GaussianBlur(gray, (9, 9), 0) 3、边缘检测 edged cv2.Canny(blur, 50, 100) 开运算 4、根据左上角参考物体,计算单位长度…

物体尺寸测量-matlab

本程序可以实现物体尺寸测量,比如工件 、零件、 树叶等物体的尺寸测量 ,诸如周长和面积的测量。采用两种方法实现,一种是链码的方法,一种是图像处理的方法,具体如下 方法一 采取链码的方法 图 展示了以树叶为例子 得到可周长和面积的显示系统 在这里采取了链码的方法计算…

opencv实战---物体尺寸测量

物体尺寸测量的思路是找一个确定尺寸的物体作为参照物,根据已知的计算未知物体尺寸。 如下图所示,绿色的板子尺寸为220*300(单位:毫米),通过程序计算白色纸片的长度。 目录 1、相关库 2、读图图片预处理…

python-opencv尺寸测量

原文:python-opencv尺寸测量_Krasjet_Yu.的博客-CSDN博客_python尺寸测量 首先,利用机器视觉来测定零件尺寸,我们能够直接得到的是图片的像素,要想获得尺寸大小,我们必须找到像素和实际尺寸间的关系。 我们在这里定义…

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part III

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022openCV4.8.0) Part III 用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022openCV4.8.0) Part I_松下J27的博客-CSDN博客 用Cmake build OpenCV后&…

理解HTTPS/TLS/SSL(一)基础概念+配置本地自签名证书

文章目录 没有HTTPS时的样子场景模拟WireShark的Capture Filter和Display Filter设置Capture Filter启动程序设置Display Filter过滤抓到的包 结论 关于为什么加密更简洁有力的回答对称加密和非对称加密和CA证书密钥交换对称加密非对称加密CA机构和证书如何解决客户端和CA机构之…

顺序表链表OJ题(1)——【LeetCode】

W...Y的主页 😊 代码仓库分享 💕 前言: 今天我们来回顾一下顺序表与链表,针对这一块我们也有许多OJ题目供大家参考。当我们学习完顺序表链表后避免不了一些习题的练习,这样才能巩固我们学习的内容。 话不多说&#xf…

PCI/PCIE总线的宏观理解

1、pcie总线协议实现的效果 (1)像访问内存一样去访问外设; (2)当建立好CPU地址空间到PCI/PCIE地址空间的映射关系后,程序访问CPU地址空间就可以达到访问PCI/PCIE地址空间的效果; 2、芯片地址空间 (1)32位的CPU寻址范围是4G,64位的…

MySQL执行更新的流程

一、加载缓存数据 引擎要执行更新语句的时候 ,比如对“id10”这一行数据,他其实会先将“id10”这一行数据看看是否在缓冲池里,如果不在的话,那么会直接从磁盘里加载到缓冲池里来,而且接着还会对这行记录加独占锁。 二…

Spring中Bean及@Bean的理解与new对象的区别

一直在纠结一个问题:new创建对象和用Bean创建对象有什么区别吗?为什么在spring中要使用Bean?Bean有什么作用? 一、Bean是啥 1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性&#x…

Spring Bean到底是什么?有什么用?

Spring Bean是什么?有什么用? 一、Bean到底是什么?二.怎么使用bean?三.Bean配置四.Bean的作用域 Bean在Spring和SpringMVC中随处可见,将这个概念内化很重要,下面分享一下我的想法: 一、Bean到底是什么? …

spring bean是什么

原文链接:https://www.awaimai.com/2596.html 歪麦博客 Spring有跟多概念,其中最基本的一个就是bean,那到底spring bean是什么? Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。 是否正确理解…

Spring Bean的作用域

在Spring中,bean作用域用于确定哪种类型的bean实例应该从Spring容器中返回给调用者。 目前Spring Bean的作用域或者说范围主要有五种。 作用域描述singleton在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范围的默认值…

Spring bean是什么?

Spring有跟多概念,其中最基本的一个就是bean,那到底spring bean是什么? Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。 是否正确理解 Bean 对于掌握和高效使用 Spring 框架至关重要。 遗憾的是&#xff0…

什么是bean

什么是bean? bean是计算机自动生成的类,bean是一个由Spring IoC容器实例化、组装和管理的对象。也就是说,bean并不是程序员编辑的,而是程序运行时,由spring通过反射生成的。在程序中,我们并不使用代码去ne…

Bean介绍

1.Bean 简介 在 Spring 中,所有被IOC 容器管理的,构成应用核心骨架的对象都被成为 Bean,它是由容器来实例化、装配、管理的对象。此外,它也是你应用中众多对象的一个。Bean 以及依赖的实例化和装配等工作全部是由容器中的配置元信…

Bean专题——什么是Bean?怎么注册、使用?生命周期?作用域?

1.什么是Bean? Bean是被实例的、组装的、及被Spring容器管理的Java对象。Spring容器会自动完成Bean对象的实例化。创建应用对象之间的协作关系的行为被称为:装配,这就是依赖注入的本质。 2.Spring三种装配方案 1.隐式的bean发现机制和自动…

【Spring第三篇】什么是Bean?

在Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。 我们总结如下: 1.bean是对象,一个或者多个不限定 2.bean由Spring中一个叫IoC的东西管理 3.我们的应用程序由一个…

大数据-玩转数据-Flink窗口函数

一、Flink窗口函数 前面指定了窗口的分配器, 接着我们需要来指定如何计算, 这事由window function来负责. 一旦窗口关闭, window function 去计算处理窗口中的每个元素. window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一种. Reduc…