一种基于光幕测量的尺寸数据处理方法

文档序号:1950425 发布日期:2021-12-10 浏览:23次 >En<

阅读说明:本技术 一种基于光幕测量的尺寸数据处理方法 (Dimension data processing method based on light curtain measurement ) 是由 邓宇书 唐培贤 王志刚 唐小琦 周凌云 刘泽民 刘银辉 舒辉 刮国良 于 2021-08-03 设计创作,主要内容包括:本发明公开了一种基于光幕测量的尺寸数据处理方法,属于数据处理领域,所述方法包括如下步骤:设计数据读取模块和数据解析模块对光幕的数据帧进行获取与解析,设计图像化处理模块将光幕发送的数据帧最终转换为货物的初始图像,对货物的初始图像进行绘制与货物轮廓的划分,修正处理,通过绘制轮廓的最小包容矩形,计算出货物的尺寸数据。本发明从光幕数据的获取与光幕数据的图像化处理两方面进行预处理,之后通过货物图像的轮廓划分、轮廓修正等流程,完成基于最小包容矩形算法的图像尺寸数据计算,从而获得货物的尺寸数据。(The invention discloses a dimension data processing method based on light curtain measurement, which belongs to the field of data processing and comprises the following steps: the design data reading module and the data analysis module acquire and analyze the data frame of the light curtain, the design imaging processing module finally converts the data frame sent by the light curtain into an initial image of the goods, the initial image of the goods is drawn, the outline of the goods is divided, the initial image is corrected, and the size data of the goods is calculated through a minimum containing rectangle for drawing the outline. The invention carries out preprocessing from two aspects of acquisition of light curtain data and imaging processing of the light curtain data, and then completes image size data calculation based on a minimum inclusion rectangle algorithm through the flows of outline division, outline correction and the like of the cargo image, thereby obtaining the size data of the cargo.)

一种基于光幕测量的尺寸数据处理方法

技术领域

本发明涉及数据处理领域,尤其涉及一种基于光幕测量的尺寸数据处理方法。

背景技术

对射光幕是一种用于检查是否有物体进入了特定区域的检测设备,它广泛应用于工业生产领域的各种机械设备上。它的用途包括检测是否有人体进入或肢体伸入了危险区域,检测传送装置上的工件是否到达了预定位置,测量物体的外形尺寸等。对射光幕一般由一个发射器和一个接收器组成,两者对向安装在检测区域的两端。对射光幕中发射器内装有成排多个发射管,能发出多束探测光束,接收器内则装有多个的接收管,能不断接收发射管发出的探测光束。当有物体进入检测区域时,必将阻断部分探测光束的接收,接收器根据探测光束的阻断情况实现对物体的检测。现有的货物大小检测比较麻烦,检测误差比较大,因此需要设计一种高精度的光幕测量货物尺寸的数据处理方法。

发明内容

本发明的目的在于提供一种基于光幕测量的尺寸数据处理方法,解决背景技术中存在的技术问题。

为了实现上述目的,本发明采用的技术方案如下:

一种基于光幕测量的尺寸数据处理方法,所述方法包括如下步骤:

步骤1:设计数据读取模块和数据解析模块对光幕的数据帧进行获取与解析;

步骤2:设计图像化处理模块将光幕发送的数据帧最终转换为货物的初始图像,对货物的初始图像进行绘制与货物轮廓的划分,修正处理;

步骤3:通过绘制轮廓的最小包容矩形,计算出货物的尺寸数据。

进一步地,步骤1的具体过程为,通过设计读取周期的选取、数据帧的解析与发送以及补帧处理三个模块,实现光幕数据的获取。

进一步地,读取周期的选取的具体过程为:首先要保证读取周期小于或等于光幕的发送周期,由于发送周期并不固定,所以读取周期需要小于光幕最小发送周期,通过设定补帧条件来解决光幕可能出现的丢帧情况,当n次没有读到数据的时候,n为正整数,手动进行数据补帧处理,其中:

其中,Ts表示光幕发送周期,Tr表示设定读取周期,[]表示向下取整运算;为节省资源,Tr越大越好,故设定n取2,则Ts/2<Tr<Ts,光幕的实际发送周期为9.8ms-10.0ms,所以设定读取周期为8ms;

数据帧的解析与发送的具体过程为:

光幕将当前传感器的扫描状况以数据帧的方式进行打包,基于ModBus-RTU协议与工控机进行通讯,工控机接收到数据后将其存储到容器中,并周期性的读取数据,根据光幕数据帧的格式,对数据进行解析;

通过构建数据解析主函数、光幕数据解析器以及解析函数状态机来实现光幕数据的获取与解析,主函数负责与光幕建立通信,并调用解析器,解析器的作用是对当前收到的数据帧进行解析,并返回对应的值来表示数据解析的结果,状态机的作用是根据当前状态判断下一步的状态以及数据的传递;

其中解析器通过返回值的不同来判断当前数据帧的解析结果,返回值与其对应含义,根据返回值的不同,对当前获取的数据进行进一步的丢弃、报错和保存处理;

补帧处理的具体过程为:数据帧的数量影响平行于传送带方向的图形长度,数据帧丢失使该方向的长度减小,影响最终的计算结果,所以需要对数据帧进行丢帧处理,光幕发送周期约为10ms,设定读取周期为8ms,如果两次没有读取到数据帧,则可以判定为该数据帧丢失,进行补帧处理,通过补帧,基本保证数据帧的数量正确,保证平行于传送带方向上的精度。

进一步地,步骤2的具体过程为:通过设计图像的初始化模块、货物数据的图像绘制模块和图像的拉伸处理模块实现光幕数据的图像化处理。

进一步地,图像的初始化的具体过程为:通过OpenCV中的zeros函数进行图像的初始化,生成类型为纯黑色图像,图像的长度与光幕的光点数量相关,宽度与数据帧的数量上限相关;

采用光幕的光点数量为756,故图像的长度需大于等于756个像素,为方便计算,对其进行向上取整,设为800像素;数据帧的最大数量n与光幕扫描周期、传送带速度等有关,其关系式为:

nmax=(lmax/v)/T

其中,nmax为单个货物测量时所发送数据帧的最大数量,lmax为所允许测量的货物最大尺寸,为1500mm,v为传送带的速度,为0.4mm/ms,T为光幕的扫描周期,为10ms;

通过计算可得数据帧的最大数量为375帧,图像绘制时需保留10帧的余量,故图像宽度最小为385像素,向上取整为400像素,故初始图像的大小为800行×400列,颜色为纯黑色;

货物数据的绘制的具体过程为:光幕获取并解析数据帧后,将数据进行整理打包,并通过ZMQ的方式发送给上位机,接收到货物的数据包后,通过当前货物包含数据帧总数次绘制来实现数据的图像化,绘制的对象为上一步初始化的纯黑色图像,为保证图像的完整性与美观性,图像前5列不进行绘制,以水平方向为例,图像第i列的状态为:从第xi-6行开始到(xi-6+wi-6-1)行结束为白色,其余行为黑色,其中6≤i≤6+nr-1,nr为当前货物包含数据帧总数;

丢帧情况的处理过程为:由于传输不稳定原因,数据帧在发送至工控机的过程中会出现丢失的情况,在光幕数据的预处理中使用均为零的数据进行补帧处理,全零数据在进行数据图像化后所展示出来的效果为货物图像的其中一列全为黑色,对于少部分的丢帧情况,即货物的数据绘制图中只存在部分宽度小于3像素的黑线,采用闭运算的形态学变化进行图像的处理,即采用先膨胀,再腐蚀的方法,清除掉图片中存在的黑线,在OpenCV中,通过函数获取结构元素,设置3×1的矩形内核矩阵,设置函数类型为闭运算对图片进行处理,丢帧的情况通过闭运算的方式进行去除;

图像的拉伸处理的具体过程为:上面图像是以像素为单位进行绘制的,长度方向上每像素的距离表示光幕两光点之间的距离,宽度方向上每像素的距离表示每两个数据帧发送间隔期间货物的运动距离,两个距离并不一定相等,对图像进行一定比例的拉伸处理;

光幕两光点之间的距离为2.5mm,故长度方向上每像素所代表的距离l=2.5mm,宽度方向上的距离与光幕的扫描周期和传送带速度有关,关系如下所示:

w=T×v

其中,w表示宽度方向上每像素所代表的距离,T表示光幕的扫描周期,在9.8ms-10.0ms之间,v表示传送带的速度,为0.4m/s,宽度方向每像素代表的距离为3.92mm-4.00mm;

设定拉伸系数r=w/l,则r为1.568-1.6,经过实际调试,取拉伸系数为1.573的时候,计算的数据最接近实际数据,为保证产品能够对不同光幕进行兼容,软件中可以人工修改该参数;

为保证图片中每个像素在长度方向和宽度方向上所表示的距离一致,需要将每一帧在宽度方向上拉伸1.573倍,经过处理后,长度方向和宽度方向上每像素所表示的距离相等,为2.5mm。

进一步地,步骤3的具体过程为:通过对当前货物图像进行轮廓查询、轮廓划分和边界点查找的流程,计算出接近货物实际轮廓的边界点,并根据边界点绘制轮廓,轮廓修正,最后采用绘制其最小包容矩形,并以此计算出货物的尺寸数据。

进一步地,货物图像轮廓划分的具体过程为:轮廓查询,图像轮廓的信息使用向量来进行描述与处理,通过OpenCV中的findContours函数来进行货物轮廓的查询获取,由于所需要计算的是货物的最小包容矩形,所以只需要检测货物图像的最外围轮廓,对货物图像边界上所有连续的点进行保存,并设置所有的轮廓信息相对于原始图像对应点的偏移量为0;

通过新建一个向量容器,并将轮廓查询中获取的所有轮廓信息进行连接,从而将若干个轮廓组合为一个;

轮廓分段,设置一个矩形作为轮廓划分的基准,通过使用minAreaRect函数来绘制当前轮廓的最小包容斜矩形,并记录其四个顶点的坐标,之后将轮廓容器中的所有点分别与斜矩形的四个顶点进行距离的运算,计算出四个距离矩形顶点最近的轮廓点,以这四个点作为基准点将轮廓分割成四段,轮廓划分点与最小包容矩形的相对位置。

进一步地,货物图像轮廓修正的具体过程为:分段轮廓判别,通过轮廓划分将现有的轮廓划分为四段,判断四段轮廓对应的编号,并根据编号进行对应的处理,设定a、b、c、d为货物的四条边,设定A、B、C、D为货物的四个顶点,运动方向为x轴正方向,光幕挡光点编号由低到高的方向为y轴正方向,α为b边与x轴正方向的夹角,也就是货物的偏转角,根据货物的运行状况,先通过光幕的两条边为a、b边,由于x坐标最大的点为A点,则A点为先通过光幕的点,与A点相邻的两点中,规定y值大的点为D点,y值小的为B点,得到货物当前轮廓图四条边与四个角的对应编号;

偏转情况判别,由于c边与d边的处理方式与货物的偏转角度有关,当货物以不同的偏转角度通过光幕时,所采取的处理方式不同,以货物的运动方向为x轴正方向,x坐标最大的点为A点,b边与x轴的夹角为货物的偏转角度α,a、b两边的处理方式均为提取轮廓上离轮廓中心最远点,在偏转角度α<45°与α≥45°时,c、d边的情况有所区别,依据轮廓划分后生成的最小包容矩形,判别出当前货物的偏转情况,得到对应的轮廓处理方案;

滤波范围确定,在进行分段轮廓与偏转情况的判别后,根据轮廓处理方案对各边进行有效轮廓点的筛选,有效轮廓点的选取会影响最小包容矩形算法的结果,对于提取离中心点最远点的边,有效轮廓点包含所有最远点,且其他点的混入不影响实际计算结果,因此其滤波范围可以选取1倍轮廓点的间隔;

轮廓点筛选,确定滤波范围后,对当前轮廓的轮廓点进行筛选,以选择出有效的轮廓点,规定货物实际轮廓的四边标记为a、b、c、d,数据帧绘制轮廓进行划分后的四条边标记为e、f、g、h,其中a与e、b与f、c与g、d与h相互对应,以提取滤波范围内离中心最近点为例,分别计算出四条边中满足条件的轮廓点后,将其整合成一个新的完整轮廓,该轮廓与实际货物的轮廓相接近。

进一步地,最小包容矩形计算与显示优化的具体过程为:最小包容矩形计算,通过使用minAreaRect对该轮廓进行最小包容矩形的绘制与尺寸计算,则该矩形为所求的目标矩形,通过计算,可以求得该矩形的长和宽,如果当前图像为货物的俯视图,则使用求得的长与宽作为货物的长与宽,如果当前图像为货物的侧视图,则使用竖直方向最大值作为货物的高,由求得的尺寸数据可计算出货物的体积数据;

显示优化,依据数据帧进行绘制的货物图像存在锯齿,与货物的实际情况不符,使显示图像接近于实际图像,采取均值滤波后二值化的处理方式来对货物图像的边界进行一定的平滑处理,通过采用OpenCV中的blur函数,设置内核矩阵的大小为11×11,对图像进行均值滤波处理;

设图像某点的像素值为g(x,y),其进行均值滤波处理后的像素值为f(x,y),则其满足公式:

其中,为邻域算子,S为以当前点为中心,边长为11的点区域,由于内核矩阵的大小为11×11,即M=11×11=121,计算出当前图像中所有点的像素值;

接着对图片进行二值化处理,目标图像具有黑色与白色即可,采用固定阈值的二值化处理方法进行处理;

通过OpenCV的threshold函数,设置固定阈值为127,二值化方法设置为cv::THRESH_BINARY,该方法表示在图像中大于阈值的部分被置为255,否则被置为0,其函数表达式如下式所示,

其中N为全局阈值,即N=127,x为图像的像素值,g(x)为阈值化后的像素值,将图像转换为只有0与255的二值化图像。

本发明由于采用了上述技术方案,具有以下有益效果:

本发明从光幕数据的获取与光幕数据的图像化处理两方面进行预处理,之后通过货物图像的轮廓划分、轮廓修正等流程,完成基于最小包容矩形算法的图像尺寸数据计算,从而获得货物的尺寸数据,实现高精度识别。

附图说明

图1是本发明光幕数据传递流程图;

图2是本发明数据预处理流程图;

图3是本发明光幕数据的获取与解析活动图;

图4是本发明补帧流程图;

图5是本发明某货物数据绘制后的示例图;

图6是本发明存在丢帧情况的货物数据绘制图;

图7是本发明闭运算后的货物数据绘制图;

图8是本发明拉伸前后的货物数据绘制图;

图9是本发明货物实际图像与数据帧示意图;

图10是本发明货物图像处理流程图;

图11是本发明货物轮廓信息示意图;

图12是本发明轮廓的最小包容矩形与分割点示意图;

图13是本发明轮廓修正处理流程图;

图14是本发明货物图像各信息编号示意图;

图15是本发明不同偏转角度下货物实际图与数据帧绘制图;

图16是本发明轮廓点筛选流程图;

图17是本发明均值滤波前后图像某点像素值变化示意图;

图18是本发明显示优化前中后货物图;

图19是本发明展示界面示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。

如图1-2所示,一种基于光幕测量的尺寸数据处理方法,该方法基于ModBus协议,对光幕的数据帧进行获取与解析,并根据解析数据与光幕参数,采用OpenCV进行货物图像的绘制与货物轮廓的划分、修正处理,通过绘制轮廓的最小包容矩形,计算出货物的尺寸数据。光幕数据的传递流程如图1所示。经过光幕数据的传递、预处理以及图像处理等流程,利用原始数据帧计算出当前货物的尺寸数据。

步骤1:光幕数据的预处理,通过光幕进行数据采集,将其以数据帧的形式发送至工控机,并由工控机进行解析以及数据处理,尺寸数据并不能直接从处理后的数据中获取,需要将数据通过ZMQ的方式传至上位机并进行一定的处理,使其转换为可用算法处理的图像表达形式,从数据帧到初始图像的这个过程为光幕数据的预处理。

由图2所示,通过设计数据读取模块、数据解析模块与图像化处理模块来实现光幕数据的预处理,将光幕发送的数据帧最终转换为货物的初始图像。

步骤1.1:光幕数据的获取与补帧处理,通过设计读取周期的选取、数据帧的解析与发送以及补帧处理三个模块,实现光幕数据的获取。

(1)读取周期的选取

为保证读取到光幕发送的所有数据帧,首先要保证读取周期小于或等于光幕的发送周期,但由于发送周期并不固定,所以读取周期需要小于光幕最小发送周期。

另外,通过设定补帧条件来解决光幕可能出现的丢帧情况。当n次没有读到数据的时候,需要手动进行数据补帧处理。其中:

式1中,Ts表示光幕发送周期,Tr表示设定读取周期,[]表示向下取整运算。

为节省资源,Tr需要尽可能的大,故设定n取2,则Ts/2<Tr<Ts。光幕的实际发送周期为9.8ms-10.0ms,所以可以设定读取周期为8ms。

(2)数据帧的解析与发送

光幕将当前传感器的扫描状况以数据帧的方式进行打包,基于ModBus-RTU协议与工控机进行通讯。数据帧的格式如表1所示:

表1光幕数据帧格式表

工控机接收到数据后将其存储到容器中,并周期性的读取数据,根据光幕数据帧的格式,对数据进行解析。

通过构建数据解析主函数、光幕数据解析器以及解析函数状态机来实现光幕数据的获取与解析。主函数负责与光幕建立通信,并调用解析器;解析器的作用是对当前收到的数据帧进行解析,并返回对应的值来表示数据解析的结果;状态机的作用是根据当前状态判断下一步的状态以及数据的传递。光幕数据的获取与解析活动图如图3所示。

其中解析器可以通过返回值的不同来判断当前数据帧的解析结果,返回值与其对应含义如表2所示。

表2解析器返回值及其含义

根据返回值的不同,对当前获取的数据进行进一步的丢弃、报错、保存等处理。

(3)补帧处理

数据帧的数量会影响平行于传送带方向的图形长度,数据帧丢失会使该方向的长度减小,从而影响最终的计算结果,所以需要对数据帧进行丢帧处理。

光幕发送周期约为10ms,设定读取周期为8ms,如果两次没有读取到数据帧,则可以判定为该数据帧丢失,需要进行补帧处理。补帧的处理流程如图4所示。通过补帧,可以基本保证数据帧的数量正确,从而保证了平行于传送带方向上的精度。

步骤2:光幕数据的图像化处理,通过设计图像的初始化、货物数据的图像绘制以及图像的拉伸处理三个部分,实现了光幕数据的图像化处理,为后续尺寸计算提供了基础。

(1)图像的初始化

通过OpenCV中的zeros函数进行图像的初始化,生成类型为cv::Mat的纯黑色图像。图像的长度与光幕的光点数量相关,宽度与数据帧的数量上限相关。

本文所采用光幕的光点数量为756,故图像的长度需大于等于756个像素,为方便计算,对其进行向上取整,设为800像素;数据帧的最大数量n与光幕扫描周期、传送带速度等有关,其关系式为:

nmax=(lmax/v)/T (2)

其中,nmax为单个货物测量时所发送数据帧的最大数量,lmax为所允许测量的货物最大尺寸,为1500mm,v为传送带的速度,为0.4mm/ms,T为光幕的扫描周期,为10ms。

通过计算,可得数据帧的最大数量为375帧,图像绘制时需保留10帧的余量,故图像宽度最小为385像素,向上取整为400像素。

故初始图像的大小为800行×400列,颜色为纯黑色。

(2)货物数据的绘制

光幕获取并解析数据帧后,将数据进行整理打包,并通过ZMQ的方式发送给上位机,发送的内容如表3所示。

表3 ZMQ发送数据符号及其含义

接收到货物的数据包后,通过nr次绘制来实现数据的图像化,绘制的对象为上一步初始化的cv::Mat图像。为保证图像的完整性与美观性,图像前5列不进行绘制。以水平方向为例,图像第i(6≤i≤6+nr-1)列的状态为:从第xi-6行开始到(xi-6+wi-6-1)行结束为白色,其余行为黑色。绘制后的图像示例如图5所示。

(3)小范围丢帧情况的处理

由于传输不稳定等原因,数据帧在发送至工控机的过程中可能会出现丢失的情况,需要在光幕数据的预处理中使用均为零的数据进行补帧处理。全零数据在进行数据图像化后所展示出来的效果为货物图像的其中一列全为黑色,如图6所示,(a)为只有一帧丢失,(b)为多帧丢失。

对于少部分的丢帧情况,即货物的数据绘制图中只存在少量的、宽度小于3像素的黑线,可以采用闭运算的形态学变化进行图像的处理,即采用先膨胀,再腐蚀的方法,清除掉图片中存在的黑线。

在OpenCV中,通过getStructuringElement函数获取结构元素,在此处需要的是3×1的矩形内核矩阵,设置morphologyEx函数类型为闭运算对图片进行处理。处理后的图片如图7所示,(a)为只有一帧丢失处理图,(b)为多帧丢失处理图。

可以看出,少量丢帧的情况可以通过闭运算的方式进行去除,大量帧丢失的情况依旧存在。

(4)图像的拉伸处理

上面图像是以像素为单位进行绘制的,但长度方向上每像素的距离表示光幕两光点之间的距离,宽度方向上每像素的距离表示每两个数据帧发送间隔期间货物的运动距离,这两个距离并不一定相等,因此需要对图像进行一定比例的拉伸处理。

光幕两光点之间的距离为2.5mm,故长度方向上每像素所代表的距离l=2.5mm。

宽度方向上的距离与光幕的扫描周期和传送带速度有关,关系如式3所示:

w=T×v (3)

其中,w表示宽度方向上每像素所代表的距离,T表示光幕的扫描周期,在9.8ms-10.0ms之间,v表示传送带的速度,为0.4m/s,所以宽度方向每像素代表的距离为3.92mm-4.00mm。

设定拉伸系数r=w/l,则r为1.568-1.6,经过实际调试,取拉伸系数为1.573的时候,计算的数据最接近实际数据。为保证产品能够对不同光幕进行兼容,软件中可以人工修改该参数。

为保证图片中每个像素在长度方向和宽度方向上所表示的距离一致,需要将每一帧在宽度方向上拉伸1.573倍,经过处理后,长度方向和宽度方向上每像素所表示的距离相等,为2.5mm。处理后的图片如图8所示,(a)为拉伸前的图,(b)为拉伸后的图。

步骤3:基于最小包容矩形法的图形面积分析与计算。

货物的实际图像与采集到的数据帧绘制图像示意如图9,其中红色虚线框为货物的实际形状,实线条形框为数据帧绘制图像被拉伸后的情况,a、b、c、d为货物实际形状的四条边。由图可知,货物的实际图形与绘制图像有一定的差距,所以需要依靠算法找到接近实际图形的轮廓点,从而计算出最接近货物实际图形的最小包容矩形。

通过对当前货物图像进行轮廓查询、轮廓划分以及边界点查找等流程,计算出接近货物实际轮廓的边界点,并根据这些边界点绘制轮廓,最后采用算法绘制其最小包容矩形,并以此计算出货物的尺寸数据。

货物图像的处理流程如图10所示。通过对现有的货物图像进行轮廓修正,可以得到接近于货物实际形状的轮廓图,并根据该轮廓图进行最小包容矩形算法的求解,计算出货物轮廓的尺寸数据,最后对图像进行显示优化处理,使其更为美观。

步骤3.1:货物图像轮廓划分:

本文通过轮廓查询、轮廓划分以及边界点查询三个步骤实现轮廓修正,将数据帧绘制的货物图像修正为接近于货物实际轮廓的图像,为计算其最小包容矩形奠定基础。

(1)轮廓查询

图像轮廓的信息可以使用向量来进行描述与处理,通过OpenCV中的findContours函数来进行货物轮廓的查询获取。由于所需要计算的是货物的最小包容矩形,所以只需要检测货物图像的最外围轮廓。通过设置findContours的参数为CV_RETR_EXTERNAL与cv::CHAIN_APPROX_NONE,对货物图像边界上所有连续的点进行保存,并设置所有的轮廓信息相对于原始图像对应点的偏移量为0。所获得的轮廓信息如图11所示,(a)为正常情况轮廓图(反色),(b)多帧丢失轮廓图(反色)。

小范围的光幕丢帧问题可以通过图像的预处理中对图片进行闭运算的形态学变换进行处理,但考虑到可能会出现大范围数据帧丢失的情况,这时图像会显示为多个不连续的图形,且各个图形之间的间隔较大,预处理中的形态学变换不能对其间隔进行很好的消除。

在这种状况下,轮廓查询会查询到多个轮廓,但由于这些轮廓都是货物图像的一部分,所以需要将其进行组合。通过新建一个向量容器,并将轮廓查询中获取的所有轮廓信息进行连接,从而将多个轮廓组合为一个。

(2)轮廓分段

经过上一步的轮廓组合后,得到一个包含整体轮廓信息的向量容器,此时的轮廓很可能不是规范的矩形,为了计算出包容货物的最小矩形,需要将当前轮廓数据进行划分处理。

首先需要一个矩形作为轮廓划分的基准。通过使用minAreaRect函数来绘制当前轮廓的最小包容斜矩形,并记录其四个顶点的坐标,之后将轮廓容器中的所有点分别与斜矩形的四个顶点进行距离的运算,计算出四个距离矩形顶点最近的轮廓点,以这四个点作为基准点将轮廓分割成四段。轮廓划分点与最小包容矩形的相对位置示意图如图12所示,(a)丢帧情况最小包容斜矩形示意图,(b)丢帧情况轮廓划分点示意图(反色),(c)丢帧情况综合示意图。

步骤3.2:货物图像轮廓修正,由图11所示,货物的轮廓构成与货物的运动方向有关。以运动方向为前,则前面的a、b两条边需要取远离货物中心的轮廓点,后面的c、d边需要根据偏转情况确定处理方案。货物的实际轮廓与数据帧绘制出来的轮廓有一定的差距,因此需要通过一定的算法流程实现轮廓的修正。轮廓修正的处理流程图如图13所示。

由于c、d边轮廓点与实际轮廓的关系与货物最小包容矩形的偏转情况相关,所以首先需要进行偏转情况的判别,选定当前所需要采取的拟合方案,接着对轮廓划分中生成的四条边进行判定,标记对应的a、b、c、d边以及所需要采取的滤波方案,之后对各边进行对应的滤波处理,筛选出符合条件的路径点,即为接近货物实际轮廓的路径点。

(1)分段轮廓判别

通过轮廓划分将现有的轮廓划分为四段,判断四段轮廓对应的编号,并根据编号进行对应的处理。

其中,a、b、c、d为货物的四条边,A、B、C、D为货物的四个顶点,运动方向为x轴正方向,光幕挡光点编号由低到高的方向为y轴正方向,α为b边与x轴正方向的夹角,也就是货物的偏转角。

根据货物的运行状况,先通过光幕的两条边为a、b边。由于x坐标最大的点为A点,则A点为先通过光幕的点,与A点相邻的两点中,规定y值大的点为D点,y值小的为B点。依据此方法,可以得到货物当前轮廓图四条边与四个角的对应编号。

(2)偏转情况判别

由于c边与d边的处理方式与货物的偏转角度有关,当货物以不同的偏转角度通过光幕时,所采取的处理方式不同。

以货物的运动方向为x轴正方向,x坐标最大的点为A点,b边与x轴的夹角为货物的偏转角度α,根据图15,可以看出a、b两边的处理方式均为提取轮廓上离轮廓中心最远点,在偏转角度α<45°与α≥45°时,c、d边的情况有所区别,将偏转情况与轮廓各边的处理方式总结如表4所示。

表4货物偏转角度与c、d边处理方案表

依据轮廓划分后生成的最小包容矩形,可以判别出当前货物的偏转情况,从而依据表4.4选取对应的轮廓处理方式。

(3)滤波范围确定

在进行分段轮廓与偏转情况的判别后,需要按照表4.4的方案对各边进行有效轮廓点的筛选。

有效轮廓点的选取会影响最小包容矩形算法的结果,对于需要提取离中心点最远点的边,有效轮廓点需要尽可能包含所有最远点,且其他点的混入不影响实际计算结果,因此其滤波范围可以选取的小一些,为1倍轮廓点的间隔。

而对于需要提取离中心点最近点的边,其他点对最终计算结果影响较大,所以有效轮廓点需要尽可能少的包含其他点,因此其滤波范围可以选取的大一些,为1.5-2倍轮廓点的间隔。

(4)轮廓点筛选

确定了滤波范围后,对当前轮廓的轮廓点进行筛选,以选择出有效的轮廓点。规定货物实际轮廓的四边标记为a、b、c、d,数据帧绘制轮廓进行划分后的四条边标记为e、f、g、h,其中a与e、b与f、c与g、d与h相互对应。以提取滤波范围内离中心最近点为例,设计轮廓点的筛选流程如图16所示。

分别计算出四条边中满足条件的轮廓点后,将其整合成一个新的完整轮廓,该轮廓与实际货物的轮廓相接近。

步骤3.3:最小包容矩形计算与显示优化,根据轮廓修正后的结果,可以计算出其最小包容矩形,并依次计算出其尺寸数据、偏转角度、体积数据等,之后对其进行均值滤波与二值化的优化处理,提高图像显示的美观性。

(1)最小包容矩形计算

通过使用minAreaRect对该轮廓进行最小包容矩形的绘制与尺寸计算,则该矩形为所求的目标矩形。通过计算,可以求得该矩形的长和宽,如果当前图像为货物的俯视图,则使用求得的长与宽作为货物的长与宽,如果当前图像为货物的侧视图,则使用竖直方向最大值作为货物的高。由求得的尺寸数据可计算出货物的体积数据。

(2)显示优化

依据数据帧进行绘制的货物图像存在锯齿,这与货物的实际情况不符,为使显示图像接近于实际图像,可以采取均值滤波后二值化的处理方式来对货物图像的边界进行一定的平滑处理。

均值滤波是对目标像素及周边像素取平均值后再填回目标像素来实现滤波目的的方法。以内核矩阵大小为3×3为例,原图像与处理后图像某点的像素值变化如图17所示。

通过采用OpenCV中的blur函数,设置内核矩阵的大小为11×11,对图像进行均值滤波处理。

设图像某点的像素值为g(x,y),其进行均值滤波处理后的像素值为f(x,y),则其满足公式:

其中,为邻域算子,S为以当前点为中心,边长为11的点区域。由于内核矩阵的大小为11×11,即M=11×11=121。根据公式4,可以计算出当前图像中所有点的像素值。

接着需要对图片进行二值化处理。目标图像只需要具有黑色与白色即可,考虑到处理时间等问题,采用固定阈值的二值化处理方法进行处理,阈值设置可以适当的大。

通过OpenCV的threshold函数,设置固定阈值为127,二值化方法设置为cv::THRESH_BINARY,该方法表示在图像中大于阈值的部分被置为255,否则被置为0,其函数表达式如4-5所示。

其中N为全局阈值,即N=127,x为图像的像素值,g(x)为阈值化后的像素值。通过该函数,将图像转换为只有0与255的二值化图像,转换后的图像如图18所示,(a)为原图,(b)为均值滤波处理图,(c)为二值化处理图。

为使货物信息更加直观,可以将货物当前视图的尺寸数据以及图像的中心点、包容矩形等信息打印在当前视图上,打印结果示意如图19所示。

其中,黄色边框为最小包容正矩形,绿色边框为最小包容矩形,绿色点为最小包容矩形中心点,红色点为货物轮廓划分点,L与W分别为当前货物图像最小包容矩形的长与宽。

基于双光幕测量模块获得货物的挡光数据帧,并通过数据的预处理与基于最小包容矩形算法的图形处理,计算出货物的各个尺寸数据以及体积数据。首先从光幕数据的获取与光幕数据的图像化处理两方面进行预处理,之后通过货物图像的轮廓划分、轮廓修正等流程,完成基于最小包容矩形算法的图像尺寸数据计算,从而获得货物的尺寸数据。在处理过程中,也考虑了例如数据丢帧等特殊情况的处理。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种在线液压同步升降称重方法、系统及其存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!