具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。
下面参考图1-20详细描述本发明提供的一种自动识别多条码与LED灯的测试系统的第一实施例。
如图1-20所示,本实施例提供的一种自动识别多条码与LED灯的测试系统主要包括有:摄像头100、低秩纹理映射单元200、图像差异对比单元300和多条码快速识别单元400,其中摄像头100用于扫描待测设备,并获取图像,且获取的图像包括LED灯图像和多条形码图像,低秩纹理映射单元200用于采用低秩纹理映射算法对图像进行校正操作,图像差异对比单元300用于采用图像差异对比算法分析LED灯图像差异,并判断出LED灯的亮灭,多条码快速识别单元400,用于对多条形码图像进行分割标记,从而实现多条形码图像中多条形码的识别操作。
进一步,多条形码图像中包含至少一个多条形码图像。
本申请中利用摄像头100扫描待测设备,取代了传统手持扫描枪扫码的劣势,不仅仅能取代传统的手持式扫码枪扫码功能和人工肉眼查看LED颜色的亮灭情况,同时优化了对待测设备的摆向上有较大幅度提升,可以理解成非固定方向与非固定位置摆放,只需要把待测设备放在摄像头100方向的指定区域内既可,无需固定待测设备的方向与位置,提高了检测效率,降低人力投入。
进一步,摄像头100可采用1080P高清摄像头100对待测设备扫描,获得待测设备的LED灯图像和多条形码图像,并将LED灯图像和多条形码图像发送至低秩纹理单元,摄像头100固定在用于放置待测设备的普通支架上,自动扫描条码与LDE灯图像。
在一种实施方式中,低秩纹理映射单元200包括预处理单元210,预处理单元210用于对校正后的条码图形进行灰度化处理。
其中,开始测试时,利用1080P高清摄像头100对待测设备进行图像采集,对采集到的图像采用低秩纹理映射算法对图像进行校正,选取其中一种矢量的LED灯图像,再通过图像差异对比算法对校正后的LED灯图像进行视觉算法的处理,判断LDE灯的亮灭情况。
对校正后的多条形码图像进行预处理,其中采用中值滤波对多条形码图像噪声进行过滤,并对多条形码图像进行灰度化处理,获得明暗效果理想的多条形码图像,并采用灰度变换方法增强多条形码图像的对比度,并利用多条码快速识别单元400对多条形码图像中的条形码进行识别。通过条形码和LED灯的亮灭情况相结合,对待检测设备进行多维度检测。
在一种实施方式中,在低秩纹理映射单元200中,采用低秩纹理映射算法,用低秩性与噪声的稀疏性进行低秩恢复,通过几何变换把图像中的不规则区域校正为端正区域,当在图像发生投影失真的状况下,低秩纹理映射算法能够精确有效地进行低秩纹理特征的提取。
其低秩纹理映射算法的定义为:
不失一般性,2D纹理I0可以用一个定义在二维空间R2上的函数I0(x,y)来进行描述。如果函数I0(x,·)横跨有限低维子空间,即对于正整数k,满足:
则I
0被认为是低秩纹理。进一步地,满足上式的纹理I
0被认为是秩-r纹理。需要注意的是,实际中2D纹理函数I
0在空间上通常是不连续的,其仅仅是在有限离散栅格中的一些采样值,如
中的m1×m2栅格;
表示二维离散实数空间。在这种情形下,2D纹理函数I
0(x,y)可以用一个阶数为m1×m2的矩阵I0进行表示。相应的,如果矩阵I0的秩远小于矩阵的阶数,即rank(I
0)<<min(m1,m2),此2D纹理将被认为是低秩纹理。
通过对低秩纹理的定义可知,垂直或者是水平的边缘(如图2所示)可以被看作是秩-1纹理,而交叉“十字”角点(如图3所示)则可以被看作秩-2纹理。由于对称或者规则性结构的秩通常小于其维数的一半,因此任何包含对称结构的纹理都可以被看作是低秩纹理。事实上,当这些低秩纹理用矩阵来进行表示和描述时,常常拥有较高的维度和较低的秩。
如图4所示,为输入图像,图中是人工确定的TILT待处理区域,且有发生形变以及干扰后的图像;图5是图4中消除形变后的图像,它是低秩纹理图像(图6)以及稀疏干扰部分(图7)的叠加显示。
如图4-7的TILT算法结果示意图,应用变换不变的低秩纹理映射算法(TILT)主要解决从发生几何形变以及稀疏干扰的图像中恢复其“本质”低秩纹理的问题。其数学模型可表示为:
其中的主要参数定义如下:
I0表示恢复出的低秩纹理,图4所示的晶格图像即为该示例中的低秩纹理部分。
E表示图像中的稀疏“野点”或者是非高斯噪声。由于其只对低秩纹理的极少部分像素造成影响,因此TILT假定其为稀疏误差。如图7所示,E通常由拍摄环境中的遮挡或者干扰引起。
I0+E表示低秩纹理被稀疏“野点”或者非高斯噪声干扰后的视图。如图5所示,其可以看作低秩纹理I0(图6)以及稀疏误差部分E(图7)在对应像素位置上灰度值的直接叠加。
I表示低秩纹理经过几何形变以及稀疏误差干扰后的视图。如图4所示,图中的部分图像为图6以及稀疏干扰(图7)经过几何形变后的图像。换言之,图4中的部分图像被当作图5经过几何形变的显示。通常情况下,经过形变和干扰后的图像将不再是低秩的。
γ>0表示低秩纹理与稀疏误差之间的权重因子,||·||0为矩阵的零范数,表示矩阵中非零元素的数目。
τ∈R
p表示特定条件下的李氏群。在仿射变换条件下,其可表示为Aff(2),在投影变换条件下,其可表示为GL(3)。准确来说,如果图像I
0到I的投影变换可表示为
那么τ就表示为一个包含矩阵H中所有元素的八维(p=8)向量,即:τ=[h
1 h
2 h
3 h
4 h
5 h
6 h
7 h
8]
T (1-3);
其中,h代表元素的八维;
表示图像I中的所有像素在投影变换τ下的变换操作。例如,假设I(x,y)是图像I在像素(x,y)处的灰度值,那么
即可被定义为:
从以上的分析可以看出,应用变换不变的低秩纹理映射算法(TILT)就是从经过形变以及稀疏干扰的纹理I中恢复出“本质”低秩纹理I0并确定出相关几何形变τ的过程。这里需要指出的是,对于任意给定的低秩纹理I0,旋转变换、仿射变换以及投影变换都会影响矩阵秩的大小。因此,当低秩纹理发生上述三种变换时,通过TILT均能恢复出相应的低秩纹理以及几何变换矩阵。但是缩放变换以及平移变换不会改变矩阵的秩的大小,因此对于发生缩放以及平移变换的图像,TILT无法恢复出变换前的低秩纹理以及相应的缩放或者平移变换矩阵。换言之,对于一些常量τ∈Rp,如果有:
I(x,y)=cI0(ax+t1,by+t2) (1-5);
则:rank(I)=rank(I
0)。此时,TILT将不能计算得到常量参数
式(1-2)关于TILT的初始模型不能直接进行求解,这是因为:目标函数中矩阵的秩函数以及l0-范数是非凸的,对这两个函数同时进行最小化计算是极其困难的(事实上这是一个NP-难的问题,很难被优化求解);约束条件:
是非线性的,这也给优化过程带来了难度。因此在对TILT模型进行求解之前需要对上述两方面问题进行凸松弛以及线性化处理。在一定的松弛条件下,上述问题可以通过以下方式解决:
(a)l0-范数||·||0以及矩阵的秩函数rank(.)可以分别用矩阵的l1-范数以及核范数替代。因此,式(1-2)的优化问题可以转换为求解以下问题:
其中,||·||*表示矩阵的核范数,其被定义为矩阵中所有奇异值之和。||·||1表示矩阵的l1-范数,其被定义为矩阵中每一列元素的绝对值之和的最大值。
Δτ∈R
p是相对τ较小的一个变换过程,
为图像I关于变换τ的雅可比矩阵。上述的线性化过程可以通过“逐像素”计算方法获得,即对于图像I中的每一个像素(x,y):
通过上述(a)和(b)的松弛和线性化处理,公式(1-2)中的优化问题可以转换为求解如下线性迭代凸规划问题:
这里指出,上述线性化只是对原问题(1-2)的局部近似,因此通过迭代凸规划求解出的最小值为原始问题的局部最小值。算法1给出了式(1-2)的具体求解过程。其中,算法1中对
进行归一化处理是为了剔除可能出现的矩阵平凡解(即剔除灰度值为零,在图像中表现为全黑的图像区域),使用增广拉格朗日方法(ALM)算法进行求解。
算法1:变换不变的低秩纹理映射算法(TILT)
输入:输入图像
初始几何变换τ∈T(仿射变换或投影变换),以及权重因子γ>0;
WHILE不收敛DO
然后(内循环ALM),求解如下凸规划:
其次,更新变换矩阵:
τ←τ+Δτ
ENDWHILE
输出:公式(1-2)的收敛解I0*,E*,τ*.
其中I0*是恢复的低秩纹理,E*是原始图像的稀疏误差,τ*表示变换矩阵。
出于对上述的解释,此处先给出一般情况下ALM的算法思想,然后给出TILT应用ALM算法进行求解的具体实例。考虑如下凸规划问题:
其中f(.)表示连续的凸函数,Γ(.)=b表示线性函数约束。ALM算法的基本问题首先是将上述受限制的凸优化问题转换为非受限的优化问题:
这里,Y是拉格朗日乘子,||·||
2为矩阵或者向量的二范数,μ>0表示不可行点的惩罚因子。如果
是公式(1-10)的最优解,则有:
因此式(1-11)的非限制优化问题可以通过如下公式迭代求解:
结合TILT模型,应用ALM算法求解如下:
1)引入拉格朗日辅助函数替代求解式(1-9)的凸规划问题:
2)通过迭代如下步骤直至收敛来寻找I0*,E*,τ*.的最优解:
通常情况下,为了加快算法的运算速度,式(1-15)中的三个变量不被
并行求出,而是被逐一求解:
其中的每一步迭代可被如下迭代精确求解:
St[x]=sign(x)·(|x|-μ) (1-19);
通过算法1的求解,可以得到:在3D场景中具有低秩特性的纹理I0;3D场景中的低秩纹理映射到2D失真图像的变换矩阵;摄像机在拍摄低秩纹理过程中受到的稀疏干扰。这些信息可以被用来解决图像处理领域中的若干问题和难点,例如:
(1)条形码/汽车牌照/文本识别
由于摄像头100或者镜头拍摄角度的不同,所拍摄到的文本或者条形码可能存在一定程度的倾斜畸变,这将很难被计算机识别。然而,利用变换不变低秩纹理映射算法(TILT)可以有效地将拍摄到的倾斜或者发生形变的文本校正到摄像头100正面视图,从而极大的提高文本或者条形码的识别率。这对于日常生活中的手机扫码以及交通监控中对车辆拍照的识别都具有一定的应用价值。
(2)图像/视频的还原
众所周知,现实世界中拍摄到的图像或者从数据库/互联网下载的图像常常包含噪声、干扰和块效应等,这会影响到真实图像的观瞻以及后续数据处理问题。由于相对于原始图像来说,这些外部因子相对稀疏,因此我们可以利用TILT对这些稀疏成分进行建模,通过低秩纹理恢复得到复原后的图像。并且,相对于Adobe公司的Photoshop技术以及微软的Structure Propagation技术,TILT还能够将噪点背后的低秩纹理图案更为准确地恢复出来。
(3)图像的编辑和扩展
如上,TILT除了能够获得摄像头100正面视图的低秩纹理外,还能获得其自身的几何形变τ。通过利用自身的几何形变信息,可以对图像或者视频进行编辑和扩展。例如,如果希望对某一视图下的图像或者视频进行编辑(比如在图像或者视频中插入广告图片),可以先将图像或者视频校正到摄像头100正面视图。在正面视图的基础上附加需要插入的广告图片,并将附加后的图像或者视频反映射到原始视图,实现图像或者视频的编辑。
为了说明TILT在恢复低秩纹理方面的有效性,可以采用三幅不同的图像对其进行验证说明。可以了解到变换不变低秩纹理映射算法(TILT)能够准确稳健地恢复出图像的低秩纹理结构,并且恢复得到的低秩纹理的秩小于输入区域纹理的秩。
在一种实施方式中,图像差异对比算法根据两张图片相同(x,y)的坐标位置精确确定图像差异的为位置,当两点坐标的阈值相减的值小于用户设定的阈值时,该位置像素的所有通道设置为0,当两点坐标的阈值相减的值大于用户设定的阈值时,输出图像单个像素值的位数,从而判断出LED灯的亮灭情况。
其中图像差异实现原理为:
主要用到Open cv软件库中cv.subtract函数语法,其函数说明如下:
subtract(src1,src2,dst=None,mask=None,dtype=None)
参数一src1:作为被减数的图像数组或一个标量;
参数二src2:作为减数的图像数组或一个标量;
参数三dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst的对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定;
参数四mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0。
参数五dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(比如RGB用三个字节表示,则为24位);
参数返回值:相减的结果图像。
具体,可根据二张图片相同的(x,y)坐标位置精确确定图像差异的位置,当二点坐标的阈值减去得到的值小于用户设定的阈值时统统置为0,当阈值大于用户设定的阈值时置为255,就能得到差异部分图像。
进一步,计算图像差异减法的运算过程的源码为如下:
#include“OpenCv.h”
using namespace cv;
using namespace std;
void main(){
Mat img1=imread("E://testinput1.jpg");
Mat img2=imread("E://testinput2.jpg");
Mat dst;//存储结果
imshow("img1",img1);
imshow("img2",img2);
cout<<"img1"<<int(img1.at(10,10)[0])<<endl;//img1在坐标(10,10)的蓝色通道的值,强制转成int
cout<<"img2"<<int(img2.at(10,10)[0])<<endl;
//dst=img1-img2;//这两个减法效果相同若dst<0,则dst=0
//subtract(img1,img2,dst);//注意:要求被处理图片尺寸一致
absdiff(img1,img2,dst);//若dst<0,则dst=|dst|>=0用于检测两幅相似图像的不同点,效果比上面的两种减法好
cout<<"dst"<<int(dst.at(10,10)[0])<<endl;
imshow("dst",dst);
waitKey(0);
}
在一种实施方式中,在图像差异对比单元300中,图像差异对比算法的四种应用场景如下:
场景一:两个图像矩阵相减,要求两个矩阵必须有相同大小和通道数。
dst(I)=saturate(src1(I)-src2(I))if mask(I)≠0
场景二:一个图像矩阵和一个标量相减,要求src2是标量或者src2是与src1的通道数相同的元素个数,src1应该是一个四元组,若此时src1是3通道的,则按通道顺序依次与该四元组的前3个元素相减。
dst(I)=saturate(src1(I)-src2)if mask(I)≠0
场景三:一个标量和一个图像数组相减,要求src1是标量或者src1是与src1的通道数相同的元素个数。
dst(I)=saturate(src1-src2(I))if mask(I)≠0
场景四:在给定值减去矩阵的SubRS情况下,为一个标量和一个图像数组相减的反向差,这也是场景二的一种特殊解读。
dst(I)=saturate(src2-src1(I))if mask(I)≠0
利用图像差异对比算法运用利用输入图像坐标(x,y)进行相减得到的差异结果,这样以来就能得到LED不同之处的对比图,从而判断LED灯的亮灭情况。
其中图片减法运算验证结果为:例如,图8-11所示的,图8和图9中实线框代表着原始的不同异常处,开始使用图8减去图9得到图10差异图像,再用输入图9与输入图8进行减发运算得到输出图像输出图10差异图。输出图10和图11利用图像差异对比运用利用输入图像坐标(x,y)进行相减得到的差异结果,获得LED不同之处的对比图,从而判断LED灯亮灭情况。
在一种实施方式中,多条码快速识别单元400,包括:灰度处理子单元410、二值化处理子单元420、区域定位处理子单元430、边缘处理子单元440和多条码识别子单元450,灰度处理子单元410用于将多条形码图像使用加权平均值法获取多条形码图像的灰度图像;二值化处理子单元420用于将灰度图像二值化处理,形成二值化图像;区域定位处理子单元430用于对二值化图像进行区域分割,并采用八连通域判别方法进行区域标记;边缘处理子单元440用于将多条形码中的每个条形码的轮廓进行标记处理;多条码识别子单元450用于通过区域定位位置来实现对每一小区域内条形码的读取操作。
在一种实施方式中,灰度处理子单元410对多条形码图像采取灰度化的操作就是将彩色的多条形码图像转变为灰度图像的过程。通常利用摄像机采集的多条形码图像都是彩色的,但是彩色信息与条形码的识别无关,对于提取条形码信息来说,只有黑白颜色才是有效信息。
图像处理过程中经常使用到的灰度化处理方法主要有三类,即最大值法、平均值法和加权平均值法。最大值法就是对多条形码图像中的三个分量RGB的亮度值进行比较,并使用最大的亮度值作为多条形码图像的灰度值。平均值法即为平均求得多条形码图像中RGB三个分量的亮度值,从而获得多条形码图像的灰度图像。加权平均法即为将多条形码图像的三个分量被加权平均,并且每个分量的权重是不同的,从而获得条形码的灰度图像。
使用上述三种算法对同一幅多条形码图像的处理效果进行分析可知,多条形码图像经过平均值法处理后亮度是最暗的,加权平均法处理后获得的图像亮度比较理想,最大值法处理后的图像亮度是最高的。为避免处理后的多条形码图像太亮或太暗,本申请采用更适合人眼观察的加权平均值法。
在一种实施方式中,二值化处理子单元420将对灰度化处理后的图像进行二值化处理,灰度图像的二值化处理就是将灰度图像上的点的灰度置为0或255,也就是将整个灰度图像呈现出明显的黑白效果,即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
进一步,要进行二值化图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,其二值化图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,
为了得到理想的二值化图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阈值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阈值实现图像的二值化可动态观察其分割二值化图像的具体结果。
其中,具体的二值化代码如下:
在一种实施方式中,区域定位处理子单元430通过对多条形码图像进行二值化处理后,得到的条形码大致轮廓的二值化图像,所得二值化图像中噪声背景仍然很多,假如一副数字图像背景很大,而有效条形码区域却很小,那么对其进行全图搜索会大大降低条形码识别的速度。
在本申请中,采用对条形码进行定位时,排除非条形码区域的干扰,例如二值化图像中的线条和其他与条形码不相关的背景图案。
若二值化图像中是单条形码,可对单条形码图像进行多次腐蚀,也可将这些非条形码区域去除,因为单条形码图像不需要考虑条形码与条形码的边界问题,也不需考虑在对条形码多次腐蚀的情况下,是否会丢失二值化图像的有效信息。
进一步,考虑到多条形码图像中条形码与条形码的边界问题,以及在对条形码多次腐蚀的情况下,会丢失二值化图像的有效信息的问题。首先需要对多条形码图像进行区域分割,可采用8连通域判别方法对多条形码图像进行区域标记,获得二值图像。该二值图像的像素分为前景或背景,并且需要在前景中查找条形码图像中相联通的区域,其算法基本步骤为:
(1)从二值化图像中第一个像素开始,将当前标签设置为1。
(2)若这个像素是一个前景像素,并且它还没有标签,那么给它当前的标签,并添加它为集合中第一个元素,然后进行(3),若它是背景元素或已经被标记,那么对图像中的下一个元素重复(2)。
(3)从序列中弹挑出一个元素,并查看它的相邻元素。若相邻元素是一个前景元素,并还没被标记,那么给它当前的标签,并添加到队列中,重复(2),直到集合中没有更多的元素。
(4)转到(2)二值化图像中的下一个元素,并将当前标签增加1。通过此算法,只需要对多条形码图像(即二值化图像)中每个前景像素的邻域进行一次检测,并对多条形码图像的背景干扰区域进行清除。
进一步,对多条形码图像的背景干扰区域进行清除包括以下步骤:
(5)计算每个区域的面积,也就是每个区域内图像像素个数的总大小,在清除干扰背景后,亮度较大的单个白框的像素面积的大小,共多少个这样的白色区域的面积。
(6)设定图像中所有像素个数中像素点的亮度的阈值,清除掉低于阈值的区域。
如图12-20所示,通过上述(1)-(6)的算法对多条形码图像进行处理,其中图12为原图像,当阈值分别为100、300、500和700(对应附图13-16)时,背景干扰区域未能有效去除。而当阈值为1300、1500和1700(对应附图18-20)时,处理后的二值化图像将会去除部分条形码有效区域,并丢失条形码信息,如图17可观察出,当阈值为1000时不但能有效清除非条形码区域,还能有效的保留多条形码图像细节。
在一种实施方式中,边缘处理子单元440通过查找轮廓,获得二值化图像中大型分块的位置和大小,并逐个对其轮廓进行处理,直到所有的轮廓都处理完,从而将多条形码中每个条形码的轮廓都被清晰的标记出来。
在一种实施方式中,多条码识别子单元450通过区域定位位置来实现对每一小区域内条码的读取操作。
为了验证低秩纹理映射算法的有效性和准确性,可以采集600张多多条形码图像进行测试,并将其分为倾斜的、平铺的和复杂背景下的多条形码图像,更加真实的去模拟现实中的情况。并以准确率和识别单个条形码所花费的平均时间作为参考进行分析。本申请所使用到机器配置为:WI N764位,Core i5,CPU1.70GHz,内存8GB。结果对比如表1和表2所示。条形码识别统计结果如表1所示,在测试中,200张平铺条形码和200张倾斜条形码中,测试正确的张数均为198张,识别率达到99%,而在200张复杂背景下的多条形码图像中,测试正确的张数为196张,识别率为98%,而部分条形码无法识别的原因包括光照严重不均匀,以及条形码本身质量不佳,例如缺损等。统计单个条形码的平均识别时间如表2所示,单个条形码的平均识别时间大概为180ms。通过该验证说明了本申请提出的算法对于时间性能也有保证。
表1条形码识别统计结果
图像特征 |
测试张数 |
正确张数 |
失败张数 |
成功率 |
复杂背景 |
200 |
196 |
4 |
98% |
平铺 |
200 |
198 |
2 |
99% |
倾斜 |
200 |
198 |
2 |
99% |
表2单个条形码平均识别时间统计
条码个数 |
复杂背景 |
倾斜30 |
倾斜60° |
倾斜90° |
平铺 |
3 |
201ms |
190ms |
192ms |
193ms |
170ms |
4 |
202ms |
189ms |
190ms |
192ms |
171ms |
5 |
201ms |
191ms |
189ms |
190ms |
170ms |
6 |
201ms |
188ms |
189ms |
189ms |
170ms |
7 |
202ms |
190ms |
190ms |
190ms |
171ms |
本申请中的算法预先对多条形码图像样本集进行处理,采用中值滤波的方法对多条形码的图像进行去噪,并对去噪后的多条形码图像采取二值化的操作通过选用Ostu法完成,从而使得多条形码图像在光照不足的情况下也能实现较好的分割效果,通过数学形态学处理,获得多条形码图像轮廓,为接下来提取条形码信息打下了基础。以及,采用区域描述的条形码算法,大大降低条形码识别受到噪声干扰的影响,即使在较为复杂背景的情况下,算法仍可检测出条形码。综上,本算法性能非常好,具有实用意义。
本发明通过摄像头100扫描待测设备,并获取图像,由低秩纹理映射单元200采用低秩纹理映射算法对图像进行校正操作,图像差异对比单元300采用图像差异对比算法分析图像差异,并判断出LED灯的亮灭,多条码快速识别单元400对图像进行分割标记,从而实现图像中多条形码的识别操作。本发明的测试系统,能够解决现有技术中投入人力大、产能低和效率低的问题,使得传统工厂的自动化生产技术得到提高。
下面参考图21-22详细描述,基于同一发明构思,本发明实施例还提供了一种自动识别多条码与LED灯的测试方法的第一实施例。由于该方法所解决问题的原理与前述种自动识别多条码与LED灯的测试系统相似,因此该方法的实施可以参见前述系统的实施,重复之处不再赘述。
如图21所示,本实施例提供的自动识别多条码与LED灯的测试方法主要包括以下步骤:
S500、图像采集步骤,通过摄像头扫描待测设备,并获取图像,图像包括LED灯图像和多条形码图像。
在步骤S500中,利用摄像头对待测设备扫描,获得待测设备的LED灯图像和多条形码图像,并将LED灯图像和多条形码图像发送至低秩纹理单元。
S600、低秩纹理映射步骤,采用低秩纹理映射算法对图像进行校正操作;
在步骤S600中,还包括步骤S610、预处理步骤,对校正后的条码图形进行灰度化处理。
开始测试时,利用1080P高清摄像头对待测设备进行图像采集,对采集到的图像采用低秩纹理映射算法对图像进行校正,选取其中一种矢量的LED灯图像,再通过图像差异对比算法对校正后的LED灯图像进行视觉算法的处理,判断LDE灯的亮灭情况。
对校正后的多条形码图像进行预处理,其中采用中值滤波对多条形码图像噪声进行过滤,并对多条形码图像进行灰度化处理,获得明暗效果理想的多条形码图像,并采用灰度变换方法增强多条形码图像的对比度,并利用多条码快速识别单元对多条形码图像中的条形码进行识别。通过条形码和LED灯的亮灭情况相结合,对待检测设备进行多维度检测。
在一种实施方式中,在低秩纹理映射单元中,采用变化不变低秩纹理,用低秩性与噪声的稀疏性进行低秩恢复,通过几何变换把图像中的不规则区域校正为端正区域,当在图像发生投影失真的状况下,低秩纹理映射算法能够精确有效地进行低秩纹理特征的提取。
低秩纹理映射算法数学模型可表示为:
其中的主要参数定义如下:
I0表示恢复出的低秩纹理,图4所示的晶格图像即为该示例中的低秩纹理部分。
E表示图像中的稀疏“野点”或者是非高斯噪声。由于其只对低秩纹理的极少部分像素造成影响,因此TILT假定其为稀疏误差。如图7所示,E通常由拍摄环境中的遮挡或者干扰引起。
I0+E表示低秩纹理被稀疏“野点”或者非高斯噪声干扰后的视图。其可以看作低秩纹理I0以及稀疏误差部分E在对应像素位置上灰度值的直接叠加。
I表示低秩纹理经过几何形变以及稀疏误差干扰后的视图。
γ>0表示低秩纹理与稀疏误差之间的权重因子,||·||0为矩阵的零范数,表示矩阵中非零元素的数目。
τ∈R
p表示特定条件下的李氏群。在仿射变换条件下,其可表示为Aff(2),在投影变换条件下,其可表示为GL(3)。准确来说,如果图像I
0到I的投影变换可表示为
那么τ就表示为一个包含矩阵H中所有元素的八维(p=8)向量,即:τ=[h
1 h
2 h
3 h
4 h
5 h
6 h
7 h
8]
T (1-3)
表示图像I中的所有像素在投影变换τ下的变换操作。例如,假设I(x,y)是图像I在像素(x,y)处的灰度值,那么
即可被定义为:
S700、图像差异对比步骤,采用图像差异对比算法分析LED灯图像差异,并判断出LED灯的亮灭;
在步骤S700中,根据两张图片相同(x,y)的坐标位置精确确定图像差异的为位置,当两点坐标的阈值相减的值小于用户设定的阈值时,该位置像素的所有通道设置为0,当两点坐标的阈值相减的值大于用户设定的阈值时,输出图像单个像素值的位数。
进一步,在图像差异对比单元中,图像差异对比算法的四种应用场景如下:
场景一:两个图像矩阵相减,要求两个矩阵必须有相同大小和通道数。
dst(I)=saturate(src1(I)-src2(I))if mask(I)≠0
场景二:一个图像矩阵和一个标量相减,要求src2是标量或者src2是与src1的通道数相同的元素个数,src1应该是一个四元组,若此时src1是3通道的,则按通道顺序依次与该四元组的前3个元素相减。
dst(I)=saturate(src1(I)-src2)if mask(I)≠0
场景三:一个标量和一个图像数组相减,要求src1是标量或者src1是与src1的通道数相同的元素个数。
dst(I)=saturate(src1-src2(I))if mask(I)≠0
场景四:在给定值减去矩阵的SubRS情况下,为一个标量和一个图像数组相减的反向差,这也是场景二的一种特殊解读。
dst(I)=saturate(src2-src1(I))if mask(I)≠0
利用图像差异对比算法运用利用输入图像坐标(x,y)进行相减得到的差异结果,这样以来就能得到LED不同之处的对比图,从而判断LED灯的亮灭情况。
如图22所示,S800、多条码快速识别步骤,对多条形码图像进行分割标记,从而实现多条形码图像中多条形码的识别操作。
在步骤S800中还包括以下步骤:
S810、灰度处理子步骤,将多条形码图像使用加权平均值法获取多条形码图像的灰度图像。
灰度处理子单元对多条形码图像采取灰度化的操作就是将彩色的多条形码图像转变为灰度图像的过程。通常利用摄像机采集的多条形码图像都是彩色的,但是彩色信息与条形码的识别无关,对于提取条形码信息来说,只有黑白颜色才是有效信息。
S820、二值化处理子步骤,将灰度图像二值化处理,形成二值化图像。
二值化处理子单元将对灰度化处理后的图像进行二值化处理,灰度图像的二值化处理就是将灰度图像上的点的灰度置为0或255,也就是将整个灰度图像呈现出明显的黑白效果,即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
进一步,要进行二值化图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,其二值化图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,
S830、区域定位处理子步骤,对二值化图像进行区域分割,并采用八连通域判别方法进行区域标记。
区域定位处理子单元通过对多条形码图像进行二值化处理后,得到的条形码大致轮廓的二值化图像,所得二值化图像中噪声背景仍然很多,假如一副数字图像背景很大,而有效条形码区域却很小,那么对其进行全图搜索会大大降低条形码识别的速度。
在本申请中,采用对条形码进行定位时,排除非条形码区域的干扰,例如二值化图像中的线条和其他与条形码不相关的背景图案。
S840、边缘处理子步骤,将多条形码中的每个条形码的轮廓进行标记处理。
边缘处理子单元通过查找轮廓,获得二值化图像中大型分块的位置和大小,并逐个对其轮廓进行处理,直到所有的轮廓都处理完,从而将多条形码中每个条形码的轮廓都被清晰的标记出来。
S850、多条码识别子步骤,通过区域定位位置来实现对每一小区域内条形码的读取操作。
多条码识别子单元通过区域定位位置来实现对每一小区域内条码的读取操作。
本发明通过采用摄像头扫描待测设备,并获取图像,并采用低秩纹理映射算法对图像进行校正操作之后,采用图像差异对比算法分析图像差异,判断出LED灯的亮灭,以及对图像进行分割标记,从而实现图像中多条形码的识别操作。本发明的测试方法,能够解决现有技术中投入人力大、产能低和效率低的问题,使得传统工厂的自动化生产技术得到提高。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。