掌桥专利:专业的专利平台
掌桥专利
首页

图像处理方法、设备和可移动平台

文献发布时间:2023-06-19 09:29:07


图像处理方法、设备和可移动平台

技术领域

本申请实施例涉及图像处理技术领域,尤其涉及一种图像处理方法、设备和可移动平台。

背景技术

随着人工智能行业的快速发展,基于卷积神经网络的处理器得到广泛的应用,以无人机为例,无人机在飞行的过程中采集图像,基于卷积神经网络的处理器可以对图像进行识别处理,识别图像中的目标物,以确保无人机的飞行安全。其中,卷积神经网络一般包括:卷积层(Convolution Layer),激活函数层(Activation Layer)、标准化层(Normalization Layer)、降采样层(Pooling Layer)、全连接层(Fully ConnectedLayer),其中,池化操作位于卷积神经网络的降采样层,降采样层可以对特征图进行缩小,根据功能不同,池化操作可以分为最大池化和平均池化。最大池化在于求取池化窗中的最大值,平均池化在于求取池化窗中的平均值。为了尽量保留图像边缘的信息,通常会在图像的周围填充一些像素,然而目前执行池化操作时需要将图像的像素值以及填充的像素值依次输入同一寄存器中,在当前行的像素值均输入该寄存器后,才能开始输入下一行的像素值,导致池化效率较低。

发明内容

本申请实施例提供一种图像处理方法、设备和可移动平台,以节省处理时间,提高处理效率。

第一方面,本申请实施例提供一种图像处理方法,待处理的图像边缘设有填充像素,所述方法包括:

将所述待处理的图像中第n行的像素的像素值依次输入第一寄存器组中,所述n为大于等于1的任一整数,所述像素值包括图像像素值和填充像素值;

当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。

第二方面,本申请实施例提供一种图像处理设备,待处理的图像边缘设有填充像素,所述图像处理设备包括:第一寄存器组、第二寄存器组和处理器;

所述处理器,用于将所述待处理的图像中第n行的像素的像素值依次输入第一寄存器组中,所述n为大于等于1的任一整数,所述像素值包括图像像素值和填充像素值;当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。

第三方面,本申请实施例提供一种可移动平台,包括:可移动平台本体以及如第二方面本申请实施例所述的图像处理设备,其中,所述图像处理设备安装于所述可移动平台本体上。

第四方面,本申请实施例提供一种可读存储介质,所述可读存储介质上存储有计算机程序;所述计算机程序在被执行时,实现如第一方面本申请实施例所述的图像处理方法。

第五方面,本申请实施例提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,可移动平台的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得可移动平台实施如第一方面本申请实施例所述的图像处理方法。

本申请实施例提供的图像处理方法、设备和可移动平台,通过将待处理的图像中第n行的像素的像素值依次输入第一寄存器组中,当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。由于本实施例中设有第一寄存器组和第二寄存器组,相邻行的像素的像素值可分别输入不同的寄存器组,在将第n行的像素的像素值未完全输入至第一寄存器组时,可开始将第n+1行的第一个图像像素值输入至第二寄存器组中,因此,第n+1行的像素值输入第二寄存器组的时间复用了第n行的像素值输入第一寄存器组的部分时间,提高了图像处理效率。

附图说明

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

图1是根据本申请的实施例的无人飞行系统的示意性架构图;

图2为本申请一实施例提供的图像处理方法的流程图;

图3为本申请一实施例提供的待处理的图像中各像素的一种示意图;

图4为本申请一实施例提供的第一寄存器组或第二寄存器组的一种示意图;

图5为本申请一实施例提供的缓存的一种示意图;

图6为本申请一实施例提供的图像处理设备的结构示意图;

图7为本申请一实施例提供的可移动平台的结构示意图;

图8为本申请另一实施例提供的可移动平台的结构示意图。。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的实施例提供了图像处理方法、设备和可移动平台,其中,可移动平台可以是手持电话、手持云台、无人机、无人车、无人船、机器人或自动驾驶汽车等。以下对本申请可移动平台的描述使用无人机作为示例。对于本领域技术人员将会显而易见的是,可以不受限制地使用其他类型的无人机,本申请的实施例可以应用于各种类型的无人机。例如,无人机可以是小型或大型的无人机。在某些实施例中,无人机可以是旋翼无人机(rotorcraft),例如,由多个推动装置通过空气推动的多旋翼无人机,本申请的实施例并不限于此,无人机也可以是其它类型的无人机。

图1是根据本申请的实施例的无人飞行系统的示意性架构图。本实施例以旋翼无人机为例进行说明。

无人飞行系统100可以包括无人机110、显示设备130和遥控设备140。其中,无人机110可以包括动力系统150、飞行控制系统160、机架和承载在机架上的云台120。无人机110可以与遥控设备140和显示设备130进行无线通信。

机架可以包括机身和脚架(也称为起落架)。机身可以包括中心架以及与中心架连接的一个或多个机臂,一个或多个机臂呈辐射状从中心架延伸出。脚架与机身连接,用于在无人机110着陆时起支撑作用。

动力系统150可以包括一个或多个电子调速器(简称为电调)151、一个或多个螺旋桨153以及与一个或多个螺旋桨153相对应的一个或多个电机152,其中电机152连接在电子调速器151与螺旋桨153之间,电机152和螺旋桨153设置在无人机110的机臂上;电子调速器151用于接收飞行控制系统160产生的驱动信号,并根据驱动信号提供驱动电流给电机152,以控制电机152的转速。电机152用于驱动螺旋桨旋转,从而为无人机110的飞行提供动力,该动力使得无人机110能够实现一个或多个自由度的运动。在某些实施例中,无人机110可以围绕一个或多个旋转轴旋转。例如,上述旋转轴可以包括横滚轴(Roll)、偏航轴(Yaw)和俯仰轴(pitch)。应理解,电机152可以是直流电机,也可以交流电机。另外,电机152可以是无刷电机,也可以是有刷电机。

飞行控制系统160可以包括飞行控制器161和传感系统162。传感系统162用于测量无人机的姿态信息,即无人机110在空间的位置信息和状态信息,例如,三维位置、三维角度、三维速度、三维加速度和三维角速度等。传感系统162例如可以包括陀螺仪、超声传感器、电子罗盘、惯性测量单元(Inertial Measurement Unit,IMU)、视觉传感器、全球导航卫星系统和气压计等传感器中的至少一种。例如,全球导航卫星系统可以是全球定位系统(Global Positioning System,GPS)。飞行控制器161用于控制无人机110的飞行,例如,可以根据传感系统162测量的姿态信息控制无人机110的飞行。应理解,飞行控制器161可以按照预先编好的程序指令对无人机110进行控制,也可以通过响应来自遥控设备140的一个或多个遥控信号对无人机110进行控制。

云台120可以包括电机122。云台用于携带拍摄装置123。飞行控制器161可以通过电机122控制云台120的运动。可选地,作为另一实施例,云台120还可以包括控制器,用于通过控制电机122来控制云台120的运动。应理解,云台120可以独立于无人机110,也可以为无人机110的一部分。应理解,电机122可以是直流电机,也可以是交流电机。另外,电机122可以是无刷电机,也可以是有刷电机。还应理解,云台可以位于无人机的顶部,也可以位于无人机的底部。

拍摄装置123例如可以是照相机或摄像机等用于捕获图像的设备,拍摄装置123可以与飞行控制器通信,并在飞行控制器的控制下进行拍摄。本实施例的拍摄装置123至少包括感光元件,该感光元件例如为互补金属氧化物半导体(Complementary Metal OxideSemiconductor,CMOS)传感器或电荷耦合元件(Charge-coupled Device,CCD)传感器。可以理解,拍摄装置123也可直接固定于无人机110上,从而云台120可以省略。

显示设备130位于无人飞行系统100的地面端,可以通过无线方式与无人机110进行通信,并且可以用于显示无人机110的姿态信息。另外,还可以在显示设备130上显示拍摄装置123拍摄的图像。应理解,显示设备130可以是独立的设备,也可以集成在遥控设备140中。

遥控设备140位于无人飞行系统100的地面端,可以通过无线方式与无人机110进行通信,用于对无人机110进行远程操纵。

应理解,上述对于无人飞行系统各组成部分的命名仅是出于标识的目的,并不应理解为对本申请的实施例的限制。

其中,对上述拍摄装置123拍摄获得的图像可采用本申请各实施例的方案进行处理。

图2为本申请一实施例提供的图像处理方法的流程图,如图2所示,本实施例的方法可以包括:

S201、将待处理的图像中第n行的像素的像素值依次输入第一寄存器组中,所述n为大于等于1的任一整数,所述像素值包括图像像素值和填充像素值。

S202、当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。

本实施例中,待处理的图像边缘设有填充像素,如图3所示,待处理的图像的像素包括图像像素和填充像素,图3中数字表示的像素为图像像素,填充像素位于图像像素区域的四周,图3中空白表示的像素为填充像素,其中,图像像素的像素值称为图像像素值,填充像素的像素值称为填充像素值。例如:填充像素分别填充在待处理的图像的第一行和最后一行,以及待处理的图像的第1-2列、倒数第1-2列,其中,待处理的图像行方向填充的填充像素的行数以及列方向填充的填充像素的列数不限于此,可按具体实际应用场景而定。其中,待处理的图像中第1行中的数字1至8表示的像素为图像像素,例如:数字1表示图像像素1,数字2表示图像像素2,其它行也类似。

本实施例中,将待处理的图像中第n行的像素的像素值依次输入第一寄存器组中,n为大于等于1的任一整数,当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。然后将待处理的图像中第n+1行的像素的像素值依次输入第二寄存器组中,当将所述第n+1行中最后一个图像像素值的相邻填充像素值输入所述第二寄存器组中时,将所述图像中第n+2行的第一个图像像素值输入第一寄存器组。以此类推,后续不再赘述。在一些情况下,第一寄存器组可以为第二寄存器组,第二寄存器组可以为第一寄存器组,例如:在输入第n+1行的像素的像素值时,第二寄存器组作为第一寄存器组,在输入第n+2行的像素的像素值时,第一寄存器组作为第二寄存器组。在另一些实现方式中,也可以是在将所述第n行中最后一个图像像素后的任一填充像素的像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。

而相关技术中,是将第n行的像素的像素值全部输入至寄存器组后,才开始将第n+1行的像素的像素值全部输入至寄存器组。而本申请实施例中设有两组寄存器组(第一寄存器组和第二寄存器组),相邻两行的像素的像素值分别输入至不同的寄存器组,所以本实施例在第n行的像素的像素值未全部输入至第一寄存器组时,就开始将第n+1行的像素的像素值输入第二寄存器组,因此,第n+1行的像素值输入第二寄存器组的时间复用了第n行的像素值输入第一寄存器组的部分时间,提高了图像处理效率。

以n等于2,即如图3中的第2行为例,将图像像素1的像素值输入第一寄存器组,再将图像像素2的像素值输入第一寄存器组,…,再将图像像素的像素值输入第一寄存器组,再将倒数第二个填充像素的像素值输入第一寄存器组,再将最后一个填充像素的像素值输入第一寄存器组。其中,当将倒数第二个填充像素的像素值输入第一寄存器组时,将第3行中的图像像素9的像素值输入第二寄存器组中,而且在将倒数第1个填充像素的像素值输入第一寄存器组时,将第3行中的图像像素10的像素值输入第二寄存器组中,对相邻两行来说节省了输入两个像素值的时间,或者,当倒数第一个填充像素的像素值输入第一寄存器组中,将第3行中的图像像素9的像素值输入第二寄存器组中,对相邻两行来说节省了向第一寄存器组输入1个像素值的时间。

本实施例中,通过将待处理的图像中第n行的像素的像素值依次输入第一寄存器组中,当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组。由于本实施例中设有第一寄存器组和第二寄存器组,相邻行的像素的像素值可分别输入不同的寄存器组,在将第n行的像素的像素值未完全输入至第一寄存器组时,可开始将第n+1行的第一个图像像素值输入至第二寄存器组中,因此,第n+1行的像素值输入第二寄存器组的时间复用了第n行的像素值输入第一寄存器组的部分时间,提高了图像处理效率。

在一些实施例中,池化窗的宽度为w个像素,所述池化窗的高度为h个像素,所述池化窗根据预设行步长沿行方向滑动并根据预设列步长沿列方向滑动,池化窗可以包括待处理的图像中连续h行中连续w列的像素,总像素为w*h个像素。其中,每次池化窗滑动,池化窗会包括滑动后相应位置的像素。当第n行中属于同一池化窗内的w个像素值输入至第一寄存器组中时,也就是当第一寄存器组中已寄存w个像素值,并且这w个像素值属于待处理的图像中同一行,以及还属于同一池化窗,本实施例还获取所述w个像素值的运算像素值,例如获取第一寄存器组中寄存的w个像素值,并对w个像素值进行相应运算,获得运算结果,该运算结果称为该w个像素值的运算像素值。因此,可以获得第n行中属于不同池化窗内的w个像素值的运算像素值。

当第n+1行中属于同一池化窗内的w个像素值输入至第二寄存器组中时,也就是当第二寄存器组中已寄存w个像素值,并且这w个像素值属于待处理的图像中同一行,以及还属于同一池化窗,本实施例还获取所述w个像素值的运算像素值,例如获取第二寄存器组中寄存的w个像素值,并对w个像素值进行相应运算,获得运算结果,该运算结果称为该w个像素值的运算像素值。因此,可以获得第n+1行中属于同一池化窗内的w个像素值的运算像素值。

类似处理,可以获得第n+h-1行中属于同一池化窗内的w个像素值的运算像素值。

其中,当获得同一池化窗内每行的w个像素值的运算像素值时,根据每行的w个像素值的运算像素值,确定所述池化窗中w*h个像素值的运算像素值。例如当获得同一池化窗内第n行的w个像素值的运算像素值、第n+1行的w个像素值的运算像素值、…、第n+h-1行的w个像素值的运算像素值时,对同一池化窗内第n行的w个像素值的运算像素值、第n+1行的w个像素值的运算像素值、…、第n+h-1行的w个像素值的运算像素值进行相应运算,获得运算结果,该运算结果称为该池化窗中w*h个像素值的运算像素值。

其中,池化窗每滑动一次输出一个池化结果,该池化结果即为对应运算获得的w*h个像素值的运算像素值。

在一些实施例中,所述第一寄存器组或所述第二寄存器组至少包括w个寄存器,每个寄存器用于寄存单个像素值。

本实施例中,第一寄存器组中至少包括w个寄存器,并且第一寄存器组寄存的像素值的个数与第一寄存器组包括的寄存器的数量相同,因此,第一寄存器组可寄存的像素值为至少w个。第二寄存器组中至少包括w个寄存器,并且第二寄存器组寄存的像素值的个数与第二寄存器组包括的寄存器的数量相同,因此,第二寄存器组可寄存的像素值为至少w个。

以第一寄存器组或第二寄存器组中包括w个寄存器为例,该w例如为3,如图4所示,从左到右的方向分别为寄存器1、寄存器2和寄存器3,在将待处理的图像的像素的像素值输入第一寄存器组或第二寄存器组时,是将图像的像素的像素值在连续的时钟周期内,输入该寄存器组。

以图3中第二行的像素的像素值为例,若寄存器1已寄存图像像素3的像素值,寄存器2已寄存图像像素2的像素值,寄存器3已寄存图像像素1的像素值,若需要输入图像像素4的像素值时,则在下一个时钟周期内,将图像像素4的像素值输入寄存器1,同时将寄存器1中寄存的图像像素3的像素值输入寄存器2、将寄存器2中寄存的图像像素2的像素值输入寄存器3,也即将寄存器1的值更新为图像像素4的像素值、将寄存器2的值更新为图像像素3的像素值、将寄存器3的值更新为图像像素2的像素值。这样保证第一寄存器组中寄存的是3个像素的像素值,并且寄存的是最近输入的3个像素的像素值。

在一些实施例中,在获取w个像素值的运算像素值之后,将该w个像素值的运算像素值存储至缓存中,以便在获得同一池化窗内每行的w个像素值的运算像素值时,及时从缓存中获取之前运算获得的同一池化窗内各行的w个像素值的运算像素值。

在一些实施例中,所述缓存至少包括h个子缓存,以保证同一池化窗内不同行的w个像素值的运算像素值可以同时存储在缓存中。同一池化窗内不同行的w个像素值的运算像素值存储在不同的子缓存中,以便在获取同一池化窗内各行的w个像素值的运算像素值时分别从不同的子缓存中获取,以提高获取运算像素值的效率。例如h等于3,以缓存包括3个子缓存为例,如图5所示,同一池化窗内第n行的w个像素值的运算像素值存储在子缓存1中,第n+1行的w个像素值的运算像素值存储在子缓存2中,第n+2行的w个像素值的运算像素值存储在子缓存3中。

可选地,属于同一行且属于不同池化窗内的w个像素值的运算像素值可以存储在同一子缓存中。在池化窗沿列方向进行滑动时会形成多个池化窗,如图5所示,第n行中属于第一个池化窗的w个像素值的运算像素值存在子缓存的地址0中,属于第2个池化窗的w个像素值的运算像素值存在子缓存地址2中,属于第3个池化窗的w个像素值的运算像素值存在子缓存地址3中,以此类推。

可选的,每个子缓存中共有width个地址,其中width对应于待处理图像在行方向上的图像像素的个数,以图3为例,width为8。如此,每个子缓存最大可以支持池化窗的宽度为1个像素时的存储操作。

可选的,当执行最大池化操作时,每个地址对应的存储空间可分为两部分,其中第一部分为上述w个像素值的运算像素值,也即最大像素值,第二部分为该最大像素值对应的地址信息。如此,在后续输出每个池化窗的最大像素值时,可以同时输出该最大像素值对应的地址信息,以便于后续处理。以图3为例,第一个池化窗的最大像素值对应的地址信息为图像像素9的地址信息。示例的,可以以图像左上角的图像像素为原点确定每个图像像素的地址信息。

在一些实施例中,同一池化窗内不同行的w个像素值的运算像素值存储在相应子缓存中的相同位置。例如:如图5所示,若同一个池化窗内第1行的w个像素值的运算像素值存在子缓存1的地址0对应位置中,则同一个池化窗内第2行的w个像素值的运算像素值存在子缓存2的地址0对应位置中,同一个池化窗内第3行的w个像素值的运算像素值存在子缓存3的地址0对应位置中。若同一个池化窗内第1行的w个像素值的运算像素值存在子缓存1的地址2对应位置中,则同一个池化窗内第2行的w个像素值的运算像素值存在子缓存2的地址2对应位置中,同一个池化窗内第3行的w个像素值的运算像素值存在子缓存3的地址2对应位置中。

因此,在获取缓存中同一池化窗内各行的w个像素值的运算像素值时,根据相同的地址信息,从各个子缓存内的相同位置获取运算像素值,即可获得同一池化窗内各行的w个像素值的运算像素值。

在一些实施例中,上述根据每行的w个像素值的运算像素值,确定所述池化窗中w*h个像素值的运算像素值的一种可能的实现方式为:当获得所述池化窗中最后一行的w个像素值的运算像素值时,则在将所述最后一行的w个像素值的运算像素值存储至所述缓存的同时,将所述最后一行的w个像素值的运算像素值输入第三寄存器组中;从所述缓存中读取所述池化窗内其它h-1行中每行的w个像素值的运算像素值,并输入所述第三寄存器组中;对所述第三寄存器组中寄存的h个运算像素值进行运算,确定所述池化窗中w*h个像素值的运算像素值。可选的,同一个池化窗的最后一行的w个像素值的运算像素值,以及其它h-1行中每行的w个像素值的运算像素值可以同时输入至第三寄存器组中。

本实施例中,第三寄存器组至少包括h个寄存器,每个寄存器用于寄存单个像素值,所以第三寄存器可以同时寄存同一池化窗内各行的w个像素值的运算像素值,即h个运算像素值。

由于本实施例在获得池化窗中最后一行的w个像素值的运算像素值时,并不是将最后一行的w个像素值的运算像素值先输入缓存中后再从缓存中取出输入第三寄存器组,而是在将最后一行的w个像素值的运算像素值输入缓存的同时还输入第三寄存器组,复用了将一个运算像素值输入缓存的时间,节省了处理时间,提高了处理效率。

在一些实施例中,在获得第n+h行中w个像素值的运算像素值后,还将所述缓存中存储的第n行中相应列方向的w个像素值的运算像素值替换为所述第n+h行中w个像素值的运算像素值。以如图5所示,以h=3为例,若子缓存1已存储第n行中w个像素值的运算像素值,子缓存2已存储第n+1行中w个像素值的运算像素值,子缓存3已存储第n+2行中w个像素值的运算像素值,而且当前获得第n+3行中w个像素值的运算像素值,则将缓存中存储的该第n行中w个像素值的运算像素值替换为第n+3行中w个像素值的运算像素值,例如:将第n+3行中依次获得的w个像素值的运算像素值依次存储至子缓存1的各个地址对应的位置,这样缓存中包括h个子缓存就可以更新存储最新获得的h行的w个像素值的运算像素值,节省缓存空间。

在一些实施例中,上述获得w个像素值的运算像素值的一种可能的实现方式为:根据池化模式对w个像素值进行运算,得到w个像素值的运算像素值。本实施例中,当第n行中属于同一池化窗内的w个像素值输入至第一寄存器组中时,根据池化模式对第一寄存器组中的w个像素值进行运算,得到第n行中属于同一池化窗内的w个像素值的运算像素值。当第n+1行中属于同一池化窗内的w个像素值输入至第二寄存器组中时,根据池化模式对第二寄存器组中的w个像素值进行运算,得到第n+1行中属于同一池化窗内的w个像素值的运算像素值。

当属于同一池化窗内的每行的w个像素值的运算像素值输入至第三寄存器组时,即第三寄存器组中同时存储有属于同一池化窗内h行中每行的w个像素值的运算像素值,根据池化模式对第三寄存器组中的h个运算像素值进行运算,得到属于同一池化窗中第n+1行中w*h个像素值的运算像素值。

可选地,若池化模式为最大池化,则运算像素值为最大像素值,即对第一寄存器组或第二寄存器组或第三寄存器组中寄存的像素值进行大小比较,从这些像素值中确定最大像素值,该最大像素值称为这些像素值的运算像素值。

可选地,若池化模式为均值池化,则所述运算像素值为累加像素值。也就是对第一寄存器组或第二寄存器组或第三寄存器组中寄存的像素值进行累加,获得这些像素值的累加像素值,该累加像素值称为这些像素值的运算像素值。

可选地,若池化模式为均值池化,则所述运算像素值为平均像素值。也就是对第一寄存器组或第二寄存器组中寄存的像素值进行累加,获得这些像素值的累加像素值,并将该累加像素值除以w,获得平均像素值,该平均像素值称为w个像素值的运算像素值。对第三寄存器组中寄存的像素值进行累加,获得这些像素值的累加像素值,并将该累加像素值除以h,获得平均像素值,该平均像素值称为w*h个像素值的运算像素值。

在一些实施例中,上述根据池化模式对所述w个像素值进行运算,得到所述运算像素值的一种可能的实现方式为:将所述第一寄存器组或所述第二寄存器组中寄存的像素值,输出给运算单元,以使所述运算单元输出所述运算像素值;以及获取所述运算单元输出的所述运算像素值。

在第一寄存器组或第二寄存器组中同时寄存有同一池化窗内的w个像素值时,将该第一寄存器组或第二寄存器组中寄存的w个像素值,输出运算单元,以使运算单元根据池化模式对w个像素值进行运算,得到w个像素值的运算像素值,然后获得运算单元输出的运算像素值。

在第三寄存器组中同时寄存有同一池化窗内h行中各行的w个像素值的运算像素值时,将该第三寄存器组中寄存的h个运算像素值,输出运算单元,以使运算单元根据池化模式对h个运算像素值进行运算,得到h个运算像素值的运算像素值,然后获得运算单元输出的w*h行像素值的运算像素值。

在一些实施例中,若所述池化模式为最大池化,将所述运算单元配置为比较器;若所述池化模式为均值池化,将所述运算单元配置为加法器。在一些实施例中,运算单元包括加法器,当运算模式为均值池化时,加法器输出累加像素值。可选地,若运算像素值为平均像素值,运算单元还可以包括乘法器,乘法器将加法器输出的累加像素值与1/w或者1/h相乘,获得平均像素值。

可选地,将运算单元配置为比较器可以复用加法器,将两个像素值进行比较时,将其中一个像素值A输入加法器,将另一个像素值B与-1相乘得到-B也输入加法器,加法器对A与-B相加,得到和值,即为A-B,如果A-B大于0,则A大于B,若A-B小于0,则A小于B,若A-B等于0,则A等于B。在一些实施例中,由于乘法器占用的资源较多,当B为一个有符号数时,可以将B取反后加1得到-B。

因此,本实施例的运算单元可以复用加法器来实现比较器的功能,节省硬件成本。

在一些实施例中,还可以根据池化窗的大小,对运算单元的输入进行配置。例如:若池化窗的宽度或高度为3个像素,当池化模式为最大池化时,将运算单元中2个加法器中的第一个加法器的输入配置为待运算的其中两个像素值,该2个加法器中第二个加法器的输入为第一个加法器的输出和剩余的像素值。需要说明的是,若池化模式为最大池化,则将运算单元中除上述2个加法器之外的其它加法器的输入均配置为最小值,若池化模式为均值池化,则将运算单元中除上述2个加法器之外的其它加法器的输出均配置为0。

在一些实施例中,输出相邻行中w个像素值的运算像素值的运算单元分别为第一运算单元和第二运算单元,输出所述池化窗中w*h个像素值的运算像素值的运算单元为第三运算单元。

例如:用于获取第一寄存器组中存储的w个像素值的运算像素值为第一运算单元,用于获取第二寄存器组中存储的w个像素值的运算像素值为第二运算单元,也就是用于分别输出相邻行中w个像素值的运算像素值的运算单元不是同一运算单元,可以保证相邻两行的运算不会相互影响,节省池化时间,提高池化效率。另外,用于获取第三寄存器组中存储的h个运算像素值的运算像素值为第三运算单元,第三运算单元与第一运算单元、第二运算单元不是同一运算单元,这样可以保证运算过程连续,不会中断,提高了池化效率。

在一些实施例中,若所述池化模式为最大池化,则所述填充像素值为最小像素值,可以保证填充像素值不会影响实际的最大像素值的运算结果。若所述池化模式为均值池化,则所述填充像素值为0,可以保证填充像素值不会影响实际的平均像素值或累加像素值的运算结果。

在一些实施例中,还可以对原始图像进行分层处理,获得多层子图像;所述每层子图像中每个像素的像素值为原始图像中每个像素的相同位的像素值;所述待处理的图像为所述多层子图像中的任一子图像。然后对每层子图像执行上述各实施例的方案。

若原始图像中的像素值为16位(bit),则可以对原始图像进行分层处理,例如分为两层,获得两层子图像,分别为第一层子图像和第二层子图像,其中,第一层子图像中每个像素的像素值可以是原始图像中对应像素的像素值中的第1位至第8位,第二层子图像中每个像素的像素值可以是原始图像中对应像素的像素值中的第9位至第16位。然后对第一层子图像执行上述各实施例的方案,获得第一层子图像的池化结果,以及对第二层子图像执行上述各实施例的方案,获得第二层子图像的池化结果。本实施例还可以根据第一层子图像的池化结果与第二层子图像的池化结果,得到原始图像的池化结果。例如,将第一层子图像与第二层子图像对应的池化窗的池化结果进行相加。

其中,处理第一层子图像所需的硬件与处理第二层子图像所需的硬件可以不是同一硬件,从而实现并行处理第一层子图像和第二层子图像,提高池化效率。

在一些实施例中,还可以对原始图像进行分块处理,例如,沿行方向和/或列方向上将原始图像划分为多个分块,然后对每个图像块执行上述各实施例的方案。如此,当原始图像的数据量比较大时,可以将多个图像块进行单独处理,减少图像处理所需要的存储空间。

在一些实施例中,上述各实施例可用于同时处理多张原始图像,以进一步提高并行度,提高池化操作的效率。例如并行处理32张原始图像,每张图像中每个图像像素为16bit,那么在一个时钟周期中可以输入512bit的数据。可选的,每个图像像素也可分为高8位和低8位分别处理。

下面参照图3至图5,对本申请一种实现方式进行描述。

根据池化模式设置各寄存器组中的初始值,若池化模式为均值池化,则初始值为0,若池化模式为最大化池化,则初始值为最小像素值,比如像素值为8比特,则最小像素值表示的是-128。

将图3中第2行的图像像素1的像素值输入第一寄存器组的寄存器1,由于此时图像像素1的像素值表示是第一个池化窗中第2行的累加像素值(或平均像素值或最大像素值),还将图像像素1的像素值输入缓存中子缓存1的地址0中。

将图像像素2的像素值输入第一寄存器组的寄存器1,同时将寄存器1寄存的图像像素1的像素值输入寄存器2。

将图像像素3的像素值输入第一寄存器组的寄存器1,同时将寄存器1寄存的图像像素2的像素值输入寄存器2并将寄存器2寄存的图像像素1的像素值输入寄存器3。而且还获取第一寄存器组中寄存的图像像素1、图像像素2、图像像素3的像素值的累加像素值(或平均像素值或最大像素值),并将其输入缓存中子缓存1的地址1中。

将图像像素4的像素值输入第一寄存器组的寄存器1,同时将寄存器1寄存的图像像素3的像素值输入寄存器2并将寄存器2寄存的图像像素2的像素值输入寄存器3。

将图像像素5的像素值输入第一寄存器组,输入图像像素5的过程此处不再赘述。而且还获取第一寄存器组中寄存的图像像素3、图像像素4、图像像素5的像素值的累加像素值(或平均像素值或最大像素值),并将其输入缓存中子缓存1的地址2中。

将图像像素6的像素值输入第一寄存器组,输入图像像素6的过程此处不再赘述。

将图像像素7的像素值输入第一寄存器组,输入图像像素7的过程此处不再赘述。而且还获取第一寄存器组中寄存的图像像素5、图像像素6、图像像素7的像素值的累加像素值(或平均像素值或最大像素值),并将其输入缓存中子缓存1的地址3中。

将图像像素8的像素值输入第一寄存器组,输入图像像素8的过程此处不再赘述。

将图像像素8相邻的填充像素的像素值输入第一寄存器组,输入图像像素8的过程此处不再赘述。而且还获取第一寄存器组中寄存的图像像素7、图像像素8、填充像素的像素值的累加像素值(或平均像素值或最大像素值),并将其输入缓存中子缓存1的地址4中。

而且在将图像像素8相邻的填充像素的像素值输入第一寄存器组的同时,将第3行的图像像素9的像素值输入第二寄存器组的寄存器1,由于此时图像像素9的像素值表示是第一个池化窗中第3行的累加像素值(或平均像素值或最大像素值),还将图像像素9的像素值输入缓存中子缓存2的地址0中。从子缓存1的地址0的位置处获取第一个池化窗中第2行的累加像素值(或平均像素值或最大像素值),即图像像素1的像素值,并将图像像素1的像素值输入第三寄存器组。还从子缓存2的地址0的位置处获取第一个池化窗中第3行的累加像素值(或平均像素值或最大像素值)并输入第三寄存器组,或者,在将图像像素9的像素值输入缓存中子缓存2的地址0的位置的同时将图像像素9的像素值输入第三寄存器组。通过加法器获得图像像素1和图像像素9的累加像素值或平均像素值,或者,通过比较器获得图像像素1和图像像素9的最大像素值,然后将图像像素1和图像像素9的累加像素值或平均像素值或最大像素值作为第一个池化窗的池化结果输出。于此同时,第二寄存器组的打拍一直在进行,由于采用的是不同的寄存器组和加法器/比较器,列维度的比较或累加不会影响第3行的比较或累加。

将图像像素10的像素值输入第二寄存器组,输入图像像素10的过程此处不再赘述。

将图像像素11的像素值输入第二寄存器组,输入图像像素11的过程此处不再赘述。而且还获取第二寄存器组中寄存的图像像素9、图像像素10、图像像素11的像素值的累加像素值(或平均像素值或最大像素值),并将其输入缓存中子缓存2的地址1中。

此时,从子缓存1的地址1的位置处获取第2个池化窗中第2行的累加像素值(或平均像素值或最大像素值),即图像像素1、图像像素2、图像像素3的累加像素值(或平均像素值或最大像素值)并输入第三寄存器组。还从子缓存2的地址1的位置处获取第2个池化窗中第3行的累加像素值(或平均像素值或最大像素值)并输入第三寄存器组,或者,在将图像像素9、图像像素10、图像像素11的像素值的累加像素值(或平均像素值或最大像素值)输入缓存中子缓存2的地址1的位置的同时将其输入第三寄存器组。通过加法器获得第2个池化窗内所有像素的累加像素值或平均像素值,或者,通过比较器获得第2个池化窗内所有像素中的最大像素值,然后将获得累加像素值或平均像素值或最大像素值作为第2个池化窗的池化结果输出。于此同时,第二寄存器组的打拍一直在进行,由于采用的是不同的寄存器组和加法器/比较器,列维度的比较或累加不会影响第3行的比较或累加。

在一些实现方式中,图3所示的图像像素值为8bit,在实际应用中,原始图像的图像像素值为16bit,因此将原始图像拆解成两个单个像素值为8bit的待处理的图像,char类型的并行度是short的两倍,因此,16bit类型,需要2个上述类似的硬件结构,例如处理像素值8bit的待处理的图像时,需要3个寄存器组以及3个加法器/比较器,则对于16bit的像素值,则共需要6个寄存器组以及6个加法器/比较器。可选的,当寄存器的位宽为16bit时,可采用3个寄存器组以及6个加法器/比较器。可以理解的,所需要的硬件的数量与硬件的位宽相适应,本领域技术人员可根据实际应用场景确定硬件数量。

可选地,写入子缓存的数据来自比较器输出的最大像素值或加法器输出的累加像素值。由于子缓存分开,每个子缓存独立控制,这里给每个子缓存分配一个地址。每个比较器/加法器都会输出地址的写使能,以将运算像素值输出给对应的子缓存。

图6为本申请一实施例提供的图像处理设备的结构示意图,如图6所示,本实施例的图像处理设备600包括:第一寄存器组601、第二寄存器组602和处理器603通过总线连接。可选地,本实施例的图像处理设备600还可以包括缓存604,缓存604通过总线与上述部件连接。可选地,本实施例的图像处理设备600还可以包括第三寄存器组605,第三寄存器组605通过总线与上述部件连接。可选地,本实施例的图像处理设备600还可以包括运算单元606,运算单元606通过总线与上述部件连接,本实施例中示出三个运算单元,3个运算单元分别与上述3个寄存器组对应。

其中,待处理的图像边缘设有填充像素。所述处理器603,用于将所述待处理的图像中第n行的像素的像素值依次输入第一寄存器组601中,所述n为大于等于1的任一整数,所述像素值包括图像像素值和填充像素值;当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组601中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组602。

在一些实施例中,所述处理器603,还用于:

当第n行中属于同一池化窗内的w个像素值输入至所述第一寄存器组601中时,获取所述w个像素值的运算像素值,所述池化窗的宽度为w个像素,所述池化窗的高度为h个像素,所述池化窗根据预设行步长沿行方向滑动并根据预设列步长沿列方向滑动;

当获得同一池化窗内每行的w个像素值的运算像素值时,根据每行的w个像素值的运算像素值,确定所述池化窗中w*h个像素值的运算像素值。

在一些实施例中,所述第一寄存器组601或所述第二寄存器组602至少包括w个寄存器,每个寄存器用于寄存单个像素值。

在一些实施例中,所述处理器603,还用于在获取所述w个像素值的运算像素值之后,将所述w个像素值的运算像素值存储至缓存604中。

在一些实施例中,所述缓存604至少包括h个子缓存,同一池化窗内不同行的w个像素值的运算像素值存储在不同的子缓存中。

在一些实施例中,同一池化窗内不同行的w个像素值的运算像素值存储在相应子缓存604中的相同位置。

在一些实施例中,所述处理器603在根据每行的w个像素值的运算像素值,确定所述池化窗中w*h个像素值的运算像素值时,具体用于:

当获得所述池化窗中最后一行的w个像素值的运算像素值时,则在将所述最后一行的w个像素值的运算像素值存储至所述缓存604的同时,将所述最后一行的w个像素值的运算像素值输入第三寄存器组605中;

从所述缓存604中读取所述池化窗内其它h-1行中每行的w个像素值的运算像素值,并输入所述第三寄存器组605中;

对所述第三寄存器组605中寄存的h个运算像素值进行运算,确定所述池化窗中w*h个像素值的运算像素值。

在一些实施例中,所述处理器603,还用于:

在获得第n+h行中w个像素值的运算像素值后,将所述缓存604中存储的第n行中相应列方向的w个像素值的运算像素值替换为所述第n+h行中w个像素值的运算像素值。

在一些实施例中,所述处理器603在获取所述w个像素值的运算像素值时,具体用于:根据池化模式对所述w个像素值进行运算,得到所述运算像素值。

在一些实施例中,若所述池化模式为最大池化,则所述运算像素值为最大像素值;若所述池化模式为均值池化,则所述运算像素值为平均像素值或累加像素值。

在一些实施例中,所述处理器603,在根据池化模式对所述w个像素值进行运算,得到所述运算像素值时,具体用于:将所述第一寄存器组601或所述第二寄存器组602中寄存的像素值,输出给运算单元606,以使所述运算单元606输出所述运算像素值;以及获取所述运算单元606输出的所述运算像素值。

在一些实施例中,所述处理器603,还用于:

若所述池化模式为最大池化,将所述运算单元606配置为比较器;

若所述池化模式为均值池化,将所述运算单元606配置为加法器。

在一些实施例中,所述处理器603,还用于:根据所述池化窗的大小,对所述运算单元606的输入进行配置。

在一些实施例中,输出相邻行中w个像素值的运算像素值的运算单元606分别为第一运算单元和第二运算单元,输出所述池化窗中w*h个像素值的运算像素值的运算单元606为第三运算单元。

在一些实施例中,若所述池化模式为最大池化,则所述填充像素值为最小像素值;

若所述池化模式为均值池化,则所述填充像素值为0。

在一些实施例中,所述处理器603,还用于对原始图像进行分层处理,获得多层子图像;

所述每层子图像中每个像素的像素值为原始图像中每个像素的相同位的像素值;

所述待处理的图像为所述多层子图像中的任一子图像。

可选地,本实施例的图像处理设备600还可以包括:用于存储程序代码的存储器(图中未示出),存储器用于存储程序代码,当程序代码被执行时,所述图像处理设备600可以实现上述的技术方案。

本实施例的图像处理设备,可以用于执行图2及对应方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本申请另一实施例还提供一种图像处理设备,该图像处理设备包括存储器和处理器;存储器用于存储程序指令,处理器用于调用存储器中的程序指令执行上述各实施例的方案。

图7为本申请一实施例提供的可移动平台的结构示意图,如图7所示,本实施例的可移动平台700可以包括:第一寄存器组701、第二寄存器组702和处理器703通过总线连接。可选地,本实施例的可移动平台700还可以包括缓存704,缓存704通过总线与上述部件连接。可选地,本实施例的可移动平台700还可以包括第三寄存器组705,第三寄存器组705通过总线与上述部件连接。可选地,本实施例的可移动平台700还可以包括运算单元706,运算单元706通过总线与上述部件连接,本实施例中示出三个运算单元,3个运算单元分别与上述3个寄存器组对应。

其中,待处理的图像边缘设有填充像素。所述处理器703,用于将所述待处理的图像中第n行的像素的像素值依次输入第一寄存器组701中,所述n为大于等于1的任一整数,所述像素值包括图像像素值和填充像素值;当将所述第n行中最后一个图像像素值的相邻填充像素值输入所述第一寄存器组701中时,将所述图像中第n+1行的第一个图像像素值输入第二寄存器组702。

在一些实施例中,所述处理器703,还用于:

当第n行中属于同一池化窗内的w个像素值输入至所述第一寄存器组701中时,获取所述w个像素值的运算像素值,所述池化窗的宽度为w个像素,所述池化窗的高度为h个像素,所述池化窗根据预设行步长沿行方向滑动并根据预设列步长沿列方向滑动;

当获得同一池化窗内每行的w个像素值的运算像素值时,根据每行的w个像素值的运算像素值,确定所述池化窗中w*h个像素值的运算像素值。

在一些实施例中,所述第一寄存器组701或所述第二寄存器组702至少包括w个寄存器,每个寄存器用于寄存单个像素值。

在一些实施例中,所述处理器703,还用于在获取所述w个像素值的运算像素值之后,将所述w个像素值的运算像素值存储至缓存704中。

在一些实施例中,所述缓存704至少包括h个子缓存,同一池化窗内不同行的w个像素值的运算像素值存储在不同的子缓存中。

在一些实施例中,同一池化窗内不同行的w个像素值的运算像素值存储在相应子缓存704中的相同位置。

在一些实施例中,所述处理器703在根据每行的w个像素值的运算像素值,确定所述池化窗中w*h个像素值的运算像素值时,具体用于:

当获得所述池化窗中最后一行的w个像素值的运算像素值时,则在将所述最后一行的w个像素值的运算像素值存储至所述缓存704的同时,将所述最后一行的w个像素值的运算像素值输入第三寄存器组705中;

从所述缓存704中读取所述池化窗内其它h-1行中每行的w个像素值的运算像素值,并输入所述第三寄存器组705中;

对所述第三寄存器组705中寄存的h个运算像素值进行运算,确定所述池化窗中w*h个像素值的运算像素值。

在一些实施例中,所述处理器703,还用于:

在获得第n+h行中w个像素值的运算像素值后,将所述缓存704中存储的第n行中相应列方向的w个像素值的运算像素值替换为所述第n+h行中w个像素值的运算像素值。

在一些实施例中,所述处理器703在获取所述w个像素值的运算像素值时,具体用于:根据池化模式对所述w个像素值进行运算,得到所述运算像素值。

在一些实施例中,若所述池化模式为最大池化,则所述运算像素值为最大像素值;若所述池化模式为均值池化,则所述运算像素值为平均像素值或累加像素值。

在一些实施例中,所述处理器703,在根据池化模式对所述w个像素值进行运算,得到所述运算像素值时,具体用于:将所述第一寄存器组701或所述第二寄存器组702中寄存的像素值,输出给运算单元706,以使所述运算单元706输出所述运算像素值;以及获取所述运算单元706输出的所述运算像素值。

在一些实施例中,所述处理器703,还用于:

若所述池化模式为最大池化,将所述运算单元706配置为比较器;

若所述池化模式为均值池化,将所述运算单元706配置为加法器。

在一些实施例中,所述处理器703,还用于:根据所述池化窗的大小,对所述运算单元706的输入进行配置。

在一些实施例中,输出相邻行中w个像素值的运算像素值的运算单元706分别为第一运算单元和第二运算单元,输出所述池化窗中w*h个像素值的运算像素值的运算单元706为第三运算单元。

在一些实施例中,若所述池化模式为最大池化,则所述填充像素值为最小像素值;

若所述池化模式为均值池化,则所述填充像素值为0。

在一些实施例中,所述处理器703,还用于对原始图像进行分层处理,获得多层子图像;

所述每层子图像中每个像素的像素值为原始图像中每个像素的相同位的像素值;

所述待处理的图像为所述多层子图像中的任一子图像。

可选地,本实施例的可移动平台700还可以包括:用于存储程序代码的存储器(图中未示出),存储器用于存储程序代码,当程序代码被执行时,所述可移动平台700可以实现上述的技术方案。

本实施例的可移动平台,可以用于执行图2及对应方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图8为本申请另一实施例提供的可移动平台的结构示意图,如图8所示,本实施例的可移动平台800可以包括:可移动平台本体801以及图像处理设备802。

其中,所述图像处理设备802安装于所述可移动平台本体801上。图像处理设备802可以是独立于可移动平台本体801的设备。

其中,图像处理设备802可以采用图6所示装置实施例的结构,其对应地,可以执行图2及其对应方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:只读内存(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 拍摄设备的图像处理方法、拍摄设备及可移动平台
  • 可移动平台的图像处理方法、装置、可移动平台及介质
技术分类

06120112182318