一种基于ASIC设计的BM3D集合装置转让专利

申请号 : CN201010102701.8

文献号 : CN101789043A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 诸悦董鹏宇

申请人 : 上海富瀚微电子有限公司

摘要 :

本发明提供的一种基于ASIC设计的BM3D集合装置,耦接于3D降噪模块和外部存储单元,该集合装置包括:写出单元,用以接收3D降噪模块输出的图像处理信息,并将图像块处理信息存入外部存储单元;读取单元,用以从外部存储单元读取图像处理信息;重构单元,用以从读取单元接收图像处理信息,并根据图像处理信息进行图像重构;地址管理单元,管理所述外部存储单元的地址,并提供地址信息给所述写出单元和所述读取单元。其中,图像处理信息包括图像块、块坐标、块权重和组信息。该技术方案解决了目前技术条件下,软件不能进行BM3D实时处理的情况,这种技术利用ASIC的设计方式,使得BM3D集合装置能够进行实时操作。

权利要求 :

1.一种基于ASIC设计的BM3D集合装置,耦接于3D降噪模块(1)和外部存储单元(2),其特征在于,所述集合装置包括:写出单元(3),用以接收所述3D降噪模块(1)输出的图像处理信息,并将所述图像处理信息存入所述外部存储单元(2);

读取单元(4),用以从所述外部存储单元(2)读取所述图像处理信息;

重构单元(5),用以从所述读取单元(4)接收所述图像处理信息,并根据所述图像处理信息进行图像重构;以及地址管理单元(6),根据所述图像处理信息管理所述外部存储单元(2)的地址信息,并提供所述地址信息给所述写出单元(3)和所述读取单元(4)。

2.如权利要求1所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述图像处理信息包括图像块、块坐标、块权重以及组信息。

3.如权利要求1所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述写出单元(3)包括数据写出模块(301)和写出管理模块(302);

其中,所述写出管理模块(302)接收所述图像处理信息及所述地址信息,并根据所述图像处理信息及所述地址信息计算出所述外部存储单元(2)的存储地址;

所述数据写出模块(301)接收所述图像处理信息,从所述写出管理模块(302)获得所述存储地址,并根据所述存储地址将所述图像处理信息存储至所述外部存储单元(2)。

4.如权利要求1所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述读取单元(4)包括数据读取模块(401)和读取管理模块(402);

其中,所述读取管理模块(402)接收所述地址信息,根据所述地址信息计算出所述外部存储单元(2)的读取地址;

所述数据读取模块(401)从所述读取管理模块(402)获得所述读取地址,并根据所述读取地址读取所述外部存储单元(2)内的所述图像处理信息。

5.如权利要求1所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述外部存储单元(2)为DRAM单元。

6.如权利要求1所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述地址管理单元(6)通过链表结构管理所述外部存储单元(2)的地址信息。

7.如权利要求2所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述重构单元(5)包括块累加模块(501)、块累加缓冲模块(502)和图像重构模块(503);

其中,所述块累加模块(501)根据所述数据读取模块(401)每次读取的图像处理信息与所述块累加缓冲模块(502)的当前块累加值进行运算,产生累加结果;所述块累加缓冲模块(502)根据所述数据读取模块(401)每次读取的图像处理信息产生当前块累加值,保存每次产生的所述累加结果;所述图像重构模块(503),接收所述累加结果,并进行图像重构。

8.如权利要求7所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述数据读取模块(401)每次读取的图像处理信息的数据量与所述块累加缓冲模块(502)存储量大小相适应。

9.如权利要求8所述的一种基于ASIC设计的BM 3D集合装置,其特征在于,所述累加结果指集合过程中对于任何一块图像中的各个像素的加权平均累加数据,包括像素累加数据以及权重累加数据。

10.如权利要求2所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述块坐标包括行号及列号。

11.如权利要求10所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述图像块信息按行索引或按列索引存入所述外部存储单元(2)。

12.如权利要求11所述的一种基于ASIC设计的BM3D集合装置,其特征在于,所述按行索引是指按照行号管理所述图像块信息,同一所述链表中存储的所述图像块信息包含同样的所述行号;所述按列索引是指按照所述列号管理所述图像块信息,同一所述链表中存储的所述图像块信息包含同样的所述列号。

说明书 :

技术领域

本发明涉及视频降噪算法,具体涉及一种基于ASIC设计的BM3D集合装置。

背景技术

BM3D(Block-Matching and 3D Filtering,块匹配和3D降噪)算法是目前已知降噪性能最高的通用图像/视频降噪算法,这种算法利用图像的自相关性和视频的时间相关性进行有效的降噪。。BM3D算法可以进行多次迭代运算,标准BM3D算法为两次迭代。BM3D算法的步骤包括块匹配,3D降噪以及集合。在块匹配步骤中,BM3D在当前帧以及参考帧中搜索与当前块类似的块,并将其集合为组;3D降噪步骤中对与匹配过程中产生的组进行变换,并在变换域中进行降噪后再将其变回空域,并计算权重;集合步骤对其3D降噪过程产生的组进行处理,逐个访问包含当前点的块,并对当前点的估计进行加权平均生成图像估计。
根据文献“Image denoising by sparse 3D transform-domaincollaborative filtering”(Dabov,K.et al,IEEE Transaction on ImageProcessing 16,2080-2095,2007),集合过程满足:
y^(x)=ΣxRXΣxmSxRwxRY^xmxR(x)ΣxRXΣxmSxRwxRXxm(x)
其中为重建图像值,x为其坐标。X为图像幅面,xR为原始图像块,为xR所对应的组,xm为包含于组内的匹配块,为图像块权重,为图像块xR中对应像素点x的值,(x)为图像块xR的支撑满足本质上集合过程是一个对像素点的多个估计进行加权平均的过程。在集合过程中,BM3D的组可以跨多个参考帧,这意味着每个参考帧的每个像素都可能牵涉到来自多个参考帧数量巨大的组。例如,对于720x576分辨率25fps的PAL制视频,BM3D取每组含8个8x8块,块步长为6的典型参数,则每帧图像仅亮度分量就包含11520个组,包含最多92160个8x8块,一次集合步骤运算仅图像数据量即高达5898240Byte,约为原始图像数据量的14.2倍。这意味着,平均每个亮度像素是多达14.2个块内对应像素的加权平均。虽然高冗余的数据量为BM3D带来良好的性能,却给BM3D的实现,尤其是BM3D实时处理的实现带来很大的困难。对于很多场合如视频监控、视频采集或者视频编码前后处理过程中希望能够对标清、高清格式或多路视频信号实时的进行降噪处理,此时采用软件方式实现BM3D就显得力不从心了,难以满足实时处理的速度要求。

发明内容

本发明要解决的技术问题是提供的一种基于ASIC设计的BM3D集合装置,该技术方案解决了目前技术条件下,软件不能进行BM3D实时处理的情况,这种技术利用ASIC的设计方式,使得BM3D集合装置能够进行实时操作。
为解决上述技术问题,本发明提供的一种基于ASIC设计的BM3D集合装置,耦接于3D降噪模块和外部存储单元,所述集合装置包括:写出单元,用以接收所述3D降噪模块输出的图像处理信息,并将所述图像处理信息存入所述外部存储单元;读取单元,用以从所述外部存储单元读取所述图像处理信息;重构单元,用以从所述读取单元接收所述图像处理信息,并根据所述图像处理信息进行图像重构;以及地址管理单元,根据所述图像处理信息管理所述外部存储单元的地址信息,并提供所述地址信息给所述写出单元和所述读取单元。
进一步地,所述图像处理信息包括图像块、块坐标、块权重以及组信息。所述写出单元包括写出管理模块和数据写出模块;其中,所述写出管理模块接收所述图像处理信息及所述地址信息,并根据所述图像处理信息及所述地址信息计算出所述外部存储单元的存储地址;所述数据写出模块接收所述图像处理信息,从所述写出管理模块获得所述存储地址,并根据所述存储地址将所述图像处理信息存储至所述外部存储单元。所述读取单元包括数据读取模块和读取管理模块;其中,所述读取管理模块接收所述地址信息,根据所述地址信息计算出所述外部存储单元的读取地址;所述数据读取模块从所述读取管理模块获得所述读取地址,并根据所述读取地址读取所述外部存储单元内的所述图像处理信息。所述外部存储单元为DRAM单元。所述地址管理单元通过链表结构管理所述外部存储单元的地址信息。所述重构单元包括块累加模块、块累加缓冲模块和图像重构模块;其中,所述块累加模块根据所述数据读取模块每次读取的图像处理信息与所述块累加缓冲模块的当前块累加值进行运算,产生累加结果;所述块累加缓冲模块根据所述数据读取模块每次读取的图像处理信息产生当前块累加值,保存每次产生的所述累加结果;所述图像重构模块,接收所述累加结果,并进行图像重构。
更进一步地,所述数据读取模块每次读取的图像处理信息的数据量与所述块累加缓冲模块存储量大小相适应。所述累加结果指集合过程中对于任何一块图像中的各个像素的加权平均累加数据,包括像素累加数据以及权重累加数据。所述块坐标包括行号及列号。所述图像块信息按行索引或按列索引存入所述外部存储单元。所述按行索引是指按照行号管理所述图像块信息,同一所述链表中存储的所述图像块信息包含同样的所述行号;所述按列索引是指按照所述列号管理所述图像块信息,同一所述链表中存储的所述图像块信息包含同样的所述列号。
本发明在各种BM3D参数下每一个图像块数据均只需读写一次,消除了外部存储器重复访问。除了图像数据外,本发明的主要外部存储以及访问开销为块权重,块坐标以及链表指针。而对于合理的参数与数据格式,这些开销不大于10%。并且图像累加与重构过程只需利用少量的存储器,从而使累加与重构过程所需缓冲的内部存储器实现成为可能,由此消除了累加与重构过程的外部存储器访问。进一步地,由于本发明中累加数据的精度并不影响外部存储器占用与访问带宽开销,因此可以采用更高的字长以提升算法的效果并减少溢出的可能。
在典型的BM3D参数下(8x8块,块步长为6,每组8块,9参考帧,两遍处理),本发明取参数:每链表节点存储15图像块,按行索引,图像累加缓冲为4行,每8x8图像块分为两个4x8块处理,累加数据为32bit。那么即使不丢弃块,处理1D1标清亮度数据的集合器外部存储带宽也仅约600MB/s,额外带宽开销低于5%。此外,本发明仍可与3D降噪过程中的块选择性丢弃技术配合使用,并可获取相当的带宽节省程度。例如典型参数下若在3D降噪过程中选择性的丢弃一半块,配合应用本发明后可将存储器需求降低至300MB/s以下,却仍保持降噪性能,即相对不采用块选择性丢弃时不足1dB的PSNR损失。
本发明通过恰当的安排链表节点结构与图像块的划分使得大部分数据访问为突发友好的。因此当外部存储器使用DDR SDRAM实现时,仍可以获得高访问效率。由于数据结构简单,可预取以及流水化处理,使得本发明在各种BM3D的配置参数下都可以容易的达到高工作频率,利于满足高清与多路实时处理所需的高吞吐率需求。

附图说明

图1本实施例所提供的一种基于ASIC设计的BM3D集合装置的实现框图。
图2本实施例所提供的一种基于ASIC设计的BM3D集合装置进一步实现的功能模块。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下结合附图和具体实施例分析本发明在BM3D实时处理ASIC上实现装置结构与应用流程。
本实施例中,所处理的BM3D参数选择如下:块尺寸B为8,块步长为6,每组8块,单路PAL格式D1视频,参考帧数为9。每个链表节点存储15个图像块,按行索引,图像累加缓冲行D为4,以对亮度数据进行第一遍集合处理分析为例。需要说明一点的是,块尺寸、块步长、组,视频制式的选取,以及链表节点存储的图像块,这些参数的选择并不影响本发明所要达到的有益效果,只要选取的上述参数为本领域技术人员熟知的技术特征均可以作为本发明的实施例,也就是说选择其他本领域技术人员熟知的典型参数照样使得本发明达到有益的效果。
如图1,本实施例所提供的一种基于ASIC设计的集合装置,耦接于3D降噪模块1和外部存储单元2,所述集合装置包括:写出单元3,用以接收3D降噪模块1输出的图像处理信息,并将图像处理信息存入外部存储单元2;读取单元4,用以从外部存储单元2读取所述图像处理信息;重构单元5,用以从读取单元4接收所述图像处理信息,并根据所述图像处理信息进行图像重构;地址管理单元6,管理所述外部存储单元2的存储地址信息,并提供地址信息给所述写出单元3和所述读取单元4;其中,所述图像处理信息包括图像块、块坐标、块权重和组信息。所述组信息包含了但不限于组中包含的块所从属的图像,该图像从属的视频流以及迭代处理编号。所述地址信息可以包括但不限于链表可用标志,链表指针,链表头指针,链表尾指针,链表尾节点标志以及链表节点中图像块存储空间的使用情况等信息,并且地址管理单元可利用但不限于以上部分或所有类型的地址信息管理外部存储单元2的存储地址。本领域技术人员熟知的各种链表数据结构及相关操作手段均可以用于本发明的具体实施例,例如链表可用标志可以但不限于使用链表头指针的特定值表示,链表尾节点标志可以但不限于使用链表指针的特定值表示,链表节点中图像块存储空间的使用情况信息可以但不限于设定图像处理信息的特定值或单独存储于地址管理单元6内部和/或外部存储器2内的标志信息表示。地址信息可以但不限于存储于地址管理单元6内部和/或外部存储单元2内,可以但不限于在地址管理单元6的控制下自外部存储单元2取出或写入外部存储单元2。
地址管理单元6管理外部存储单元2的地址信息。本实施例中,地址管理单元6采用自链表头访问的链表管理方式管理外部存储单元2,每一链表节点存放一个或多个图像块以及相关的图像处理信息。如图3,外部存储单元2内每链表节点包含16个64byte块共1KiB。其中第2至16块存储15个编号为0到14的8x8图像块,第一个64byte块又分为16个4byte子块。其中第1至15子块中存储对应图像块的权重以及列号,第16子块存储链表下一节点的指针以及指针的纠错数据以及链尾标记。全部图像块按光栅扫描顺序存储。
进一步的,本实施例采用按行索引的图像处理信息管理方式,每个行链表的链表节点的添加均自链表头部进行。因此本实施例中,地址信息包括链表头指针,链表头节点中图像块存储空间的占用情况以及链表尾节点标记,表示链表当前存储节点地址的当前链表指针即为链表头指针。链表头节点图像块存储空间的占用情况采用链表头节点中已写入的图像块数量表示,0表示空,15表示满。采用其他方式管理链表也可以作为实施例采用,例如采用自链表尾添加节点的方式管理链表,此时需要在地址信息中添加链表尾指针,并修改相关的链表操作步骤,采用其他本领域人员所熟知的链表管理方式也是允许的。
进一步的,按行索引时每个图像的每一行具有一个对应的行链表,当进行多视频流以及多遍处理时,每一个视频流的每一遍处理的每个图像的每一行都具有各自独立的链表,因此地址管理单元6管理多个行链表。地址管理单元6根据组信息确定当前需要写出的图像处理信息属于哪个图像,并利用块坐标进一步确定其所对应于哪个行链表(行索引时)或列链表(列索引时)。当第一次出现对于某一个图像的写操作时,地址管理单元初始化该图像的全部行链表(行索引时)或列链表(列索引时)为空的。对于本实施例所涉及的典型BM3D标准算法两遍处理PAL制视频的情况,地址管理单元6共需要管理(576-7)×2×9=10242个行链表,对应于10242个行链表头指针以及10242个链表头节点中图像块存储空间的占用情况信息。但由于BM3D算法的块匹配步骤的搜索范围实际限制了组中各个块的距离,因此地址管理单元6可以但不限于使用一个小的内部SRAM作为缓冲存储当前可能被访问到的地址信息,而将其余地址信息保存在外部存储单元2内,此时地址管理单元6可以但不限于采用滑窗缓冲方式管理地址信息,在每行开始写出时写回缓冲内更新后的地址信息并读取外部存储单元2中所保存的地址信息,如此可大幅降低内部存储器容量需求。地址管理单元6可由组信息得到所述每行开始写出等控制信息。但是由于外部存储单元2中的地址信息访问属于临界区,需要处理访问冲突问题,可以但不限于在外部存储单元2内使用多个地址信息存储空间消除访问冲突引发的性能损失。
本实施例中外部存储器单元2从数据写出模块301接受链表数据地址与链表数据,为地址管理单元6提供空闲链表指针及行链表头指针以及行链表头节点中图像块存储空间使用情况,当需要时接受来自地址管理单元6的地址信息以及将地址信息发送至地址管理单元6,接受数据读取模块401的读取地址并返回所对应的读取数据至数据读取模块401。
写出单元3包括数据写出模块301,写出管理模块302,数据写出模块301从外部3D降噪模块1接收图像块、块权重与块坐标,从写出管理模块302接收当前写入的图像块所对应的链表数据地址,将图像块以及与其相关的块权重及块坐标数据保存到外部存储单元2中的适当位置上。这里外部存储单元2为DRAM以及DRAM控制器。在本实施例中,由于选取的链表节点数据地址整齐,此过程中对DRAM的访问为突发友好的,可以获得高效率。
写出管理模块302从外部3D降噪模块1接收块坐标,根据处理编号与行号从地址管理单元6获得对应的行链表头指针以及链表头节点中已写入的图像块数量,计算出当前写入图像处理信息所对应的链表数据地址,并将其提供给数据写出模块,同时写出管理模块302通过地址管理单元6更新地址信息。本实施例中写出管理模块302总是使用链表头节点中编号最小的可用图像处理信息存储空间,其编号等于链表头节点中已写入的图像块数量,每次写出管理模块302控制写入一个图像块后,地址管理单元6将当前链表头节点中已写入的图像块数量加1。若写出管理模块302所试图获取的当前行链表标志为空,或者当前链表节点已满,则地址管理单元6为当前行链表分配新的节点。当需要分配新的节点时,地址管理单元6将空闲链表头指针指向的空闲链表节点分配为当前链表新的头链表节点,将链表头节点中已写入的图像块数量置为0并更新空闲链表头指针指向空闲链表头的后继节点。由于空闲链表被所有的帧/流/处理共用,因此地址管理单元6在内部管理一个空闲链表即可,相应的仅需要一个空闲链表头指针以及一个空闲链表尾指针。
读取单元4包括数据读取模块401和读取管理模块402。读取单元4与地址管理单元6配合从外部存储单元2中获取图像处理信息并将其送至重构单元5中进行图像重构,此一过程按行进行或按列进行,对应于地址管理单元6管理地址信息的方式是按行索引或按列索引。本实施例采用按行索引的方式,因此读取单元4按行进行读取,利用地址管理单元6所提供的行链表头指针起的各个链表节点指针逐一的访问各个链表节点,并获取图像处理信息,并将其送至重构单元5。
数据读取模块401自读取管理模块402获得当前读取链表数据地址,根据图3所示数据组织结构计算当前读取地址并将其发送至外部存储单元2,并获得自外部存储单元2返回的链表数据。由于块累加缓冲模块502存储了4行累加数据,因此数据读取模块401每次读取一个8x4图像块。与写入操作相对应的,此一外部存储器2访问也可以获得高效率。
进一步的,根据不同的块累加缓冲模块502存储累加数据行数以及不同的块尺寸,数据读取模块401可能每次读取图像块的部分或者全部。一般的,数据读取模块401每次读取一个图像块的一个划分Ωn。本实施例采用按行索引,因此图像行的重构也按行进行。在图像行M的重构过程中,数据读取模块401在读取管理模块402与地址管理单元6配合下读取M对应行链表中所有图像块的划分Ω0以及M-4对应行链表中所有图像块的划分Ω1,并读取两个链表中图像块的对应列号以及对应块权重并发送至块累加模块501。当写出单元3已将包含某图像行像素的所有组内包含的图像处理信息写入外部存储单元2后,以上步骤即可对此图像行执行,也可推迟至适当的时刻执行。此步骤自0行开始按行号M递增的顺序逐行重复进行,直至一帧图像的全部行都已重构完毕。在其他实施例中,按列或按行号递减的顺序进行重构也是允许的,但一般按行号递增的顺序进行重构可获得更小的延迟。对于本实施例,16个64byte块组成的链表节点中第2至16个64byte块每次读取一半,而第一个64byte块需要全部读取。由于在整帧图像的处理过程中第一个64byte块被读取了两次,由此产生了不足3%的额外访问开销。若一次读取并处理完整的8x8图像块可以消除此外部存储单元2访问开销,但需要块累加缓冲模块502内包含两倍容量的存储器。
所述划分Ωn是有限平面整点集V中部分点(i,j)的集合,n∈[0,Nmax],为自然数集有:

其中,为空集
称整数W(Ω)为划分集Ω={Ωn}的宽度,若满足


称整数H(Ω)为划分集Ω={Ωn}的高度,若满足


对于本实施例,V为8×8图像块,选取两个划分Ω0/Ω1为8×4矩形,Ω0为图像块的前4行,Ω1为图像块的后4行。即Ω0={(i,j)|0≤i<8,0≤j<4},Ω1={(i,j)|0≤i<8,4≤j<8}。明显的W(Ω)=8,H(Ω)=4。而在其他可能的实施例中,划分可能不是矩形,且不同的划分可能具有不同的形状。本发明中,划分的选取相对任意,但需满足H(Ω)≤D(按行索引时)或W(Ω)≤D(按列索引时),其中D为块累加缓冲模块502内存储的累加数据行数(按行索引时)或列数(按列索引时)。划分数量以及形状通常结合链表节点数据结构优化,使得每一次读取操作为突发优化,以提高外部存储单元2的访问效率。
读取管理模块402从地址管理单元6获取当前读取的链表指针及链表节点中已写入的图像块数量,计算当前读取链表数据地址并发送至数据读取模块401。由于仅有链表头节点可能是未满的,所以对于链表头节点外的所有节点,已写入图像块数量为已知。读取管理模块402与写出管理模块302通过地址管理单元6共同维护空闲链表,区别在于读取管理模块402总是向空闲链表尾添加节点,而写出管理模块302总是从空闲链表头摘取节点。地址管理单元6检查提供给读取管理模块的链表指针所指向链表节点的后继节点信息,判断其是否为行链表尾节点。若不是链尾节点,则将当前读取的链表指针更新为当前链表指针。当一个行链表包含数据已经不再使用时,即当处理行M时,当行M-4的图像块划分Ω1以及相关块坐标及块权重已读取完毕后(此行图像块的划分Ω0在行M-4处理时已经读取过),地址管理单元6将空闲链表的尾链表节点的后继节点指针指向M-4此行链表头,并将空闲链表尾节点指针指向M-4此行链表尾节点,以完成内存回收。
重构单元5包括块累加模块501,块累加缓冲模块502,图像重构模块503。本实施例中,块累加缓冲模块502包含4个720x32bit的SRAM作为行缓冲,分别存储1行累加数据,并按0/1/2/3进行编号。每个累加数据由20bit的图像累加数据与12bit的权重累加数据组成。令行号为SRAM编号,列号为SRAM地址,则4个SRAM中存储的数据可看做720x4块的图像累加数据Y720,4以及720x4块的权重累加数据W720,4。块累加模块501利用来自数据读取模块401的8x4图像块、块坐标与块权重以及来自块累加缓冲模块502的8x4当前块累加值计算块累加值更新,并将其发送至块累加缓冲模块502。块累加缓冲模块502根据8x4当前块的列号X从SRAM中取出块累加数据,为块累加模块501提供当前的块累加数据,并接收当前的块累加数据更新。即有:块累加模块501计算:
Y^i+X,j-4n720,4=Yi+X,j-4n720,4+wLKi,j2DIi,jL,W^i+X,j-4n720,4=Wi+X,j-4n720,4+wLKi,j2D,
(i,j)∈Ωn
其中,Yi+X,j-4n720,4为当前图像累加数据,Wi+X,j-4n720,4为当前权重累加数据,为图像累加数据更新,为权重累加数据更新,IL为读取管理模块402当前访问的8×8图像块且其行号为M-4n,列号为X,wL为块权重,K2D为8×8 2D kaiser窗,n∈[0,1],块的下标表示块内指定坐标的数据值。
而块累加缓冲模块502完成内部缓冲的数据更新:
Yi+X,j-4n720,4Y^i+X,j-4n720,4,Wi+X,j-4n720,4W^i+X,j-4n720,4,(i,j)Ωn
其中←为赋值操作。
待图像行M的重构过程中来自数据读取模块401的8×4图像块全部累加完成后,后续行的重构操作不可能再度改变Yi,0720,4及Wi,0720,4,i∈[0,719],此时。块累加缓冲模块502将累加结果Yi,0720,4及Wi,0720,4发送至图像重构模块503,图像重构模块503接收来自图像累加缓冲的累加结果,将每一像素的图像累加值除以权重累加值以生成重构图像。即:
yi,Maggr=Yi,0720,4/Wi,0720,4
其中yaggr为完成集合操作后的重构图像,i∈[0,719]
重构完成后块累加缓冲模块502更新SRAM中的缓冲数据,由于Yi,0720,4及Wi,0720,4后续操作中已不再需要,因此将除缓冲0外的其余各行缓冲数据移动至编号减1的缓冲,并将缓冲3内的数据置0,准备执行M+1行的重构操作。即执行以下步骤:
Yi,j720,4Yi,j+1720,4
Wi,j720,4Wi,j+1720,4
Yi,3720,40
Wi,3720,40
其中i∈[0,719],j∈[0,2]
在其他可能的实施例中,图像累加缓冲模块502可以包含一个或多个内部缓冲以存储块累加值,内部缓冲在物理或者逻辑上包含多个行缓冲(按行索引时)或列缓冲(按列索引时),可以但不限于使用一个或多个SRAM实现。其中每一个行缓冲的加权平均累加数据存储数量等于图像行包含的像素数(以行索引时)或每一个列缓冲的加权平均累加数据存储数量等于图像列包含的像素数(以列索引时)。图像累加缓冲模块502具有的行缓冲数大于等于数据读取模块401每次读取的图像块划分集高度(以行索引时)或图像累加缓冲模块502具有的列缓冲数大于等于数据读取模块401每次读取的图像块划分集宽度(以列索引时),且图像累加缓冲模块502可能具有超出单纯存储需求的行缓冲(以行索引时)或列缓冲(以列索引时),以交错或交替工作的方式提高吞吐率。
在任一时刻每一行缓冲(以行索引时)或列缓冲(以列索引时)在逻辑或者物理上具有一个对应的行号(以行索引时)或列号(以列索引时),此行号(以行索引时)或列号(以列索引时)可以显式出现或隐含于操作步骤而不直接存在于实现中。在其他可能的实施例中,图像累加缓冲模块502允许清除/移动部分行缓冲(以行索引时)或列缓冲(以列索引时)内容,并为各个行缓冲(以行索引时)或列缓冲(以列索引时)内容指定新的行号(以行索引时)或列号(以列索引时),可以但不限于使用重标号或物理搬移数据的方式实现。在初始状态下,各缓冲中存储的数据为0值,各行号(以行索引时)或列号(以列索引时)从0开始依次递增或者从最大值开始递减。
在不偏离本发明的精神和范围的情况下还可以构成许多有很大差别的实施例。应当理解,除了如所附的权利要求所限定的,本发明不限于在说明书中所述的具体实施例。