识别码的定位方法与流程-尊龙凯时官方app下载

文档序号:36400948发布日期:2023-12-16 03:40阅读:9来源:国知局
识别码的定位方法与流程
识别码的定位方法、电子设备及存储介质
技术领域
1.本技术涉及计算机视觉技术领域,具体涉及一种识别码的定位方法

电子设备及计算机可读存储介质



背景技术:

2.随着计算机视觉技术的不断发展,二维识别码(如
qr

、datamatrix

、apriltag
码,
aruco
码)被应用于越来越多的领域,其中,如
apriltag
码,
aruco
码等探测图案为矩形的基准码,若矩形探测图案存在被遮挡

损坏污染等情况,将会导致无法正常定位基准码,从而导致基准码识别失败

可见,如何提高基准码的矩形探测图案的抗遮挡性以提高基准码的识别率成为亟待解决的问题



技术实现要素:

3.本技术提供一种识别码的定位方法

电子设备及计算机可读存储介质,可以提高基准码的四边形探测图案的抗遮挡性,进而提高基准码的识别率

4.第一方面,本技术提供一种识别码的定位方法,所述方法包括:对待定位的识别码图像进行候选区域提取,得到所述识别码图像的基准码候选区域;基于所述识别码图像进行线段提取,得到所述识别码图像的线段集合;基于所述线段集合进行夹角拟合,得到所述识别码图像的各目标夹角;基于所述基准码候选区域和所述目标夹角进行整合,得到所述基准码候选区域的平行四边形;基于所述平行四边形,输出所述识别码图像的目标基准码区域

5.在一些实施例中,所述基于所述识别码图像进行线段提取,得到所述识别码图像的线段集合,包括:对所述识别码图像进行边缘检测,得到所述识别码图像的初步线段;基于所述初步线段的起点与所述初步线段的中点之间的第一线段进行拐点检测,得到所述初步线段的第一拐点结果;基于所述初步线段的终点与所述初步线段的中点之间的第二线段进行拐点检测,得到所述初步线段的第二拐点结果;基于所述第一拐点结果和所述第二拐点结果,对所述初步线段的端点进行更新得到更新后线段,以作为目标线段;基于所述目标线段得到所述识别码图像的线段集合

6.在一些实施例中,所述基于所述线段集合进行夹角拟合,得到所述识别码图像的各目标夹角,包括:基于所述线段集合进行线段组合,得到第一待拟合线段和第二待拟合线段,其中,所述第一待拟合线段由第一开始端点指向第一结束端点

所述第二待拟合线段由第二开始
端点指向第二结束端点;基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离,其中,所述第一距离是所述第一结束端点与所述第二开始端点之间的距离,所述第二距离是所述第二结束端点与所述第一开始端点之间的距离;若所述第一距离小于所述第二距离

且所述第一距离小于第一预设长度,则将所述第一待拟合线段与所述第二待拟合线段之间的交点

所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

7.在一些实施例中,所述方法还包括:若所述第二距离小于所述第一距离

且所述第二距离小于第一预设长度,则将所述第一待拟合线段与所述第二待拟合线段之间的交点

所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

8.在一些实施例中,所述基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离,包括:检测所述第一待拟合线段的像素点长度和所述第二待拟合线段的像素点长度;若所述第一待拟合线段的像素点长度大于第二预设长度

且所述第二待拟合线段的像素点长度大于第二预设长度,则基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

9.在一些实施例中,所述基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离,包括:检测所述第一待拟合线段与所述第二待拟合线段之间的角度;若所述第一待拟合线段与所述第二待拟合线段之间的角度处于预设角度范围内,则基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

10.在一些实施例中,所述对待定位的识别码图像进行候选区域提取,得到所述识别码图像的基准码候选区域,包括:对待定位的识别码图像进行二值化处理,得到所述识别码图像的二值化图;对所述二值化图进行膨胀操作,得到所述二值化图的膨胀图;基于所述膨胀图中的连续目标像素点的所在区域,得到所述识别码图像的基准码候选区域,其中,所述目标像素点为灰度值符合预设条件的像素点

11.在一些实施例中,所述对所述二值化图进行膨胀操作,得到所述二值化图的膨胀图,包括:获取预设的结构元素;获取所述结构元素的原点处于所述二值化图中的目标像素点时所述结构元素的占据像素点;基于所述占据像素点得到所述二值化图的膨胀图

12.第二方面,本技术还提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行本技术提供的任一种识别码的定位方法

13.第三方面,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行所述的识别码的定位方法

14.本技术中,一方面,通过基于识别码图像进行线段提取得到识别码图像的线段集合,可以提取出识别码图像中潜在的探测图像的边;通过基于线段集合进行夹角拟合得到识别码图像的各目标夹角,可以利用提取的线段拟合还原出识别码图像中潜在的探测图像的边间夹角;从而通过基于基准码候选区域和目标夹角进行整合得到基准码候选区域的平行四边形,可以利用识别码图像的各目标夹角恢复出识别码图像中的基准码的探测图形;另一方面,通过基于基准码候选区域和目标夹角进行整合得到基准码候选区域的平行四边形,作为识别码图像的目标基准码区域,可以避免矩形的探测图形在图形中变形而无法检测的问题,从而实现在基准码存在缺失

毁损

被遮挡情况下可以定位出基准码的探测图形,提高基准码的四边形探测图案的抗遮挡性,进而提高基准码的识别率

附图说明
15.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图

16.图1是本技术实施例提供的一种电子设备的结构示意框图;图2是本技术实施例提供的识别码的定位方法的一种流程示意图;图3是本技术实施例提供的确定基准码候选区域的一个说明示意图;图4是本技术实施例提供的确定目标线段的一个说明示意图;图5是本技术实施例提供的目标夹角拟合的一个说明示意图

具体实施方式
17.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚

完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例

基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围

18.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作
/
步骤,也不是必须按所描述的顺序执行

例如,有的操作
/
步骤还可以分解

组合或部分合并,因此实际执行的顺序有可能根据实际情况改变

19.在本技术实施例的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量

由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征

在本技术实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定

20.为了使本领域任何技术人员能够实现和使用本技术,给出了以下描述

在以下描述中,为了解释的目的而列出了细节

应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本技术

在其它实例中,不会对公知的过程进行详细阐述,以避免不必要的细节使本技术实施例的描述变得晦涩

因此,本技术并非旨在限于所示的实施例,而是与符合本技术实施例所公开的原理和特征的最广范围相一致

21.本技术实施例提供一种识别码的定位方法

电子设备和计算机可读存储介质


电子设备可以是移动机器人

手机

电脑等

22.下面结合附图,对本技术的一些实施例作详细说明

在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合

23.图1是本技术实施例提供的一种电子设备的结构示意框图

24.如图1所示,电子设备
100
包括处理器
101
和存储器
102
,处理器
101
和存储器
102
通过总线
103
连接,该总线比如为
i2c

inter-integrated circuit
)总线

25.具体地,处理器
101
用于提供计算和控制能力,支撑整个电子设备
100
的运行

处理器
101
可以是中央处理单元 (central processing unit

cpu)
,该处理器
101
还可以是其他通用处理器

数字信号处理器 (digital signal processor

dsp)、
专用集成电路 (application specific integrated circuit

asic)、
现场可编程门阵列 (field-programmable gate array

fpga) 或者其他可编程逻辑器件

分立门或者晶体管逻辑器件

分立硬件组件等

其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等

26.具体地,存储器
102
可以是
flash
芯片

只读存储器 (rom

read-only memory)
磁盘

光盘
、u
盘或移动硬盘等

27.本领域技术人员可以理解,图1中示出的结构,仅仅是与本技术实施例方案相关的部分结构的框图,并不构成对本技术实施例方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置

28.其中,所述处理器
101
用于运行存储在存储器
102
中的计算机程序,并在执行所述计算机程序时实现本技术实施例提供的任意一种所述的识别码的定位方法

例如,所述处理器
101
用于运行存储在存储器
102
中的计算机程序,并在执行所述计算机程序时可以实现以下步骤:对待定位的识别码图像进行候选区域提取,得到所述识别码图像的基准码候选区域;基于所述识别码图像进行线段提取,得到所述识别码图像的线段集合;基于所述线段集合进行夹角拟合,得到所述识别码图像的各目标夹角;基于所述基准码候选区域和所述目标夹角进行整合,得到所述基准码候选区域的平行四边形;基于所述平行四边形,输出所述识别码图像的目标基准码区域

29.需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的电子设备的具体工作过程,可以参考下述识别码的定位方法实施例中的对应过程,在此不再赘述

30.以下,将以图1中所示的电子设备作为该识别码的定位方法的执行主体为例,对本技术实施例提供的识别码的定位方法进行详细介绍,为了简化与便于描述,后续方法实施例中将省略该执行主体

需知,图1中的场景仅用于解释本技术实施例提供的识别码的定位方法,但并不构成对本技术实施例提供的识别码的定位方法应用场景的限定

31.请参阅图2,图2是本技术实施例提供的一种识别码的定位方法的流程示意图

该识别码的定位方法包括步骤
201~205
,其中:
201、
对待定位的识别码图像进行候选区域提取,得到所述识别码图像的基准码候选区域

32.为了更好地理解本实施例,下面先介绍本实施例涉及的部分名称:
1、
目标像素点:是指灰度值等于预设灰度值的像素点

例如,二值化图中灰度值最大的像素点(如灰度值为
255
的像素点);又如,二值化图中灰度值最小的像素点(如灰度值为0的像素点)

33.2、
二值化图:是指识别码图像的二值化图,其中,可以使用固定阈值分割法活自适应阈值分割法将识别码图像转化为二值化图

34.3、
膨胀图:是指对二值化图进行膨胀操作后得到的图像

35.其中,基准码候选区域是指初步确定的基准码的所在区域

36.其中,识别码图像是需要识别基准码的位置的图像

在一些实施例中,识别码图像中可以只包含一个基准码;在一些实施例中,识别码图像也可以包括多个基准码,针对包含多个基准码的识别码图像最终将定位出多个目标基准码区域

37.步骤
201
中确定基准码候选区域的方式有多种,示例性地,包括:(1)将膨胀图中的连续目标像素点的所在区域,作为识别码图像的基准码候选区域

此时,步骤
201
具体可以包括如下步骤
2011a~2013a

2011a、
对待定位的识别码图像进行二值化处理,得到所述识别码图像的二值化图

38.2012a、
对所述二值化图进行膨胀操作,得到所述二值化图的膨胀图

39.示例性地,“对所述二值化图进行膨胀操作,得到所述二值化图的膨胀图”具体可以包括:获取预设的结构元素;获取所述结构元素的原点处于所述二值化图中的目标像素点时所述结构元素的占据像素点;基于所述占据像素点得到所述二值化图的膨胀图

40.例如,如图3所示,图3中每个方格表示一个像素点,图3中
(a)
表示二值化图,图3中
(a)
所示的方格
32、42、43、44、43、54、63
分别表示不同的目标像素点

虚线框表示预设的结构元素;图3中
(b)
表示二值化图膨胀图

针对二值化图中的每个目标像素点,获取结构元素的原点处于二值化图中的目标像素点时结构元素的占据像素点(如图3所示,假设结构元素的原点处于二值化图的目标像素点
42
处,则结构元素的原点处于二值化图中的目标像素点时结构元素的占据像素点包括像素点
41、
像素点
43、
像素点
51、
像素点
52
;同理,可以确定结构元素的原点处于二值化图的目标像素点
32、43、44、53、54、63
处时结构元素的占据像素点);将与二值化图相同的图像作为参考图(如可以复制二值化图作为参考图),将参考图中占据像素点的灰度值更新为目标像素点的灰度值

其余像素点的灰度值保持不变;以此类推,得到更新后的参考图;将更新后的参考图作为二值化图的膨胀图

41.2013a、
基于所述膨胀图中的连续目标像素点的所在区域,得到所述识别码图像的基准码候选区域

42.其中,所述目标像素点为灰度值符合预设条件的像素点

43.在一些实施例中,可以直接将膨胀图中连续的目标像素点的数量大于预设数量阈值的

连续目标像素点的所在区域,直接作为识别码图像的基准码候选区域

44.在另一些实施例中,可以将膨胀图中连续的目标像素点的数量大于预设数量阈值的

连续目标像素点的所在区域作为目标区域;将目标区域的最小外接矩形的包围区域作为识别码图像的基准码候选区域

例如,如图3所示,图3的
(b)
中方格
31、32、41、42、43、44、51、52、53、54、62、63、64、72、73
表示不同的目标像素点,图3的
(b)
中连续目标像素点(包括
目标像素点
31、32、41、42、43、44、51、52、53、54、62、63、64、72、73
)的数量(即
15
)大于预设数量阈值(如
10
),则可以将连续目标像素点的所在区域的最小外接矩形的包围区域作为识别码图像的基准码候选区域(如图3的
(b)
中的矩形虚线框所示)

以此类推,可以得到识别码图像的一个或多个基准码候选区域

45.(2)将二值化图中连续的多个目标像素点的最小外接矩形的包围区域,作为识别码图像的基准码候选区域

此时,步骤
201
具体可以包括如下步骤
2011b~2012b

2011b、
对待定位的识别码图像进行二值化处理,得到所述识别码图像的二值化图

46.2012b、
将二值化图中连续的多个目标像素点的最小外接矩形的包围区域,作为识别码图像的基准码候选区域

47.202、
基于所述识别码图像进行线段提取,得到所述识别码图像的线段集合

48.其中,目标线段是初步确定的

潜在的探测图形的边的线段

49.其中,线段集合是目标线段的集合

50.步骤
202
中确定线段集合的方式有多种,示例性地,包括:(1)对识别码图像进行检测得到的初步线段作为目标线段,从而得到识别码图像的线段集合

此时,步骤
202
具体可以包括如下步骤
2021a~2022a

2021a、
对所述识别码图像进行边缘检测,得到所述识别码图像的初步线段,以作为目标线段

51.示例性地,可以利用边缘检测原理,对识别码图像的二值化图进行边缘检测,得到识别码图像中的每个线段,检测得到的每个线段即为识别码图像的初步线段,将检测得到的每个初步线段作为目标线段

52.2022a、
基于所述目标线段得到所述识别码图像的线段集合

53.具体地,步骤
2021a
中检测得到的所有目标线段的集合即为识别码图像的线段集合

例如,对识别码图像进行边缘检测得到5初步线段,分别为:线段
a、
线段
b、
线段
c、
线段
d、
线段e,则线段
a、
线段
b、
线段
c、
线段
d、
线段e的集合即为识别码图像的线段集合
{
线段
a、
线段
b、
线段
c、
线段
d、
线段
e}。
54.(2)为了提高线段集合中的线段是探测图形的边的概率,在检测到初步线段后,在初步线段上进行拐点检测,利用检测到的拐点对初步线段的端点进行更新得到目标线段,从而得到识别码图像的线段集合

此时,步骤
202
具体可以包括如下步骤
2021b~2025b

2021b、
对所述识别码图像进行边缘检测,得到所述识别码图像的初步线段

55.步骤
2021b
的实现与上述步骤
2021a
的实现类似,具体可以参考前文相关说明,此处不再赘述

56.2022b、
基于所述初步线段的起点与所述初步线段的中点之间的第一线段进行拐点检测,得到所述初步线段的第一拐点结果

57.其中,第一线段是指初步线段的起点与初步线段的中点之间形成的线段

例如,如图4所示,假设初步线段的起点

终点

中点分别为
p、p
next
、o
,则初步线段的起点
p
与初步线段的中点o之间形成的线段
po
即为第一线段

58.其中,第一拐点结果用于指示与第一线段间距离处于预设距离范围内(如与第一线段间距离在
10
个像素点以内)的像素点中是否存在拐点

59.请参考图4,示例性地,针对与第一线段之间距离处于预设距离范围内(如与第一线段间距离在
10
个像素点以内)的每个像素点,利用图像拐点检测算法进行检测,若与第一线段之间距离处于预设距离范围内的像素点中存在拐点(如图4所示,假设点
p
start
是与第一线段之间距离处于预设距离范围内的拐点),则将与第一线段之间距离处于预设距离范围内的拐点(即点
p
start
),作为初步线段的第一拐点结果;若初步线段的起点与初步线段的中点之间不存在拐点,则将初步线段的起点与初步线段的中点之间不存在拐点,作为第一拐点结果

60.进一步地,初步线段的起点与初步线段的中点之间存在多个拐点,则将与初步线段的起点距离最近的拐点,作为第一拐点结果

61.2023b、
基于所述初步线段的终点与所述初步线段的中点之间的第二线段进行拐点检测,得到所述初步线段的第二拐点结果

62.其中,第二线段是指初步线段的终点与初步线段的中点之间形成的线段

例如,如图4所示,假设初步线段的起点

终点

中点分别为
p、p
next
、o
,则初步线段的终点
p
next
与初步线段的中点o之间形成的线段
p
nexto即为第二线段

63.其中,第二拐点结果用于指示第二线段间距离处于预设距离范围内(如与第二线段间距离在
10
个像素点以内)的像素点中是否存在拐点

64.其中,初步线段的起点

初步线段的终点分别是初步线段的两个端点,初步线段的起点和初步线段的终点只是相对而言,本实施例中初步线段的起点和初步线段的终点仅用作说明,并非用于限制初步线段的实际方向

例如,初步线段包括端点1和端点2,若将端点1作为初步线段的起点

则端点2作为初步线段的终点;若将端点2作为初步线段的起点

则端点1作为初步线段的终点

65.请参考图4,示例性地,针与第二线段之间距离处于预设距离范围内(如与第二线段间距离在
10
个像素点以内)的每个像素点,利用图像拐点检测算法进行检测,若与第二线段之间距离处于预设距离范围内的像素点中存在拐点(如图4所示,假设点
p
end
是与第二线段之间距离处于预设距离范围内的拐点),则将与第一线段之间距离处于预设距离范围内的拐点(即点
p
end
),作为初步线段的第二拐点结果;若初步线段的终点与初步线段的中点之间不存在拐点,则将初步线段的终点与初步线段的中点之间不存在拐点,作为第二拐点结果

66.进一步地,初步线段的终点与初步线段的中点之间存在多个拐点,则将与初步线段的终点距离最近的拐点,作为第二拐点结果

67.2024b、
基于所述第一拐点结果和所述第二拐点结果,对所述初步线段的端点进行更新得到更新后线段,以作为目标线段

68.示例性地,一方面,利用第一拐点结果对初步线段的起点进行更新;若第一拐点结果指示初步线段的起点与初步线段的中点之间不存在拐点,则保持初步线段的起点不变,使得更新后线段的起点保持为初步线段的起点;若第一拐点结果指示初步线段的起点与初步线段的中点之间存在拐点,则利用第一拐点结果(即初步线段的起点与初步线段的中点之间的拐点)更新初步线段的起点,使得更新后线段的起点为初步线段的起点与初步线段的中点之间的拐点

另一方面,利用第二拐点结果对初步线段的终点进行更新;若第二拐点结果指示初步线段的终点与初步线段的中点之间不存在拐点,则保持初步线段的终点不
变,使得更新后线段的终点保持为初步线段的终点;若第二拐点结果指示初步线段的终点与初步线段的中点之间存在拐点,则利用第二拐点结果(即初步线段的终点与初步线段的中点之间的拐点)更新初步线段的终点,使得更新后线段的终点为初步线段的终点与初步线段的中点之间的拐点

最终,将对初步线段的端点进行更新得到的更新后线段作为目标线段

69.例如,请参考图4,假设检测到的初步线段的两个端点分别点
p、p
next
,通过搜索发现:与第一线段之间距离处于预设距离范围内的像素点中存在拐点(如点
p
start


与第二线段之间距离处于预设距离范围内的像素点中存在拐点(如点
p
end
),则将初步线段的起点
p、
终点
p
next
分别替换为拐点
p
start

拐点
p
end
,得到的更新后线段
p
start
p
end
作为目标线段

70.2025b、
基于所述目标线段得到所述识别码图像的线段集合

71.同理,若对识别码图像进行边缘检测得到多个初步线段,则针对每个初步线段作如上处理,得到多个目标线段

多个目标线段的集合即为识别码图像的线段集合

例如,对识别码图像进行边缘检测得到5初步线段(如线段
a、b、c、d、e
),针对线段a采用如上步骤
2022b~2024b
得到线段
a’作为目标线段

针对线段b采用如上步骤
2022b~2024b
得到线段
b’作为目标线段

针对线段c采用如上步骤
2022b~2024b
得到线段
c’作为目标线段

针对线段d采用如上步骤
2022b~2024b
得到线段
d’作为目标线段

针对线段e采用如上步骤
2022b~2024b
得到线段
e’作为目标线段,线段
a’、b’、c’、d’、e’的集合即为识别码图像的线段集合
{
线段
a’、
线段
b’、
线段
c’、
线段
d’、
线段
e’}。
72.可见,通过对利用边缘检测算法检测得到的初步线段进行拐点检测,一方面,由于识别码的探测图形为平行四边形,通过进行拐点检测可以找出真正的拐点作为线段的端点,避免边缘检测算法检测到的初步线段不是真正的探测图形的边问题,可以提高所确定的目标线段是探测图形的边的概率,进而可以提高识别码的基准码区域的定位准确度

另一方面,通过边缘检测先查找出初步线段

再在初步线段基础上检测拐点,由于只需在初步线段附近检测拐点,可以减少检测拐点的数据处理,提高识别码的定位速度

73.203、
基于所述线段集合进行夹角拟合,得到所述识别码图像的各目标夹角

74.其中,目标夹角是用线段集合中各线段进行夹角拟合得到的夹角,用于指示识别码图像中潜在的探测图形的边间夹角

75.示例性地,步骤
203
具体可以包括如下步骤
2031~2034

2031、
基于所述线段集合进行线段组合,得到第一待拟合线段和第二待拟合线段

76.其中,所述第一待拟合线段(记为
l
)由第一开始端点指向第一结束端点

所述第二待拟合线段(记为
l
next
)由第二开始端点指向第二结束端点

第一开始端点(记为
p
s1
)是指第一待拟合线段的起点

第一结束端点(记为
p
e1
)是指第一待拟合线段的终点

第二开始端点(记为
p
s2
)是指第二待拟合线段的起点

第二结束端点(记为
p
e2
)是指第二待拟合线段的终点

77.具体地,可以将线段集合中的线段两两进行组合,得到多个线段组合;针对每个线段组合,将线段组合中的两个线段分别作为第一待拟合线段和第二待拟合线段

例如,线段集合
{
线段
1、
线段
2、
线段
3、
线段
4}
中的线段两两进行组合,得到6个线段组合,分别为:组合
1[
线段
1、
线段
2]、
组合
2[
线段
1、
线段
3]、
组合
3[
线段
1、
线段
4]、
组合
4[
线段
2、
线段
3]、
组合
5[
线段
2、
线段
4]、
组合
6[
线段
3、
线段
4]。
对于线段组合1而言,可以将线段1作为第一待拟合
线段

线段2作为第二待拟合线段;同理,对于线段组合2而言,线段1作为第一待拟合线段

线段3作为第二待拟合线段;如此类推

[0078]
2032、
基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

[0079]
具体地,一方面,获取所述第一结束端点与所述第二开始端点之间的距离,作为第一距离;例如,如图5所示,第一待拟合线段的第一结束端点
p
e1
与第二待拟合线段的第二开始端点
p
s2
之间的距离,即为第一距离(记为
d1


另一方面,获取所述第二结束端点与所述第一开始端点之间的距离,作为第二距离;例如,如图5所示,第二待拟合线段的第二结束端点
p
e2
与第一待拟合线段的第一开始端点
p
s1
之间的距离,即为第二距离(记为
d2


[0080]
进一步地,为了提高所确定的识别码图像的目标夹角是探测图形的边间夹角概率,在一些实施例中,还会检测所述第一待拟合线段的像素点长度和所述第二待拟合线段的像素点长度;当所述第一待拟合线段的像素点长度大于第二预设长度

且所述第二待拟合线段的像素点长度大于第二预设长度时,再基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

由于探测图形的边的长度会相对较长,因此通过当第一待拟合线段的像素点长度大于第二预设长度

且所述第二待拟合线段的像素点长度大于第二预设长度时,再获取第一距离和第二距离进行夹角拟合,可以过滤掉一些不是探测图形的边的线段,提高所确定的识别码图像的目标夹角是探测图形的边间夹角概率,进而提高识别码的定位准确率

[0081]
进一步地,为了提高所确定的识别码图像的目标夹角是探测图形的边间夹角概率,在一些实施例中,还会检测所述第一待拟合线段与所述第二待拟合线段之间的角度;若所述第一待拟合线段与所述第二待拟合线段之间的角度处于预设角度范围内,则基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

由于探测图形为矩形,因此在识别码图像中探测图形的边间夹角角度会处于一定范围内(如处于
45
°

135
°
之间),通过当第一待拟合线段与第二待拟合线段之间的角度处于预设角度范围内时,再获取第一距离和第二距离进行夹角拟合,可以过滤掉一些不是探测图形的边间夹角的夹角,提高所确定的识别码图像的目标夹角是探测图形的边间夹角概率,进而提高识别码的定位准确率

[0082]
其中,预设角度范围可以是
[45
°
,135
°
]
,此处预设角度范围的具体取值仅为举例,不以此为限制

[0083]
2034、
若所述第一距离和所述第二距离符合第一预设条件

或符合第二预设条件,则将所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

[0084]
其中,第一预设条件为所述第一距离
d1
小于所述第二距离
d2、
且所述第一距离
d1
小于第一预设长度

[0085]
其中,第二预设条件为所述第二距离
d2
小于所述第一距离
d1、
且所述第二距离
d2
小于第一预设长度

[0086]
其中,第一预设长度的具体取值可以根据实际业务场景需求而设置,此处对第一预设长度的具体取值不做限制

例如,第一预设长度可以取值为7个像素点

[0087]
若所述第一距离小于所述第二距离

且所述第一距离小于预设距离阈值,证明所
述第一距离和所述第二距离符合第一预设条件,则将所述第一待拟合线段与所述第二待拟合线段之间的交点

所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

[0088]
若所述第二距离小于所述第一距离

且所述第二距离小于预设距离阈值,证明所述第一距离和所述第二距离符合第二预设条件,则将所述第一待拟合线段与所述第二待拟合线段之间的交点

所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

[0089]
若第一距离和第二距离不符合第一预设条件

且不符合第二预设条件,则舍弃利用第一待拟合线段与第二待拟合线段形成的线段组合用于拟合识别码图像的目标夹角

继续采用下一个线段组合进行处理

[0090]
以此类推,将线段集合中的线段两两进行组合得到的多个线段组合中每个线段组合,参考步骤
2032~2034
,继续采用下一个线段组合进行处理,直至所有线段组合处理完成时,得到识别码图像的各目标夹角

[0091]
204、
基于所述基准码候选区域和所述目标夹角进行整合,得到所述基准码候选区域的平行四边形

[0092]
具体地,可以针对每个基准码候选区域,搜索基准码候选区域内部的目标夹角进行整合,得到基准码候选区域的平行四边形,此时得到的平行四边形可以作为识别码的探测图形输出

如此类推,对于每个基准码候选区域可以确定其对应的平行四边形,从而得到识别码图像中的所有探测图形

[0093]
由此,本实施例中可以在识别码的探测图形缺失

毁损等情况下,利用“提取线段-》
线段间形成夹角-》
夹角恢复平行四边形”的识别思想定位出识别码,提高识别码的识别率

其中,步骤
202
实现了该识别思想中“提取线段”部分

步骤
203
中实现了该识别思想中“线段间形成夹角”部分

步骤
204
实现了该识别思想中“夹角恢复平行四边形”部分

[0094]
205、
基于所述平行四边形,输出所述识别码图像的目标基准码区域

[0095]
其中,目标基准码区域是识别得到的识别码图像中的基准码的所在区域

[0096]
示例性地,可以将基准码候选区域的平行四边形在识别码图像中对应的包围区域,作为目标基准码区域;如此类推,针对识别码图像的多个基准码候选区域中的平行四边性,可以识别输出多个目标基准码区域

此时,针对目标基准码区域进行解码即可得到该目标基准码区域对应的内容信息

[0097]
为了方便理解,下面以一具体例子说明本实施例中识别码的定位过程,例如,为了提高机器人的定位准确率以提高机器人的控制准确度,机器人可以利用如
apriltag
码,
aruco
码等进行定位

具体地,首先,机器人的相机采集当前状态下的图像作为识别码图像;利用步骤
201~205
中的方式对识别码图像进行定位,得到识别码图像的目标基准码区域

然后,利用目标基准码区域在识别码图像中的位置

机器人的相机位姿,确定机器人与目标基准码区域对应环境的基准码之间的相对位置,从而确定机器人在环境中的位置,进而可以利用机器人在环境中的位置控制机器人执行相应任务(如进行机器人导航

抓取物品等)

[0098]
进一步地,为了更好地理解,下面提供一段伪代码用于理解本实施例中识别码的定位过程,具体如下:
input:
原始图像
output:
若干个可能的基准码区城,称为
quads1:
使用自动阈值分割方法将输人原始图像转化为二值化图
:2:
对二值化图使用膨账操作,并提取每个目标区域(其中目标区域是区域内所有像素点的灰度值大于预设灰度值的区域)的
1.5
倍作为候选区域,候选区域集合称为
regions;3:
使用任意边缘提取的方法从二值化图中提取所有边缘段,边缘段的集合称为
edges;4:foreach edge ∈ edges do5:contour =
多边形拟合算法
(edge)6:if contour 所包含的点数超过3个点 then7:foreach p in contour do8:if' distance(p, pnext)》14
个像素 then9:ps,pe= 线段微调算法
(p, pnext)10:lines
ꢀ←ꢀ
line

ps, pe)11:end12:end13:end14:end15:foreach l ∈ lines do16:ifl
的长度超过 15 个像素 then17:if angle

l, lnext)》30 度 then18:pos = 线段交点 (
l,lnext)19:d1= digtancel(l.pe, lnext.ps)20:d2= digtancel(l.ps, lnext.pe)21:if d1《d2 and d1《7
个像素 then22:if cross-producl(l, lnext)《0 then23:corners
ꢀ←ꢀ
cornorpos, l, nert)24:end25:else if d2《d1 and d2《7
个像素 then26:if cross
‑ꢀ
producl(lnext, l)《0 then27:corners
ꢀ←ꢀ
corner(pos,lnext,l)28:end29:end30:end31:end32:foreach region ∈ regions do33:quads
ꢀ←
搜索 region 内部的 corners
,并整合一个矩形
:34: end35:return quads;
其中,第9行的线段微调算法是指如果直接使用边缘检测算法提取线段,有可能得到的线段起点终点不准确,为了提高所提取线段的准确性,利用微调算法从原来的点出发往检测的到线段中间搜索拐点作为线段新的端点,并用起点-终点方式表示一条线段(具体实现可以参考步骤
2021b~2025b


参考图5,第
19~29
行是为了角的表示统一为同一方向,如统一为逆时针方向或统一为顺时针方向表示一个角

[0099]
可以理解地是,该伪代码主要用于对本实施例的理解,而不成为本实施例的限制

[0100]
由以上内容可以看出,一方面,通过基于识别码图像进行线段提取得到识别码图像的线段集合,可以提取出识别码图像中潜在的探测图像的边;通过基于线段集合进行夹角拟合得到识别码图像的各目标夹角,可以利用提取的线段拟合还原出识别码图像中潜在的探测图像的边间夹角;从而通过基于基准码候选区域和目标夹角进行整合得到基准码候选区域的平行四边形,可以利用识别码图像的各目标夹角恢复出识别码图像中的基准码的探测图形;另一方面,通过基于基准码候选区域和目标夹角进行整合得到基准码候选区域的平行四边形,作为识别码图像的目标基准码区域,可以避免矩形的探测图形在图形中变形而无法检测的问题,从而实现在基准码存在缺失

毁损

被遮挡情况下可以定位出基准码的探测图形,提高基准码的四边形探测图案的抗遮挡性,进而提高基准码的识别率

[0101]
本领域普通技术人员可以理解,上述识别码的定位方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行

[0102]
为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种识别码的定位方法

例如,该计算机程序能够被处理器进行加载,以执行如下步骤:对待定位的识别码图像进行候选区域提取,得到所述识别码图像的基准码候选区域;基于所述识别码图像进行线段提取,得到所述识别码图像的线段集合;基于所述线段集合进行夹角拟合,得到所述识别码图像的各目标夹角;基于所述基准码候选区域和所述目标夹角进行整合,得到所述基准码候选区域的平行四边形;基于所述平行四边形,输出所述识别码图像的目标基准码区域

[0103]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:对所述识别码图像进行边缘检测,得到所述识别码图像的初步线段;基于所述初步线段的起点与所述初步线段的中点之间的第一线段进行拐点检测,得到所述初步线段的第一拐点结果;基于所述初步线段的终点与所述初步线段的中点之间的第二线段进行拐点检测,得到所述初步线段的第二拐点结果;基于所述第一拐点结果和所述第二拐点结果,对所述初步线段的端点进行更新得到更新后线段,以作为目标线段;基于所述目标线段得到所述识别码图像的线段集合

[0104]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:基于所述线段集合进行线段组合,得到第一待拟合线段和第二待拟合线段,其中,所述第一待拟合线段由第一开始端点指向第一结束端点

所述第二待拟合线段由第二开始端点指向第二结束端点;基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离,其中,所述第一距离是所述第一结束端点与所述第二开始端点之间的距离,所述第二距离是所述第二结束端点与所述第一开始端点之间的距离;若所述第一距离小于所
述第二距离

且所述第一距离小于第一预设长度,则将所述第一待拟合线段与所述第二待拟合线段之间的交点

所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

[0105]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:若所述第二距离小于所述第一距离

且所述第二距离小于第一预设长度,则将所述第一待拟合线段与所述第二待拟合线段之间的交点

所述第一待拟合线段和所述第二待拟合线段形成的夹角,作为所述识别码图像的目标夹角

[0106]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:检测所述第一待拟合线段的像素点长度和所述第二待拟合线段的像素点长度;若所述第一待拟合线段的像素点长度大于第二预设长度

且所述第二待拟合线段的像素点长度大于第二预设长度,则基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

[0107]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:检测所述第一待拟合线段与所述第二待拟合线段之间的角度;若所述第一待拟合线段与所述第二待拟合线段之间的角度处于预设角度范围内,则基于所述第一待拟合线段和所述第二待拟合线段,获取第一距离和第二距离

[0108]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:对待定位的识别码图像进行二值化处理,得到所述识别码图像的二值化图;对所述二值化图进行膨胀操作,得到所述二值化图的膨胀图;基于所述膨胀图中的连续目标像素点的所在区域,得到所述识别码图像的基准码候选区域,其中,所述目标像素点为灰度值符合预设条件的像素点

[0109]
在一些实施例中,该计算机程序能够被处理器进行加载,以执行如下步骤:获取预设的结构元素;获取所述结构元素的原点处于所述二值化图中的目标像素点时所述结构元素的占据像素点;基于所述占据像素点得到所述二值化图的膨胀图

[0110]
其中,该计算机可读存储介质可以包括:只读存储器(
rom

read only memory


随机存取记忆体(
ram

random access memory


磁盘或光盘等

[0111]
在上述识别码的定位方法

计算机可读存储介质

电子设备实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的计算机可读存储介质

电子设备及其相应单元的具体工作过程及可带来的有益效果,可以参考如上实施例中识别码的定位方法的说明,具体在此不再赘述

[0112]
以上对本技术实施例所提供的一种识别码的定位方法

电子设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制

当前第1页1  
相关技术
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图