本发明涉及图像处理技术领域,尤其涉及一种图像处理方法及装置。
背景技术:
由于图像梯度处理对图像边缘的敏感程度高于对光照、亮度等变化的敏感程度,且梯度信息能够直观反映图像的变化幅度,因此通常通过图像梯度处理获取图像的图像边缘。传统的图像处理方法中,将用于进行梯度运算的输入变量缓存到随机存取存储器(Random Access Memory,RAM)中,然后在进行图像处理时,从RAM中读取该输入变量进行卷积运算时所需的矩阵系数,基于该矩阵系数进行梯度运算,控制复杂,不利于实现流水计算。
技术实现要素:
本发明实施例提供了一种图像处理方法及装置,操作便捷,可有效实现流水计算。
第一方面,本发明实施例提供了一种图像处理方法,所述方法应用于电子设备,所述电子设备包括级联寄存器和先入先出队列FIFO,所述级联寄存器与所述FIFO级联以存储像素点信息,所述方法包括:
从所述FIFO中读取一个像素点信息;
将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果;
对所述卷积结果进行计算,得到所述像素点信息所包含像素点的参数,所述参数包括振幅和/或角度。
第二方面,本发明实施例提供了一种图像处理装置,该装置包括用于执行上述第一方面的方法的单元。
第三方面,本发明实施例提供了一种电子设备,该电子设备包括:级联寄存器、先入先出队列FIFO和处理器,所述级联寄存器与所述FIFO级联以存储像素点信息。该电子设备具有实现第一方面所述的图像处理方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元或模块。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时使处理器执行上述第一方面的方法。
本发明实施例中级联寄存器与FIFO级联以存储像素点信息,从FIFO中读取一个像素点信息,就可以将该像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,进而对卷积结果进行计算,得到像素点信息所包含像素点的参数,进而可以再次从FIFO中读取一个像素点信息,将该像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,进而对卷积结果进行计算,得到像素点信息所包含像素点的参数,操作便捷,可有效实现流水计算。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种电子设备的结构示意图;
图2是本发明实施例公开的一种图像处理方法的流程示意图;
图3是本发明实施例公开的一种对像素点进行边缘复制的示意图;
图4是本发明实施例公开的一种图像处理过程中数据流的示意图;
图5是本发明实施例公开的一种图像处理装置的结构示意图;
图6是本发明另一实施例公开的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例公开的一种电子设备的结构示意图。如图1所示,该电子设备包括至少一个级联寄存器、至少一个FIFO以及系数寄存器。其中级联寄存器与FIFO级联以存储像素点信息。系数寄存器用于存储矩阵系数,矩阵系数可以包括基于X方向的矩阵系数和基于Y方向的矩阵系数,可选的,系数寄存器可以包括第一系数寄存器及第二系数寄存器,第一系数寄存器用于存储基于X方向的矩阵系数,第二系数寄存器用于存储基于Y方向的矩阵系数。可选的,电子设备还可以包括至少一个备份寄存器,备份寄存器用于缓存位于当前需要处理的图像中第一列或者最后一列的像素点的像素点信息。该电子设备中各个组成部分的通信关系为:级联寄存器与FIFO建立通信,FIFO与备份寄存器建立通信。
级联寄存器以及FIFO用于缓存像素点信息。像素点信息可以包括位于当前需要处理的图像中至少一个像素点的像素点信息。
其中,像素点信息可以包括像素点的位置、颜色或者亮度等信息。
传统的图像处理方法中,将用于进行梯度运算的输入变量缓存到RAM中,然后在进行图像处理时,从RAM中读取该输入变量进行卷积运算时所需的矩阵系数,基于该矩阵系数进行梯度运算,控制复杂,不利于实现流水计算。
而本发明实施例中,从FIFO中读取预先缓存的一个像素点信息,将该像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,对卷积结果进行计算,得到该像素点信息所包含像素点的参数,参数包括振幅和/或角度,进而可以再次从FIFO中读取一个像素点信息,将该像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,进而对卷积结果进行计算,得到像素点信息所包含像素点的参数,操作便捷,可有效实现流水计算。
请参见图2,图2是本发明实施例提供的一种图像处理方法的流程示意图。具体的,如图2所示,本发明实施例的图像处理方法可以包括以下步骤:
步骤S201、从FIFO中读取一个像素点信息。
具体的,FIFO可以预先缓存多个像素点信息,其中一个像素点信息可以包括至少一个像素点的像素点信息,则电子设备可以从FIFO中读取一个像素点信息。以图1为例,电子设备将当前需要处理的图像的像素点的像素点信息发送至级联寄存器,级联寄存器将该像素点信息发送至FIFO,其中一个FIFO可以存储(行*宽-3)个像素点的像素点信息,9个级联寄存器与2个FIFO级联可以存储(2行+3)个像素点的像素点信息。需要说明的是,电子设备需要进行预取操作,在FIFO中读出数据后,直接送入级联寄存器中,以保证流水计算时可以连续送出所需的矩阵系数。
可选的,电子设备可支持边缘复制,边缘复制的具体方式可以为:当检测到位于图像中的第一列或者最后一列的像素点存储到FIFO中时,电子设备可以将位于图像中的第一列或者最后一列的像素点存储到备份寄存器中,将FIFO以及备份寄存器中位于图像中的第一列或者最后一列的像素点发送至级联寄存器,将级联寄存器中像素点的像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,进而对卷积结果进行计算,得到位于图像中的第一列或者最后一列的像素点的参数。
以图1为例,当第一列像素点或者最后一列像素点通过第一行级联寄存器存储到第一个FIFO中时,电子设备可以同时将第一列像素点或者最后一列像素点存储到第一个备份寄存器中。电子设备将第一个FIFO以及第一个备份寄存器中的像素点发送至第二行级联寄存器,将第二行级联寄存器中的像素点信息存储到第二个FIFO中,并将第一列像素点或者最后一列像素点存储到第二个备份寄存器中。电子设备将第二个FIFO以及第二个备份寄存器中的像素点发送至第三行级联寄存器,则通过第三行级联寄存器输出的像素点信息可以包括(2行+3)个像素点的像素点信息。电子设备将第三行级联寄存器输出的像素点信息与第一系数寄存器中存储的基于X方向的矩阵系数进行卷积运算,得到基于X方向的卷积结果。电子设备还可以将第三行级联寄存器输出的像素点信息与第二系数寄存器中存储的基于Y方向的矩阵系数进行卷积运算,得到基于Y方向的卷积结果。电子设备还可以对基于X方向的卷积结果和基于Y方向的卷积结果进行计算,得到像素点信息所包含像素点的参数。
边缘复制第一行像素点的方式是,当输入(2行+3)个数据时,会冻结上级模块,同时启动卷积运算,卷积运算所需的矩阵系数从级联寄存器中选取,同时级联寄存器的值要重新流入FIFO,即完成第一行卷积运算后,级联寄存器和FIFO中的数据与启动运算时保持一致,此时解冻上级模块,当流入新数据时,可以开始新一行的卷积运算。
边缘复制最后一行的方法是,卷积运算所需的矩阵系数从级联寄存器中选取,同时级联寄存器的值要重新流入FIFO。
经过边缘复制得到的更新后的图像可以如图3所示,电子设备对当前需要处理的图像的边界的多个像素点进行复制,得到映像像素点,其中各个映射像素点所属的列数与对应的像素点所属的列数相同,各个映射像素点所属的行数与对应的像素点所属的行数相邻,或者各个映射像素点所属的行数与对应的像素点所属的行数相同,各个映射像素点所属的列数与对应的像素点所属的列数相邻。
可选的,若像素点所属的行数为图像的第一行,则映射像素点所属的列数与对应的像素点所属的列数相同,映射像素点对应的像素点所属的行数为更新后的图像的第二行。
以图3为例,当前需要处理的图像所包含的像素点位于矩形框内,该图像所包含的像素点的排列方式为9行*10列。位于该图像的边界的像素点可以为位于该图像的第一行像素点、最后一行像素点、第一列像素点以及最后一列像素点。电子设备可以复制第一行像素点,得到第一行映射像素点,第一行映射像素点所包含的各个映射像素点所属列数与对应的像素点所属列数相同,该图像所包含的原像素点的行数依次加1,得到更新后的图像,即更新前的图像所包含的第n行像素点位于更新后的图像的第n+1行,n为正整数,1≤n≤9。
可选的,若像素点所属的行数为图像的最后一行,则映射像素点所属的列数与对应的像素点所属的列数相同,映射像素点对应的像素点所属的行数为更新后的图像的最后一行。
以图3为例,电子设备还可以对更新前的图像所包含的最后一行像素点进行复制,得到最后一行映射像素点,该图像所包含的原像素点的行数保持不变,最后一行映射像素点位于更新后的图像的最后一行,最后一行映射像素点所包含的各个映射像素点所属列数与对应的像素点所属列数相同。由此可知,更新后的图像包括11行像素点。
可选的,若像素点所属的行数为图像的第一列,则电子设备在图像的第一列插入映射像素点,得到更新后的图像,映射像素点所属的行数与对应的像素点所属的行数相同,映射像素点对应的像素点所属的列数为更新后的图像的第二列。
以图3为例,电子设备内插第一行映射像素点和最后一行映射像素点之后,可以复制更新后的图像中的第一列像素点,得到第一列映射像素点,第一列映射像素点所包含的各个映射像素点所属行数与对应的像素点所属行数相同,该图像所包含的原像素点的列数依次加1,得到更新后的图像,即更新前的图像所包含的第m列像素点位于更新后的图像的第m+1列,m为正整数,1≤m≤10。
可选的,若像素点所属的行数为图像的最后一列,则电子设备在图像的最后一列插入映射像素点,得到更新后的图像,映射像素点所属的行数与对应的像素点所属的行数相同,映射像素点对应的像素点所属的列数为更新后的图像的最后一列。
以图3为例,电子设备内插第一行映射像素点和最后一行映射像素点之后,还可以对更新后的图像所包含的最后一列像素点进行复制,得到最后一列映射像素点,该图像所包含的原像素点的列数保持不变,最后一列映射像素点位于更新后的图像的最后一列,最后一列映射像素点所包含的各个映射像素点所属行数与对应的像素点所属行数相同。
以图3为例,当前需要处理的图像包括9*10个像素点,电子设备进行边缘复制得到的更新后的图像包括11*12个像素点。电子设备可以以3*3的框,stride=1的步长,从左侧开始做水平方向的滑动,水平方向的滑动都完成后,再在垂直方向滑动一个stride=1的步长后,再重新从左侧开始做水平方向的滑动。每进行一次滑动,电子设备可以得到一个像素点集合,该像素点集合包括3*3个像素点,即图3所述的方框内的像素点(3*3矩阵)。则电子设备需要做9次垂直方向的滑动,在每一次做垂直方向滑动之后,在水平方向滑动时可以得到10个像素点集合,即电子设备可以得到9*10个像素点集合,电子设备获取到的像素点集合的数量与当前需要处理的图像所包含的像素点的数量相同。
进而电子设备可以将各个像素点集合所包含的所有像素点的信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,并对卷积结果进行计算,得到像素点信息所包含像素点的参数。
步骤S202、将像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果。
具体的,系数寄存器中可以存储基于X方向的矩阵系数和基于Y方向的矩阵系数,进而电子设备可以将像素点信息与系数寄存器中存储的基于X方向的矩阵系数进行卷积运算,得到基于X方向的卷积结果。电子设备还可以将像素点信息与系数寄存器中存储的基于Y方向的矩阵系数进行卷积运算,得到基于Y方向的卷积结果。
可选的,系数寄存器可以包括第一系数寄存器和第二系数寄存器,矩阵系数可以包括基于X方向的矩阵系数和基于Y方向的矩阵系数,其中第一系数寄存器存储基于X方向的矩阵系数,第二系数寄存器存储基于Y方向的矩阵系数。则电子设备可以将像素点信息与第一系数寄存器中存储的基于X方向的矩阵系数进行卷积运算,得到基于X方向的卷积结果。电子设备还可以将像素点信息与第二系数寄存器中存储的基于Y方向的矩阵系数进行卷积运算,得到基于Y方向的卷积结果。
以图4为例,电子设备可以将像素点信息与第一系数寄存器中存储的基于X方向的矩阵系数进行卷积运算,得到基于X方向的卷积结果(例如dx)。电子设备还可以将像素点信息与第二系数寄存器中存储的基于Y方向的矩阵系数进行卷积运算,得到基于Y方向的卷积结果(例如dy)。进而电子设备可以对基于X方向的卷积结果和基于Y方向的卷积结果进行计算,得到像素点信息所包含像素点的参数。
可选的,电子设备将像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果之前,可以接收用户输入的矩阵系数,并将矩阵系数存储到系数寄存器中。例如,电子设备在出厂时,系数寄存器中未存储矩阵系数,则电子设备进行图像处理之前,可以接收用户输入的矩阵系数,并将该矩阵系数存储到系数寄存器中,以便在图像处理过程中可以基于用户输入的矩阵系数进行卷积运算。又如,电子设备在出厂时,系数寄存器中可以预先存储矩阵系数,若该矩阵系数不是当前图像处理所需要的矩阵系数时,可以接收用户输入的矩阵系数,并将该矩阵系数存储到系数寄存器中,以便在图像处理过程中可以基于用户输入的矩阵系数进行卷积运算。若电子设备未接收到用户输入的矩阵系数,则电子设备在图像处理过程中可以基于系数寄存器预先存储的矩阵系数进行卷积运算。需要说明的是,本发明实施例中的矩阵系数是可配置的,以支持多种边缘检测算法的需求,可根据不同应用场景,用不同的边缘检测算法解决图像边缘敏感的问题。
可选的,电子设备将像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果之前,可以接收用户输入的基于X方向的矩阵系数,并将基于X方向的矩阵系数存储到第一系数寄存器中。电子设备还可以接收用户输入的基于Y方向的矩阵系数,并将基于Y方向的矩阵系数存储到第二系数寄存器中。
可选的,当检测到未将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算时,电子设备可以暂停在所述FIFO中读取一个像素点信息。本发明实施例在下级模块没有准备接收数据时,可以冻结梯度计算的流水线,以便支持下级模块的反压操作。
步骤S203、对卷积结果进行计算,得到像素点信息所包含像素点的参数,参数包括振幅和/或角度。
可选的,当检测到未对卷积结果进行计算,得到像素点信息所包含像素点的参数时,电子设备可以暂停将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算。可选的,电子设备还可以暂停在所述FIFO中读取一个像素点信息。本发明实施例在下级模块没有准备接收数据时,可以冻结梯度计算的流水线,以便支持下级模块的反压操作。
以图1为例,一个FIFO可以缓存(行*宽-3)个像素点的像素点信息,因此9个寄存器和2个FIFO如图1所示级联在一起可以缓存(2行+3)个像素点的像素点信息。当流入(2行+3)个像素点的像素点信息时,卷积运算所需的矩阵系数已经在9个级联寄存器中,此后每流入一个新的数据就与寄存器中的矩阵系数进行卷积运算,得到卷积结果,对卷积结果进行计算,得到像素点信息所包含像素点的参数,卷积运算及卷积结果运算都是流水进行,从而实现梯度的流水计算。
在图2所示的图像处理方法中,在FIFO中读取一个像素点信息,并将像素点信息发送至级联寄存器,通过级联寄存器将像素点信息与级联寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,对卷积结果进行计算,得到像素点信息所包含像素点的参数,操作便捷,可有效实现流水计算。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被处理器执行时,可执行如图2所示方法实施例中所执行的步骤。
请参阅图5,图5是本发明实施例提供的一种图像处理装置的结构示意图。具体的,如图5所示,该图像处理装置,包括:
像素点信息获取单元501,用于从所述FIFO中读取一个像素点信息,其中FIFO与级联寄存器级联以存储像素点信息;
卷积运算单元502,用于将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果;
参数获取单元503,用于对所述卷积结果进行计算,得到所述像素点信息所包含像素点的参数,所述参数包括振幅和/或角度。
可选的,所述图像处理装置还可以包括:
矩阵系数接收单元504,用于在所述卷积运算单元502将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果之前,接收用户输入的矩阵系数;
存储单元505,用于将所述矩阵系数存储到系数寄存器中。
可选的,像素点信息获取单元501具体用于:
当检测到位于当前需要处理的图像中的第一列或者最后一列的像素点存储到所述FIFO中时,将所述位于所述图像中的第一列或者最后一列的像素点存储到备份寄存器中;
将FIFO以及所述备份寄存器中位于所述图像中的第一列或者最后一列的像素点发送至所述级联寄存器;
所述卷积运算单元502,具体用于将所述级联寄存器中的像素点的像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果。
可选的,图像处理装置还可以包括:
暂停单元506,用于当检测到未将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果时,暂停在所述FIFO中读取一个像素点信息。
可选的,所述矩阵系数包括基于X方向的矩阵系数和基于Y方向的矩阵系数,则卷积运算单元502,具体用于:
将所述像素点信息与第一系数寄存器中存储的基于X方向的矩阵系数进行卷积运算,得到基于X方向的卷积结果;
将所述像素点信息与第二系数寄存器中存储的基于Y方向的矩阵系数进行卷积运算,得到基于Y方向的卷积结果。
本发明实施例和图2所示方法实施例基于同一构思,其带来的技术效果也相同,具体原理请参照图2所示实施例的描述,在此不赘述。
请参阅图6,图6是本发明实施例提供的一种电子设备的结构示意图。该电子设备包括:级联寄存器601、FIFO602以及处理器603以及系数寄存器604,其中,级联寄存器601、FIFO602、处理器603和系数寄存器604通过总线605连接。
处理器603可以是中央处理单元(Central Processing Unit,CPU);也可以进一步包括硬件芯片,上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)等。上述PLD可以是现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)等。该处理器603还可以是其他通用处理器。其中:
处理器603从所述FIFO602中读取一个像素点信息;
处理器603将所述像素点信息与系数寄存器604中存储的矩阵系数进行卷积运算,得到卷积结果;
处理器603对所述卷积结果进行计算,得到所述像素点信息所包含像素点的参数,所述参数包括振幅和/或角度。
可选的,所述处理器603将所述像素点信息与系数寄存器604中存储的矩阵系数进行卷积运算,得到卷积结果之前,还可以执行以下操作:
接收用户输入的矩阵系数;
将所述矩阵系数存储到系数寄存器604中。
可选的,处理器603在所述FIFO中读取一个像素点信息,具体可以为:
当检测到位于当前需要处理的图像中的第一列或者最后一列的像素点存储到所述FIFO中时,将所述位于所述图像中的第一列或者最后一列的像素点存储到备份寄存器中;
将FIFO以及所述备份寄存器中位于所述图像中的第一列或者最后一列的像素点发送至所述级联寄存器601;
处理器603将所述像素点信息与系数寄存器604中存储的矩阵系数进行卷积运算,得到卷积结果,具体可以为:
将所述级联寄存器601中像素点的像素点信息与所述系数寄存器604中存储的矩阵系数进行卷积运算,得到卷积结果。
可选的,处理器603还可以执行以下操作:
当检测到未将所述像素点信息与所述系数寄存器604中存储的矩阵系数进行卷积运算,得到卷积结果时,暂停在所述FIFO中读取一个像素点信息。
可选的,所述矩阵系数包括基于X方向的矩阵系数和基于Y方向的矩阵系数,则处理器603将所述像素点信息与系数寄存器中存储的矩阵系数进行卷积运算,得到卷积结果,具体用于:
将所述像素点信息与第一系数寄存器中存储的基于X方向的矩阵系数进行卷积运算,得到基于X方向的卷积结果;
将所述像素点信息与第二系数寄存器中存储的基于Y方向的矩阵系数进行卷积运算,得到基于Y方向的卷积结果。
具体实现中,本发明实施例中所描述处理器602可执行本发明实施例图2提供的图像处理方法中所描述的实现方式,也可执行本发明实施例图5所描述的图像处理装置的实现方式,在此不赘述。
以上,仅为本发明的部分实施方式,但本发明的保护范围并不局限于此,在上述实施例的基础上想到的各种等效的修改或替换,都应涵盖在本发明的保护范围之内。