本发明涉及图像识别领域,特别是涉及一种刚性悬挂链的汽车仪表板识别装置及方法。
背景技术:
目前,各大汽车内饰的生产厂家往往采用刚性悬挂链的方式来存放和管理已经完成生产装配但并未出库的成品汽车仪表板。刚性悬挂链配合已经设置好的轨道以及电机,能够方便的带动产品进行移动。在产品出库前会对产品的进行分类统计,目前主要采用人工、光电开关或者光电开关结合扫码器三种方法对悬挂链上仪表板的所属类型、颜色以及对应的数量进行统计。但是方法一存在数据更新实时性差、人工工作量大的缺陷;方法二存在仅判断悬挂链有无悬挂产品,无法进一步识别所述类型以及颜色信息的缺陷;方法三存在包含产品颜色、类型等信息的条码或二维码必须粘贴于特定位置,并且扫码器需要与条码或二维码对齐的,增加生产工序同时增大悬挂链的悬挂难度。
技术实现要素:
本发明的目的是解决现有技术的不足,提供一种刚性悬挂链的汽车仪表板识别装置及方法,结构简单,使用方便。
一种刚性悬挂链的汽车仪表板识别装置,包括支撑架、面光源、扫码器、相机、光电开关、工控机以及电气控制柜;所述面光源、扫码器、相机、光电开关设置于支撑架;所述工控机与相机以及库存管理系统电性连接。
进一步的,所述支撑架包括横梁、竖杆以及横杆;所述竖杆共两根,两根竖杆平行设置于检测点的两侧;所述横梁设置于竖杆之间;所述面光源共四个,两个为一组,分别设置于两根竖杆上;所述横杆设置于同一根竖杆的两个面光源之间;所述相机设置于横杆的两端,相机共四个;所述光电开关设置于横梁,光电开关与横梁之间设置直杆一;所述扫码器设置于竖杆上,扫码器与竖杆之间设置直杆二;所述光电开关与扫码器分别设置于挂具的两侧。
进一步的,所述横杆与竖杆以及横梁垂直,横杆的中间部位与竖杆固定连接;所述相机包括采集产品类型的相机以及采集产品颜色的相机;四个相机为顶点构成四边形,同一条边上的相机的种类不同,相同的相机设置于对角线上。
一种刚性悬挂链的汽车仪表板识别方法,所述方法基于上述一种刚性悬挂链的汽车仪表板识别装置,该方法包括人机交互操作;所述人机交互操作包括如下按步骤:
步骤一:接收开机指令打开软件,系统进入初始界面;
步骤二:系统接收初始化命令,进入初始化界面;
步骤三:系统接收参数设置命令,进入参数设置界面,接收参数数据,接收确定按钮,返回初始化界面;
步骤四:系统接收检测命令,进入检测流程;
步骤五:系统接收退出命令,关闭软件。
进一步的,所述检测流程的步骤包括:
步骤101:光电开关被经过支撑架的挂具触发,光电开关唤醒四个相机分别采集一帧图像,相机将采集的图像传输至工控机;读码器读取经过支撑架的挂具的序号信息传输值工控机;
步骤102:工控机识别相机发送的图像,首先对图像进行空挂检测;若为空挂,则工控机汇总挂具序号、挂具图像,将汇总内容上传库存管理系统,该挂具的识别过程结束;若不为空挂,则进行单挂检测;
步骤103:若挂具为单挂,则进一步判别挂具是否为左挂;若挂具为满挂,则保存满挂的判别结果并进行产品类型检测以及产品颜色检测,并进入步骤105;
步骤104:若进一步判断为左挂,则保存左挂的判别结果并进行产品类型检测以及产品颜色检测,识别左侧产品的类型以及颜色;若否,则为右挂,保存右挂判别结果并进行产品类型检测以及产品颜色检测,识别右侧产品的类型以及颜色;
步骤105:完成检测后工控机汇总挂具序号、挂具图像、产品的类型以及颜色,上传给库存管理系统,该挂具的识别过程结束;
若检测流程中工控机未识别图像,则系统会将未识别的产品图像拷贝一份到未识别文件夹。
进一步的,所述空挂检测的检测步骤包括:
步骤201:根据提取的坐标位置信息提取产品类型检测区域roi;
步骤202:将roi转为灰度图;
步骤203:循环遍历roi中所有像素值并且统计像素值中大于设定灰度值的像素点个数n;
步骤204:判断个数n是否大于总像素个数的设定值;
步骤205:结束该检测流程。
进一步的,所述单挂检测的检测步骤包括:
步骤301:首先对产品类型检测区域roi进行均值滤波;接着进行sober边缘检测;再做阈值化处理;最后通过霍夫变换,找出并保存斜率大于设定阈值的直线段;
步骤302:遍历保存的直线段集合,计算并找出最长的直线段,判断其长度是否大于设定阈值;若是,则判断为该侧没有挂产品;若否,则判断为该侧有挂产品;
步骤303:结束该检测流程。
进一步的,所述产品类型检测的流程包括对转化为灰度图的roi区域提取特征点,提取特征点的步骤包括:
步骤401:从roi中选取一点p,以p为圆心做一个半径r为3个像素点的圆;如果存在连续n个像素点与p点的灰度值之差的绝对值大于设定值t,则认为p为特征点;
步骤402:使用id3算法选择像素增益最大的像素作为判断特征点的依据,生成决策树,将每个特征点圆周上的像素点作为特征输入决策树中,根据特征筛选出最优的特征点;
步骤403:构建一个打分函数v;比较任意两个相邻的特征点的v值,删除v值较低的特征点;
步骤404:通过矩来计算特征点以r为半径范围内的质心,以特征点坐标到质心形成的向量作为该特征点的方向;其中矩的定义如下所示:
mpq=∑x,y∈rxpyqi(x,y)(1)
其中,mpq表示关于p+q阶几何矩,i(x,y)为图像灰度的表达式;该矩的质心c为:
其中,m00表示p=0,q=0时的零阶几何矩,类似的,m10表示p=1,q=0时的一阶几何矩,m01表示p=0,q=1时的一阶几何矩;
以特征点的坐标作为原点,则向量的角度即为该特征点的方向;其中向量的角度θ的计算公式如下:
所述步骤401中首先检查该圆上1、9位置上的灰度值,若这两个位置上至少存在一个像素点的灰度值与p点的灰度值之差满足差的绝对值大于t,则继续检查该圆上5、13位置上的灰度值;若1、9位置上的像素点的灰度值与p点的灰度值之差都不满足差的绝对值都大于t,则判断该点为非特征点;
所述步骤403中所述打分函数v定义为像素点p与周围16个像素点灰度值差值的绝对值之和。
进一步的,所述产品类型检测的流程还包括特征点的描述以及特征匹配;所述特征点描述采用rbrief算法,具体的描述步骤包括:
步骤501:对每个特征点选取以特征点为中心的31*31领域,每个领域选择5*5子领域的平均灰度值替代5*5子领域中心的像素点的灰度值进行比对,得到n=(31-5+1)*(31-5+1)个子领域,一共有m=c(n,2)个点对,c(n,2)表示排列组合的数值,将每个领域的点对组成矩阵q,矩阵q的每列向量(ai,bi),1≤i≤m表示一个点对:
使用特征点的方向θ对矩阵q进行旋转,得到旋转后的矩阵qθ,其中qθ=rθq;rθ表示为:
根据式(6),对矩阵qθ中的每个点进行灰度值比较,
其中,p(a)表示某个点对中的点a处的灰度值,p(b)表示某个点对中的点b处的灰度值,τ(p;a,b)表示将点对的灰度值转化为二进制值;
对于m个点对,能够得到长度为m的初始二值串描述子fm(p):
fm(p)=∑1≤i≤m2i-1τ(p;ai,bi)(7)
结合特征点的方向,能够得到具有方向的描述子gm(p,θ):
gm(p,θ)=fm(p)|(ai,bi)∈qθ(8)
步骤502:从m个点对中筛选出k个点对,所述筛选的方法包括如下步骤:
步骤5021:重组所有特征点以及对应的初始二值串得到矩阵w,行数为提取到的特征点点数,每行是每个特征点对应的初始二值串描述子fm(p);
步骤5022:对重组后的矩阵w,按照每列均值与0.5的绝对差从小到大排序,得到矩阵t;
步骤5023:贪心选择:
把矩阵t中第一列放进矩阵u中,并把该列从矩阵t中移除,所述矩阵u一开始为空;
依次选择矩阵t的每列,与矩阵u中所有的列进行比较,如果相似度超过设定阈值,忽略,进行下一列,否则将矩阵t中的该列放进矩阵u中,并把该列从矩阵t中移除;
重复以上过程直到选择k个列;如若遍历矩阵t,得到的矩阵u中不足k个列,则降低阈值直到矩阵u满足k个列;
所述特征匹配的方法包括:计算两幅图像特征点间的汉明距离,得到特征点间的相似性距离,在待匹配图像中查找与模板图像汉明距离最近和次近的特征点,将最近距离与次近距离的比值和设定阈值比较,如果比值小于阈值,则该点为匹配点;找出待匹配图像中所有匹配点并统计匹配点数量;
根据特征点的匹配结果,判断产品所属类型或未知;若最大匹配点数量大于设定阈值,则判为匹配成功,该产品所属类型判为某类型;当最大的匹配点数量不大于设定阈值,则判为匹配失败,该产品所属类型判为未知。
进一步的,所述产品颜色检测的步骤包括:
步骤601:提取产品颜色检测区域roi;
步骤602:对roi进行颜色空间转换,转换公式如下:
max=max(r,g,b);
min=min(r,g,b);
v=max/255;
如果max≠0,则s=(max-min)/max;
如果max=0,则s=0;
如果r=max,则h=(g-b)/(max-min)*60
如果g=max,则h=120+(b-r)/(max-min)*60
如果b=max,则h=240+(r-g)/(max-min)*60
如果h<0,h=h+360;
转换后得到h、s、v的取值范围分别为0≤h≤360,0≤s≤1,0≤v≤1;
步骤603:将roi划分为设定值等份区域;
步骤604:对每等份区域依据不同颜色对应hsv的阈值范围的不同来识别颜色;
步骤605:统计各区域颜色的识别结果,根据识别为某颜色的区域个数最多来判别产品颜色;
步骤606:结束产品颜色检测;
所述汽车仪表板的识别方法还包括对未识别文件夹中的图像进行模板制作,所述模板制作包括如下步骤:
步骤701:首先取一张已保存且未识别的产品类型图像,人工确定并保存产品类型检测区域roi的坐标位置信息;
步骤702:接着根据已确定的roi坐标位置信息,对已保存且未识别的产品类型图像上采集到的一定容量的样本集中的每张图像提取roi,并转为灰度图;
步骤703:再对每个roi进行特征点提取、特征点描述,将每个特征点描述矩阵保存于一个容器;
步骤704:然后,遍历该容器,每次对两个不同特征点描述矩阵做特征匹配,剔除不满足匹配点数量阈值的其中之一矩阵;遍历结束,容器中剩余特征点描述矩阵即为模板;
步骤705:结束模板制作。
采用本发明的有益效果在于:
本发明通过装置之间的配合,实现对于悬挂链上每个挂具有无仪表板的判断,进一步的,还能够分别仪表板所述的类型以及颜色。
本发明的工控机的与库存管理系统对接,可以实时更新各类仪表板数据信息,便于库存统计与分析,能够及时做出应对。
允许挂具的限位较宽,不需要严格要求挂具实现对齐,允许挂具在一定角度内旋转。
本发明通过图像识别技术大大减少了人工工作量,降低了人工成本。
附图说明
图1为本发明检测装置结构示意图;
图2为本发明人机交互界面操作流程图;
图3为本发明总检测流程图;
图4为本发明空挂检测流程图;
图5为本发明单侧有无挂产品流程图;
图6为本发明识别产品类型流程图;
图7为本发明识别产品颜色流程图;
图8为本发明类型模板制作流程图。
具体实施方式
下面将结合说明书附图以及具体实施例对本发明做进一步说明。
实施例一:
如图1所示,一种刚性悬挂链的汽车仪表板识别装置,包括支撑架12、面光源(2、5、7、10)、扫码器1、相机(3、4、8、9)、光电开关6、工控机14以及电气控制柜15。所述支撑架12呈门字型结构,支撑架12包括竖杆以及横梁。所述竖杆共两条,两条竖杆平行设置于检测点的两侧,所述横梁设置于两条竖杆之间。两条竖杆、横梁以及底面形成的四边形封闭空间内还设置轨道,轨道的方向与横梁垂直。挂具13设置于轨道能够在轨道上运动,挂具13的左右两侧都能够用于设置汽车仪表板。所述面光源共四个,两个为一组,四个面光源分别设置于两根竖杆上。所述支撑架12还包括横杆,所述横杆垂直于竖杆以及横梁构成的平面,横杆设置于同一根竖杆上的两个面光源之间,横杆的中间部位与竖杆固定连接。所述相机包括采集产品类型的相机以及采集产品颜色的相机,其中相机(3、9)用于采集产品类型图像,相机(4、8)用于采集产品颜色图像。相机共四个,相机设置于横杆的两端,四个相机为顶点构成四边形,同一条边上的相机的种类不同,相同的相机设置于对角线上。所述光电开关6设置于横梁,光电开关6与横梁之间设置直杆一,所述直杆一位于竖杆以及横梁构成的平面,直杆一与横梁垂直,同时直杆一位于横梁下方。设置于直杆一的光电开关6正对待检测的挂具13,光电开关6能够识别有无挂具经过。所述扫码器1与光电开关6分别设置于挂具的两侧,扫码器1设置于竖杆上,扫码器1与竖杆之间设置直杆二,所述直杆二与竖杆垂直,直杆二位于竖杆以及横梁构成的平面。所述工控机14与相机电性连接,工控机14还与库存管理系统电性连接;所述电气控制柜15与本装置中各个电模块电性连接,用于将220v的市电转换为各个电模块所需的电压电流并传输给各个电模块。
上述装置在实施的过程中,先由光电开关识别有无挂具经过,若存在挂具经过,则触发扫码器读取挂具上的条码信息以及触发相机抓拍图像,并传输给工控机。工控机接收处理抓拍的产品类型图像、产品颜色图像以及挂具序号信息,汇总识别结果信息并将其上传给服务器。
如图2所示,一种基于上述装置的刚性悬挂链的汽车仪表板识别方法,包括人机交互界面的操作。所述人机交互界面的操作步骤包括:
步骤一:打开软件,系统进入初始界面。所述初始界面包括初始化按钮以及退出按钮。所述初始界面包括初始化按钮以及退出按钮。点击所述初始化按钮,系统发送初始化命令,并进入初始化界面;点击所述退出按钮,系统发送退出命令,并关闭软件。
步骤二:系统接收初始化命令,进入初始化界面。所述进入初始化界面时,伴随初始化流程,所述初始化流程包括清空系统缓存以及打开相机并初始化相机参数。所述初始化界面包括设置按钮、检测按钮、模板制作按钮、退出按钮。点击所述设置按钮,发送设置命令,系统进入参数设置界面,所述参数设置界面能够手动设置参数。参数设置界面包括确定按钮和取消按钮,点击所述确定按钮,参数设置成功并返回初始化界面;点击所述取消按钮,参数设置失败,并返回初始化界面。点击检测按钮能够进入检测流程;点击模板制作按钮能够进入模板制作界面;点击退出按钮能够退出并关闭软件。
步骤三:系统接收参数设置命令,进入参数设置界面,接收参数数据,接收确定按钮,返回初始化界面。
步骤四:系统接收检测命令,进入检测流程。
步骤五:系统接收退出命令,关闭软件。
如图3所示,所述检测流程,首先就是光电开关判断有无挂具经过支撑架。若挂具经过支撑架,则光电开关触发四个相机分别采集一帧图像。各个相机通过网口将采集的图像上传至工控机;当挂具经过支撑架时,读码器能够读取挂具上的序号信息并发送给工控机。工控机接收读码器发送的挂具信号以及相机发送的图片并保存。完成保存后,工控机开始识别相机发送的图像。首先对图像进行空挂检测,判断是否为空挂,所述空挂为挂具的左右两侧都没有设置仪表板;相应的,单挂表示挂具左右两侧中的一侧设置仪表板;满挂表示挂具左右两侧都设置仪表板。若为空挂,则工控机汇总挂具序号、挂具图像,将汇总内容上传库存管理系统,该挂具的识别过程结束。若不是空挂,则进一步进行单挂检测,判断是否为单挂。若为单挂,则进一步判断是否为左挂。若为左挂,则保存左挂的判别结果并进行产品类型检测以及产品颜色检测,识别左侧产品的类型以及颜色;若否,则为右挂,保存右挂判别结果并进行产品类型检测以及产品颜色检测,识别右侧产品的类型以及颜色。若不为单挂,则为满挂,保存满挂的判别结果并进行产品类型检测以及产品颜色检测,识别左右两侧的产品的类型以及颜色。工控机汇总挂具序号、挂具图像、产品的类型以及颜色,上传给库存管理系统,该挂具的识别过程结束。对于工控机未识别的产品图像,系统会将未识别的产品图像拷贝一份到未识别文件夹。点击初始化界面中的模板制作按钮,能够进入模板制作界面,在模板制作界面能够对新的产品的图像或者未识别文件夹中的未识别产品的图像制作模板,增强装置的识别能力。
如图4所示,所述空挂检测的检测步骤包括:
步骤101:对于已经保存的左侧和右侧产品的图像,分别根据提取的坐标位置信息提取产品类型检测区域roi。
步骤102:将roi转为灰度图。所述图像转为灰度图具体为将24位图像转为8位3通道图像,再将8位3通道的图像转为单通道256色图像。
步骤103:再循环遍历roi中所有像素值并且统计像素值中大于设定灰度值的像素点个数n。
步骤104:判断个数n是否大于总像素个数的设定值。在本实施例中设定值为总像素个数的60%。若大于总像素个数的设定值,则判断为空挂;否则判断为非空挂。
步骤105:结束该检测流程
如图5所示,所述单挂检测的检测步骤包括:
步骤201:首先对于空挂检测中转化为灰度图的产品类型检测区域roi进行均值滤波;接着进行sober边缘检测;再做阈值化处理;最后通过霍夫变换,找出并保存斜率大于设定阈值的直线段。
步骤202:遍历保存的直线段集合,计算并找出最长的直线段,判断其长度是否大于设定阈值。若是,则判断为该侧没有挂产品;若否,则判断为该侧有挂产品。
步骤203:结束该检测流程。
所述均值滤波为以目标像素为中心,结合目标像素周围八个像素构成滤波模板,再用该模板中的全体像素的平均值代替目标像素值。
所述sober边缘检测处理的过程包括:
(1)检测区域roi的像素值的矩阵表示为矩阵a;
(2)分别求出矩阵a在水平方向(x)以及垂直方向(y)上的导数。
其中,水平方向上将a与一个大小为3的内核进行卷积,得到水平方向上的导数gx,具体的计算如公式(1)所示:
垂直方向上将a与一个大小为3的内核进行卷积,得到垂直方向上的导数gy,具体的计算如公式(2)所示:
图像的每一个像素的水平方向和垂直方向的灰度值通过公式(3)进行结合,来计算该点灰度值g。
所述阈值化处理是通过最大类间方差法确定灰度图最佳灰度阈值k*,用k*-1进行灰度图像阈值化,大于k*-1的像素点灰度值置为255,其余像素点的灰度值置0。域值化后灰度图像变为黑白两色图像,灰度值为0表示黑色,灰度值为255表示白色。
所述最大类间方差法求出的最佳灰度阈值k*如下式所示:
其中k表示假设的灰度值阈值,
所述最大类间方差法的具体实现思路包括:
首先对于所述的待检测灰度图有256个灰度值的级别,分别表示为[1,2,...,256]。其中灰度值为i的像素点的个数表示为ni,总的像素点个数表示为n,所述
使用归一化的方法表示图像中灰度值的概率分布,如公式(4)所示:
其中pi表示灰度值为i像素点占总的像素点个数的比例。
假设通过一个灰度值的阈值k,将图像中的像素点划分为两类:c0和c1;c0表示灰度值为[1,2,...,k]的像素点,c1表示灰度值为[k+1,...,256]的像素点。那么,每一类出现的概率以及各类的平均灰度级分别由下式给出:
其中,ω0表示像素点属于c0,ω1表示像素点属于c1的概率,ω(k)表示像素点的灰度值属于[1,2,...,k]的概率,μ0表示像素点集合c0的平均灰度值,μ1表示像素点集合c1的平均灰度值,μ(k)表示灰度值属于[1,2,...,k]的像素点的灰度值总和。ω(k)和μ(k)的表达式如式(9)、(10)所示,
另外
μt表示图像的平均灰度值。同时对于任意选定的k,都有:
ω0μ0+ω1μ1=μt,ω0+ω1=1.(12)
选取η作为评价k作为阈值的分离性的测量标准,η的值能够由式(13)得出:
其中:
其中
其中
选取不同的k值进行顺序搜索,根据式(9)和(10),寻找最佳阈值k*使得η(k)取到最大值,或者等价于使得
其中η(k)表示不同的k值对应的η值,
所述霍夫线变换找直线段的实现思路如下:
首先,用极坐标系来表示直线,直线的表达式如式(19),其中r表示极径,θ表示极角;
化简得:
r=xcosθ+ysinθ(20)
接着,对于给定一点(x0,y0),可以将通过该点的一簇直线统一定义为:
rθ=x0cosθ+y0sinθ(21)
这就意味着每一对(rθ,θ)代表通过点(x0,y0)的直线。
对于一个给定不变点(x0,y0),rθ随着θ的变化而变化,在极坐标对极径极角平面绘制所有通过点(x0,y0)的直线,得到一条正弦曲线。所述极坐标对极径极角平面的横轴为θ,纵轴为θ,即下文所述的平面θ-r。
可以对图像中的所有点进行上述操作,如果两个不同点进行上述操作后得到的曲线在平面θ-r内相交,异味则这两个不同的点通过同一条直线。
霍夫线变换要做的就是追踪图像中的每个点对应到平面θ-r中曲线间的交点,如果交于一点的曲线数量超过了一定阈值,那么可以认为这个交点所代表的参数对在原图像中为一条直线。再利用公式(19)反推算,即可求得该直线。
如图6所示,所述产品类型检测的检测流程包括对转化为灰度图的roi区域提取特征点,提取特征点的步骤包括:
步骤301:从roi中选取一点p,以p为圆心做一个半径r为3个像素点的圆。所述圆的圆周上共存在16个像素点,如果存在连续n个像素点与p点的灰度值之差的绝对值大于设定值t,则认为p为特征点。在本实施例中n设置为12。为了加快特征点的提取,快速判断排除非特征点,首先检查该圆上1、9位置上的像素点灰度值,如果这两个位置上至少存在一个像素点的灰度值与p点的灰度值之差满足差的绝对值大于t,则继续检查该圆上5、13位置上的像素点灰度值;如果1、9位置上的像素点的灰度值与p点的灰度值之差都不满足差的绝对值都大于t,则判断该点为非特征点。因为如果p点是特征点,则该圆上处于位置1、5、9、13的像素点中至少有3个点满足与p点的灰度值之差满足差的绝对值大于t。
步骤302:使用id3算法选择像素增益最大的像素作为判断特征点的依据,生成决策树,将每个特征点圆周上的16个像素点作为16个特征输入决策树中,根据特征筛选出最优的特征点。其中id3算法的输入特征有16个,每个输入特征的状态为大于t,或是小于t,亦或是等于t。
步骤303:对于执行第二步的得到所有的特征点构建一个打分函数v。v定义为像素点p与周围16个像素点灰度值差值的绝对值之和。比较任意两个相邻的特征点的v值,删除v值较低的特征点。
步骤304:通过矩来计算特征点以r为半径范围内的质心,以特征点坐标到质心形成的向量作为该特征点的方向。其中矩的定义如下所示:
mpq=∑x,y∈rxpyqi(x,y)(21)
其中,i(x,y)为图像灰度表达式,mpq表示关于p+q阶几何矩,m00表示p=0,q=0时的零阶几何矩,类似的,m10表示p=1,q=0时的一阶几何矩,m01表示p=0,q=1时的一阶几何矩。该矩的质心c为:
以特征点的坐标作为原点,则向量的角度即为该特征点的方向。其中向量的角度θ的计算公式如下:
完成特征点的提取,接着进行特征点的描述,使用rbrief算法进行特征点描述,具体步骤包括:
步骤401:对每个特征点选取以特征点为中心的31*31领域,每个领域选择5*5子领域的平均灰度值替代5*5子领域中心的像素点的灰度值进行比对,除去领域边缘的像素点,可以得到n=(31-5+1)*(31-5+1)个可以对比的子领域,一共有m=c(n,2)个点对,c(n,2)表示排列组合的数值。将每个领域的点对组成矩阵q,矩阵q的每列向量(ai,bi),1≤i≤m表示一个点对。
为了保证对特征点的描述旋转不变性的特性,使用特征点的方向θ对矩阵q进行旋转,通过旋转矩阵rθ,得到旋转后的矩阵qθ,其中qθ=rθq;rθ表示为:
根据式(26),对矩阵qθ中的每个点进行灰度值比较,
其中,p(a)表示某个点对中的点a处的灰度值,p(b)表示某个点对中的点b处的灰度值,τ(p;a,b)表示将点对的灰度值转化为二进制值。
对于m个点对,能够得到长度为m的初始二值串描述子fm(p):
fm(p)=∑1≤i≤m2i-1τ(p;ai,bi)(27)
结合特征点的方向,能够得到具有方向的描述子gm(p,θ):
gm(p,θ)=fm(p)|(ai,bi)∈qθ(28)
步骤402:从m个点对中筛选出k个点对。所述筛选的方法采用均值和点之间的方差最大化原理,包括如下步骤:
(a)重组所有特征点以及对应的初始二值串得到矩阵w,行数为提取到的特征点点数,每行是每个特征点对应的初始二值串描述子fm(p);
(b)对重组后的矩阵w,按照每列均值与0.5的绝对差从小到大排序,得到矩阵t;
(c)贪心选择:
把矩阵t中第一列放进矩阵u中,并把该列从矩阵t中移除,所述矩阵u一开始为空;
依次选择矩阵t的每列,与矩阵u中所有的列进行比较,如果相似度超过设定阈值,忽略,进行下一列,否则将矩阵t中的该列放进矩阵u中,并把该列从矩阵t中移除;
重复以上过程直到选择k个列,这样每个特征点就有k个0,1组成的描述子。如果遍历矩阵t,得到的矩阵u中不足k个列,则降低阈值直到矩阵u满足k个列即可,矩阵u即为最终的特征描述矩阵。
最后进行特征匹配,具体方法如下:
计算两幅图像特征点间的汉明距离,得到特征点间的相似性距离,在待匹配图像中查找与模板图像汉明距离最近和次近的特征点,将最近距离与次近距离的比值和设定阈值比较,如果比值小于阈值,则该点为匹配点。按照上述特征匹配方法,找出待匹配图像中所有匹配点并统计匹配点数量。
根据特征点的匹配结果,判断产品所属类型或未知。若最大匹配点数量大于设定阈值,则判为匹配成功,该产品所属类型判为某类型;当最大的匹配点数量不大于设定阈值,则判为匹配失败,该产品所属类型判为未知。
如图7所示,所述产品颜色检测的步骤包括:
步骤501:提取产品颜色检测区域roi;
步骤502:对roi进行颜色空间转换,即24位三通道图像从rbg颜色空间转为hsv颜色空间,其中rgb颜色空间中分量r表示红色,分量g表示绿色,分量b表示蓝色,hsv颜色空间中分量h表示色调,分量s表示饱和度,分量v表示亮度,其中0≤r≤255,0≤g≤255,0≤b≤255,转换公式如下:
max=max(r,g,b);
min=min(r,g,b);
v=max/255;
如果max≠0,则s=(max-min)/max;
如果max=0,则s=0;
如果r=max,则h=(g-b)/(max-min)*60
如果g=max,则h=120+(b-r)/(max-min)*60
如果b=max,则h=240+(r-g)/(max-min)*60
如果h<0,h=h+360;
转换后得到h、s、v的取值范围分别为0≤h≤360,0≤s≤1,0≤v≤1;
步骤503:将roi划分为设定值等份区域;
步骤504:对每等份区域依据不同颜色对应hsv的阈值范围的不同来识别颜色;
步骤505:统计各区域颜色的识别结果,根据识别为某颜色的区域个数最多来判别产品颜色;
步骤506:结束产品颜色检测。
如图8所示,左右侧产品类型模板制作流程相同,在本实施例中以左侧为例说明。首先取一张已保存且未识别的产品类型图像,人工确定并保存产品类型检测区域roi的坐标位置信息;接着根据已确定的roi坐标位置信息,对已保存且未识别的产品类型图像上采集到的一定容量的样本集中的每张图像提取roi,并转为灰度图;再对每个roi进行特征点提取、特征点描述,将每个特征点描述矩阵保存于一个容器;然后,遍历该容器,每次对两个不同特征点描述矩阵做特征匹配,剔除不满足匹配点数量阈值的其中之一矩阵;遍历结束,容器中剩余特征点描述矩阵即为模板。此流程结束。
以上所述,只是本发明的具体实施例,并非对本发明做出任何形式上的限制,在不脱离本发明的技术方案基础上,所做出的简单修改、等同变化或修饰,均落入本发明的保护范围。