对图像中条形码进行定位识别的应用

2019-07-16 03:17张志凌梁潇杨天宇冯稼驹郭晓新
电脑知识与技术 2019年14期
关键词:图像识别图像处理

张志凌 梁潇 杨天宇 冯稼驹 郭晓新

摘要:条形码随着信息技术与计算机不断发展,已经成为市场流通的大趋势,只要商品进入商场、超市、集各大卖场,均需要通过条形码扫描来获取商品的各种信息。条码技术是迄今为止最经济实用的一种自动识别技术。由于现在商场的条码识别需要将条码放置到与激光扫描器扫描线垂直的位置才能进行扫描,于是我们决定利用图像处理技术将图像中的条形码进行提取,实现对图像中的单个及多个条形码,以及不垂直与图片边框的条形码进行提取和扫描。文章先讲述了研究背景,再阐述了设计思路和算法实现,主要介绍了通过hough直线检测对图像处理后处理检测出来直线的方法,以及将检测到的条形码调整为水平位置,方便下一步的扫描。

关键词:hough直线检测;图像识别;图像处理

中图分类号:TP393      文献标识码:A

文章编号:1009-3044(2019)14-0140-03

1研究步骤

1.1研究的样区和数据

研究样区选用网上可搜索到的所有条形码,二条形码识别的数据主要选取商场货品的条形码数据库。

1.2研究背景

条形码随着信息技术和计算机的不断发展,已经成为市场流通的大趋势,只要商品进入商场、超市,均需要通过条形码扫描来获取商品的各种信息。条码技术是迄今为止最经济实用的一种自动识别技术。条码的功能强大,拥有各种优点。但在日常生活中,条码的扫描有各种弊端。在超市利用激光扫描器进行扫描的时候,需要将条形码放置在与扫描器垂直的地方,并且条码如果有一定程度的被遮挡可能会导致扫描的失败。今天我们所讨论的就是通过基于计算机语言的算法对图像进行处理,使得软件译码具有更大的灵活性和较低的成本,这种条形码的定位识别技术可以便于条形码产品的信息管理以及匹配,有非常长远的发展前景。

于是,如何对带有条形码的图像进行处理并选取条形码,将条形码从图像中选取出来成为今天所讨论的问题。

1.3设计思路

传统利用扫描器对产品条形码的扫描需要人工将条形码摆到正确位置,且扫描的效率相对比较低,所以本实验主要对带有条形码的图像进行处理,将图像中单个或者多个不与扫描直线垂直的条形码选取出来,将这些条形码进行变换,使变换后的条形码可以被扫描识别。

整体思路如图1所示:

向量表的左边为向量结构体的数组,数组用来存放水平、垂直向量。数组右边用链表来存放不与该向量垂直的直线。用该数据结构首先可以动态增加直线的数量;其次由于在图片中,条形码的水平投影可能会出现梯形的形状,所以将直线划分为:和水平向量不垂直的直线;和水平向量垂直的直线;最后因为水平方向的条形码和垂直方向条形码的最小矩形选定不一样,所以最后选取了该数据结构作为存储扫描图像直线的存储结构。

2 算法实现

2.1图像的初步处理

在复杂的图像中,我们人眼可以迅速判断条形码位置的很大原因在于条形码颜色分布具有特殊性,它始终是黑白条的形状出现在图像中,所以我们可以利用这个特性初步的对图像进行处理。

根据参考文献[1]可以知道利用条形码的颜色信息对图像进行二值化,在RGB颜色空间中,条形码颜色一般满足:

2.2  Canny边缘检测的参数选取

通过颜色的初步筛选过后,Canny边缘检测的工作相对简单一点。但Canny边缘检测作为图像对图像处理结果的好坏直接决定了后续hough直线检测的检测结果,所以Canny边缘检测的参数设定及其重要。图4为利用条形码颜色特性处理过Canny边缘检测后的图像。

2.3 hough直线检测

参考文献[3]和文献[4]利用Hough变换法提取直线是一种变换域提取直线的方法,它把直线上点的坐标变换到过点的直线的系数域,巧妙地利用了共线和直线相交的关系,使直线提取的问题转化为计数问题。利用这个重要性质可以检测共点直线。

Hough直线检测的结果直接决定了图像能否定位到条形码以及是否定位到正确的条形码位置。参考文献[5],图像中因为条形码的形状特性,所以每条直线之间的距离可能会很近,为了可以将这些直线分开,避免累加的错误,所以在参数上面theta参数极角设置为0.1,可以将很近的直线分开,并显示出来。图5为图像hough直线检测的结果图。

分析两个图像,可以发现通过条形码颜色特性进行初步处理的图像基本确定了条形码的所在位置;而利用Atsu算法处理的图像进行hough直线检测后出现较多的冗余直线,并且存在条形码的边界部分不能被检测到。

经过hough直线检测的对比,可以确定利用条形码颜色特性进行初步处理图像可以获得较好的结果。

2.4 直线处理

经过hough直线检测过后基本可以确定图像中条形码的位置,但由于图像中可能出现多种条形码,所以就需要对hough直线检测到的直线进行分类,同时删除掉冗余的直线。

如果该直线属于条形码中的某一条直线,那么在这条直线的附近一定存在多条和它不垂直的直线,根据这个特性,那么就可以进一步的筛选直线,同时将直线进行分類。在图像中有可能出现条形码的投影为梯形的情况,所以在直线分类中就不能单一的依靠直线斜率进行分类,经过对比决定用直线的位置来决定直线是否属于同一个条形码,但这个算法不能将位置较近并且方向一致的条形码分开。

2.4.1向量表的创建

创建本文前面介绍的向量表,将直线分为与垂直向量不垂直的直线和与垂直向量垂直的直线两类,将所有的直线添加完毕后在链表的最后加入两个空直线,方便后续向量表直线的遍历。向量表的数组结构体

structVectorHough

{ int x;

int y;

};

x,y为向量的方向;

StructSavelines

{

VectorHough veline;

int lineNum;

int windowcount;

Houghlines * next;

};

Veline为向量方向,lineNum为该向量方向的直线数量,windowcount为窗口数;

structHoughlines

{

Point start;

Point end;

VectorHough vecline;

int sign;

int windowcount;

Houghlines * next;

};

Start,end分别为直线的起始点和终止点,vecline为直线的向量,sign为信号位,表示该条直线是否被处理,windowcount为直线所属的窗口。

通过计算两两直线间的距离,并将符合算法的直线加入向量表中,完成初步的直线处理。

2.5 定位最小矩形框

经过之前的直线处理,通过距离将直线分为不同的窗口,接下来便是通过这些直线确定不同条形码所在的最小矩形框。

因为向量表分为垂直向量和水平向量,所以在框选最小矩形的时候考虑的参数也不相同。

检索水平向量的时候,直线的向量方向均是由y轴坐标较小的一点指向y轴坐标较大的点,所以在定位最小矩形的时候主要选取x值最小起始点和x值最大的末位点作为矩形对角线。如图6所示:

线段AD表示x值最小起始点的直线,BC表示x值最大的末位点的直线,AC则为矩形的对角线。

由于可以AD直线的向量,所以通过勾股定理就可以计算得到AD的长度,进而因为AE为水平向量,所以可以通过A计算得到D点的坐标,同理得到B点坐标,进而确定了最小的矩形框。

在选取垂直条形码的计算方法同水平条码一致,只不过将矩形对角线的确立由x值大小变换为y值的大小,同理可以确定垂直条形码的最小矩形框。如图7所示:

通过前面对直线的处理,由于图像像素原因hough直线检测的时候有时会出现条形码边缘直线没有被检测出,所以导致最后的最小矩形可能不能完全包括完整的条形码。

2.6旋转变换

通过选取最小矩形框以后,便是将检测到的条形码摆正。将选取过后的四边形框进行变换,将其变为矩形且该矩形的长与扫描器的扫描线平行。

如图6,已知了AB的斜率,所以将上述图形变换的矩阵为:

其中θ为直线AB与水平向量的夹角,通过向量角度公式可以计算得到Cosθ。

2.7对条码识别

图像求阈值,加速算法处理,并合理使用模糊化的效果,形态学去除黑洞,闭运算[6],膨胀腐蚀,断开二维码连接[7],查找轮廓,计算轮廓最大面积,拟合轮廓矩形,得到最终结果;

接下来条形码识别,可以使用zbar识别库。

3 总结

通过hough直线检测可以在一定程度上对图像中单条或者多条条形码进行位置的初步确定。

参考文献:

[1] 张瑾. 基于图像处理的一维条形码识别技术研究[J].中国石油大学(华东),2014:52-55.

[2] 李牧,闫继红,李戈,等.自适应Canny算子边缘检测技术[J].哈尔滨工程大学学报,2007,28(9):1003-1007.

[3] OTSU N.A threshold selection method from gray-levelhistograms[J].IEEE Trans on Systems,Man,and Cyber-netics,  1979,9(1):62-66.

[4] 徐欣风,董贵华,姚志军.仿真模板的 Hough 变换直线检测[J].仪器仪表学报,2004,25( 4) : 13-15.

[5] 徐超.基于改進随机Hough变换的直线检测算法[J].江南大学机械工程学院江苏省食品先进制造装备技术重点实验室,2018:6-7

[6] 陈瑞琳.一种去除黑洞影响的猪耳标码图形的二值化方法[P].发明专利,2013.09.04

[7] 王宇青.灰度膨胀(腐蚀)方程求解及相关问题[D].苏州科技学院,2015.

【通联编辑:光文玲】

猜你喜欢
图像识别图像处理
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
基于图像处理的机器人精确抓取的设计与实现
图像识别在物联网上的应用
机器学习在图像处理中的应用
图像识别在水质检测中的应用
Bayesian-MCMC算法在计算机图像处理中的实践
改进压缩感知算法的图像处理仿真研究
浅谈模式识别在图像识别中的应用
基于图像处理的定位器坡度计算