基于嵌入式处理器的积分图快速生成方法和装置
技术领域
本发明涉及一种生成积分图的方法和装置,特别涉及一种基于嵌入式处理器的积分图快速生成方法和装置。
背景技术
积分图(Integral-Image)的概念是由Viola等人于2001年提出的,为图像处理领域提供了新的特征提取工具。通过构造积分图像,在计算某一矩形区域内的像素和时能够通过简单3次加法操作完成这一繁琐的过程,利用这样的特点加快了图像处理中特征检测和提取的速度。
积分图像可以通过对行和列分别实现前缀加法完成,前缀加法的实现方式成为了构建积分图像的关键。Blelloch等人最早提出了并行前缀加法的优化算法,通过构造多层次的扫描数据来实现前缀加法,目前效率较高的前缀算法均是由Belloch的算法演变而来,其优点在于减少了处理过程中的冗余计算,但这些算法都是针对一维数据处理,部分算法并不能很好的适应二维图像数据处理的要求,而且这些算法将产生大量的中间数据,中间数据的存储和访问对嵌入式处理系统而言无论从处理速度还是系统内存带宽上都将带来负面的影响;Terriberry等人对Belloch的一维算法做了扩展,试图在二维数据上应用,这样的处理方式会减少大量的冗余计算,但会产生大量的中间数据,而且数据间的依赖性会较强,需要考虑各个数据部分的交互。
上述研究成果虽然在积分图的计算中减少了大量的冗余运算,但是对于嵌入式处理系统而言这样的处理方法将会增加系统内存带宽、占用宝贵的高速缓存资源、增加各个数据间交互的负荷。随着图像处理技术在嵌入式系统上的广泛使用,需要一种能适用于嵌入式处理系统的实现方法。
发明内容
有鉴于此,本发明所要解决的技术问题是提供一种在嵌入式系统下生成积分图的方法和装置,该方法提高积分图的生成速度,改善系统内存带宽,提高了整个图像处理系统的性能。
本发明的目的之一是提出一种基于嵌入式处理器的积分图快速生成方法;本发明的目的之二是提出一种基于嵌入式处理器的积分图快速生成装置。
本发明的目的之一是通过以下技术方案来实现的:
本发明提供的基于嵌入式处理器的积分图快速生成方法,包括以下步骤:
S1:从设备前端获取原始图像;
S2:在嵌入式处理器片上高速缓存中划分设置两片区域,所述两片区域包括缓存区域A和缓存区域B;
S3:以一个数据单位进行原始数据的搬移和积分图数据的生成;
S4:重复步骤S3直到整个图像的所有行完成并输出积分图。
进一步,所述步骤S3中的积分图数据是通过以下步骤来实现的:
S31:在某T时刻通过嵌入式处理器对缓存区域A的原始图像数据进行处理生成积分图数据;将生成的积分图数据写入缓存区域B;从外部低速存储区向缓存区域B中写入对应行单位的原始图像数据;将缓存区域B上(T-2)时刻生成的积分图数据写入外部低速存储区;
S32:在S31步骤事件完成后,时间推进到(T+1)时刻,嵌入式处理器处理缓存区域B的原始图像数据;将生成的积分图数据写入缓存区域A;从外部低速存储区向缓存区域A中搬移对应单位行原始图像数据;将缓存区域A上(T-1)时刻生成的积分图数据写入外部低速存储区。
进一步,所述缓存区域A和缓存区域B为划分高速缓存片。
进一步,所述嵌入式处理器为积分值生成和总线数据搬移控制单元。
本发明的目的之二是通过以下技术方案来实现的:
本发明提供的基于嵌入式处理器的积分图快速生成装置,包括图像输入单元、片上高速缓存、外部内存系统、嵌入式处理器;
所述图像输入单元,用于从设备前端获取原始图像;
所述片上高速缓存,用于缓存一个数据单位各个坐标位置的原始图像数值和生成的积分值;
所述外部内存系统,用于存储内部高速缓存回写的整帧图像上各个坐标点的积分值;
所述嵌入式处理器,用于利用片上高速缓存的数据生成积分值的计算单元同时通过系统总线对数据的搬移进行控制。
进一步,所述嵌入式处理器包括缓存区域A控制单元和缓存区域B控制单元;
所述缓存区域A控制单元,用于在T时刻通过嵌入式处理器对缓存区域A的原始图像数据进行处理生成积分图数据;将生成的积分图数据写入缓存区域B;从外部低速存储区向缓存区域B中写入对应行单位的原始图像数据;将缓存区域B上(T-2)时刻生成的积分图数据写入外部低速存储区;
所述缓存区域B控制单元,用于在T+1时刻处理缓存区域B的原始图像数据;将生成的积分图数据写入缓存区域A;从外部低速存储区向缓存区域A中搬移对应单位行原始图像数据;将缓存区域A上(T-1)时刻生成的积分图数据写入外部低速存储区。
进一步,所述缓存区域A和缓存区域B为嵌入式处理器片上高速缓存。
进一步,所述嵌入式处理器为积分值生成和总线数据搬移控制单元。
本发明的优点在于:本发明采用基于嵌入式处理器的一种积分图(Integral-Image)的快速生成方法和装置,采用了一种适合嵌入式处理器架构的图像读取顺序:从左向右、从上向下的图像帧光栅扫描顺序生成积分图;利用嵌入式处理器片上存储区缓存一个单位的积分图数据,在下一个单位处理时刻再将该数据回写到外部的低速存储区;利用硬件并行化和流水化的思想,在时序逻辑上形成以行数据为单位的原始数据搬移和积分图生成的流水操作;
本方法的优点在于:(1)充分利用已有计算结果,将结果存储在系统高速缓存中,冗余计算少、处理效率高;(2)数据处理采用从左到右,从上到下方式,这样的方式只需要缓存上一行生成的积分图,占用系统高速缓存资源少;(3)利用硬件流水的思想实现软件流水,在高速缓存中开辟两片存储区域利用ping-pong思想,实现处理的流水化,提高执行效率;(4)利用上述1、2、3点的处理方式,使得对外部低速存储器的read/write操作大大减少,减轻和改善图像处理系统内存带宽负荷、避免系统拥塞、提高系统执行效率。对整个图像处理系统的性能都有极大的提高。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
图1为积分图处理流程;
图2为积分图处理系统架构;
图3为积分图处理时序;
图4为基于嵌入式处理器的积分图快速生成方法流程图。
具体实施方式
以下将结合附图,对本发明的优选实施例进行详细的描述;应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
图1为积分图处理流程,图2为积分图处理系统架构,图3为积分图处理时序,图4为基于嵌入式处理器的积分图快速生成方法流程图,如图所示:本发明提供的基于嵌入式处理器的积分图快速生成方法,包括以下步骤:
S1:从设备前端获取原始图像;
S2:在嵌入式处理器片上高速缓存中划分设置两片区域,所述两片区域包括缓存区域A和缓存区域B;所述缓存区域A和缓存区域B为高速缓存片。所述嵌入式处理器为积分值生成和总线数据搬移控制单元。所述高速缓存A片和高速缓存B片,是在逻辑上从嵌入式处理器片上物理缓存中划分,用于实现积分图生成的ping-pong操作,提高执行效率。
S3:以一个数据单位进行原始数据的搬移和积分图数据的生成;按照一种从左向右、从上向下的图像帧光栅扫描顺序生成积分图(Integral-Image);
所述步骤S3中的积分图数据是通过以下步骤来实现的:
S31:在某T时刻通过嵌入式处理器对缓存区域A的原始图像数据进行处理生成积分图数据;将生成的积分图数据写入缓存区域B;从外部低速存储区向缓存区域B中写入对应行单位的原始图像数据;将缓存区域B上(T-2)时刻生成的积分图数据写入外部低速存储区;
S32:在S31步骤事件完成后,时间推进到(T+1)时刻,嵌入式处理器处理缓存区域B的原始图像数据;将生成的积分图数据写入缓存区域A;从外部低速存储区向缓存区域A中搬移对应单位行原始图像数据;将缓存区域A上(T-1)时刻生成的积分图数据写入外部低速存储区。
S4:重复步骤S3直到整个图像的所有行完成并输出积分图。
本实施例还提供一个基于嵌入式处理器的积分图快速生成装置,利用嵌入式系统片上高速缓存、外部内存系统在存取速度上的差别、系统外部存储器在读写上的Burst(并发)特性加快了积分图的生成、改善了系统带宽效率;
该装置包括图像输入单元、片上高速缓存、外部内存系统、嵌入式处理器;
所述图像输入单元,用于从设备前端获取原始图像;
所述片上高速缓存,用于缓存一个数据单位各个坐标位置的原始图像数值和生成的积分值;
所述外部内存系统,用于存储内部高速缓存回写的一个数据单位上各个坐标点的积分值;
所述嵌入式处理器,用于利用片上高速缓存的数据生成积分值的计算单元同时通过系统总线对数据的搬移进行控制。所述嵌入式处理器为积分值生成和总线数据搬移控制单元。
所述嵌入式处理器包括缓存区域A控制单元和缓存区域B控制单元;
所述缓存区域A控制单元,用于在T时刻通过嵌入式处理器对缓存区域A的原始图像数据进行处理生成积分图数据;将生成的积分图数据写入缓存区域B;从外部低速存储区向缓存区域B中写入对应行单位的原始图像数据;将缓存区域B上(T-2)时刻生成的积分图数据写入外部低速存储区;
所述缓存区域B控制单元,用于在T+1时刻处理缓存区域B的原始图像数据;将生成的积分图数据写入缓存区域A;从外部低速存储区向缓存区域A中搬移对应单位行原始图像数据;将缓存区域A上(T-1)时刻生成的积分图数据写入外部低速存储区。
所述缓存区域A和缓存区域B为高速缓存片。所述高速缓存A片和高速缓存B片,是在逻辑上从嵌入式处理器片上物理缓存中划分,用于实现积分图生成的ping-pong操作,提高执行效率。
在嵌入式处理器片上ram中逻辑上开辟两个缓存区域A/B,用于缓存一个数据单位的各个坐标位置的原始图像数据和积分值;当本行各个坐标位置上的积分值已经生成后,向外部内存系统(external-mem)回写(Write-back)本片缓存区域中上一个数据单位各个坐标点上的积分值,如图1所示;在这样的处理流程下,在整个积分图生成的过程中只需要对外部低速内存系统(external-mem)中每行原始像素进行一次读操作,避免了对外部低速内存系统的多次读操作,并且将多次独立的读操作替换为一次并发(Burst)的读操作,这将极大的改善内存带宽效率,加快从外部存储系统中获取数据的速度,这个系统的架构如图2所示;
借鉴硬件处理的并行化思想,利用CPU/SOC现有资源,实现软件处理的并行化,其基本思想:
在嵌入式处理器内部高速缓存中开辟两段缓存A/B,T时刻PE(process-engine)处理A片中的数据并产生结果输出给B片,同时将外部低速内存系统(external-mem)中的待(T+1)时刻处理的数据搬移到B片;等待T时刻的PE处理完毕、T时刻向B片中搬移(T+1)时刻数据操作完成、B片上(T-2)时刻生成的积分数据回写到外部低速存储区;
由上述三个事件驱动,时序进入(T+1)时刻,PE(process-engine)处理B片中的数据并产生结果输出给A片,同时将外部低速内存系统(external-mem)中的待(T+2)时刻处理的数据搬移到A片;等待(T+1)时刻的PE处理完毕、(T+1)时刻向A片中搬移(T+2)时刻数据操作完成、A片上(T-1)时刻生成的积分数据回写到外部低速存储区。如此循环,使得对实际工作单元PE看来,始终是向内部高速缓存(Internal-mem)中取到数据,处理时序流程如图3所示。
以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。