一种图像处理方法、装置、计算机设备及存储介质
文献发布时间:2023-06-19 11:26:00
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种图像处理方法、装置、计算机设备及存储介质。
背景技术
目前,卷积神经网络主要依赖乘加器阵列来进行卷积处理,乘加器阵列将数据矩阵中的待处理数据存储在对应的寄存器阵列中,待处理数据在不同数据处理周期在寄存器阵列中移动,但是当前的数据处理方法存在对乘加器阵列利用率低、计算资源浪费的问题。
发明内容
本公开实施例至少提供一种图像处理方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种图像处理方法,包括:
对多张待处理图像数据进行像素组合处理,得到目标图像;利用乘加器阵列对所述目标图像进行处理;基于所述多张待处理图像数据在所述乘加器阵列中分别对应的乘加器得到的处理结果,确定每张待处理图像数据的处理结果。
这样,基于将多张待处理图像数据组合成一张目标图像,得到的目标图像的尺寸大于多张待处理图像数据中的每张待处理图像数据的尺寸,利用乘加器阵列对目标图像进行处理的过程中实际上乘加器阵列同时处理了多张待处理图像数据,能利用到乘加器阵列中更多的乘加器,提高了乘加器阵列的利用率、减少计算资源的浪费、并提高了对待处理图像数据的处理效率。
在一种可能的实施方式中,所述目标图像的同一行中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零,以及所述目标图像的同一列中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零。
这样,基于目标图像中多张待处理图像数据的像素点的排布规则能保证乘加器阵列在对目标图像进行处理时,得到每张待处理图像数据对应的正确地处理结果,提高对待处理图像数据的处理效率。
在一种可能的实施方式中,还包括:基于所述乘加器阵列的尺寸信息、以及所述待处理图像数据的尺寸信息确定所述待处理图像数据的数量。
这样,基于乘加器阵列的尺寸信息、以及每张待处理图像数据的尺寸信息可以确定出乘加器阵列能同时处理的待处理图像数据的数量,提高乘加器阵列利用效率的同时保证了乘加器阵列对待处理图像数据的处理结果的准确性。
在一种可能的实施方式中,尺寸信息包括行数以及列数;所述基于所述乘加器阵列的尺寸信息、以及所述待处理图像数据的尺寸信息确定所述待处理图像数据的数量,包括:基于所述乘加器阵列的行数以及所述待处理图像数据的行数,确定第一取值,并基于所述乘加器阵列的列数以及所述待处理图像数据的列数,确定第二取值;基于所述第一取值和所述第二取值确定所述待处理图像数据的数量。
在一种可能的实施方式中,所述对多张待处理图像数据进行像素组合处理,得到目标图像,包括:依次将所述多张待处理图像数据中的每张待处理图像数据作为当前图像,确定所述当前图像的首个像素点在所述目标图像中的目标位置;基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述首个像素点外的其他像素点在所述目标图像中的目标位置,得到所述目标图像。
这样,将每张待处理图像数据的首个像素点在目标图像中的目标位置确定后,基于每张待处理图像数据的首个像素点在目标图像中的目标位置就可以确定出每张待处理图像数据中除首个像素点外的其他像素点在目标图像中的目标位置,提高了得到目标图像的效率。
在一种可能的实施方式中,所述基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述首个像素点外的其他像素点在所述目标图像中的目标位置,包括:基于当前图像首个像素点在所述目标图像中的目标位置、所述乘加器阵列的列数、以及所述当前图像的列数,确定所述当前图像每一行中除该行第一个像素点之外的每个像素点与该像素点的相邻前一像素点在所述目标图像中的第一位置关系;基于当前图像首个像素点在所述目标图像中的目标位置、所述乘加器阵列的行数、以及所述当前图像的行数,确定所述当前图像每一列中除该列第一个像素点之外的每个像素点与该像素点的相邻前一像素点在所述目标图像中的第二位置关系;基于所述第一位置关系和/或所述第二位置关系,确定所述当前图像中除首个像素点外的其他像素点在所述目标图像中的目标位置。
在一种可能的实施方式中,所述确定所述当前图像的首个像素点在所述目标图像中的目标位置,包括:基于所述乘加器阵列的行数列数、所述待处理图像数据的行数列数,确定目标像素矩阵;根据所述目标像素矩阵的矩阵元素值,确定各待处理图像数据首个像素点在所述目标图像中的目标位置;其中,所述当前图像的首个像素点在所述目标图像中的目标位置为确定的目标位置中的任一目标位置。
在一种可能的实施方式中,所述利用乘加器阵列对所述目标图像进行处理,包括:基于所述乘加器阵列与寄存器阵列之间的对应关系,将所述目标图像存储至所述寄存器阵列中;其中,存储至所述寄存器阵列中的所述目标图像各个像素点的相邻关系不变;在多个数据处理周期中的每个数据处理周期,利用所述乘加器阵列从所述寄存器阵列中读取与所述每个数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到所述每个处理周期对应的数据处理结果。
这样,乘加器阵列通过在不同的数据处理周期读取对应的像素信息保证了对每张待处理图像数据的处理结果的有效性。
在一种可能的实施方式中,所述在多个数据处理周期中的每个数据处理周期,利用所述乘加器阵列从所述寄存器阵列中读取与所述数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到所述每个处理周期对应的数据处理结果,包括:在对所述目标图像进行处理的首个数据处理周期,控制所述乘加器阵列中对应寄存器存储有所述目标图像像素信息的各乘加器,从与所述各乘加器连接的寄存器中,读取所述各乘加器在所述首个数据处理周期对应的像素点的像素值作为第一个操作数;并确定所述各乘加器在所述首个数据处理周期对应的权重值,作为第二个操作数;分别确定所述各乘加器在所述首个数据处理周期的第一个操作数和第二个操作数的乘积;针对对所述目标图像进行处理的每个非首个数据处理周期,控制所述目标图像的各像素按照与该数据处理周期对应的预设数据移动方式在所述寄存器阵列中移动预设步长;并控制所述各乘加器,从与所述各乘加器连接的寄存器中,读取所述各乘加器在该数据处理周期对应的像素点的像素值作为第一个操作数;并确定所述各乘加器在该数据处理周期对应的权重值,作为第二个操作数;分别确定所述各乘加器在该数据处理周期的第一操作数和第二操作数的乘积。
这样,基于预设步长、以及预设数据移动方式使得目标特征图的像素信息在寄存器阵列中随数据处理周期的变换作出有序的位移,确保乘加器阵列中对应的乘加器能获取到有效数据,保证对目标图像的处理结果的有效性。
在一种可能的实施方式中,所述基于所述多张待处理图像数据在所述乘加器阵列中分别对应的乘加器所得到的处理结果,确定每张待处理图像数据的处理结果,包括:针对所述各乘加器中的每个有效乘加器,将该有效乘加器在各个数据处理周期中得到的乘积相加得到和;从各有效乘加器中,确定所述每张待处理图像数据分别对应的有效乘加器;基于所述每张待处理图像数据对应的有效乘加器分别得到的和值,确定所述每张待处理图像数据的处理结果。
这样,基于每张待处理图像数据分别对应的有效乘加器分别得到的和值就可以得到每张待处理图像数据的处理结果,提高了对待处理图像数据的处理效率。
在一种可能的实施方式中,所述每张待处理图像数据对应的有效乘加器,包括:每一个数据处理周期所连接的寄存器都有该张待处理图像数据的有效像素值输入的乘加器。
在一种可能的实施方式中,所述图像处理方法还包括:基于所述目标图像中属于同一待处理图像数据的相邻两个像素点之间的距离,确定所述预设步长。
这样,能在目标图像包含不同数量的待处理图像数据时基于对预设步长的设定保证乘加器阵列对目标图像中包含的每张待处理图像数据处理结果的有效性,提高了乘加器阵列对目标图像进行处理的灵活性。
在一种可能的实施方式中,所述获取多张待处理图像数据,包括:获取多张原始图像;将所述多张原始图像中的第一原始图像作为所述待处理图像数据;和/或,对所述多张原始图像中的第二原始图像进行数据填充处理,得到与所述第二原始图像对应的待处理图像数据。
这样,基于对第二原始图像进行数据填充得到适用尺寸的待处理图像数据,更加灵活。
第二方面,本公开实施例还提供一种图像处理装置,包括:控制器;所述控制器用于:
获取多张待处理图像数据;对所述多张待处理图像数据进行融合处理,得到目标图像;利用乘加器阵列对所述目标图像进行处理,得到所述多张待处理图像数据中每张待处理图像数据的处理结果。
在一种可能的实施方式中,所述目标图像的同一行中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零,以及所述目标图像的同一列中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零。
在一种可能的实施方式中,所述控制器还用于:基于所述乘加器阵列的尺寸信息、以及所述待处理图像数据的尺寸信息确定所述待处理图像数据的数量。
在一种可能的实施方式中,尺寸信息包括行数以及列数;在基于所述乘加器阵列的尺寸信息、以及所述待处理图像数据的尺寸信息确定所述待处理图像数据的数量时,所述控制器,具体用于基于所述乘加器阵列的行数以及所述待处理图像数据的行数,确定第一取值,并基于所述乘加器阵列的列数以及所述待处理图像数据的列数,确定第二取值;基于所述第一取值和所述第二取值确定所述待处理图像数据的数量。
在一种可能的实施方式中,在对多张待处理图像数据进行像素组合处理,得到目标图像时,所述控制器,具体用于依次将所述多张待处理图像数据中的每张待处理图像数据作为当前图像,确定所述当前图像的首个像素点在所述目标图像中的目标位置;基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述首个像素点外的其他像素点在所述目标图像中的目标位置,得到所述目标图像。
在一种可能的实施方式中,在基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述首个像素点外的其他像素点在所述目标图像中的目标位置时,所述控制器,具体用于基于当前图像首个像素点在所述目标图像中的目标位置、所述乘加器阵列的列数、以及所述当前图像的列数,确定所述当前图像每一行中除该行第一个像素点之外的每个像素点与该像素点的相邻前一像素点在所述目标图像中的第一位置关系;基于当前图像首个像素点在所述目标图像中的目标位置、所述乘加器阵列的行数、以及所述当前图像的行数,确定所述当前图像每一列中除该列第一个像素点之外的每个像素点与该像素点的相邻前一像素点在所述目标图像中的第二位置关系;基于所述第一位置关系和/或所述第二位置关系,确定所述当前图像中除首个像素点外的其他像素点在所述目标图像中的目标位置。
在一种可能的实施方式中,在确定所述当前图像的首个像素点在所述目标图像中的目标位置时,所述控制器,具体用于基于所述乘加器阵列的行数列数、所述待处理图像数据的行数列数,确定目标像素矩阵;根据所述目标像素矩阵的矩阵元素值,确定各待处理图像数据首个像素点在所述目标图像中的目标位置;其中,所述当前图像的首个像素点在所述目标图像中的目标位置为确定的目标位置中的任一目标位置。
在一种可能的实施方式中,在利用乘加器阵列对所述目标图像进行处理时,所述控制器,具体用于基于所述乘加器阵列与寄存器阵列之间的对应关系,将所述目标图像存储至所述寄存器阵列中;其中,存储至所述寄存器阵列中的所述目标图像各个像素点的相邻关系不变;在多个数据处理周期中的每个数据处理周期,利用所述乘加器阵列从所述寄存器阵列中读取与所述每个数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到所述每个处理周期对应的数据处理结果。
在一种可能的实施方式中,在多个数据处理周期中的每个数据处理周期,利用所述乘加器阵列从所述寄存器阵列中读取与所述数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到所述每个处理周期对应的数据处理结果时,所述控制器,具体用于在对所述目标图像进行处理的首个数据处理周期,控制所述乘加器阵列中对应寄存器存储有所述目标图像像素信息的各乘加器,从与所述各乘加器连接的寄存器中,读取所述各乘加器在所述首个数据处理周期对应的像素点的像素值作为第一个操作数;并确定所述各乘加器在所述首个数据处理周期对应的权重值,作为第二个操作数;分别确定所述各乘加器在所述首个数据处理周期的第一个操作数和第二个操作数的乘积;针对对所述目标图像进行处理的每个非首个数据处理周期,控制所述目标图像的各像素按照与该数据处理周期对应的预设数据移动方式在所述寄存器阵列中移动预设步长;并控制所述各乘加器,从与所述各乘加器连接的寄存器中,读取所述各乘加器在该数据处理周期对应的像素点的像素值作为第一个操作数;并确定所述各乘加器在该数据处理周期对应的权重值,作为第二个操作数;分别确定所述各乘加器在该数据处理周期的第一操作数和第二操作数的乘积。
在一种可能的实施方式中,在基于所述多张待处理图像数据在所述乘加器阵列中分别对应的乘加器所得到的处理结果,确定每张待处理图像数据的处理结果时,所述控制器,具体用于针对所述各乘加器中的每个有效乘加器,将该有效乘加器在各个数据处理周期中得到的乘积相加得到和;从各有效乘加器中,确定所述每张待处理图像数据分别对应的有效乘加器;基于所述每张待处理图像数据对应的有效乘加器分别得到的和值,确定所述每张待处理图像数据的处理结果。
在一种可能的实施方式中,所述每张待处理图像数据对应的有效乘加器,包括:每一个数据处理周期所连接的寄存器都有该张待处理图像数据的有效像素值输入的乘加器。
在一种可能的实施方式中,所述控制器,还用于基于所述目标图像中属于同一待处理图像数据的相邻两个像素点之间的距离,确定所述预设步长。
在一种可能的实施方式中,在获取多张待处理图像数据时,所述控制器,具体用于获取多张原始图像;将所述多张原始图像中的第一原始图像作为所述待处理图像数据;和/或,对所述多张原始图像中的第二原始图像进行数据填充处理,得到与所述第二原始图像对应的待处理图像数据。
第三方面,本公开可选实现方式还提供一种计算机设备,控制器、存储器,所述存储器存储有所述控制器可执行的机器可读指令,所述控制器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述控制器执行时,所述机器可读指令被所述控制器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述图像处理装置、计算机设备、及计算机可读存储介质的效果描述参见上述图像处理方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种图像处理方法的流程图;
图2示出了本公开实施例所提供的待处理图像数据的示例图;
图3示出了本公开实施例所提供的一种乘加器阵列的示例图;
图4示出了本公开实施例所提供的一种目标图像的示例图;
图5示出了本公开实施例所提供的一种确定每张待处理图像数据中首个像素点在目标图像中的目标位置的矩阵示例图;
图6示出了本公开实施例所提供的一种目标图像的示例图;
图7示出了本公开实施例所提供的一种寄存器阵列的示例图;
图8示出了本公开实施例所提供的像素值移动预设步长后寄存器阵列的示例图;
图9示出了本公开实施例所提供的一种图像处理装置的示意图;
图10示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,卷积神经网络主要依赖乘加器阵列来进行卷积处理。在进行卷积处理时,待处理数据会被存储至与乘加器阵列连接的寄存器阵列中;存储在寄存器阵列中的待处理数据会在不同的数据处理周期在寄存器阵列中移动;乘加器阵列每个数据处理周期,从与乘加器连接的寄存器(属于寄存器阵列)中读取该数据处理周期的操作数,并执行乘法、和/或加法运算。在经过多个数据处理周期的处理后,乘加器阵列中的有效乘加器输出对待处理数据进行卷积处理后的部分结果。将多个有效乘加器输出的结果结合,即得到对待处理数据进行卷积处理的最终结果。乘加器阵列的尺寸通常都是固定的。在待处理数据所对应的数据矩阵的尺寸小于乘加器阵列的尺寸时,乘加器阵列对数据矩阵进行卷积计算时只需要利用到乘加器阵列中的部分乘加器,也即,乘加器阵列中的乘加器只有部分为有效乘加器,因此当前的数据处理方法存在对乘加器阵列利用率低、计算资源浪费的问题。
基于上述研究,本公开提供了一种图像处理方法、装置、计算机设备及存储介质,通过将多张待处理图像数据进行像素组合得到一张目标图像,利用乘加器阵列对目标图像进行处理,使得在待处理图像数据的尺寸小于乘加器阵列的尺寸时,能用同一个乘加器阵列同时处理多张待处理图像数据,基于多张待处理图像数据在乘加器阵列中分别对应的乘加器得到的处理结果,就可以确定每张待处理图像数据的处理结果,从而提高了乘加器阵列的利用率,减少计算资源的浪费,且提高了对数据处理的效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种图像处理方法进行详细介绍,本公开实施例所提供的图像处理方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该图像处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面对本公开实施例提供的图像处理方法加以说明。
参见图1所示,为本公开实施例提供的图像处理方法的流程图,所述方法包括步骤S101~S103,其中:
S101:对多张待处理图像数据进行像素组合处理,得到目标图像;
S102:利用乘加器阵列对目标图像进行处理;
S103:基于多张待处理图像数据在乘加器阵列中分别对应的乘加器得到的处理结果,确定每张待处理图像数据的处理结果。
本公开通过对多张待处理图像数据进行像素组合得到目标图像,利用乘加器阵列处理目标图像,使得在待处理图像数据的尺寸小于乘加器阵列的尺寸时,乘加器阵列能通过对由多张待处理特图组合成的目标图像进行处理,进而实现同时处理多张待处理图像数据;基于该多张待处理图像数据在乘加器阵列中分别对应的乘加器得到的处理结果,确定每张待处理图像数据的处理结果;提高了乘加器阵列的利用率、减少了计算资源的浪费,并且提高了对待处理图像数据的处理效率。
下面对上述S101~S103加以详细说明。
针对上述S101,待处理图像数据例如包括下述至少一种:
要处理的原始图像;
要处理的原始图像中任一颜色通道对应的子图;
对原始图像进行特征提取后得到的特征图;
对原始图像进行特征提取后得到的特征图中至少一个通道对应的特征子图;
对原始图像中的至少一个颜色通道对应的子图进行数据填充处理后得到的;
对特征图至少一个通道对应的特征子图进行数据填充处理后得到的。
示例性的,在对第二原始图像进行数据填充处理后得到待处理图像数据的情况下,如果原始图像中的第二原始图像的尺寸信息为7行7列,想要的待处理图像数据的尺寸大小为7行8列,则对第二原始特征图进行补0处理,得到一张7行8列的图像,该图像的第8列的像素值都为0,将该图像作为待处理图像数据。
在对多张待处理图像数据进行像素组合处理之前,首先可以确定要进行像素组合处理的待处理图像数据的数量。
例如可以利用下述方式确定待处理图像数据的数量:基于乘加器阵列的尺寸信息、以及待处理图像数据的尺寸信息确定待处理图像数据的数量。
此处,待处理图像数据的尺寸信息包括每张待处理图像数据包含的像素点的行数、以及列数;多张待处理图像数据的尺寸信息一致,即每张待处理图像数据包含的像素点的行数、以及列数相同;示例性的,如图2所示为本公开提供的一种待处理图像数据的示例图,包含四张尺寸信息一致,为7行7列的待处理图像数据。乘加器阵列的尺寸信息包括乘加器阵列中包含的乘加器的行数、以及列数;示例性的,如图3所示为本开提供的一种乘加器阵列的示例图,该乘加器阵列包含14行14列乘加器。
具体实施时,例如可以基于下述方法确定待处理图像数据的数量:
基于乘加器阵列的行数以及待处理图像数据的行数,确定第一取值,并基于乘加器阵列的列数以及所述待处理图像数据的列数,确定第二取值;基于第一取值和第二取值确定待处理图像数据的数量。
示例性的,乘加器阵列的列数A
在确定了待处理图像数据的数量后,即可以获取待处理图像数据。
在获取了待处理图像数据后,将获取的该数量的待处理图像数据进行像素组合处理,得到目标图像。
本公开实施例提供了一种将多张待处理图像数据进行像素组合处理的具体方法,包括:
依次将所述多张待处理图像数据中的每张待处理图像数据作为当前图像,确定所述当前图像的首个像素点在所述目标图像中的目标位置;
基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述除首个像素点外的其他像素点在所述目标图像中的目标位置,得到所述目标图像。
在具体实施中,针对任一张当前图像,位于第一行第一列的像素点,即为当前图像中的首个像素点。如图2所示的示例中,首个像素点如图2中的a、b、c以及d所示,分别为4张待处理图像数据中的首个像素点。
首先将其中任一待处理图像数据作为当前图像,确定该当前图像的首个像素点在目标图像中的目标位置。
具体实施时,例如可以基于下述方法确定当前特征图的首个像素点在目标图像中的目标位置:
基于乘加器阵列的行数列数、待处理图像数据的行数列数,确定目标像素矩阵;根据目标像素矩阵的矩阵元素值,确定各待处理图像数据首个像素点在目标图像中的目标位置;其中,当前图像的首个像素点在目标图像中的目标位置为确定的目标位置中的任一目标位置。
示例性的,乘加器阵列的列数A
示例性的,还可以按照图5所示的矩阵目标位置对应的公式来确定每张待处理图像数据的首个像素点在目标图像中的目标位置,也就是说,图5中所示矩阵的每个矩阵元素分别表征一个待处理图像的首个像素点在目标图像中的目标位置。其中,A
需要说明的是,其他三张待处理图像数据中的首个像素点所在的目标位置只需要保证和首张待处理图像数据的首个像素点的目标位置构成一个两行两列的目标像素矩阵即可,无需严格按照图4所示的样式排布,例如,目标像素矩阵中的待处理图像数据一的像素点的旁边可以是待处理图像数据三的像素点,待处理图像数据三的像素点下边是待处理图像数据二的像素点,待处理图像数据一的像素点下边是待处理图像数据四的像素点;其他的排布方式与上述类似,此处不再重复举例。
在确定了每张待处理图像数据的首个像素点在目标图像中的目标位置后,例如可以基于下述步骤一~步骤三所述的方法确定同一张待处理图像数据中除了首个像素点外的其他像素点在目标图像中的位置:
步骤一:基于当前图像首个像素点在目标图像中的目标位置、乘加器阵列的列数、以及当前图像的列数,确定当前图像每一行中除该行第一个像素点之外的每个像素点与该像素点的相邻前一像素点在目标图像中的第一位置关系;
其中,当前图像每一行中除该行第一个像素点之外的每个像素点与该像素点的相邻前一像素点在目标图像中的第一位置关系例如为:
示例性的,乘加器阵列的列数A
步骤二:基于当前图像首个像素点在目标图像中的目标位置、乘加器阵列的行数、以及当前图像的行数,确定当前图像每一列中除该列第一个像素点之外的每个像素点与该像素点的相邻前一像素点在目标图像中的第二位置关系;
其中,确定当前图像每一列中除该列第一个像素点之外的每个像素点与该像素点的相邻前一像素点在目标图像中的第二位置关系例如为:
示例性的,乘加器阵列的列数A
步骤三:基于第一位置关系和/或第二位置关系,确定当前图像中除首个像素点外的其他像素点在目标图像中的目标位置。
示例性的,如图6所示,乘加器阵列的列数A
示例性的,如图4所示,本公开实施例提供一种将四张特征图进行像素融合,得到的目标特征图的具体示例。该实例中,目标图像由图2所示的四张待处理图像数据组成,目标图像的同一行中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零,以及目标图像的同一列中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零。
针对上述S102,利用乘加器阵列对目标图像进行处理时,基于乘加器阵列与寄存器阵列之间的对应关系,将目标图像存储至寄存器阵列中;其中,存储至寄存器阵列中的目标图像各个像素点的相邻关系不变;在多个数据处理周期中的每个数据处理周期,利用乘加器阵列从寄存器阵列中读取与每个数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到每个处理周期对应的数据处理结果。
例如,在对目标图像进行处理的首个数据处理周期,控制乘加器阵列中对应寄存器存储有目标图像像素信息的各乘加器,从与各乘加器连接的寄存器中,读取各乘加器在首个数据处理周期对应的像素点的像素值作为第一个操作数;并确定各乘加器在首个数据处理周期对应的权重值,作为第二个操作数;确定各乘加器在所述首个数据处理周期的第一个操作数和第二个操作数的乘积;
示例性的,如图2所示的待处理图像数据一的对应像素点的像素值为A0~A48;待处理图像数据二对应像素点的像素值为B0~B48;待处理图像数据三对应像素点的像素值为C0~C48;待处理图像数据四对应像素点的像素值为D0~D48;其在目标图像对应的寄存器阵列中的摆放如图7所示,在第一个数据处理周期,如图3所示的乘加器阵列中的PE0读取像素值A0,PE1读取像素值B0,PE2读取像素值A1……以此类推,乘加器阵列中的乘加器PE3~PE195读取对应的寄存器中的像素点的像素值。
针对对目标图像进行处理的每个非首个数据处理周期,控制目标图像的各像素按照与该数据处理周期对应的预设数据移动方式在寄存器阵列中移动预设步长;并控制各乘加器,从与各乘加器连接的寄存器中,读取各乘加器在该数据处理周期对应的像素点的像素值作为第一个操作数;并确定各乘加器在该数据处理周期对应的权重值,作为第二个操作数;确定各乘加器在该数据处理周期的第一操作数和第二操作数的乘积。
其中,基于目标图像中属于同一待处理图像数据的相邻两个像素点之间的距离,确定预设步长;例如,如图7所示的寄存器阵列对应的目标图像中,属于同一张待处理图像数据的相邻两个像素点之间的距离为2,则预设步长就为2。
示例性的,如图8所示的寄存器阵列中的像素值为图7所示的寄存器阵列中的像素值整体向左移动两个步长后的结果,目标寄存器阵列为图7中所示的寄存器阵列,图3所示的乘加器阵列从如图8所示的目标寄存器阵列中对应的位置读取对应的像素值。
另外,各个周期对应的权重值为待处理图像数据对应的卷积核中在各个数据处理周期对应的数据;以其中一张待处理图像数据为例,其卷积核例如为
可见在每个数据处理周期,存储有不同待处理图像像素值的PE都完成了对应数据处理周期的计算,也就是说不同待处理图像在每个数据处理周期中并行完成了对应数据处理周期中的计算,在所有数据处理周期之后,不同待处理图像同时完成了最终的计算,节省了系统资源。
此处,针对不同的待处理图像数据,对应的卷积核可以不同,也可以相同。例如,若两张待处理图像数据分别为同一特征图的不同特征子图,则两张待处理图像数据对应的卷积核不同。若两张待处理图像数据为同一个特征子图的不同位置的图像数据,则两张待处理图像对应的卷积核相同。
针对上述S103,在确定各乘加器在所有的数据处理周期的第一操作数和第二操作数的乘积之后,针对各乘加器中的每个有效乘加器,将该有效乘加器在各个数据处理周期中得到的乘积相加得到和;从各有效乘加器中,确定每张待处理图像数据分别对应的有效乘加器;基于每张待处理图像数据对应的有效乘加器分别得到的和值,确定每张待处理图像数据的处理结果。
其中,每张待处理图像数据对应的有效乘加器包括:每一个数据处理周期所连接的寄存器都有该张待处理图像数据的有效像素值输入的乘加器;例如图7所示的寄存器阵列对应的如图3所示的乘加器阵列中的乘加器PE0~PE195都为有效乘加器。
示例性的,如图3所示的乘加器阵列在对如图7所示的寄存器阵列中的像素值进行处理,在经过所有的数据处理周期的计算之后,每个乘加器将各自在所有数据处理周期计算的计算结果相加求和,例如乘加器PE0进行了四个数据处理周期的计算,计算结果分别为A、B、C、D,则PE0进行如下计算:A+B+C+D。
这里,若进行卷积的特征图包括16个通道,每次处理4个通道分别对应的特征子图,也即需要将16个通道分别对应的特征子图划分为4组,每次进行一组特征子图的处理。若4组特征子图分别为:组a、组b、组c和组d的时候,在对组a中包括的4张特征子图执行了处理后,先将乘加器输出的组a对应的4个结果进行累加;在对组b中包括的4张特征子图执行了处理后,再将组b对应的4个结果进行累加,并将组a对应的累加结果和组b对应的累加结果进行累加;在对组c中包括的4张特征子图执行了处理后,再将组c对应的4个结果进行累加,并将组a、组b的累加结果、和组c对应的累加结果进行累加;在对组d中包括的4张特征子图执行了处理后,再将组d对应的4个结果进行累加,并将组a、组b、组c的累加结果、和组d对应的累加结果进行累加,最终,得到16个通道分别对应的卷积结果的累加和。
在对组a中包括的4张特征子图执行了处理后,得到的组a对应的4个输出结果分别为:a1、a2、a3和a4。在对组b中包括的4张特征子图执行了处理后,得到的组b对应的4个输出结果分别为:b1、b2、b3和b4。此时,执行a1+b1=O1,a2+b2=O2,a3+b3=O3,a4+b4=O4。在对组c中包括的4张特征子图执行了处理后,得到的组c对应的4个输出结果分别为:c1、c2、c3和c4,再执行:O1+c1,O2+c2,O3+c3,O4+c4;以此类推,最终得到a1+b1+c1+d1,a2+b2+c2+d2,a3+b3+c3+d3,a4+b4+c4+d4,然后再将四个结果累加到一起,得到16个通道分别对应的卷积结果的累加和。
图7中相同颜色的寄存器对应的图3中的乘加器中的结果即为图2中该颜色的待处理图像数据的处理结果,例如,乘加器PE0、乘加器PE2、乘加器PE4、乘加器PE6、乘加器PE8、乘加器PE10、乘加器乘加器PE12、乘加器PE28、乘加器PE30、乘加器PE32、乘加器PE34、乘加器PE36、乘加器PE38、乘加器PE40、乘加器PE56、乘加器PE58、乘加器PE60、乘加器PE62、乘加器PE64、乘加器PE66、乘加器PE68、乘加器PE84、乘加器PE86、乘加器PE88、乘加器PE90、乘加器PE92、乘加器PE94、乘加器PE96、乘加器PE112、乘加器PE114、乘加器PE116、乘加器EP118、乘加器PE120、乘加器PE122、乘加器PE124、乘加器PE140、乘加器PE142、乘加器PE144、乘加器PE146、乘加器PE148、乘加器PE150、乘加器PE152、乘加器PE168、乘加器PE170、乘加器PE172、乘加器PE174、乘加器PE176、乘加器PE178、乘加器PE180的计算结果为待处理图像数据一的处理结果。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与图像处理方法对应的图像处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述图像处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图9所示,为本公开实施例提供的一种图像处理装置的示意图,所述装置包括:控制器901;控制器901用于:
获取多张待处理图像数据;
对所述多张待处理图像数据进行融合处理,得到目标图像;
利用乘加器阵列对所述目标图像进行处理,得到所述多张待处理图像数据中每张待处理图像数据的处理结果。
在一种可能的实施方式中,所述目标图像的同一行中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零,以及所述目标图像的同一列中,同一待处理图像数据相邻两像素间隔像素数量相同且不为零。
在一种可能的实施方式中,所述控制器901还用于:基于所述乘加器阵列的尺寸信息、以及所述待处理图像数据的尺寸信息确定所述待处理图像数据的数量。
在一种可能的实施方式中,尺寸信息包括行数以及列数;在基于所述乘加器阵列的尺寸信息、以及所述待处理图像数据的尺寸信息确定所述待处理图像数据的数量时,所述控制器901,具体用于基于所述乘加器阵列的行数以及所述待处理图像数据的行数,确定第一取值,并基于所述乘加器阵列的列数以及所述待处理图像数据的列数,确定第二取值;基于所述第一取值和所述第二取值确定所述待处理图像数据的数量。
在一种可能的实施方式中,在对多张待处理图像数据进行像素组合处理,得到目标图像时,所述控制器901,具体用于依次将所述多张待处理图像数据中的每张待处理图像数据作为当前图像,确定所述当前图像的首个像素点在所述目标图像中的目标位置;基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述首个像素点外的其他像素点在所述目标图像中的目标位置,得到所述目标图像。
在一种可能的实施方式中,在基于所述首个像素点在所述目标图像中的目标位置,确定所述当前图像中除所述首个像素点外的其他像素点在所述目标图像中的目标位置时,所述控制器901,具体用于基于当前图像首个像素点在所述目标图像中的目标位置、所述乘加器阵列的列数、以及所述当前图像的列数,确定所述当前图像每一行中除该行第一个像素点之外的每个像素点与该像素点的相邻前一像素点在所述目标图像中的第一位置关系;基于当前图像首个像素点在所述目标图像中的目标位置、所述乘加器阵列的行数、以及所述当前图像的行数,确定所述当前图像每一列中除该列第一个像素点之外的每个像素点与该像素点的相邻前一像素点在所述目标图像中的第二位置关系;基于所述第一位置关系和/或所述第二位置关系,确定所述当前图像中除首个像素点外的其他像素点在所述目标图像中的目标位置。
在一种可能的实施方式中,在确定所述当前图像的首个像素点在所述目标图像中的目标位置时,所述控制器901,具体用于基于所述乘加器阵列的行数列数、所述待处理图像数据的行数列数,确定目标像素矩阵;根据所述目标像素矩阵的矩阵元素值,确定各待处理图像数据首个像素点在所述目标图像中的目标位置;其中,所述当前图像的首个像素点在所述目标图像中的目标位置为确定的目标位置中的任一目标位置。
在一种可能的实施方式中,在利用乘加器阵列对所述目标图像进行处理时,所述控制器901,具体用于基于所述乘加器阵列与寄存器阵列之间的对应关系,将所述目标图像存储至所述寄存器阵列中;其中,存储至所述寄存器阵列中的所述目标图像各个像素点的相邻关系不变;在多个数据处理周期中的每个数据处理周期,利用所述乘加器阵列从所述寄存器阵列中读取与所述每个数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到所述每个处理周期对应的数据处理结果。
在一种可能的实施方式中,在多个数据处理周期中的每个数据处理周期,利用所述乘加器阵列从所述寄存器阵列中读取与所述数据处理周期对应的像素信息,并对读取的像素信息进行处理,得到所述每个处理周期对应的数据处理结果时,所述控制器901,具体用于在对所述目标图像进行处理的首个数据处理周期,控制所述乘加器阵列中对应寄存器存储有所述目标图像像素信息的各乘加器,从与所述各乘加器连接的寄存器中,读取所述各乘加器在所述首个数据处理周期对应的像素点的像素值作为第一个操作数;并确定所述各乘加器在所述首个数据处理周期对应的权重值,作为第二个操作数;分别确定所述各乘加器在所述首个数据处理周期的第一个操作数和第二个操作数的乘积;针对对所述目标图像进行处理的每个非首个数据处理周期,控制所述目标图像的各像素按照与该数据处理周期对应的预设数据移动方式在所述寄存器阵列中移动预设步长;并控制所述各乘加器,从与所述各乘加器连接的寄存器中,读取所述各乘加器在该数据处理周期对应的像素点的像素值作为第一个操作数;并确定所述各乘加器在该数据处理周期对应的权重值,作为第二个操作数;分别确定所述各乘加器在该数据处理周期的第一操作数和第二操作数的乘积。
在一种可能的实施方式中,在基于所述多张待处理图像数据在所述乘加器阵列中分别对应的乘加器所得到的处理结果,确定每张待处理图像数据的处理结果时,所述控制器901,具体用于针对所述各乘加器中的每个有效乘加器,将该有效乘加器在各个数据处理周期中得到的乘积相加得到和;从各有效乘加器中,确定所述每张待处理图像数据分别对应的有效乘加器;基于所述每张待处理图像数据对应的有效乘加器分别得到的和值,确定所述每张待处理图像数据的处理结果。
在一种可能的实施方式中,所述每张待处理图像数据对应的有效乘加器,包括:每一个数据处理周期所连接的寄存器都有该张待处理图像数据的有效像素值输入的乘加器。
在一种可能的实施方式中,所述控制器901,还用于基于所述目标图像中属于同一待处理图像数据的相邻两个像素点之间的距离,确定所述预设步长。
在一种可能的实施方式中,在获取多张待处理图像数据时,所述控制器901,具体用于获取多张原始图像;将所述多张原始图像中的第一原始图像作为所述待处理图像数据;和/或,对所述多张原始图像中的第二原始图像进行数据填充处理,得到与所述第二原始图像对应的待处理图像数据。
本公开实施例提供的图像处理装置可以包括芯片、AI芯片等。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种计算机设备,如图10所示,为本公开实施例提供的计算机设备结构示意图,包括:
控制器101和存储器102;所述存储器102存储有控制器101可执行的机器可读指令,控制器101用于执行存储器102中存储的机器可读指令,所述机器可读指令被控制器101执行时,控制器101执行下述步骤:
对所述多张待处理图像数据进行像素组合处理,得到目标图像;
利用乘加器阵列对所述目标图像进行处理;
基于所述多张待处理图像数据在所述乘加器阵列中分别对应的乘加器得到的处理结果,确定每张待处理图像数据的处理结果。
上述存储器102包括内存1021和外部存储器1022;这里的内存1021也称内存储器,用于暂时存放控制器101中的运算数据,以及与硬盘等外部存储器1022交换的数据,控制器101通过内存1021与外部存储器1022进行数据交换。
本公开实施例提供的计算机设备可以包括手机等智能终端,或者也可以是具有摄像头并可以进行图像处理的其他设备、服务器等,这里并不限制。
上述指令的具体执行过程可以参考本公开实施例中所述的图像处理方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的图像处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的图像处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
- 一种图像处理方法、装置、计算机设备和计算机存储介质
- 一种图像处理方法、装置、计算机设备和计算机存储介质