DM码的解码方法、电子设备、存储介质及程序产品与流程

文档序号:33701323发布日期:2023-03-31 19:19阅读:59来源:国知局
DM码的解码方法、电子设备、存储介质及程序产品与流程
dm码的解码方法、电子设备、存储介质及程序产品
技术领域
1.本公开涉及计算机技术领域,特别是涉及一种dm码的解码方法、电子设备、存储介质及程序产品。


背景技术:

2.dm(datamatrix)码是一种矩阵二维码,具有信息密度大、尺寸小、容错率高、抗污损能力强等特点,在工业领域得到了广泛的应用。为了获取dm码包含的信息,需要识别dm码所在的图像区域,然后对识别出来的dm码进行解码。
3.相关技术中识别dm码所在的图像区域的方法,存在效率低下、准确度不高的问题。例如,需要先对原始图像进行滤波、二值化等预处理,最后对二值化的图像查找直线,其中直线的查找定位精度不高,二值化图像容易存在锯齿现象,且存在大量的复杂处理过程,效率不高。又例如,需要提取图像的特征图,在图像的特征图中进行特征检测,效率不高。因此,急需一种快速、准确地识别dm码所在区域,进而对dm码进行解码的方法。


技术实现要素:

4.鉴于上述问题,本公开实施例提供了一种dm码的解码方法、电子设备、存储介质及程序产品,以便克服上述问题或者至少部分地解决上述问题。
5.本公开实施例的第一方面,提供了一种dm码的解码方法,包括:
6.根据原始图像中每个像素点的梯度,确定dm码的两条实边;
7.根据所述dm码的两条实边,确定所述dm码所在的图像区域;
8.对所述dm码所在的图像区域进行解码,得到所述dm码的解码结果。
9.可选地,还包括:
10.检测所述原始图像中的目标图像区域,所述目标图像区域为包含所述dm码的图像区域;
11.计算所述目标图像区域中的每个像素点的梯度值和梯度方向;
12.所述dm码的每一条实边是按照以下步骤确定的:
13.根据所述目标图像区域中的每个像素点的梯度值和梯度方向,确定位于每条实边上的目标种子点,所述目标种子点的梯度值大于所述目标种子点的梯度方向上前后两个像素点的梯度值;
14.针对位于每条实边上的目标种子点,沿所述目标种子点的梯度方向的切向方向查找多个像素点,得到所述多个像素点组成的像素链,所述多个像素点的梯度值大于梯度阈值且属于区域极值;
15.根据一个目标种子点及该目标种子点对应的像素链,确定所述dm码的一条实边。
16.可选地,沿所述目标种子点的梯度方向的切向方向查找多个像素点,得到所述多个像素点组成的像素链,包括:
17.沿所述目标种子点的梯度的切向方向查找多个像素点,并获取查找到的每个像素
点的梯度方向;
18.在查找到的一个像素点的梯度方向与所述目标种子点的梯度方向相差大于或等于90度的情况下,停止查找,得到所述多个像素点组成的像素链。
19.可选地,根据一个目标种子点及该目标种子点对应的像素链,确定所述dm码的一条实边,包括:
20.获取所述目标种子点对应的像素链上,距离所述目标种子点最近的多个像素点;
21.对所述目标种子点和所述最近的多个像素点进行直线拟合,得到粗定位直线;
22.沿所述目标种子点对应的像素链,查找所述目标图像区域中与所述目标种子点的距离发生突变的像素点,将该像素点的上一像素点确定为所述目标种子点所在的实边的端点;
23.根据所述粗定位直线和所述端点,确定所述dm码的一条实边。
24.可选地,还包括:
25.根据所述目标种子点对应的像素链上每个像素点到所述粗定位直线的距离,对所述目标种子点对应的像素链上的各个像素点进行筛选;
26.对筛选后剩余的多个像素点进行直线拟合,得到精定位直线;
27.根据所述粗定位直线和所述端点,确定所述dm码的一条实边,包括:
28.根据所述精定位直线和所述端点,确定所述dm码的一条实边。
29.可选地,计算所述目标图像区域中的每个像素点的梯度值和梯度方向,包括:
30.计算所述目标图像区域中的每个像素点的水平梯度值和垂直梯度值;
31.将所述目标图像区域中的每个像素点的所述水平梯度值和所述垂直梯度值之和,作为该像素点的梯度值;
32.根据所述目标图像区域中的每个像素点的水平梯度值和垂直梯度值进行估算,得到该像素点的梯度方向。
33.可选地,根据所述目标图像区域中的每个像素点的梯度值和梯度方向,确定位于每条实边上的目标种子点,包括:
34.确定水平梯度值大于水平方向上前后两个像素点的水平梯度值的多个种子点,以及,确定垂直梯度值大于垂直方向上前后两个像素点的垂直梯度值的多个种子点;
35.对所述目标图像区域进行边缘检测,得到边缘;
36.将所有种子点中位于边缘的种子点确定为目标种子点。
37.可选地,根据所述dm码的两条实边,确定所述dm码所在的图像区域,包括:
38.根据平行四边形法则以及所述dm码的两条实边,得到所述dm码的两条虚边;
39.将所述原始图像中,所述dm码的两条实边和两条虚边所围成的图像区域,确定为所述dm码所在的图像区域。
40.可选地,对所述dm码所在的图像区域进行解码,得到所述dm码的解码结果,包括:
41.根据围成所述dm码所在的图像区域的两条虚边各自的黑白变化的次数,确定所述dm码的模式;
42.对所述dm码所在的图像区域进行二值化处理,得到处理后的图像区域;
43.根据所述dm码的模式,对所述处理后的图像区域进行解码,得到所述dm码的解码结果。
44.本公开实施例的第二方面,提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现如本公开实施例公开的所述的dm码的解码方法。
45.本公开实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如本公开实施例公开的所述的dm码的解码方法。
46.本公开实施例的第四方面,提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本公开实施例公开的所述的dm码的解码方法。
47.本公开实施例包括以下优点:
48.本实施例中,根据原始图像中每个像素点的梯度,确定dm码的两条实边;根据所述dm码的两条实边,确定所述dm码所在的图像区域;对所述dm所在的图像区域进行解码,得到所述dm码的解码结果。其中,直接对原始图像进行处理,具有效率高的优点,根据原始图像中每个像素点的梯度,确定dm码的实边,具有精度高的优点。因此,实现了高效、精确地对dm码所在的图像区域进行解码,得到dm码的解码结果。
附图说明
49.为了更清楚地说明本公开实施例的技术方案,下面将对本公开实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
50.图1是本公开实施例中一种dm码的解码方法的步骤流程图;
51.图2示出了dm码图像和dm码的边框图像;
52.图3示出了dm码的数字解码区;
53.图4是本公开实施例中dm码的解码方法的流程示意图;
54.图5是本公开实施例中一种dm码的解码装置的结构示意图;
55.图6是本公开实施例中一种电子设备的示意图。
具体实施方式
56.为使本公开的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本公开作进一步详细的说明。
57.近年来,基于人工智能的计算机视觉、深度学习、机器学习、图像处理、图像识别等技术研究取得了重要进展。人工智能(artificial intelligence,ai)是研究、开发用于模拟、延伸人的智能的理论、方法、技术及应用系统的新兴科学技术。人工智能学科是一门综合性学科,涉及芯片、大数据、云计算、物联网、分布式存储、深度学习、机器学习、神经网络等诸多技术种类。计算机视觉作为人工智能的一个重要分支,具体是让机器识别世界,计算机视觉技术通常包括人脸识别、活体检测、指纹识别与防伪验证、生物特征识别、人脸检测、行人检测、目标检测、行人识别、图像处理、图像识别、图像语义理解、图像检索、文字识别、视频处理、视频内容识别、三维重建、虚拟现实、增强现实、同步定位与地图构建(slam)、计算摄影、机器人导航与定位等技术。随着人工智能技术的研究和进步,该项技术在众多领域
展开了应用,例如安全防控、城市管理、交通管理、楼宇管理、园区管理、人脸通行、人脸考勤、物流管理、仓储管理、机器人、智能营销、计算摄影、手机影像、云服务、智能家居、穿戴设备、无人驾驶、自动驾驶、智能医疗、人脸支付、人脸解锁、指纹解锁、人证核验、智慧屏、智能电视、摄像机、移动互联网、网络直播、美颜、美妆、医疗美容、智能测温等领域。
58.参照图1所示,示出了本公开实施例中一种dm码的解码方法的步骤流程图,如图1所示,该dm码的解码方法包括以下步骤:
59.步骤s11:根据原始图像中每个像素点的梯度,确定dm码的两条实边;
60.步骤s12:根据所述dm码的两条实边,确定所述dm码所在的图像区域;
61.步骤s13:对所述dm所在的图像区域进行解码,得到所述dm码的解码结果。
62.图2示出了dm码图像和dm码的边框图像,其中,左图为dm码图像,右图为dm码的边框图像。dm码具有两条实边和两条虚边,两条实边和两条虚边即为dm码的边框。实边由深色图像块组成,两条实边组成的l型图案称为对准图案,可以用于限定dm的物理尺寸以及确定dm码所在的图像区域。虚边由交替的深色图像块和浅色图像块组成,两条虚边组成的图案称为时钟图案,可以用于确定dm码的模式,以及帮助确定dm码所在的图像区域。
63.梯度是一个向量,具有方向和大小。一个像素点的梯度的方向是指:该像素点的像素值沿着该方向变化最快;一个像素点的梯度值是指:该像素点的像素值沿着梯度的方向的变化率。
64.越处于dm码边缘的像素点,梯度值越大,因此,可以根据原始图像中每个像素点的梯度,确定dm码的两条实边。其中,根据像素点的梯度确定dm码的两条实边时,实边的坐标可以精确到小数点后一位,使精确度到达了亚像素级别。进而根据dm码的两条实边确定的dm码所在的图像区域,精确度也达到了亚像素级别。
65.可选地,根据dm码的两条实边确定dm码所在的图像区域,可以是:根据平行四边形法则以及所述dm码的两条实边,得到所述dm码的两条虚边;将所述原始图像中,所述dm码的两条实边和两条虚边所围成的图像区域,确定为所述dm码所在的图像区域。
66.根据图2可以看出,dm码的两条实边和两条虚边围成了一个矩形,因此,在确定了dm码的两条实边后,可以直接根据平行四边形法则得到dm码的两条虚边。dm码的两条实边和两条虚边所围成的图像区域,即为dm码所在的图像区域。
67.如此,无需再识别原始图像中dm码的虚边,而可以直接根据确定的实边快速得到虚边,从而快速确定dm码所在的图像区域。
68.确定了dm码所在的图像区域,也就确定了dm码的虚边。可以直接对dm码所在的图像区域进行解码,得到dm码的解码结果。对dm码所在的图像区域进行解码是为了得到dm码中包含的信息,dm码的解码结果可以为dm码中包含的字符串信息。
69.可选地,解码过程可以包括以下步骤:根据围成所述dm码所在的图像区域的两条虚边各自的黑白变化的次数,确定所述dm码的模式;对所述dm码所在的图像区域进行二值化处理,得到处理后的图像区域;根据所述dm码的模式,对所述处理后的图像区域进行解码,得到所述dm码的解码结果。
70.对dm码所在的图像区域进行二值化处理,有利于后续对dm码进行解码。dm码的模式指dm码的种类,例如可以为ecc000、ecc050、ecc080和ecc200等。不同模式的dm码的解码方式可能存在不同。在确定了dm码的模式后,可以利用开源库,根据dm码的标准协议对dm的
数字解码区进行解码,得到解码结果。其中,开源库可以为zbar、zxing等。图3示出了dm码的数字解码区,其中,实边和虚边围绕的颜色较浅的区域为数字解码区。如此,即可实现对dm码的解码,从而获取到dm码包含的信息。
71.采用本公开实施例的技术方案,直接对原始图像进行处理,具有效率高的优点,根据原始图像中每个像素点的梯度,确定dm码的实边,具有精度高的优点。因此,实现了高效、精确地对dm码所在的图像区域进行解码,得到dm码的解码结果。
72.可选地,在上述技术方案的基础上,可以先检测出原始图像中的目标图像区域,然后对目标图像区域进行处理。其中,目标图像区域为包含dm码的图像区域。在原始图像中未检测出目标图像区域的情况下,则可以直接退出解码过程,返回解码失败的结果。
73.其中,检测原始图像中的目标图像区域,可以是利用相关技术中的图像识别方法。检测出来目标图像区域的精度不高,因此不能直接将目标图像区域作为dm码所在的图像区域。
74.在检测到目标图像区域后,只需计算目标图像区域中每个像素点的梯度值和梯度方向,而无需计算原始图像中目标图像区域之外的其他像素点的梯度,以节省计算资源。
75.可选地,计算像素点的梯度值和梯度方向可以包括:计算所述目标图像区域中的每个像素点的水平梯度值和垂直梯度值;将所述目标图像区域中的每个像素点的所述水平梯度值和所述垂直梯度值之和,作为该像素点的梯度值;根据所述目标图像区域中的每个像素点的水平梯度值和垂直梯度值进行估算,得到该像素点的梯度方向。
76.因为梯度具有方向,因此可以将一个梯度分解为水平方向的水平梯度值和垂直方向的垂直梯度值。可以采用sobel(索贝尔)梯度算子计算水平梯度值和垂直梯度值,针对图像坐标为[i,i]的像素点,v
i,i
表示该位置处的像素点的像素值,则具体可以通过如下公式计算水平梯度值和垂直梯度值:
[0077]
grad
i,x
=|v
i+1,i-1
+2*v
i+1,i
+v
i+1,i+1-v
i-1,i-1-2*v
i-1,i-v
i-1,i+1
|
[0078]
grad
i,y
=|v
i-1,i+1
+2*v
i,i+1
+v
i+1,i+1-v
i-1,i-1-2*v
i,i-1-v
i+1,i-1
|
[0079]
其中,grad
i,x
和grad
i,y
分别表示水平梯度值和垂直梯度值。
[0080]
因为dm码中的每个图像块都是横平竖直的,不存在圆角,因此,可以直接将一个像素点的水平梯度值和垂直梯度值之和,作为该像素点的梯度值。即,gradi=grad
i,x
+grad
i,y
。其中,gradi表示像素点的梯度值。
[0081]
可以根据一个像素点的水平梯度值、垂直梯度值,利用三角函数计算该像素点的梯度方向,但是根据三角函数计算梯度方向速度较慢、计算过程复杂。因此,本公开实施例通过水平梯度值和垂直梯度值估算梯度方向,其中,估算过程可以通过如下公式表示:
[0082][0083]
通过水平梯度值和垂直梯度值估算梯度方向,相比于利用三角函数计算直接梯度方向,可以提升计算性能近百倍。
[0084]
在计算得到目标图像区域中每个像素点的梯度值和梯度方向后,可以按照以下步骤确定dm码的每一条实边:
[0085]
步骤s21:根据所述目标图像区域中的每个像素点的梯度值和梯度方向,确定位于每条实边上的目标种子点,所述目标种子点的梯度值大于所述目标种子点的梯度方向上前
后两个像素点的梯度值;
[0086]
步骤s22:针对位于每条实边上的目标种子点,沿所述目标种子点的梯度方向的切向方向查找多个像素点,得到所述多个像素点组成的像素链;
[0087]
步骤s23:根据一个目标种子点及该目标种子点对应的像素链,确定所述dm码的一条实边。
[0088]
因为越处于dm码边缘的像素点,梯度值越大,所以位于实边上的目标种子点的梯度值要大于梯度方向上前后两个像素点的梯度值。可以理解的是,尽管实边是根据目标种子点确定的,但是实边是客观存在的,因此,虽然尚未确定实边的具体位置,但可以先确定实边上的目标种子点。
[0089]
可选地,在步骤s21中,可以先确定出目标图像区域中的多个种子点,然后从多个种子点中确定出位于实边上的目标种子点。
[0090]
因为在对图像进行处理时,dm码内部也存在很多边,所以针对其他边也能识别出来种子点。具体地,将水平梯度值大于水平方向上前后两个像素点的水平梯度值的像素点,以及将垂直梯度值大于垂直方向上前后两个像素点的垂直梯度值的像素点,都作为种子点。
[0091]
对目标图像区域进行边缘检测,可以得到dm码的边缘。dm码的边缘是指实边所处的位置。边缘检测的精度不高,只能识别出实边所处的大概位置。但因为其他种子点都距离实边较远,因此可以将所有种子点中位于边缘的种子点,确定为目标种子点。如此,可以得到位于实边上的目标种子点。
[0092]
目标种子点是位于实边上的像素点,所以目标种子点的梯度方向为与实边向垂直、向外的方向。因此,目标种子点的梯度方向的切向方向则为实边所在的方向。因此,沿目标种子点的梯度方向的切向方向查找多个像素点,查找到的像素点为实边所在区域的像素点。
[0093]
为了保证组成的像素链上的像素点尽可能地为实边上的像素点,考虑到越处于边缘的像素点的梯度值越大,因此,在查找像素点时,需要保证像素点的梯度值大于梯度阈值且属于区域极值。一个像素点的梯度值属于区域极值表征:相比于该像素点的领域区域内各个像素点的梯度值,该像素点的梯度值为最大值。梯度阈值可以根据需求进行设置。
[0094]
可选地,在步骤s22中,在沿目标种子点的梯度方向的切向方向查找多个像素点时,还可以获取查找到的每个像素点的梯度方向。在查找到的一个像素点的梯度方向与目标种子点的梯度方向相差大于或等于90度的情况下,停止查找,得到多个像素点组成的像素链。
[0095]
在查找到一个像素点的梯度方向与目标种子点的梯度方向相差大于或等于90度的情况下,证明该像素点不处于该目标种子点所在的实边,因此,停止查找。
[0096]
如此,可以保证组成的像素链的多像素点为同一条边上的像素点。
[0097]
可选地,在步骤s23中,根据一个目标种子点及该目标种子点对应的像素链,确定所述dm码的一条实边,可以包括:
[0098]
步骤s231:获取所述目标种子点对应的像素链上,距离所述目标种子点最近的多个像素点;
[0099]
步骤s232:对所述目标种子点和所述最近的多个像素点进行直线拟合,得到粗定
位直线;
[0100]
步骤s233:沿所述目标种子点对应的像素链,查找所述目标图像区域中与所述目标种子点的距离发生突变的像素点,将该像素点的上一像素点确定为所述目标种子点所在的实边的端点;
[0101]
步骤s234:根据所述粗定位直线和所述端点,确定所述dm码的一条实边。
[0102]
获取的目标种子点对应的像素链上距离该目标种子点最近的多个像素点的数量,可以根据需求进行设置,例如,可以为十个。利用目标种子点和最近的多个像素点,可以采用随机抽样一致算法(random sample consensus,ransac)和直线拟合方法,拟合得到粗定位直线。粗定位直线为实边所在的直线。
[0103]
确定了实边所在的直线之后,为了确定实边所在的位置,还需要确定实边的端点。可以沿目标种子点对应的像素链的方向,由近及远依次计算目标图像区域中的像素点到目标种子点的距离,在一个像素点与目标种子点的距离发生突变的情况下,证明该像素点不属于实边上的像素点,因此,可以将该像素点的上一像素点作为实边的端点。
[0104]
如此,因为像素链上的各个像素点可能不在一条直线上,根据目标种子点和目标种子点对应的像素链上距离该目标种子点最近的多个像素点,拟合得到粗定位直线是在一条直线上,因此可以根据粗定位直线和端点,即可确定dm码的一条实边。
[0105]
可选地,在上述技术方案的基础上,考虑到拟合粗定位直线只使用了像素链上的部分像素点,因此准确度还有待提升。若使用像素链上全部的像素点,会因为有些像素点可能不是真正位于实边上的像素点,因此,准确度也有待提升。
[0106]
因此,可以利用粗定位直线对像素链上的像素点进行筛选,利用筛选后像素点进行直线拟合,得到准确度更高的精定位直线。具体地,可以计算目标种子点对应的像素链上每个像素点到粗定位直线的距离,将距离大于设定距离的像素点进行排除,得到像素链在筛选后的剩余的多个像素点。利用筛选后剩余的多个像素点进行直线拟合,得到精定位直线。
[0107]
如此,在确定dm码的实边时,可以根据精定位直线和端点进行确定。提高了确定的dm码的实边的准确度。
[0108]
理论上直线是没有宽度的,但可以理解的是,实际图像中直线的存在占据了一定区域。相关技术中,直线的存在由位于同一方向上的多个像素点表征。本公开实施例中,拟合的粗定位直线/精定位直线的存在,并非由多个像素点表征,针对每个像素点,粗定位直线/精定位直线占据的区域都不是完整的像素点。例如,针对一个像素点,粗定位直线/精定位直线只占据了半个该像素点的面积。因此,本公开实施例的技术方案确定的dm码的实边的准确度,达到了亚像素级别。
[0109]
采用本公开实施例的技术方案,保证了确定的dm码的实边的准确度,因此,基于实边确定的dm码所在的图像区域的准确度也较高。并且,因为确定dm码的实边的过程,对目标图像区域中的像素点进行的计算都比较简单,不涉及复杂的处理过程,因此,具有效率高的优点。
[0110]
图4是本公开实施例中dm码的解码方法的流程示意图,针对原始图像,可以先提取目标图像区域,在未提取到目标图像区域的情况下,返回解码失败的信息,在提取到目标图像区域的情况下,计算目标图像区域中每个像素点的梯度。根据目标图像区域中每个像素
点的梯度可以确定目标种子点,从而根据目标种子点定位像素链。根据目标种子点和像素链上的像素点,可以拟合得到粗定位直线、精定位直线。通过计算像素点到目标种子点的距离,可以确定实边的端点,从而可以确定dm码的实边。根据dm码的实边,可以确定dm码的虚边,从而进行对dm码的解码,得到解码结果,返回解码成功的信息。
[0111]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开实施例并不受所描述的动作顺序的限制,因为依据本公开实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本公开实施例所必须的。
[0112]
图5是本公开实施例的一种dm码的解码装置的结构示意图,如图5所示,该dm码的解码装置包括实边确定模块、区域确定模块和解码模块,其中:
[0113]
实边确定模块,用于根据原始图像中每个像素点的梯度,确定dm码的两条实边;
[0114]
区域确定模块,用于根据所述dm码的两条实边,确定所述dm码所在的图像区域;
[0115]
解码模块,用于对所述dm码所在的图像区域进行解码,得到所述dm码的解码结果。
[0116]
可选地,还包括:
[0117]
检测模块,用于检测所述原始图像中的目标图像区域,所述目标图像区域为包含所述dm码的图像区域;
[0118]
计算模块,用于计算所述目标图像区域中的每个像素点的梯度值和梯度方向;
[0119]
所述dm码的每一条实边是按照以下步骤确定的:
[0120]
根据所述目标图像区域中的每个像素点的梯度值和梯度方向,确定位于每条实边上的目标种子点,所述目标种子点的梯度值大于所述目标种子点的梯度方向上前后两个像素点的梯度值;
[0121]
针对位于每条实边上的目标种子点,沿所述目标种子点的梯度方向的切向方向查找多个像素点,得到所述多个像素点组成的像素链,所述多个像素点的梯度值大于梯度阈值且属于区域极值;
[0122]
根据一个目标种子点及该目标种子点对应的像素链,确定所述dm码的一条实边。
[0123]
可选地,沿所述目标种子点的梯度方向的切向方向查找多个像素点,得到所述多个像素点组成的像素链,包括:
[0124]
沿所述目标种子点的梯度的切向方向查找多个像素点,并获取查找到的每个像素点的梯度方向;
[0125]
在查找到的一个像素点的梯度方向与所述目标种子点的梯度方向相差大于或等于90度的情况下,停止查找,得到所述多个像素点组成的像素链。
[0126]
可选地,根据一个目标种子点及该目标种子点对应的像素链,确定所述dm码的一条实边,包括:
[0127]
获取所述目标种子点对应的像素链上,距离所述目标种子点最近的多个像素点;
[0128]
对所述目标种子点和所述最近的多个像素点进行直线拟合,得到粗定位直线;
[0129]
沿所述目标种子点对应的像素链,查找所述目标图像区域中与所述目标种子点的距离发生突变的像素点,将该像素点的上一像素点确定为所述目标种子点所在的实边的端点;
[0130]
根据所述粗定位直线和所述端点,确定所述dm码的一条实边。
[0131]
可选地,还包括:
[0132]
根据所述目标种子点对应的像素链上每个像素点到所述粗定位直线的距离,对所述目标种子点对应的像素链上的各个像素点进行筛选;
[0133]
对筛选后剩余的多个像素点进行直线拟合,得到精定位直线;
[0134]
根据所述粗定位直线和所述端点,确定所述dm码的一条实边,包括:
[0135]
根据所述精定位直线和所述端点,确定所述dm码的一条实边。
[0136]
可选地,所述计算模块包括:
[0137]
计算单元,用于计算所述目标图像区域中的每个像素点的水平梯度值和垂直梯度值;
[0138]
求和单元,用于将所述目标图像区域中的每个像素点的所述水平梯度值和所述垂直梯度值之和,作为该像素点的梯度值;
[0139]
方向确定单元,用于根据所述目标图像区域中的每个像素点的水平梯度值和垂直梯度值进行估算,得到该像素点的梯度方向。
[0140]
可选地,根据所述目标图像区域中的每个像素点的梯度值和梯度方向,确定位于每条实边上的目标种子点,包括:
[0141]
确定水平梯度值大于水平方向上前后两个像素点的水平梯度值的多个种子点,以及,确定垂直梯度值大于垂直方向上前后两个像素点的垂直梯度值的多个种子点;
[0142]
对所述目标图像区域进行边缘检测,得到边缘;
[0143]
将所有种子点中位于边缘的种子点确定为目标种子点。
[0144]
可选地,所述区域确定模块包括:
[0145]
虚边确定单元,用于根据平行四边形法则以及所述dm码的两条实边,得到所述dm码的两条虚边;
[0146]
区域确定单元,用于将所述原始图像中,所述dm码的两条实边和两条虚边所围成的图像区域,确定为所述dm码所在的图像区域。
[0147]
可选地,所述解码模块包括:
[0148]
模式确定单元,用于根据围成所述dm码所在的图像区域的两条虚边各自的黑白变化的次数,确定所述dm码的模式;
[0149]
处理单元,用于对所述dm码所在的图像区域进行二值化处理,得到处理后的图像区域;
[0150]
解码单元,用于根据所述dm码的模式,对所述处理后的图像区域进行解码,得到所述dm码的解码结果。
[0151]
需要说明的是,装置实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。
[0152]
本公开实施例还提供了一种电子设备,参照图6,图6是本公开实施例提出的电子设备的示意图。如图6所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本公开实施例公开的dm码的解码方法中的步骤。
[0153]
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,
该计算机程序/指令被处理器执行时实现如本公开实施例公开的所述的dm码的解码方法。
[0154]
本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本公开实施例公开的所述的dm码的解码方法。
[0155]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0156]
本领域内的技术人员应明白,本公开实施例的实施例可提供为方法、装置或计算机程序产品。因此,本公开实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0157]
本公开实施例是参照根据本公开实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0158]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0159]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0160]
尽管已描述了本公开实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开实施例范围的所有变更和修改。
[0161]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0162]
以上对本公开所提供的一种dm码的解码方法、电子设备、存储介质及程序产品,进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明
书内容不应理解为对本公开的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1