图像处理方法、终端设备以及计算机存储介质与流程
未命名
08-15
阅读:270
评论:0

1.本技术涉及图像处理技术领域,特别是涉及一种图像处理方法、终端设备以及计算机存储介质。
背景技术:
2.腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体;膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程,可以用来填补物体中的空洞。
3.腐蚀和膨胀是图像形态学计算中最基本的变换,图像形态学计算的应用几乎覆盖了图像处理的所有领域,通过使用具有一定形态的结构元素去度量和提取图像中的对应形状,从而达到图像分析和识别的目的。
4.在现有技术中,膨胀、腐蚀操作需要对图像每个像素的邻域进行访问并进行逻辑操作,每个像素均需被访问多次,操作效率较低。
技术实现要素:
5.本技术提供一种图像处理方法、终端设备以及计算机存储介质。
6.本技术采用的一个技术方案是提供一种图像处理方法,图像处理方法包括:
7.获取原始二值图像;
8.按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码;
9.基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果;
10.基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,和/或基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果;
11.将第二腐蚀结果和/或第二膨胀结果作为原始二值图像的二值形态学计算结果。
12.其中,按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码,包括:
13.根据原始二值图像的高度和处理器核心数量对原始二值图像进行分块,得到若干二值图像块;
14.将若干二值图像块分配至对应的处理器核心,以使处理器核心按照行方向,对二值图像块进行行程编码,得到二值图像块对应的行程编码;
15.对若干二值图像块对应的行程编码进行整合,得到原始二值图像对应的行程编码。
16.其中,对二值图像块进行行程编码,得到二值图像块对应的行程编码,包括:
17.对二值图像块数据分批装载至寄存器,并在寄存器中判断当前存入的二值图像块的目标行数据是否为全为1数据;
18.若否,获取目标行数据中的起始位置或终止位置,得到行程编码;若是,继续装载
直至出现为0数据。
19.其中,基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀处理,得到原始二值图像对应的第一腐蚀结果,包括:
20.获取目标行程编码中起始位置和终止位置;
21.利用腐蚀半径和起始位置确定腐蚀起始位置,利用腐蚀半径和终止位置确定腐蚀终止位置,进而得到腐蚀行程编码;其中,腐蚀半径基于结构元素矩阵得到;
22.利用腐蚀行程编码进行行方向腐蚀处理,得到原始二值图像对应的第一腐蚀结果。
23.其中,利用腐蚀行程编码进行行方向腐蚀处理,得到原始二值图像对应的第一腐蚀结果之前,包括:
24.若腐蚀起始位置大于腐蚀终止位置,移除腐蚀行程编码。
25.其中,基于行程编码,利用结构元素矩阵对原始二值图像进行行方向膨胀处理,得到原始二值图像对应的第一膨胀结果,包括:
26.获取行程编码中起始位置和终止位置;
27.利用膨胀半径和起始位置确定膨胀起始位置,利用膨胀半径和终止位置确定膨胀终止位置,进而得到膨胀行程编码;其中,膨胀半径基于结构元素矩阵得到;
28.利用膨胀行程编码进行行方向膨胀处理,得到原始二值图像对应的第一膨胀结果。
29.其中,利用膨胀行程编码进行行方向膨胀处理,得到原始二值图像对应的第一膨胀结果之前,包括:
30.若膨胀行程编码与目标行程编码的前一行程编码发生重叠,将膨胀行程编码和前一行程编码进行合并。
31.其中,基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,包括:
32.对于第i行的第二腐蚀结果,基于连续m行方向的第一腐蚀结果的交集得到,其中,m基于结构元素矩阵得到,i和m为正整数。
33.其中,基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果,包括:
34.对于第i行的第二膨胀结果,基于连续m行方向的第一膨胀结果的并集得到,其中,m基于结构元素矩阵得到,i和m为正整数。
35.本技术采用的另一个技术方案是提供一种终端设备,终端设备包括存储器以及与存储器连接的处理器;
36.其中,存储器用于存储程序数据,处理器用于执行程序数据以实现如上述的图像处理方法。
37.本技术采用的另一个技术方案是提供一种计算机存储介质,计算机存储介质用于存储程序数据,程序数据在被计算机执行时,用以实现如上述的图像处理方法。
38.本技术的有益效果:基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。
附图说明
39.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本技术提供的图像处理方法一实施例的流程示意图;
41.图2是结构元素矩阵一实施例的示意图;
42.图3是原始二值图像一实施例的示意图;
43.图4-图6是对图3第一行执行行程编码处理过程中的示意图;
44.图7是对图3第4行执行膨胀处理后的示意图;
45.图8是图像处理终端获取的原始二值图像一实施例示意图;
46.图9-图12是对图8执行膨胀处理过程中的示意图;
47.图13是本技术提供的终端设备一实施例的结构示意图;
48.图14是本技术提供的计算机存储介质一实施例的结构示意图。
具体实施方式
49.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
50.在申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
51.本技术实施例中的步骤并不一定是按照所描述的步骤顺序进行处理,可以按照需求有选择的将步骤打乱重排,或者删除实施例中的步骤,或者增加实施例中的步骤,本技术实施例中的步骤描述只是可选的顺序组合,并不代表本技术实施例的所有步骤顺序组合,实施例中的步骤顺序不能认为是对本技术的限制。
52.本技术中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法或设备固有的其它步骤或单元。
53.另外,本技术中尽管多次采用术语“第一”、“第二”等来描述各种数据(或各种应用或各种指令或各种操作)等,不过这些数据(或应用或指令或操作)不应受这些术语的限制。这些术语只是用于区分一种数据(或应用或指令或操作)和另一种数据(或应用或指令或操作)。
54.近些年来,机器视觉和图像处理技术在物体表面缺陷检测方面的应用取得了一定的效果,基于机器视觉的缺陷检测方法具有检测速度快、识别率高、实时性好、成本较低等
优点,其中,对物体表面进行缺陷检测需要在获得了二值图像后,对图像进行形态学计算处理,减少二值图像中包含的噪声信息,可以更好地通过模板匹配或人工神经网络的方式提取出物体表面的图像特征,再与已获得的缺陷信息特征进行匹配,从而识别出物体表面是否有缺陷及缺陷类型。随着高分辨率相机的出现,大幅面图像包含更多的像素点信息,传统的图像形态学计算方法难以在短时间内时限对大幅面图像进行处理,在实际工业应用中往往要求实时对图像进行处理,对算法的耗时要求严格,现有的这种算法难以满足实际应用的需要。
55.本技术主要设计了一套提升二值图像形态学计算的方法,和传统方法不一样的是,本技术先对二值图像进行行程编码,对行程编码后的图像进行行方向的形态学操作,再执行列方向的形态学计算,可以避免传统方法存在的重复计算或冗余计算的问题,提升二值图像形态学计算的效率。
56.具体请参阅图1,图1是本技术提供的图像处理方法一实施例的流程示意图。
57.如图1所示,本技术实施例的图像处理方法具体可以包括以下步骤:
58.s1,获取原始二值图像。
59.本技术实施例的图像处理方法由图像处理终端执行,一些应用场景中,图像处理终端可以是相机。一些应用场景中,图像处理终端可以是与相机建立通信连接的设备,其中,设备还可以包含图形处理器。
60.具体地,图像处理终端获取得到原始二值图像。
61.一些实施例中,图像处理终端通过与之通信连接的彩色相机获取得到的彩色图像,通过对彩色图像进行二值化处理,得到原始二值图像。
62.一些实施例中,图像处理终端通过与之通信连接的灰度相机获取得到的灰度图像,通过对灰度图像进行二值化处理,得到原始二值图像。
63.s2,按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码。
64.具体地,图像处理终端按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码。
65.一些实施例中,在第y行的原始二值图像中,若连续为1的像素点的起始列坐标为xs,终止列坐标为xe,则图像处理终端记录当前行程为run=(y,xs,xe)。可以理解地,同一行的原始二值图像可以存在多个行程。
66.图像处理终端按照行方向对原始二值图像进行行程编码所得到的对应行程编码,为若干个形成的集合,即(run1,run2,run3,
…
,runn)。
67.s3,基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果。
68.具体地,图像处理终端基于行程编码,利用结构元素矩阵对原始二值图像做行方向的腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果。
69.其中,结构元素矩阵由结构元素参数生成。记结构元素矩阵为se,在结构元素矩阵中,有0、1两种数值。并统计每行结构元素矩阵中数据为1的元素个数,记为d=(d1,d2,
…
,dm),其中,m为结构元素矩阵se的高度;同时计算每行对应的结构元素半径,记为r=(r1,r2,
…
,rm),
70.其中,满足:
71.rm=floor(dm/2)
72.其中,floor为对dm/2结果的向下取整。示例性地,dm/2=2.5,则rm=floor(dm/2)=2。
73.请参阅图2,图2是结构元素矩阵一实施例的示意图。
74.如图2所示,该结构元素矩阵se的形状为圆形,半径为2.5,则:
[0075][0076][0077][0078]
一些实施例中,结构元素矩阵se的高度为m,图像处理终端选取m行行程进行行方向的腐蚀和/或膨胀处理。
[0079]
记原始二值图像为i,se为结构元素矩阵。其中,腐蚀的定义为可知腐蚀算法为当结构元素覆盖的原始二值图像像素值全部为1时,将结构元素中心点所在的位置像素值赋为1,否则赋为0。也即当结构元素覆盖的二值图像像素值存在0时,将结构元素中心点所在的位置赋值为0,否则赋为1。若se的高度为m,原始二值图像第i行的腐蚀结果为其邻近m行共同作用的结果。
[0080]
以图2的结构元素矩阵为例,结构元素矩阵的形状为圆形,半径为2.5,se的高度m为5,原始二值图像的第i行的腐蚀结果为第i-2、i-1、i、i+1、i+2行共同作用的结果,每一行的腐蚀核大小分别为d
i-2
=3、d
i-1
=5、di=5、d
i+1
=5、d
i+2
=3,腐蚀半径分别为r
i-2
=1、r
i-1
=2、ri=2、r
i+1
=2、r
i+2
=1。若为二值图像第i行像素值,二值图像第i行的行程编码为{run(y,xs,xe)|y==i&&gi[xs,xe]==1&&i∈[i-2,i+2]},则行方向腐蚀结果为lri={run(y,xs+ri,xe-ri)|y==i&&xe-ri≥xs+ri}。
[0081]
其中,膨胀的定义为可知膨胀算法为当结构元素覆盖的二值图像像素值存在1时,将结构元素中心点所在的位置像素值赋为1,否则赋为0。也即当结构元素覆盖的二值图像像素值全部为0时,将结构元素中心点所在的位置赋值为0,否则赋为1。若se的高度为m,原始二值图像第i行的膨胀结果为其邻近m行共同作用
的结果。
[0082]
以图2的结构元素矩阵为例,结构元素矩阵的形状为圆形,半径为2.5,se的高度m为5,二值图像第i行的膨胀结果为第i-2、i-1、i、i+1、i+2行共同作用的结果,每一行的膨胀核大小分别为d
i-2
=3、d
i-1
=5、di=5、d
i+1
=5、d
i+2
=3,膨胀半径分别为r
i-2
=1、r
i-1
=2、ri=2、r
i+1
=2、r
i+2
=1。若gi为原始二值图像第i行像素值,二值图像第i行的行程编码为{run(y,xs,xe)|y==i&&gi[xs,xe]==1&&i∈[i-2,i+2]},则行方向膨胀结果分别为ldi={run(y,xs-ri,xe+ri)|y==i}。
[0083]
s4,基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,和/或基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果。
[0084]
具体地,图像处理终端基于得到的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀和/或膨胀处理,得到第二腐蚀结果和/或第二膨胀结果。
[0085]
s5,将第二腐蚀结果和/或第二膨胀结果作为原始二值图像的二值形态学计算结果。
[0086]
具体地,图像处理终端将得到的第二腐蚀结果和/或第二膨胀结果作为原始二值图像的二值形态学计算结果。
[0087]
一些应用场景中,图像处理终端将得到的第二腐蚀结果作为原始二值图像的二值形态学计算结果。
[0088]
一些应用场景中,图像处理终端将得到的第二膨胀结果作为原始二值图像的二值形态学计算结果。
[0089]
一些应用场景中,图像处理终端将得到的第二腐蚀结果和第二膨胀结果作为原始二值图像的二值形态学计算结果。
[0090]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。
[0091]
本技术提供的图像处理方法另一实施例可以具体包括:
[0092]
s11,获取原始二值图像。
[0093]
s12,根据原始二值图像的高度和处理器核心数量对原始二值图像进行分块,得到若干二值图像块。
[0094]
具体地,图像处理终端根据原始二值图像的高度像素值及图像处理终端的处理器核心数量,对原始二值图像进行分块,得到若干二值图像块。
[0095]
一些应用场景中,图像处理终端还可以包括图形处理单元(graphic process unit,gpu),图像处理终端可以根据原始二值图像的高度像素值及图像处理终端的图形处理器核心数量,对原始二值图像进行分块,得到若干二值图像块。
[0096]
示例性地,原始二值图像的高度为imgh,图像处理终端根据处理器的物理核心数ncores,对原始二值图像分成ncores块,得到ncores个二值图像块block1、block2、
…
、block
ncores
,其中,每个二值图像块对应的图像高度为imgh/ncores。
[0097]
如图3所示,图3是原始二值图像一实施例示意图。
[0098]
图3所示的原始二值图像宽度为34像素,高度为4像素,其中灰色方块代表数据为1
的像素点,白色方块代表数据为0的像素点。
[0099]
例如,处理器的物理核心数为4,图像处理终端对该原始二值图像分成4块,即每行为1个二值图像块。
[0100]
s13,将若干二值图像块分配至对应的处理器核心,以使处理器核心按照行方向,对二值图像块进行行程编码,得到二值图像块对应的行程编码。
[0101]
具体地,图像处理终端将得到的若干二值图像块分别分配至不同的处理器核心按照行方向进行行程编码运算,得到每一二值图像块对应的行程编码,其中,每一二值图像块对应的编码结果分别存储于不同的内存分块中。
[0102]
示例性地,请重新参阅图3,以第一个二值图像块为例,该二值图像块为第一行,图像处理终端对第一行进行行程编码运算。具体地,图像处理终端从该行第1列开始逐列向后判断,直到出现第一个数据为1的元素,即第5列,图像处理终端记录第一个行程的起始位置xs=5,随后继续向后判断,直到第29列,记录第一个行程的终止位置xe=29,由此得到第一个行程(1,5,29)。图像处理终端继续向后判断,得到第二个形成的起始位置xs=33和终止位置xe=34,并记录第二个行程(1,33,34)。基于此,得到第一行的行程编码结果run1={(1,5,29),(1,33,34)}。以此类推可得到第二行的行程编码结果run2={(2,9,17),(2,33,33)}、第三行的行程编码结果run3={(3,17,33)}、第四行的行程编码结果run4={(4,11,17),(4,20,24)}。
[0103]
s14,对若干二值图像块对应的行程编码进行整合,得到原始二值图像对应的行程编码。
[0104]
具体地,图像处理终端将分别存储于不同内存分块中的若干二值图像块对应的行程编码按照顺序排列到一片连续的内存中,以图像处理终端对图3进行行程编码运算后得到的行程编码结果run1、run2、run3、run4为例,run1、run2、run3、run4分别存储于不同的内存分块中,图像处理终端对run1、run2、run3、run4严格按照顺序依次排列到一片连续的内存中,即保证run1到run4顺序无误。由于形态学运算结果同时受上下几行结果的影响,图像处理终端需要对若干二值图像块对应的行程编码整合后所得到的原始二值图像对应的行程编码上进行,不可直接对若干二值图像块对应的行程编码进行腐蚀和/或膨胀操作。
[0105]
s15,基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果。
[0106]
s16,基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,和/或基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果。
[0107]
s17,将所述第二腐蚀结果和/或所述第二膨胀结果作为所述原始二值图像的二值形态学计算结果。
[0108]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。进一步地,在执行行程编码前将二值图像按照处理器核心数量划分成若干个二值图像块,每个二值图像块分配至不同的处理器核心进行行程编码处理,提升了行程编码的处理效率。
[0109]
本技术提供的图像处理方法另一实施例可以具体包括:
[0110]
s21,获取原始二值图像。
[0111]
s22,根据原始二值图像的高度和处理器核心数量对原始二值图像进行分块,得到若干二值图像块。
[0112]
s23,将若干二值图像块分配至对应的处理器核心,以使处理器核心按照行方向,对二值图像块进行行程编码,得到二值图像块对应的行程编码。
[0113]
s24,逐行对二值图像块数据分批装载至寄存器,并在寄存器中判断当前存入的二值图像块的目标行数据是否为全为1数据。
[0114]
具体地,图像处理终端根据simd(single instruction multiple data,单指令多数据流)寄存器的大小,利用simd指令将二值图像块逐行装载至simd寄存器中,并在simd寄存器中使用simd指令判断当前存入的二值图像块的目标行数据是否为全1数据。
[0115]
若判断结果为是,跳转至s25。若判断结果为否,跳转至s26。
[0116]
可选地,simd指令可以包括sse(streaming simd extensions,单指令多数据流扩展)指令、avx2指令(advanced vector extensions,高级矢量扩展指令集),此处不做限定。
[0117]
一些实施例中,图像处理终端通过sse指令逐行将二值图像块分批装载至xmm寄存器中,在xmm寄存器中进行判断当前存入的二值图像块的目标行数据是否为全为1数据。其中,xmm寄存器的大小为128bit,因此图像处理终端可以一次装载16byte的二值图像块数据。
[0118]
一些实施例中,图像处理终端通过avx2指令逐行将二值图像块分批装载至ymm寄存器中,在ymm寄存器中进行判断当前存入的二值图像块的目标行数据是否为全为1数据。其中,ymm寄存器的大小为256bit,因此图像处理终端可以一次装载32byte的二值图像块数据。
[0119]
s25,若是,继续装载直至出现为0数据。
[0120]
若判断结果为是,则图像处理终端装载下一组二值图像块的行数据并重新判断。直到判断出某一组二值图像块中存在为0数据。
[0121]
s26,若否,获取目标行数据中的起始位置或终止位置,得到行程编码。
[0122]
具体地,若当前装载的二值图像块的目标行数据不为全1数据,图像处理终端获取目标行数据中数据为0的起始位置或终止位置,得到该行至少一个行程编码。
[0123]
s22-s26的详细执行步骤请参阅图4-图6,图4-图6是对图3第一行执行行程编码处理过程中的示意图。
[0124]
图像处理终端可以使用sse指令或avx2指令对装载的二值图像块进行行程编码处理。若图像处理终端使用sse指令对装载的二值图像块进行行程编码处理,由于二值图像块中每个像素占用8位寄存器空间,sse指令对应的xmm寄存器长度为128位,因此一个sse指令可以处理16列数据;若若图像处理终端使用avx2指令对装载的二值图像块进行行程编码处理,由于avx2指令对应的ymm寄存器长度为256位,因此一个sse指令可以处理32列数据。
[0125]
如图4所示,图像处理终端使用sse指令对装载第一行的二值图像块进行行程编码处理。
[0126]
具体地,图像处理终端将第一行前16列数据装载至xmm寄存器中,也就是将第1列至第16列数据装载至xmm寄存器中,如图4所示。图像处理终端使用sse指令判断寄存器中是否全部为数据1。可以理解地,当前xmm寄存器装载的数据并非全部为1。因此图像处理终端
进一步地判断第一个数据1所在的位置,得到xs=5。
[0127]
进一步地,图像处理终端从第6列开始将后16列数据装载至xmm寄存器中,也就是将第6列至第21列数据装载至xmm寄存器中,如图5所示。图像处理终端再使用sse指令判断此时xmm寄存器中的数据是否全部为数据1,可以理解地,当前xmm寄存器中装载的数据全部为1,因此图像处理终端继续装载下一组数据。
[0128]
再进一步地,图像处理终端从第22列开始将后16列数据装载至xmm寄存器中,也就是将第22列至第37列数据装载至xmm寄存器中,如图6所示。由于图像宽度为34个像素,装载至xmm寄存器中的第35列至第37列数据直接设0。此时,xmm寄存器中存在含有0的数据,图像处理终端判断出第8位为第一个形成的终止位置,结合装载过程可知,xe=5+16+8=29,以此类推得到第一行的行程编码run1={(1,5,29),(1,33,34)}。
[0129]
s27,基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果。
[0130]
s28,基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,和/或基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果。
[0131]
s29,将第二腐蚀结果和/或第二膨胀结果作为原始二值图像的二值形态学计算结果。
[0132]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。进一步地,优化了行程编码的计算方式,提升了行程编码的处理效率。
[0133]
本技术提供的图像处理方法另一实施例可以具体包括:
[0134]
s31,获取原始二值图像。
[0135]
s32,按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码。
[0136]
s33,获取目标行程编码中起始位置和终止位置。
[0137]
具体地,图像处理终端获取每一行的行程编码中起始位置和终止位置,其中每一行行程编码的起止位置和终止位置可以分别有多个。
[0138]
s34,利用腐蚀半径和起始位置确定腐蚀起始位置,利用腐蚀半径和终止位置确定腐蚀终止位置,进而得到腐蚀行程编码。
[0139]
其中,腐蚀半径基于结构元素矩阵得到。
[0140]
示例性地,使用d1,d2,
…
,dm分别对第i-m/2,
…
,i,
…
,i+m/2行进行行方向腐蚀,记每行的腐蚀结果为lr
i-m/2
,
…
,lri,
…
,lr
i+m/2
。原始二值图像每行数据经过行程编码后,行方向腐蚀只需考虑每个行程的起始位置和终止位置,若当前行程run为(y,xs,xe),对应的腐蚀半径为r,则当前行程run的腐蚀编码为(y,xs+r,xe-r)。
[0141]
s35,若腐蚀起始位置大于腐蚀终止位置,移除腐蚀行程编码。
[0142]
具体地,若某一腐蚀行程编码中的腐蚀起始位置大于腐蚀终止位置,图像处理终端移除该腐蚀行程编码。
[0143]
示例性地,对于某一腐蚀行程编码为(y,xs+r,xe-r),若满足:
[0144]
xs+r>xe-r,
[0145]
则图像处理终端移除该腐蚀行程编码。
[0146]
s36,利用腐蚀行程编码进行行方向腐蚀处理,得到原始二值图像对应的第一腐蚀结果。
[0147]
s37基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果。
[0148]
可以理解地,若第i行的腐蚀运算为第i-m/2,
…
,i,
…
,i+m/2行共同作用的结果,则第i+1行的腐蚀运算为第i-m/2+1,
…
,i,
…
,i+m/2+1行共同作用的结果。因此,由第i行迭代到第i+1时,可以重复使用第i行计算出来的部分结果。例如计算第i行腐蚀运算结果时,需要对第i-m/2+1行进行行方向腐蚀操作,且对应的腐蚀核大小为d2,而计算第i+1行腐蚀运算结果时,同样需要对第i-m/2+1行进行行方向腐蚀操作,且对应的腐蚀核大小为d1,因此若d1与d2相等,则该行在行方向的腐蚀操作无需重复计算,依此类推。最后再沿着列方向进行腐蚀运算,得到第i+1行的腐蚀运算结果。其中,第i+1行的腐蚀结果为
[0149]
s38,将第二腐蚀结果作为原始二值图像的二值形态学计算结果。
[0150]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。
[0151]
本技术提供的图像处理方法另一实施例可以具体包括:
[0152]
s41,获取原始二值图像。
[0153]
s42,按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码。
[0154]
s43,获取目标行程编码中起始位置和终止位置。
[0155]
s44,利用膨胀半径和所述起始位置确定膨胀起始位置,利用膨胀半径和所述终止位置确定膨胀终止位置,进而得到膨胀行程编码。
[0156]
其中,膨胀半径基于结构元素矩阵得到。
[0157]
示例性地,使用结构元素矩阵的d1,d2,
…
,dm分别对第i-m/2,
…
,i,
…
,i+m/2行进行行方向膨胀,记每行的膨胀结果为ld
i-m/2
,
…
,ldi,
…
,ld
i+m/2
。二值图像每行数据经过行程编码后,行方向膨胀只需考虑每个行程的起始位置和终止位置,有行程run为(y,xs,xe),膨胀半径为r,则该行程run的膨胀结果为(y,xs-r,xe+r)。
[0158]
s45,若所述膨胀行程编码与所述目标行程编码的前一行程编码发生重叠,将所述膨胀行程编码和所述前一行程编码进行合并。
[0159]
一些实施例中,若当前膨胀行程编码与同一行的上一膨胀行程编码出现了重叠,如前一膨胀行程编码的膨胀终止位置大于当前膨胀行程编码的起始位置,图像处理终端将当前膨胀行程编码与上一膨胀行程编码进行合并操作。
[0160]
以图3的第4行为例,假设形态学核大小为3,则膨胀半径为1,第4行的行程编码为run4={(4,11,17),(4,20,24)),则膨胀结果为{(4,11-1,17+1),(4,20-1,24+1)),即{(4,10,18),(4,19,25)},第4行的膨胀结果如图7所示,图7是对图3第4行执行膨胀处理后的示意图。
[0161]
由于膨胀后的行程已经连在一起,因此可以合并为一个行程,合并后的行程为{(4,10,25)},因此,行方向膨胀后的行程相连,都需要进行合并。可以理解地,若形态学核特别大,同一行不相邻的行程膨胀后也有可能相连或重叠,此时也需要对其进行合并。
[0162]
s46,利用所述膨胀行程编码进行行方向膨胀处理,得到所述原始二值图像对应的第一膨胀结果。
[0163]
s47基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果。
[0164]
可以理解地,若第i行的形态学运算为第i-m/2,
…
,i,
…
,i+m/2行共同作用的结果,则第i+1行的形态学运算为第i-m/2+1,
…
,i,
…
,i+m/2+1行共同作用的结果。因此,由第i行迭代到第i+1时,可以重复使用第i行计算出来的部分结果。例如计算第i行形态学运算结果时,需要对第i-m/2+1行进行行方向形态学操作,且对应的形态学核大小为d2,而计算第i+1行形态学运算结果时,同样需要对第i-m/2+1行进行行方向形态学操作,且对应的形态学核大小为d1,因此若d1与d2相等,则该行在行方向的形态学操作无需重复计算,依此类推。最后再沿着列方向进行形态学运算,得到第i+1行的形态学运算结果。第i+1行的膨胀结果为果为
[0165]
s48,将第二膨胀结果作为原始二值图像的二值形态学计算结果。
[0166]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。
[0167]
本技术提出的图像处理方法一实施例可以具体包括:
[0168]
请重新参阅图2,图2所示的结构元素矩阵半径为2.5,每一行的形态学核大小分别为d1=3、d2=5、d3=5、d4=5、d5=3,形态学核半径分别为r1=1、r2=2、r3=2、r4=2、r5=1。
[0169]
请参阅图8,图8是图像处理终端获取的原始二值图像一实施例示意图。
[0170]
如图8所示,图像处理终端获取的原始二值图中包含一前景目标,该目标的外包矩形大小为10x10。其中,灰色区域对应像素值为1的像素点,白色区域对应像素值为0的像素点。
[0171]
具体地,图像处理终端对图8的原始二值图像按照行方向进行行程编码,得到各行的行程分别为:
[0172][0173][0174][0175]
run4={(4,4,7),(4,13,13)),
[0176]
run5={(5,4,7),(5,10,12)),
[0177]
run6={(6,4,5),(6,10,12)),
[0178]
run7={(7,4,5),(7,10,12)),
[0179]
run8={(8,4,5),(8,9,10)},
[0180]
run9={(9,4,5),(9,9,10)),
[0181]
run
10
={(10,4,10)),
[0182]
run
11
={(11,4,13)},
[0183]
run
12
={(12,4,13)},
[0184]
run
13
={(13,7,13)},
[0185][0186][0187][0188]
根据结构元素尺寸可得,膨胀后的目标最小外包矩形大小为14
×
14,因此需要逐行计算膨胀后的行程ld2,
…
,ld
15
。ld2的计算过程为先分别对run0、run1、run2、run3、run4连续5行行程进行行方向膨胀,且行方向膨胀核大小分别为d1=3、d2=5、d3=5、d4=5、d5=3,然后对行方向膨胀后的结果进行并集运算,具体为:
[0189][0190]
由于run0、run1、run2、run3为空集,且:
[0191][0192]
最后调整行程编码中y坐标得到ld2={(2,3,8),(2,12,14)}。请参阅图9,图9为图8执行膨胀处理至第2行的结果示意图。其中,浅灰色区域为膨胀后新生成的数值为1的区域。
[0193]
依次类推,可得:
[0194][0195]
又有:
[0196][0197][0198]
即ld3={(3,2,15)}。
[0199]
请参阅图10,图10为图8执行膨胀处理至第3行的结果示意图。其中,浅灰色区域为膨胀后新生成的数值为1的区域。
[0200]
同理可得:
[0201][0202]
由于run2、run3为空集,因此:
[0203][0204]
又d3=d4,因此此时无需重新计算,直接使用计算ld3时对的计算结果,即:
[0205][0206][0207][0208]
最终得到ld4={(4,2,15)}。如图11所示,图11为图8执行膨胀处理至第4行的结果示意图。其中,浅灰色区域为膨胀后新生成的数值为1的区域。
[0209]
以此类推,逐行执行膨胀处理得到最终膨胀结果如图12所示。图12是图8执行膨胀处理的最终结果示意图。其中,浅灰色区域为膨胀后新生成的数值为1的区域。
[0210]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。
[0211]
本技术提供的图像处理方法另一实施例可以具体包括:
[0212]
s51,获取原始二值图像。
[0213]
s52,按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码。
[0214]
s53,基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果。
[0215]
s54,对于第i行的第二腐蚀结果,基于连续m行方向的第一腐蚀结果的交集得到。
[0216]
其中,m基于所述结构元素矩阵得到,i和m为正整数。
[0217]
具体地,图像处理终端对第一腐蚀结果进行列方向的腐蚀操作运算为计算连续m行方第一腐蚀结果的交集,得到第一腐蚀结果,其中m为结构元素矩阵的高度。
[0218]
示例性地,第i行的腐蚀结果为:
[0219][0220]
以图2对应的结构元素矩阵se作为例子,则第i行的腐蚀结果为:
[0221][0222]
s55,对于第i行的第二膨胀结果,基于连续m行方向的第一膨胀结果的并集得到。
[0223]
其中,m基于所述结构元素矩阵得到,i和m为正整数。
[0224]
具体地,图像处理终端对第一膨胀结果进行列方向的膨胀操作运算为计算连续m行第一膨胀结果的并集,得到第二膨胀结果,其中m为结构元素矩阵的高度。
[0225]
示例性地,第i行的膨胀结果为:
[0226][0227]
以图2对应的结构元素矩阵se作为例子,则第i行的膨胀结果为:
[0228][0229]
s56,将第二腐蚀结果和/或第二膨胀结果作为原始二值图像的二值形态学计算结
果。
[0230]
上述方案,基于二值图像的行程编码进行行方向腐蚀和/或膨胀处理,提升行方向上的腐蚀和/或膨胀处理效率,并基于行方向的第一腐蚀结果和/或第一膨胀结果进行列方向腐蚀处理和/或膨胀处理,无需单独重新进行列方向腐蚀处理和/或膨胀处理,提升列方向上的腐蚀和/或膨胀处理效率,进而提升对二值图像进行二值形态学计算的效率。进一步地,在对二值图像进行行方向的形态学操作后,在第一腐蚀结果和/或第一膨胀结果的基础上进行交集和/或并集运算,得到最终的形态学结果,提升了形态学计算的效率。
[0231]
请继续参见图13,图13是本技术提供的终端设备一实施例的结构示意图。本技术实施例的终端设备500包括处理器51、存储器52。
[0232]
该处理器51、存储器52与总线相连,该存储器52中存储有程序数据,处理器51用于执行程序数据以实现上述实施例所述的图像处理方法。
[0233]
在本技术实施例中,处理器51还可以称为cpu(central processing unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(dsp,digital signal process)、专用集成电路(asic,application specific integrated circuit)、现场可编程门阵列(fpga,field programmable gate array)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器51也可以是任何常规的处理器等。
[0234]
本技术还提供一种计算机存储介质,请继续参阅图14,图14是本技术提供的计算机存储介质一实施例的结构示意图,该计算机存储介质600中存储有程序数据61,该程序数据61在被处理器执行时,用以实现上述实施例的图像处理方法。
[0235]
本技术的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0236]
以上所述仅为本技术的实施方式,并非因此限制本技术的专利范围,方式利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
技术特征:
1.一种图像处理方法,其特征在于,所述方法包括:获取原始二值图像;按照行方向,对所述原始二值图像进行行程编码,得到所述原始二值图像对应的行程编码;基于所述行程编码,利用结构元素矩阵对所述原始二值图像进行行方向腐蚀和/或膨胀处理,得到所述原始二值图像对应的第一腐蚀结果和/或第一膨胀结果;基于所述第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,和/或基于所述第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果;将所述第二腐蚀结果和/或所述第二膨胀结果作为所述原始二值图像的二值形态学计算结果。2.根据权利要求1所述的方法,其特征在于,所述按照行方向,对所述原始二值图像进行行程编码,得到所述原始二值图像对应的行程编码,包括:根据所述原始二值图像的高度和处理器核心数量对所述原始二值图像进行分块,得到若干二值图像块;将所述若干二值图像块分配至对应的处理器核心,以使所述处理器核心按照行方向,对所述二值图像块进行行程编码,得到所述二值图像块对应的行程编码;对所述若干二值图像块对应的行程编码进行整合,得到所述原始二值图像对应的行程编码。3.根据权利要求2所述的方法,其特征在于,所述对所述二值图像块进行行程编码,得到所述二值图像块对应的行程编码,包括:逐行将二值图像块数据分批装载至寄存器,并在所述寄存器中判断当前存入的二值图像块的目标行数据是否为全为1数据;若否,获取所述目标行数据中的起始位置或终止位置,得到行程编码;若是,继续装载直至出现为0数据。4.根据权利要求1所述的方法,其特征在于,所述基于所述行程编码,利用结构元素矩阵对所述原始二值图像进行行方向腐蚀处理,得到所述原始二值图像对应的第一腐蚀结果,包括:获取目标行程编码中起始位置和终止位置;利用腐蚀半径和所述起始位置确定腐蚀起始位置,利用腐蚀半径和所述终止位置确定腐蚀终止位置,进而得到腐蚀行程编码;其中,所述腐蚀半径基于所述结构元素矩阵得到;利用所述腐蚀行程编码进行行方向腐蚀处理,得到所述原始二值图像对应的第一腐蚀结果。5.根据权利要求4所述的方法,其特征在于,所述利用所述腐蚀行程编码进行行方向腐蚀处理,得到所述原始二值图像对应的第一腐蚀结果之前,包括:若所述腐蚀起始位置大于所述腐蚀终止位置,移除所述腐蚀行程编码。6.根据权利要求1所述的方法,其特征在于,所述基于所述行程编码,利用结构元素矩阵对所述原始二值图像进行行方向膨胀处理,得到所述原始二值图像对应的第一膨胀结果,包括:获取所述行程编码中起始位置和终止位置;
利用膨胀半径和所述起始位置确定膨胀起始位置,利用膨胀半径和所述终止位置确定膨胀终止位置,进而得到膨胀行程编码;其中,所述膨胀半径基于所述结构元素矩阵得到;利用所述膨胀行程编码进行行方向膨胀处理,得到所述原始二值图像对应的第一膨胀结果。7.根据权利要求6所述的方法,其特征在于,所述利用所述膨胀行程编码进行行方向膨胀处理,得到所述原始二值图像对应的第一膨胀结果之前,包括:若所述膨胀行程编码与目标行程编码的前一行程编码发生重叠,将所述膨胀行程编码和所述前一行程编码进行合并。8.根据权利要求1所述的方法,其特征在于,所述基于所述第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,包括:对于第i行的第二腐蚀结果,基于连续m行方向的第一腐蚀结果的交集得到,其中,m基于所述结构元素矩阵得到,i和m为正整数。9.根据权利要求1所述的方法,其特征在于,所述基于所述第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果,包括:对于第i行的第二膨胀结果,基于连续m行方向的第一膨胀结果的并集得到,其中,m基于所述结构元素矩阵得到,i和m为正整数。10.一种终端设备,其特征在于,所述终端设备包括处理器、与所述处理器连接的存储器,其中,所述存储器存储有程序指令;所述处理器用于执行所述存储器存储的程序指令以实现如权利要求1至9任一项所述的方法。11.一种计算机可读存储介质,其特征在于,所述存储介质存储有程序指令,所述程序指令被执行时实现如权利要求1至9任一项所述的方法。
技术总结
本申请公开了一种图像处理方法、终端设备以及计算机存储介质,该图像处理方法包括:获取原始二值图像;按照行方向,对原始二值图像进行行程编码,得到原始二值图像对应的行程编码;基于行程编码,利用结构元素矩阵对原始二值图像进行行方向腐蚀和/或膨胀处理,得到原始二值图像对应的第一腐蚀结果和/或第一膨胀结果;基于第一腐蚀结果进行列方向腐蚀处理,得到第二腐蚀结果,和/或基于第一膨胀结果进行列方向膨胀处理,得到第二膨胀结果;将第二腐蚀结果和/或第二膨胀结果作为原始二值图像的二值形态学计算结果。本申请的图像处理方法对二值图像行方向执行形态学计算后无需单独重新进行列方向形态学计算,提升了计算效率。提升了计算效率。提升了计算效率。
技术研发人员:郎建业 黄虎 周璐 张博
受保护的技术使用者:浙江华睿科技股份有限公司
技术研发日:2023.04.06
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/