CN112560538A - 一种根据图像冗余信息快速定位受损qr码的方法 - Google Patents

一种根据图像冗余信息快速定位受损qr码的方法 Download PDF

Info

Publication number
CN112560538A
CN112560538A CN202110213441.XA CN202110213441A CN112560538A CN 112560538 A CN112560538 A CN 112560538A CN 202110213441 A CN202110213441 A CN 202110213441A CN 112560538 A CN112560538 A CN 112560538A
Authority
CN
China
Prior art keywords
edge
code
pixel
point
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110213441.XA
Other languages
English (en)
Other versions
CN112560538B (zh
Inventor
吴俊斌
顾善中
田晓明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seuic Technologies Co Ltd
Original Assignee
Jiangsu Seuic Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu Seuic Technology Co ltd filed Critical Jiangsu Seuic Technology Co ltd
Priority to CN202110213441.XA priority Critical patent/CN112560538B/zh
Publication of CN112560538A publication Critical patent/CN112560538A/zh
Application granted granted Critical
Publication of CN112560538B publication Critical patent/CN112560538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1452Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/02Affine transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/136Segmentation; Edge detection involving thresholding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • G06T2207/10008Still image; Photographic image from scanner, fax or copier
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种根据图像冗余信息快速定位受损QR码的方法,步骤包括:对包含有QR码的图片进行灰度处理;对灰度图片进行清晰度评估;对灰度图片进行滤波及边缘检测;根据条纹的宽度比例确定QR码的三个定位图案;结合定位图案的大小对QR码区域进行自适应二值化;通过仿射变换寻找QR码的四条边缘,最后使用单应性变换进行定位校正。该快速定位受损QR码的方法充分利用图像中的冗余信息,尽可能减少图像遍历次数,提高算法速度;采用自适应阈值边缘检测和自适应阈值二值化,提高边缘检测和二值化的效果;对不清晰的图像实行过滤,能够避免计算资源过渡浪费。

Description

一种根据图像冗余信息快速定位受损QR码的方法
技术领域
本发明涉及一种快速定位受损QR码的方法,尤其是一种根据图像冗余信息快速定位受损QR码的方法。
背景技术
QR码(Quick Response Code,快速响应矩阵码)是一种二维码,其具有信息存储密度高,容错能力强等优点,通过其明显的定位图案可实现快速定位,因此得到了广泛的应用。
随着信息化程度的发展,各行各业都在以减少人工成本、提高信息化水平为目标,而简单、成本低廉、识读速度快的QR码标签成了各大行业的首选。通过粘贴QR码标签,并在工厂流水线上进行识别,可以自动记录各零件生产和组装的全过程,实现快速的产品溯源及良品分析;在物流行业通过QR码可实现全自动的包裹分拣,减少人工参与成本;在零售行业,可替代条形码进行商品识别;在移动支付行业,QR码的扫码支付已得到了广泛应用。可见QR码已经成为快速获取物品信息或人类信息的重要入口。
随着QR码进军各大行业,对扫码设备的扫码能力进一步提高要求。因为二维码在识读过程中极易受到各种因素的影响,如QR码的污损,对比度低,光照不均,设备的运动模糊,失焦模糊以及各类噪声等都会影响扫码算法的定位效果,而定位效果的提高往往带来了速度的降低,这对采照环境较差且希望加快生产的工业领域是个矛盾的选择。鉴于此,如何在保证定位速度的同时提高受损QR码的定位效果是亟待解决的问题。
传统图像处理算法十分依赖QR码的定位图案,同时其往往只能针对特定场景进行优化,当遭遇复杂环境时会产生无法正确定位的问题。可能的环境如下:(1)在光照不充分的环境下采集的QR码,具有色彩偏暗,对比度低的缺点;(2)非平面上或发生严重弯曲变形的QR码将无法有效定位;(3)打印在金属材质上的点阵QR码通常前景背景颜色相同;(4)移动环境中采集的QR码容易产生运动模糊;(5)定位图案遭到严重污损时将无法有效定位;(6)失焦后的二维码会产生失焦模糊。传统图像处理算法极难穷尽所有场景,因此当算法应用到其他场景时会导致无法定位的情况发生。现有的深度学习算法经过大量训练后可以有效定位QR码的区域,虽其不再依赖QR码的定位图案,但其定位效果受到模型大小的影响。较大的模型具有较好的定位能力,但由于其需要进行大量的卷积和浮点运算,使得算法速度较慢。深度学习依赖GPU等具有并行计算的硬件设备,这对于硬件落后的扫码设备来说更进一步减慢了定位的速度,甚至无法将算法进行有效移植。
发明内容
发明目的:提供一种根据图像冗余信息快速定位受损QR码的方法,能够充分借助图像冗余信息,不断调整阈值来进行边缘检测及二值化,在此基础上进行邻域的异常过滤,最后实现QR码的快速定位。
技术方案:本发明所述的根据图像冗余信息快速定位受损QR码的方法,包括如下步骤:
步骤1,对包含有QR码的图片进行灰度处理,获取灰度图片;
步骤2,通过随机采样对灰度图片进行清晰度评估;
步骤3,通过自适应阈值对灰度图片进行滤波及边缘检测;
步骤4,通过检测到的边缘确定条纹的宽度,并根据条纹的宽度比例确定QR码的三个定位图案;
步骤5,通过三个定位图案确定QR码区域,再结合定位图案的模块宽度s,重新对QR码区域进行边缘检测,并对边缘进行二值化;
步骤6,通过三个定位图案计算仿射变化矩阵,以此对灰度图像进行仿射变换,并根据二值化结果搜寻出QR码的四条边缘线,边缘线交于QR码的四个角点,可求得单应性变换矩阵,最后通过单应性变换进行定位校正。
进一步的,步骤2中,通过随机采样对灰度图片进行清晰度评估的具体步骤为:
步骤2.1,使用ISAAC伪随机数生成算法生成
Figure 662536DEST_PATH_IMAGE001
个满足正态分布的随机数,其中WH分别为灰度图像的宽度像素和高度像素;
步骤2.2,由相邻两个随机数确定一个像素点的坐标
Figure 11609DEST_PATH_IMAGE002
,共可确定
Figure 980702DEST_PATH_IMAGE003
个像素点,并以这些像素点坐标作为各个采样点坐标;
步骤2.3,根据各个采样点坐标在灰度图片上进行采样,取每个采样点及其紧邻的共九个点的像素值的均值作为该采样点的像素值;
步骤2.4,统计所有采样点的像素值,求出全部采样点像素值的均值、方差以及直方分布;
步骤2.5,将方差与清晰度阈值进行比较,若方差大于等于清晰度阈值,则表明清晰度符合要求,直接进入步骤3,若方差小于清晰度阈值,则表明清晰度较低,返回直方分布结果,并进入步骤2.6;
步骤2.6,根据直方分布计算出前景像素值和背景像素值,然后通过前景像素值和背景像素值调整扫码设备的闪光灯亮度,再启动扫码设备重新采集包含有QR码的图片,再返回步骤1;若无法启动扫码设备,则直接进入步骤3。
进一步的,步骤2.6中,根据直方分布计算出前景像素值和背景像素值的具体步骤为:
步骤2.6.1,计算当前像素值的数量梯度:
Figure 73423DEST_PATH_IMAGE004
式中,
Figure 483676DEST_PATH_IMAGE005
表示像素值为
Figure 3650DEST_PATH_IMAGE006
的数量梯度,
Figure 866564DEST_PATH_IMAGE007
表示像素值为
Figure 28555DEST_PATH_IMAGE008
的采样点个数,
Figure 27735DEST_PATH_IMAGE009
表示像素值为
Figure 108823DEST_PATH_IMAGE010
的采样点个数,并存在
Figure 927875DEST_PATH_IMAGE011
以及
Figure 627978DEST_PATH_IMAGE012
的关系;
步骤2.6.2,进行极值点判断:若
Figure 340719DEST_PATH_IMAGE013
Figure 202495DEST_PATH_IMAGE005
的符号相反或者
Figure 633477DEST_PATH_IMAGE005
值为0时,则像素值
Figure 606112DEST_PATH_IMAGE006
确定为一个直方分布的疑似极值点,统计像素值
Figure 173360DEST_PATH_IMAGE006
及其相邻两个像素值的采样点总个数为:
Figure 206038DEST_PATH_IMAGE014
式中,
Figure DEST_PATH_IMAGE015
为像素值
Figure 530840DEST_PATH_IMAGE006
周围的采样点总个数,
Figure 307166DEST_PATH_IMAGE016
为当前像素值
Figure 994499DEST_PATH_IMAGE006
的采样点个数;
步骤2.6.3,比较所有疑似极值点的周围采样点总个数
Figure 198079DEST_PATH_IMAGE015
Figure 338073DEST_PATH_IMAGE015
最大的疑似极值点对应的像素值作为背景像素值,
Figure 918090DEST_PATH_IMAGE015
第二大的疑似极值点对应的像素值作为前景像素值。
进一步的,步骤2.6中,根据前景像素值和背景像素值调整扫码设备的闪光灯亮度时,若前景像素值和背景像素值均小于127,则将扫码设备的闪光灯亮度调整至高于上一次,若前景像素值和背景像素值均大于等于127,则将扫码设备的闪光灯亮度调整至低于上一次。
进一步的,步骤3中,通过自适应阈值对灰度图片进行滤波及边缘检测的具体步骤为:
步骤3.1,对灰度图片进行往返式逐行或逐列扫描,通过当前扫描行或扫描列中所有像素点的像素值,求出该扫描行或扫描列的直方分布,再通过直方分布计算出当前扫描行或扫描列的前景像素值
Figure 459930DEST_PATH_IMAGE017
和背景像素值
Figure 834410DEST_PATH_IMAGE018
,由此构造初始边缘阈值:
Figure 461701DEST_PATH_IMAGE019
式中,ABS为求绝对值函数,
Figure 314250DEST_PATH_IMAGE020
为最小边缘阈值,
Figure DEST_PATH_IMAGE021
为当前边缘阈值;
步骤3.2,使用指数移动平均对该扫描行或扫描列中每一个像素点进行逐一滤波,滤波满足公式:
Figure 191157DEST_PATH_IMAGE022
式中,
Figure 2118DEST_PATH_IMAGE023
为当前像素点的滤波值,
Figure 523229DEST_PATH_IMAGE024
为上一像素点的滤波值,
Figure 179470DEST_PATH_IMAGE006
为当前像素点的像素值,
Figure DEST_PATH_IMAGE025
为设置的定值,范围为0到1之间;
步骤3.3,通过laplace算子判断当前像素点是否为边缘,若为边缘,则根据
Figure 368005DEST_PATH_IMAGE026
的规则筛除弱边缘,否则将当前像素点的坐标作为边缘值
Figure 349868DEST_PATH_IMAGE027
存储至当前扫描行或扫描列的边缘集
Figure 951751DEST_PATH_IMAGE028
中,并更新自适应阈值
Figure 677261DEST_PATH_IMAGE029
步骤3.4,缩小自适应阈值
Figure 48200DEST_PATH_IMAGE030
,再返回步骤3.2对下一个像素点进行扫描,直到该扫描行或该扫描列的全部像素点扫描完毕,由此得到当前扫描行或扫描列的边缘集合:
Figure 200963DEST_PATH_IMAGE031
式中,
Figure 165508DEST_PATH_IMAGE028
为当前扫描行或扫描列的边缘集,
Figure 553764DEST_PATH_IMAGE032
为当前扫描行或扫描列中第n个边缘值;
步骤3.5,重复步骤3.1-3.4直到求得整个灰度图像每行或每列的边缘集合。
进一步的,步骤4中,根据条纹的宽度比例确定QR码的三个定位图案的具体步骤为:
步骤4.1,将往返式扫描获得的边缘值统一为同一方向的边缘值
Figure 654576DEST_PATH_IMAGE033
c为当前行或列的编号,若c为奇数,则
Figure 837295DEST_PATH_IMAGE034
,若c为偶数,则
Figure DEST_PATH_IMAGE035
L为当前行或列的长度,若为横向扫描,则L等于灰度图像宽度W,若为纵向扫描,则L等于灰度图像高度H
步骤4.2,由各个相邻的边缘构成一个条纹,再计算出各个条纹的宽度:
Figure 961240DEST_PATH_IMAGE036
式中,
Figure 887608DEST_PATH_IMAGE037
为第i个条纹的宽度;
步骤4.3,根据相邻五个条纹宽度寻找符合1:1:3:1:1的条纹比例,并记录在当前条纹的匹配条纹集合中:
Figure 842925DEST_PATH_IMAGE038
式中,匹配条纹
Figure 462126DEST_PATH_IMAGE039
,包含了每个匹配条纹的六个边缘值,为当前扫描行或列的边缘集E cur 的子集;
步骤4.4,通过上一行或列匹配条纹集P last 的每个匹配条纹
Figure 401263DEST_PATH_IMAGE040
来过滤下一行或列的边缘集E cur ,同样的通过下一行或列匹配条纹集P cur 的每个匹配条纹
Figure DEST_PATH_IMAGE041
来过滤上一行或列的边缘集E last ,搜寻出因图像噪声而遗漏的匹配条纹,并记录在相应行或列的匹配条纹集合中;
步骤4.5,对搜寻到的条纹进行聚类,即满足相邻边缘的行间距和列间距都≤阈值t时,
Figure 272267DEST_PATH_IMAGE042
,则认为是同一条纹,从而形成更宽的条纹;
步骤4.6,将聚类后获得的各个横向条纹和纵向条纹进行对应交叉,则最终确定出定位图案,不交叉的则过滤掉;
步骤4.7,计算定位图案的中心点o、边缘点集V={v 0,v 1,v 2,…,v n}以及模块宽度
Figure 613249DEST_PATH_IMAGE043
,式中,d(o, v i)表示横向条纹的边缘点v i和中心点o的横向距离或纵向条纹的边缘点v i和中心点o的纵向距离,若中心点o的坐标为(x o ,y o ),边缘点v i的坐标为(x i ,y i ),则横向距离为ABS(x o ,- x i ),纵向距离为ABS(y o ,- y i )。
进一步的,步骤4.4中,过滤的具体步骤为:
步骤4.4.1,通过P cur 中的每个匹配条纹
Figure 403351DEST_PATH_IMAGE039
对上一行或列的边缘集
Figure 564205DEST_PATH_IMAGE044
进行搜索,令
Figure 97955DEST_PATH_IMAGE045
以及
Figure 27864DEST_PATH_IMAGE046
步骤4.4.2,阈值判断:若满足
Figure 723288DEST_PATH_IMAGE047
,其中
Figure 371438DEST_PATH_IMAGE048
,则
Figure 584245DEST_PATH_IMAGE049
Figure 899820DEST_PATH_IMAGE050
具有对应关系,并记录
Figure 31724DEST_PATH_IMAGE049
步骤4.4.3,若满足步骤4.4.2的阈值判断,则更新
Figure 432749DEST_PATH_IMAGE051
,否则更新
Figure 183667DEST_PATH_IMAGE052
,返回步骤4.4.2,直到
Figure 478383DEST_PATH_IMAGE053
Figure 656554DEST_PATH_IMAGE054
的所有元素遍历完毕;
步骤4.4.4,若
Figure 544876DEST_PATH_IMAGE053
中的每个边缘值
Figure 958539DEST_PATH_IMAGE050
均在
Figure 717548DEST_PATH_IMAGE054
中找到与之对应的边缘值
Figure 925676DEST_PATH_IMAGE049
,则表明从上一行或列边缘集中找到一个因图像噪声而遗漏的匹配条纹,并将其记录在上一行或列的匹配条纹集
Figure 770135DEST_PATH_IMAGE055
中,返回步骤4.4.1,使用下一个匹配条纹进行搜索,直到
Figure 394014DEST_PATH_IMAGE056
的所有元素遍历完毕。
进一步的,步骤5的具体步骤为:
步骤5.1,对定位图案进行配对,配对规则为:模块宽度s小于阈值t、颜色相同且不共线;
步骤5.2,根据配对的三个定位图案来确定QR码区域;
步骤5.3,对QR码区域进行边缘检测识别黑白空间,从而形成初步的二值化处理;
步骤5.4,使用均值法计算QR码区域内各像素点在其邻域内的二值化阈值,其中邻域大小是边长为模块宽度s的方形区域,再根据二值化阈值对QR码区域进行二值化处理;
步骤5.5,将步骤5.3的二值化与步骤5.4的二值化进行比较,若像素值都二值化为0,则更新为0,若都二值化为255,则更新为255,否则存在以下三种情况:
情况1,若当前像素点左边的像素点及上边的像素点都二值化为0,则当前像素点二值化为0;
情况2,若当前像素点左边的像素点及上边的像素点都二值化为255,则当前像素点二值化为255;
情况3,若当前像素点左边的像素点及上边的像素点的二值化结果不同,则以这两个像素点的均值作为像素阈值,若当前像素点的像素值大于像素阈值,则二值化为255,否则二值化为0。
进一步的,步骤6的具体步骤为:
步骤6.1,设标准QR码的三个定位图案的中心点坐标分别为
Figure 132163DEST_PATH_IMAGE057
Figure 917716DEST_PATH_IMAGE058
以及
Figure 249472DEST_PATH_IMAGE059
,当前QR码的三个定位图案中心点坐标为
Figure 4938DEST_PATH_IMAGE060
Figure 738539DEST_PATH_IMAGE061
以及
Figure 819627DEST_PATH_IMAGE062
则当前QR码的三个定位图案满足如下仿射变换:
Figure 638679DEST_PATH_IMAGE063
式中,
Figure 61484DEST_PATH_IMAGE064
为仿射变换系数,
Figure 774225DEST_PATH_IMAGE065
为坐标
Figure 636001DEST_PATH_IMAGE002
通过仿射变换投影到仿射域的坐标,将
Figure 66983DEST_PATH_IMAGE066
以及
Figure 39618DEST_PATH_IMAGE067
代入上式求得仿射变换系数;
步骤6.2,将边缘点集V的每个边缘点坐标通过上述仿射变换映射到仿射域中,通过与标准QR码的坐标对比,确定出该边缘点在标准QR码的位置,找到属于标准QR码上边缘线的边缘点,做最小二乘直线拟合,形成上边缘线;
步骤6.3,根据步骤6.2同理求得下边缘线、左边缘线以及右边缘线;
步骤6.4,沿着上边缘线、下边缘线、左边缘线以及右边缘线在步骤5的二值化图像中采样QR码的边缘黑点,并根据新增加的采样点重新做最小二乘直线拟合,使得直线拟合更加准确;
步骤6.5,上边缘线、下边缘线、左边缘线以及右边缘线相交于QR码的四个角点
Figure 13390DEST_PATH_IMAGE068
,设
Figure 436281DEST_PATH_IMAGE068
在单应性变换域中的对应关系为
Figure 698767DEST_PATH_IMAGE069
,并满足如下单应性变换:
Figure 865306DEST_PATH_IMAGE070
式中,
Figure 693584DEST_PATH_IMAGE071
为单应性变换系数,
Figure 162743DEST_PATH_IMAGE065
为坐标
Figure 443683DEST_PATH_IMAGE002
通过单应性变换投影到单应性域的坐标,由
Figure 882754DEST_PATH_IMAGE068
这四点及其对应关系即可求得单应性变换矩阵,对QR码完成定位校正。
本发明与现有技术相比,其有益效果是:通过充分利用图像中的冗余信息,尽可能减少图像遍历次数,提高算法速度;采用自适应阈值边缘检测和自适应阈值二值化,提高边缘检测和二值化的效果;图像传入时先进行简单的图像分析,对不清晰的图像实行过滤,能够避免计算资源过渡浪费。
附图说明
图1为本发明的方法流程图;
图2为本发明的QR码横向定位图案条纹示意图;
图3为本发明的QR码定位图案中心及边缘点集识别示意图;
图4为本发明的QR码仿射变换示意图;
图5为本发明的QR码边缘直线拟合示意图;
图6为本发明的QR码边缘点采样示意图;
图7为本发明的QR码单应性变换示意图;
图8为本发明的QR码定位校正示意图。
具体实施方式
下面结合附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
如图1所示,本发明公开的根据图像冗余信息快速定位受损QR码的方法,包括如下步骤:
根据图像冗余信息快速定位受损QR码的方法,包括如下步骤:
步骤1,对包含有QR码的图片进行灰度处理,获取灰度图片;
步骤2,通过随机采样对灰度图片进行清晰度评估;
步骤3,通过自适应阈值对灰度图片进行滤波及边缘检测;
步骤4,通过检测到的边缘确定条纹的宽度,并根据条纹的宽度比例确定QR码的三个定位图案;
步骤5,通过三个定位图案确定QR码区域,再结合定位图案的模块宽度s的大小,重新对QR码区域进行边缘检测,并对边缘进行二值化;
步骤6,通过三个定位图案计算仿射变化矩阵,以此对灰度图像进行仿射变换,如图4所示,并根据二值化结果搜寻出QR码的四条边缘线,边缘线交于QR码的四个角点,可求得单应性变换矩阵,最后通过单应性变换进行定位校正。
通过充分利用图像中的冗余信息,尽可能减少图像遍历次数,提高算法速度;采用自适应阈值边缘检测和自适应阈值二值化,提高边缘检测和二值化的效果;图像传入时先进行简单的图像分析,对不清晰的图像实行过滤,能够避免计算资源过渡浪费。
进一步的,步骤2中,通过随机采样对灰度图片进行清晰度评估的具体步骤为:
步骤2.1,使用ISAAC伪随机数生成算法生成
Figure 565540DEST_PATH_IMAGE072
个满足正态分布的随机数,其中W和H分别为灰度图像的宽度像素和高度像素;图像在传入时,通过随机采样对图像进行分析,采样方式以正态分布的形式进行采样,使得中间区域的采样点更多,这主要是因为大多数扫码设备在采集QR码数据时,往往QR码在图像边缘的概率较小,因此根据正态分布的随机数对灰度图片进行采样,使采样满足灰度图片中间采样点多以及边缘采样点较少;
步骤2.2,由相邻两个随机数确定一个像素点的坐标
Figure 2337DEST_PATH_IMAGE073
,共可确定
Figure 504994DEST_PATH_IMAGE074
个像素点,并以这些像素点坐标作为各个采样点坐标;
步骤2.3,根据各个采样点坐标在灰度图片上进行采样,取每个采样点及其紧邻的共九个点的像素值的均值作为该采样点的像素值,可有效避免异常点的影响;
步骤2.4,统计所有采样点的像素值,求出全部采样点像素值的均值、方差以及直方分布;
步骤2.5,将方差与清晰度阈值进行比较,若方差大于等于清晰度阈值,则表明清晰度符合要求,直接进入步骤3,若方差小于清晰度阈值,则表明清晰度较低,返回直方分布结果,并进入步骤2.6;通过采样的部分像素点进行清晰度分析,倘若清晰度不够可反馈给扫码设备进行下一帧的采集,以采集更清晰的图像进行分析,提高识别率;
步骤2.6,根据直方分布计算出前景像素值和背景像素值,然后通过前景像素值和背景像素值调整扫码设备的闪光灯亮度,再启动扫码设备重新采集包含有QR码的图片,再返回步骤1;若无法启动扫码设备,则直接进入步骤3。
进一步的,步骤2.6中,根据直方分布计算出前景像素值和背景像素值的具体步骤为:
步骤2.6.1,计算当前像素值的数量梯度:
Figure 747756DEST_PATH_IMAGE075
式中,
Figure 285048DEST_PATH_IMAGE076
表示像素值为
Figure 955064DEST_PATH_IMAGE077
的数量梯度,
Figure 945016DEST_PATH_IMAGE078
表示像素值为
Figure 866836DEST_PATH_IMAGE079
的采样点个数,
Figure 383268DEST_PATH_IMAGE080
表示像素值为
Figure DEST_PATH_IMAGE081
的采样点个数,并存在
Figure 630710DEST_PATH_IMAGE082
以及
Figure 842379DEST_PATH_IMAGE083
的关系;
步骤2.6.2,进行极值点判断:若
Figure 426944DEST_PATH_IMAGE084
Figure 673249DEST_PATH_IMAGE076
的符号相反或者
Figure 685068DEST_PATH_IMAGE076
值为0时,则像素值
Figure 649612DEST_PATH_IMAGE077
确定为一个直方分布的疑似极值点,统计像素值
Figure 772289DEST_PATH_IMAGE077
及其相邻两个像素值的采样点总个数为:
Figure 138680DEST_PATH_IMAGE085
式中,
Figure 727924DEST_PATH_IMAGE086
为像素值
Figure 38820DEST_PATH_IMAGE077
周围的采样点总个数,
Figure 840554DEST_PATH_IMAGE087
为当前像素值
Figure 451663DEST_PATH_IMAGE077
的采样点个数;
步骤2.6.3,比较所有疑似极值点的周围采样点总个数
Figure 680651DEST_PATH_IMAGE086
Figure 619788DEST_PATH_IMAGE086
最大的疑似极值点对应的像素值作为背景像素值,
Figure 349846DEST_PATH_IMAGE086
第二大的疑似极值点对应的像素值作为前景像素值。
进一步的,步骤2.6中,根据前景像素值和背景像素值调整扫码设备的闪光灯亮度时,若前景像素值和背景像素值均小于127,则将扫码设备的闪光灯亮度调整至高于上一次,若前景像素值和背景像素值均大于等于127,则将扫码设备的闪光灯亮度调整至低于上一次。
进一步的,步骤3中,通过自适应阈值对灰度图片进行滤波及边缘检测的具体步骤为:
步骤3.1,对灰度图片进行往返式逐行或逐列扫描,通过当前扫描行或扫描列中所有像素点的像素值,求出该扫描行或扫描列的直方分布,再通过直方分布计算出当前扫描行或扫描列的前景像素值
Figure 690829DEST_PATH_IMAGE088
和背景像素值
Figure 621876DEST_PATH_IMAGE089
,由此构造初始边缘阈值:
Figure 48309DEST_PATH_IMAGE090
式中,ABS为求绝对值函数,
Figure 582059DEST_PATH_IMAGE091
为最小边缘阈值,
Figure 777548DEST_PATH_IMAGE092
为当前边缘阈值;
步骤3.2,使用指数移动平均对该扫描行或扫描列中每一个像素点进行逐一滤波,滤波满足公式:
Figure 472971DEST_PATH_IMAGE093
式中,
Figure 121121DEST_PATH_IMAGE094
为当前像素点的滤波值,
Figure 192983DEST_PATH_IMAGE095
为上一像素点的滤波值,
Figure 242978DEST_PATH_IMAGE077
为当前像素点的像素值,
Figure 109303DEST_PATH_IMAGE096
为设置的定值,范围为0到1之间,指数移动平均滤波器具有算法简单、滤波速度快的优点;
步骤3.3,通过laplace算子判断当前像素点是否为边缘,若为边缘,则根据
Figure 244749DEST_PATH_IMAGE097
的规则筛除弱边缘,否则将当前像素点的坐标作为边缘值
Figure 261247DEST_PATH_IMAGE098
存储至当前扫描行或扫描列的边缘集
Figure 165749DEST_PATH_IMAGE099
中,并更新自适应阈值
Figure 468554DEST_PATH_IMAGE100
;由于laplace算子极易受到异常值的影响,为此通过阈值可以过滤弱边缘,为了避免有效边缘被过滤,阈值会通过周围图像的直方分布进行调整,有效减少了异常边缘对定位图案的判断,能够极大提高了定位图案条纹的识别率;
步骤3.4,缩小自适应阈值
Figure 837436DEST_PATH_IMAGE101
,再返回步骤3.2对下一个像素点进行扫描,直到该扫描行或该扫描列的全部像素点扫描完毕,由此得到当前扫描行或扫描列的边缘集合:
Figure 516679DEST_PATH_IMAGE102
式中,
Figure 275688DEST_PATH_IMAGE099
为当前扫描行或扫描列的边缘集,
Figure 749395DEST_PATH_IMAGE103
为当前扫描行或扫描列中第n个边缘值;
步骤3.5,重复步骤3.1-3.4直到求得整个灰度图像每行或每列的边缘集合。
图像中一般存在大量的冗余信息,如上下两行的像素点是相近的,因此当上一行存在异常时,可以通过下一行对上一行进行过滤,避免在同一行上进行过多的迭代和判断,有效提高了算法速度。
进一步的,步骤4中,根据条纹的宽度比例确定QR码的三个定位图案的具体步骤为:
步骤4.1,将往返式扫描获得的边缘值统一为同一方向的边缘值
Figure 593854DEST_PATH_IMAGE104
c为当前行或列的编号,若c为奇数,则
Figure 811208DEST_PATH_IMAGE105
,若c为偶数,则
Figure 424724DEST_PATH_IMAGE106
L为当前行或列的长度,若为横向扫描,则L等于灰度图像宽度W,若为纵向扫描,则L等于灰度图像高度H
步骤4.2,由各个相邻的边缘构成一个条纹,再计算出各个条纹的宽度:
Figure 69332DEST_PATH_IMAGE036
式中,
Figure 401087DEST_PATH_IMAGE107
为第i个条纹的宽度;
步骤4.3,根据相邻五个条纹宽度寻找符合1:1:3:1:1的条纹比例,并记录在当前条纹的匹配条纹集合中:
Figure 297499DEST_PATH_IMAGE038
式中,匹配条纹
Figure 421313DEST_PATH_IMAGE108
,包含了每个匹配条纹的六个边缘值,为当前扫描行或列的边缘集E cur 的子集;
步骤4.4,通过上一行或列匹配条纹集P last 的每个匹配条纹
Figure 112188DEST_PATH_IMAGE109
来过滤下一行或列的边缘集E cur ,同样的通过下一行或列匹配条纹集P cur 的每个匹配条纹
Figure 931239DEST_PATH_IMAGE110
来过滤上一行或列的边缘集E last ,搜寻出因图像噪声而遗漏的匹配条纹,并记录在相应行或列的匹配条纹集合中,QR码横向定位图案条纹如图2所示;
步骤4.5,对搜寻到的条纹进行聚类,即满足相邻边缘的行间距和列间距都≤阈值t时,
Figure 490397DEST_PATH_IMAGE111
,则认为是同一条纹,从而形成更宽的条纹;
步骤4.6,将聚类后获得的各个横向条纹和纵向条纹进行对应交叉,则最终确定出定位图案,不交叉的则过滤掉;
步骤4.7,计算定位图案的中心点o、边缘点集V={v 0,v 1,v 2,…,v n}以及模块宽度
Figure 609662DEST_PATH_IMAGE112
,式中,d(o, v i)表示横向条纹的边缘点v i和中心点o的横向距离或纵向条纹的边缘点v i和中心点o的纵向距离,若中心点o的坐标为(x o ,y o ),边缘点v i的坐标为(x i ,y i ),则横向距离为ABS(x o ,- x i ),纵向距离为ABS(y o ,- y i )。
进一步的,步骤4.4中,过滤的具体步骤为:
步骤4.4.1,通过P cur 中的每个匹配条纹
Figure 2598DEST_PATH_IMAGE108
对上一行或列的边缘集
Figure 308945DEST_PATH_IMAGE113
进行搜索,令
Figure 547160DEST_PATH_IMAGE114
以及
Figure 379986DEST_PATH_IMAGE115
步骤4.4.2,阈值判断:若满足
Figure 412665DEST_PATH_IMAGE116
,其中
Figure 330942DEST_PATH_IMAGE117
,则
Figure 107268DEST_PATH_IMAGE118
Figure 935547DEST_PATH_IMAGE119
具有对应关系,并记录
Figure 263760DEST_PATH_IMAGE118
步骤4.4.3,若满足步骤4.4.2的阈值判断,则更新
Figure 279121DEST_PATH_IMAGE120
,否则更新
Figure 983771DEST_PATH_IMAGE121
,返回步骤4.4.2,直到
Figure 400977DEST_PATH_IMAGE122
Figure 900092DEST_PATH_IMAGE123
的所有元素遍历完毕;
步骤4.4.4,若
Figure 668328DEST_PATH_IMAGE122
中的每个边缘值
Figure 645511DEST_PATH_IMAGE119
均在
Figure 917223DEST_PATH_IMAGE123
中找到与之对应的边缘值
Figure 728185DEST_PATH_IMAGE118
,则表明从上一行或列边缘集中找到一个因图像噪声而遗漏的匹配条纹,并将其记录在上一行或列的匹配条纹集
Figure 577192DEST_PATH_IMAGE124
中,返回步骤4.4.1,使用下一个匹配条纹进行搜索,直到
Figure 623645DEST_PATH_IMAGE125
的所有元素遍历完毕。
当QR码定位图案受到污染或噪声影响时,通过前后两行或两列边缘的比较,可以有效避免因污染造成的匹配条纹被过滤的情况发生,提高定位图案的识别效果。
进一步的,步骤5的具体步骤为:
步骤5.1,对定位图案进行配对,配对规则为:模块宽度s小于阈值t、颜色相同且不共线;
步骤5.2,根据配对的三个定位图案来确定QR码区域;
步骤5.3,对QR码区域进行边缘检测识别黑白空间,从而形成初步的二值化处理;
步骤5.4,使用均值法计算QR码区域内各像素点在其邻域内的二值化阈值,其中邻域大小是边长为模块宽度s的方形区域,再根据二值化阈值对QR码区域进行二值化处理;
步骤5.5,将步骤5.3的二值化与步骤5.4的二值化进行比较,若像素值都二值化为0,则更新为0,若都二值化为255,则更新为255,否则存在以下三种情况:
情况1,若当前像素点左边的像素点及上边的像素点都二值化为0,则当前像素点二值化为0;
情况2,若当前像素点左边的像素点及上边的像素点都二值化为255,则当前像素点二值化为255;
情况3,若当前像素点左边的像素点及上边的像素点的二值化结果不同,则以这两个像素点的均值作为像素阈值,若当前像素点的像素值大于像素阈值,则二值化为255,否则二值化为0。
对于二值化,首先通过找到的定位图案来锁定QR码区域,这避免了全局阈值对局部图像的影响,然后通过边缘检测查找每个模块的边缘,初步定位各黑白模块的位置,再以模块大小作为自适应阈值的像素邻域大小,采用均值法自适应计算阈值实现二值化,可有效提高二值化的效果。
进一步的,步骤6的具体步骤为:
步骤6.1,设标准QR码的三个定位图案的中心点坐标分别为
Figure 749864DEST_PATH_IMAGE126
Figure 590781DEST_PATH_IMAGE127
以及
Figure 333609DEST_PATH_IMAGE128
,当前QR码的三个定位图案中心点坐标为
Figure 793541DEST_PATH_IMAGE129
Figure 164479DEST_PATH_IMAGE130
以及
Figure 317243DEST_PATH_IMAGE131
则当前QR码的三个定位图案满足如下仿射变换:
Figure 547367DEST_PATH_IMAGE063
式中,
Figure 670044DEST_PATH_IMAGE132
为仿射变换系数,
Figure 302014DEST_PATH_IMAGE133
为坐标
Figure 891258DEST_PATH_IMAGE073
通过仿射变换投影到仿射域的坐标,将
Figure 202154DEST_PATH_IMAGE134
以及
Figure 269467DEST_PATH_IMAGE135
代入上式求得仿射变换系数;
步骤6.2,将边缘点集V的每个边缘点坐标通过上述仿射变换映射到仿射域中,通过与标准QR码的坐标对比,确定出该边缘点在标准QR码的位置,找到属于标准QR码上边缘线的边缘点,做最小二乘直线拟合,形成上边缘线,如图5所示;
步骤6.3,根据步骤6.2同理求得下边缘线、左边缘线以及右边缘线;
步骤6.4,沿着上边缘线、下边缘线、左边缘线以及右边缘线在步骤5的二值化图像中采样QR码的边缘黑点,如图6所示,并根据新增加的采样点重新做最小二乘直线拟合,使得直线拟合更加准确;
步骤6.5,上边缘线、下边缘线、左边缘线以及右边缘线相交于QR码的四个角点
Figure 490364DEST_PATH_IMAGE136
,设
Figure 843984DEST_PATH_IMAGE136
在单应性变换域中的对应关系为
Figure 48701DEST_PATH_IMAGE137
,并满足如下单应性变换:
Figure 654126DEST_PATH_IMAGE070
式中,
Figure 854163DEST_PATH_IMAGE138
为单应性变换系数,
Figure 254051DEST_PATH_IMAGE133
为坐标
Figure 539539DEST_PATH_IMAGE073
通过单应性变换投影到单应性域的坐标,由
Figure 671357DEST_PATH_IMAGE136
这四点及其对应关系即可求得单应性变换矩阵,如图7所示,对QR码完成定位校正,校正结果如图8所示。
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。

Claims (9)

1.一种根据图像冗余信息快速定位受损QR码的方法,其特征在于,包括如下步骤:
步骤1,对包含有QR码的图片进行灰度处理,获取灰度图片;
步骤2,通过随机采样对灰度图片进行清晰度评估;
步骤3,通过自适应阈值对灰度图片进行滤波及边缘检测;
步骤4,通过检测到的边缘确定条纹的宽度,并根据条纹的宽度比例确定QR码的三个定位图案;
步骤5,通过三个定位图案确定QR码区域,再结合定位图案的模块宽度s,重新对QR码区域进行边缘检测,并对边缘进行二值化;
步骤6,通过三个定位图案计算仿射变化矩阵,以此对灰度图像进行仿射变换,并根据二值化结果搜寻出QR码的四条边缘线,边缘线交于QR码的四个角点,可求得单应性变换矩阵,最后通过单应性变换进行定位校正。
2.根据权利要求1所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤2中,通过随机采样对灰度图片进行清晰度评估的具体步骤为:
步骤2.1,使用ISAAC伪随机数生成算法生成
Figure DEST_PATH_IMAGE001
个满足正态分布的随机数,其中WH分别为灰度图像的宽度像素和高度像素;
步骤2.2,由相邻两个随机数确定一个像素点的坐标
Figure 89050DEST_PATH_IMAGE002
,共可确定
Figure DEST_PATH_IMAGE003
个像素点,并以这些像素点坐标作为各个采样点坐标;
步骤2.3,根据各个采样点坐标在灰度图片上进行采样,取每个采样点及其紧邻的共九个点的像素值的均值作为该采样点的像素值;
步骤2.4,统计所有采样点的像素值,求出全部采样点像素值的均值、方差以及直方分布;
步骤2.5,将方差与清晰度阈值进行比较,若方差大于等于清晰度阈值,则表明清晰度符合要求,直接进入步骤3,若方差小于清晰度阈值,则表明清晰度较低,返回直方分布结果,并进入步骤2.6;
步骤2.6,根据直方分布计算出前景像素值和背景像素值,然后通过前景像素值和背景像素值调整扫码设备的闪光灯亮度,再启动扫码设备重新采集包含有QR码的图片,再返回步骤1;若无法启动扫码设备,则直接进入步骤3。
3.根据权利要求2所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤2.6中,根据直方分布计算出前景像素值和背景像素值的具体步骤为:
步骤2.6.1,计算当前像素值的数量梯度:
Figure DEST_PATH_IMAGE005
式中,
Figure 726835DEST_PATH_IMAGE006
表示像素值为
Figure DEST_PATH_IMAGE007
的数量梯度,
Figure 846101DEST_PATH_IMAGE008
表示像素值为
Figure DEST_PATH_IMAGE009
的采样点个数,
Figure 239036DEST_PATH_IMAGE010
表示像素值为
Figure DEST_PATH_IMAGE011
的采样点个数,并存在
Figure 88261DEST_PATH_IMAGE012
以及
Figure DEST_PATH_IMAGE013
的关系;
步骤2.6.2,进行极值点判断:若
Figure 264159DEST_PATH_IMAGE014
Figure 34669DEST_PATH_IMAGE006
的符号相反或者
Figure 864084DEST_PATH_IMAGE006
值为0时,则像素值
Figure 720045DEST_PATH_IMAGE007
确定为一个直方分布的疑似极值点,统计像素值
Figure 558688DEST_PATH_IMAGE007
及其相邻两个像素值的采样点总个数为:
Figure 918125DEST_PATH_IMAGE016
式中,
Figure DEST_PATH_IMAGE017
为像素值
Figure 652863DEST_PATH_IMAGE007
周围的采样点总个数,
Figure 730540DEST_PATH_IMAGE018
为当前像素值
Figure 372874DEST_PATH_IMAGE007
的采样点个数;
步骤2.6.3,比较所有疑似极值点的周围采样点总个数
Figure 852397DEST_PATH_IMAGE017
Figure 289195DEST_PATH_IMAGE017
最大的疑似极值点对应的像素值作为背景像素值,
Figure 854168DEST_PATH_IMAGE017
第二大的疑似极值点对应的像素值作为前景像素值。
4.根据权利要求2所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤2.6中,根据前景像素值和背景像素值调整扫码设备的闪光灯亮度时,若前景像素值和背景像素值均小于127,则将扫码设备的闪光灯亮度调整至高于上一次,若前景像素值和背景像素值均大于等于127,则将扫码设备的闪光灯亮度调整至低于上一次。
5.根据权利要求1所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤3中,通过自适应阈值对灰度图片进行滤波及边缘检测的具体步骤为:
步骤3.1,对灰度图片进行往返式逐行或逐列扫描,通过当前扫描行或扫描列中所有像素点的像素值,求出该扫描行或扫描列的直方分布,再通过直方分布计算出当前扫描行或扫描列的前景像素值
Figure DEST_PATH_IMAGE019
和背景像素值
Figure 503455DEST_PATH_IMAGE020
,由此构造初始边缘阈值:
Figure 103064DEST_PATH_IMAGE022
式中,ABS为求绝对值函数,
Figure DEST_PATH_IMAGE023
为最小边缘阈值,
Figure 648446DEST_PATH_IMAGE024
为当前边缘阈值;
步骤3.2,使用指数移动平均对该扫描行或扫描列中每一个像素点进行逐一滤波,滤波满足公式:
Figure 700716DEST_PATH_IMAGE026
式中,
Figure DEST_PATH_IMAGE027
为当前像素点的滤波值,
Figure 622535DEST_PATH_IMAGE028
为上一像素点的滤波值,
Figure 342230DEST_PATH_IMAGE007
为当前像素点的像素值,
Figure DEST_PATH_IMAGE029
为设置的定值,范围为0到1之间;
步骤3.3,通过laplace算子判断当前像素点是否为边缘,若为边缘,则根据
Figure 589671DEST_PATH_IMAGE030
的规则筛除弱边缘,否则将当前像素点的坐标作为边缘值
Figure DEST_PATH_IMAGE031
存储至当前扫描行或扫描列的边缘集
Figure 598079DEST_PATH_IMAGE032
中,并更新自适应阈值
Figure DEST_PATH_IMAGE033
步骤3.4,缩小自适应阈值
Figure 792431DEST_PATH_IMAGE034
,再返回步骤3.2对下一个像素点进行扫描,直到该扫描行或该扫描列的全部像素点扫描完毕,由此得到当前扫描行或扫描列的边缘集合:
Figure 101052DEST_PATH_IMAGE036
式中,
Figure 50554DEST_PATH_IMAGE032
为当前扫描行或扫描列的边缘集,
Figure DEST_PATH_IMAGE037
为当前扫描行或扫描列中第n个边缘值;
步骤3.5,重复步骤3.1-3.4直到求得整个灰度图像每行或每列的边缘集合。
6.根据权利要求5所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤4中,根据条纹的宽度比例确定QR码的三个定位图案的具体步骤为:
步骤4.1,将往返式扫描获得的边缘值统一为同一方向的边缘值
Figure 280678DEST_PATH_IMAGE038
c为当前行或列的编号,若c为奇数,则
Figure DEST_PATH_IMAGE039
,若c为偶数,则
Figure 341038DEST_PATH_IMAGE040
L为当前行或列的长度,若为横向扫描,则L等于灰度图像宽度W,若为纵向扫描,则L等于灰度图像高度H
步骤4.2,由各个相邻的边缘构成一个条纹,再计算出各个条纹的宽度:
Figure 504166DEST_PATH_IMAGE042
式中,
Figure DEST_PATH_IMAGE043
为第i个条纹的宽度;
步骤4.3,根据相邻五个条纹宽度寻找符合1:1:3:1:1的条纹比例,并记录在当前条纹的匹配条纹集合中:
Figure DEST_PATH_IMAGE045
式中,匹配条纹
Figure 562252DEST_PATH_IMAGE046
,包含了每个匹配条纹的六个边缘值,为当前扫描行或列的边缘集E cur 的子集;
步骤4.4,通过上一行或列匹配条纹集P last 的每个匹配条纹
Figure DEST_PATH_IMAGE047
来过滤下一行或列的边缘集E cur ,同样的通过下一行或列匹配条纹集P cur 的每个匹配条纹
Figure 748514DEST_PATH_IMAGE048
来过滤上一行或列的边缘集E last ,搜寻出因图像噪声而遗漏的匹配条纹,并记录在相应行或列的匹配条纹集合中;
步骤4.5,对搜寻到的条纹进行聚类,即满足相邻边缘的行间距和列间距都≤阈值t时,
Figure DEST_PATH_IMAGE049
,则认为是同一条纹,从而形成更宽的条纹;
步骤4.6,将聚类后获得的各个横向条纹和纵向条纹进行对应交叉,则最终确定出定位图案,不交叉的则过滤掉;
步骤4.7,计算定位图案的中心点o、边缘点集V={v 0,v 1,v 2,…,v n}以及模块宽度
Figure 346985DEST_PATH_IMAGE050
,式中,d(o, v i)表示横向条纹的边缘点v i和中心点o的横向距离或纵向条纹的边缘点v i和中心点o的纵向距离,若中心点o的坐标为(x o ,y o ),边缘点v i的坐标为(x i ,y i ),则横向距离为ABS(x o ,- x i ),纵向距离为ABS(y o ,- y i )。
7.根据权利要求6所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤4.4中,过滤的具体步骤为:
步骤4.4.1,通过P cur 中的每个匹配条纹
Figure 364620DEST_PATH_IMAGE046
对上一行或列的边缘集
Figure DEST_PATH_IMAGE051
进行搜索,令
Figure 390345DEST_PATH_IMAGE052
以及
Figure DEST_PATH_IMAGE053
步骤4.4.2,阈值判断:若满足
Figure 63902DEST_PATH_IMAGE054
,其中
Figure DEST_PATH_IMAGE055
,则
Figure 200486DEST_PATH_IMAGE056
Figure DEST_PATH_IMAGE057
具有对应关系,并记录
Figure 541468DEST_PATH_IMAGE056
步骤4.4.3,若满足步骤4.4.2的阈值判断,则更新
Figure 269253DEST_PATH_IMAGE058
,否则更新
Figure DEST_PATH_IMAGE059
,返回步骤4.4.2,直到
Figure 961265DEST_PATH_IMAGE060
Figure DEST_PATH_IMAGE061
的所有元素遍历完毕;
步骤4.4.4,若
Figure 635960DEST_PATH_IMAGE060
中的每个边缘值
Figure 819731DEST_PATH_IMAGE057
均在
Figure 515154DEST_PATH_IMAGE061
中找到与之对应的边缘值
Figure 960042DEST_PATH_IMAGE056
,则表明从上一行或列边缘集中找到一个因图像噪声而遗漏的匹配条纹,并将其记录在上一行或列的匹配条纹集
Figure 969586DEST_PATH_IMAGE062
中,返回步骤4.4.1,使用下一个匹配条纹进行搜索,直到
Figure DEST_PATH_IMAGE063
的所有元素遍历完毕。
8.根据权利要求6所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤5的具体步骤为:
步骤5.1,对定位图案进行配对,配对规则为:模块宽度s小于阈值t、颜色相同且不共线;
步骤5.2,根据配对的三个定位图案来确定QR码区域;
步骤5.3,对QR码区域进行边缘检测识别黑白空间,从而形成初步的二值化处理;
步骤5.4,使用均值法计算QR码区域内各像素点在其邻域内的二值化阈值,其中邻域大小是边长为模块宽度s的方形区域,再根据二值化阈值对QR码区域进行二值化处理;
步骤5.5,将步骤5.3的二值化与步骤5.4的二值化进行比较,若像素值都二值化为0,则更新为0,若都二值化为255,则更新为255,否则存在以下三种情况:
情况1,若当前像素点左边的像素点及上边的像素点都二值化为0,则当前像素点二值化为0;
情况2,若当前像素点左边的像素点及上边的像素点都二值化为255,则当前像素点二值化为255;
情况3,若当前像素点左边的像素点及上边的像素点的二值化结果不同,则以这两个像素点的均值作为像素阈值,若当前像素点的像素值大于像素阈值,则二值化为255,否则二值化为0。
9.根据权利要求6所述的根据图像冗余信息快速定位受损QR码的方法,其特征在于,步骤6的具体步骤为:
步骤6.1,设标准QR码的三个定位图案的中心点坐标分别为
Figure 19582DEST_PATH_IMAGE064
Figure DEST_PATH_IMAGE065
以及
Figure 292431DEST_PATH_IMAGE066
,当前QR码的三个定位图案中心点坐标为
Figure DEST_PATH_IMAGE067
Figure 959036DEST_PATH_IMAGE068
以及
Figure DEST_PATH_IMAGE069
则当前QR码的三个定位图案满足如下仿射变换:
Figure DEST_PATH_IMAGE071
式中,
Figure 647638DEST_PATH_IMAGE072
为仿射变换系数,
Figure DEST_PATH_IMAGE073
为坐标
Figure 348877DEST_PATH_IMAGE002
通过仿射变换投影到仿射域的坐标,将
Figure 323787DEST_PATH_IMAGE074
以及
Figure DEST_PATH_IMAGE075
代入上式求得仿射变换系数;
步骤6.2,将边缘点集V的每个边缘点坐标通过上述仿射变换映射到仿射域中,通过与标准QR码的坐标对比,确定出该边缘点在标准QR码的位置,找到属于标准QR码上边缘线的边缘点,做最小二乘直线拟合,形成上边缘线;
步骤6.3,根据步骤6.2同理求得下边缘线、左边缘线以及右边缘线;
步骤6.4,沿着上边缘线、下边缘线、左边缘线以及右边缘线在步骤5的二值化图像中采样QR码的边缘黑点,并根据新增加的采样点重新做最小二乘直线拟合,使得直线拟合更加准确;
步骤6.5,上边缘线、下边缘线、左边缘线以及右边缘线相交于QR码的四个角点
Figure 680950DEST_PATH_IMAGE076
,设
Figure 32297DEST_PATH_IMAGE076
在单应性变换域中的对应关系为
Figure DEST_PATH_IMAGE077
,并满足如下单应性变换:
Figure DEST_PATH_IMAGE079
式中,
Figure 791305DEST_PATH_IMAGE080
为单应性变换系数,
Figure 468274DEST_PATH_IMAGE073
为坐标
Figure 109471DEST_PATH_IMAGE002
通过单应性变换投影到单应性域的坐标,由
Figure 264509DEST_PATH_IMAGE076
这四点及其对应关系即可求得单应性变换矩阵,对QR码完成定位校正。
CN202110213441.XA 2021-02-26 2021-02-26 一种根据图像冗余信息快速定位受损qr码的方法 Active CN112560538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110213441.XA CN112560538B (zh) 2021-02-26 2021-02-26 一种根据图像冗余信息快速定位受损qr码的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110213441.XA CN112560538B (zh) 2021-02-26 2021-02-26 一种根据图像冗余信息快速定位受损qr码的方法

Publications (2)

Publication Number Publication Date
CN112560538A true CN112560538A (zh) 2021-03-26
CN112560538B CN112560538B (zh) 2021-05-11

Family

ID=75034711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110213441.XA Active CN112560538B (zh) 2021-02-26 2021-02-26 一种根据图像冗余信息快速定位受损qr码的方法

Country Status (1)

Country Link
CN (1) CN112560538B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113177959A (zh) * 2021-05-21 2021-07-27 广州普华灵动机器人技术有限公司 一种快速运动过程中qr码实时提取算法
CN117057377A (zh) * 2023-10-11 2023-11-14 青岛冠成软件有限公司 码的识别匹配方法
CN117291208A (zh) * 2023-11-24 2023-12-26 四川数盾科技有限公司 一种二维码提取方法及***
CN118171672A (zh) * 2024-04-09 2024-06-11 荣耀终端有限公司 条形码识别方法、电子设备、计算机存储介质和程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693409A (zh) * 2012-05-18 2012-09-26 四川大学 一种快速的图像中二维码码制类型识别方法
CN107577979A (zh) * 2017-07-26 2018-01-12 中科创达软件股份有限公司 DataMatrix型二维码快速识别方法、装置及电子设备
CN109409163A (zh) * 2018-11-12 2019-03-01 凌云光技术集团有限责任公司 一种基于纹理特性的qr码快速定位方法
CN109993019A (zh) * 2019-04-15 2019-07-09 苏州国芯科技股份有限公司 基于连通域分析的二维码识别方法、***及设备和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693409A (zh) * 2012-05-18 2012-09-26 四川大学 一种快速的图像中二维码码制类型识别方法
CN107577979A (zh) * 2017-07-26 2018-01-12 中科创达软件股份有限公司 DataMatrix型二维码快速识别方法、装置及电子设备
CN109409163A (zh) * 2018-11-12 2019-03-01 凌云光技术集团有限责任公司 一种基于纹理特性的qr码快速定位方法
CN109993019A (zh) * 2019-04-15 2019-07-09 苏州国芯科技股份有限公司 基于连通域分析的二维码识别方法、***及设备和介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113177959A (zh) * 2021-05-21 2021-07-27 广州普华灵动机器人技术有限公司 一种快速运动过程中qr码实时提取算法
CN117057377A (zh) * 2023-10-11 2023-11-14 青岛冠成软件有限公司 码的识别匹配方法
CN117057377B (zh) * 2023-10-11 2024-01-12 青岛冠成软件有限公司 码的识别匹配方法
CN117291208A (zh) * 2023-11-24 2023-12-26 四川数盾科技有限公司 一种二维码提取方法及***
CN117291208B (zh) * 2023-11-24 2024-01-23 四川数盾科技有限公司 一种二维码提取方法及***
CN118171672A (zh) * 2024-04-09 2024-06-11 荣耀终端有限公司 条形码识别方法、电子设备、计算机存储介质和程序产品

Also Published As

Publication number Publication date
CN112560538B (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN112560538B (zh) 一种根据图像冗余信息快速定位受损qr码的方法
CN110866924B (zh) 一种线结构光中心线提取方法及存储介质
CN111179243A (zh) 一种基于计算机视觉的小尺寸芯片裂纹检测方法及***
CN113591967B (zh) 一种图像处理方法、装置、设备及计算机存储介质
EP1678659B1 (en) Method and image processing device for analyzing an object contour image, method and image processing device for detecting an object, industrial vision apparatus, smart camera, image display, security system, and computer program product
CN111325721A (zh) 一种基于红外热成像的气体泄漏检测方法及***
CN115170669B (zh) 基于边缘特征点集配准的识别定位方法及***、存储介质
CN113538603B (zh) 一种基于阵列产品的光学检测方法、***和可读存储介质
CN116704516B (zh) 一种用于水溶肥料包装的视觉检测方法
CN114972575A (zh) 一种基于轮廓边缘的直线拟合算法
CN110490924A (zh) 一种基于多尺度Harris的光场图像特征点检测方法
CN115078365A (zh) 一种软包装印刷质量缺陷检测方法
CN114612490B (zh) 一种基于显微镜图像的栅藻类细胞统计方法
CN111189854A (zh) 玻璃盖板自动检测***缺陷分层检测方法
CN109784328B (zh) 定位条码的方法、终端及计算机可读存储介质
CN112085723B (zh) 一种货车摇枕弹簧窜出故障自动检测方法
CN110348363B (zh) 基于多帧角度信息融合消除相似车辆干扰的车辆跟踪方法
CN110969612A (zh) 二维码印刷缺陷检测方法
CN111178111A (zh) 二维码检测方法、电子设备、存储介质及***
CN111126286A (zh) 车辆动态检测方法、装置、计算机设备及存储介质
CN115546139A (zh) 一种基于机器视觉的缺陷检测方法、装置及电子设备
CN111402185A (zh) 一种图像检测方法及装置
CN115546145A (zh) 一种基于机器视觉的缺陷检测方法、装置及电子设备
CN114120320A (zh) 一种图像多目标信息识别方法、***及介质
CN109784121B (zh) Dot-peen DPM码的识别方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: No.15 Xinghuo Road, Jiangbei new district, Nanjing, Jiangsu Province, 210031

Patentee after: Dongji Technology Co.,Ltd.

Address before: No.15 Xinghuo Road, Jiangbei new district, Nanjing, Jiangsu Province, 210031

Patentee before: JIANGSU SEUIC TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder