CN101895676A - 一种适用于bm3d实时处理的集合方法 - Google Patents
一种适用于bm3d实时处理的集合方法 Download PDFInfo
- Publication number
- CN101895676A CN101895676A CN2010102205879A CN201010220587A CN101895676A CN 101895676 A CN101895676 A CN 101895676A CN 2010102205879 A CN2010102205879 A CN 2010102205879A CN 201010220587 A CN201010220587 A CN 201010220587A CN 101895676 A CN101895676 A CN 101895676A
- Authority
- CN
- China
- Prior art keywords
- mrow
- image
- linked list
- msubsup
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000009825 accumulation Methods 0.000 claims description 56
- 230000002776 aggregation Effects 0.000 claims description 31
- 238000004220 aggregation Methods 0.000 claims description 31
- 230000009467 reduction Effects 0.000 claims description 11
- 230000003139 buffering effect Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 30
- 230000010354 integration Effects 0.000 abstract description 4
- 230000002349 favourable effect Effects 0.000 abstract description 2
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011946 reduction process Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Image Processing (AREA)
Abstract
本发明要解决的技术问题是提供一种BM3D的集合方法,包括以下步骤:a.将经过3D降噪处理的图像处理信息按行索引或按列索引存储;b.从所述存储的位置读出所述存储位置中特定帧的图像处理信息,并重建所述特定帧的图像处理信息,完成图像重构。该方法通过优化BM3D集合过程,从而实现BM3D的实时集合处理。本方法的数据结构与控制流程简单,易于软件实现,并可利用多处理器进行并行处理。并且该方法同样的易于芯片实现,利于满足高清与多路处理所需的高吞吐率需求,实现视频图像BM3D的实时处理。
Description
技术领域
本发明涉及BM3D算法,具体涉及一种适用于BM3D实时处理的BM3D集合方法。
背景技术
BM3D(Block-Matching and 3D Filtering,块匹配和3D降噪)算法由块匹配,3D降噪以及集合三个步骤组成,可以进行多次迭代运算,标准BM3D算法为两次迭代。在BM3D集合步骤中,对其3D降噪过程产生的组进行处理,逐个的访问包含当前点的块,并对其对当前点的估计进行加权平均生成图像估计。根据《Image denoising by sparse 3D transform-domain collaborativefiltering》(Dabov,K.et al,IEEE Transaction on Image Processing 16,2080-2095,2007),集合过程满足
其中为重建图像值,x为其坐标。X为图像幅面,xR为原始图像块,为xR所对应的组,xm为包含于组内的匹配块,为图像块权重,为图像块xR中对应像素点x的值,为图像块xR的支撑满足 本质上集合过程是一个对像素点的多个估计进行加权平均的过程。
由于BM3D的组可以跨多个参考帧,这意味着每个参考帧的每个像素都可能牵涉到来自多个参考帧数量巨大的组。例如对于720x57625fps分辨率的PAL制视频,在BM3D中每组含8个8x8块,块步长为6的典型参数下,则每帧图像仅亮度分量就包含11520个组,可包含最多92160个8x8块,一次集合步骤运算仅图像数据量即达5898240Byte,约为原始图像数据量的14.2倍。这意味着,平均每个亮度像素多达14.2个块内对应像素的加权平均。
由于集合过程牵涉到来自多个参考帧的多个组,因此对一个图像帧执行的集合过程需要等待所有包含此图像帧像素的组都进行了3D降噪后才可能完成。这意味着需要在这个过程中存储图像帧量级的大量中间数据。在目前的集成电路技术条件下,这些中间数据必须存储在DDR SDRAM之类大容量的外部存储器中。
考虑中间数据的存储,一种实现公式(1)的方法(方法1)是将所有组依序存储,在某帧所需的组全部齐备后,搜索所有的组获取指定像素x的值以及其权重,并按公式(1)计算相应的加权平均获取图像重建此方法直观,每一组仅需一次写外部存储器操作,但实现困难。例如对于上述典型参数以及9参考帧的典型情况,某帧的相关块有近一百万个8x8块。又因为各块的位置是一个随机变量,在合理的时间内在所有相关组内检索所有包含当前像素点的块是难以解决的问题,并且难以避免对同一组的多次重复读取。因此方法1不适用于BM3D实时处理。
按照上述公式(1)集合过程是一个加权平均过程,对分母上的权重项与分子上的加权像素值分别进行累加。因而对公式1的一种易于实现的方法(方法2)是将分子项以及分母项的累加过程作为中间结果存储。当集合装置自3D降噪模块获得一个完成3D降噪的组时,自外部存储器获取对应像素位置的中间结果,加上当前块中各像素所对应的项以及并写回外部存储器。当可能包含某像素的全部组都如此处理完毕后,最后进行除法操作即得某个像素的图像估计 这个方法实现简单,但需要大量的外部存储器访问。
对于上述的典型参数,设每一个像素对应的分子与分母累加器共需要32bit,那么每一个8x8块的累加操作就需要从内存中读取64*32bit=2Kibit,完成累加后再写回2Kibit的数据。不计最后的除法操作,每帧PAL制图像亮度分量的上述累加过程总内存访问量就高达47MB,相当于原始亮度数据量的114倍。再考虑到完整的BM3D算法需要执行两遍集合步骤,则仅对1路每秒25帧的PAL制D1视频的亮度数据执行集合步骤的累加操作就需要约2.4GB/s的内存带宽。再考虑到每次读取的中间数据地址为像素精度,并不匹配于DDR SDRAM的访问粒度,额外增加了访问数据量的同时非突发友好使得访问效率进一步的降低。因而这种方法仅适用于BM3D的非实时实现,不适用于BM3D实时处理的实现。
发明内容
本发明要解决的技术问题是提供一种BM3D的集合方法,该方法通过优化BM3D集合过程,从而实现BM3D的实时集合处理。
本发明提供了一种BM3D集合方法,包括以下步骤:
a.将经过3D降噪处理的图像处理信息按行索引或按列索引存储;
b.从所述存储的位置读出所述存储位置中特定帧的图像处理信息,并重建所述特定帧的图像处理信息,完成图像重构。
进一步地,在执行步骤a之前进行初始化步骤:分配存储空间;初始化存储数据结构;初始化临时变量。所述存储方式通过链表进行管理。所述图像处理信息包括图像块、块坐标、块权重和组信息。
进一步地,所述步骤a并发执行或串行执行。所述步骤a中,若对应的链表在所述存储器中无可用的空间存储所述图像处理信息,则为当前图像处理信息对应的链表分配存储空间。所述步骤b串行执行或并发执行。
作为一种优选的技术方案,所述步骤b包括以下步骤:
b20.自链表信息表中获取当前帧中M-F(ΩN)行所对应的行链表信息,若对应链表不存在或为空,则执行步骤b40;
b30.根据步骤b20获得的链表信息访问所述存储器,读取链表中的图像处理信息,计算图像累加数据更新,并更新图像累加缓冲;
b40.若N<Nmax,则N←N+1,并回到步骤b20,继续执行;
b50.释放M-F(ΩN)行所对应的行链表,以及相关图像处理信息的存储空间;
b60.根据图像累加缓冲内数据计算重构图像的行M,作为图像累加缓冲;
b70.N←0,M←M+1,若M-F(ΩN)小于等于图像高,则回到步骤b20,否则本帧图像处理结束。
进一步地,所述步骤b30包括以下步骤:
b31.若当前链表为空链表,则结束步骤b30,否则令所述当前链表读指针等于链表头节点指针;
b32.令块L为所述当前链表读指针指向链表节点所包含的本次进入步骤b30后尚未读取过的图像块编号,若不存在这样的图像块,则跳转执行步骤b38;
b33.读取块L中划分ΩN,即读取(i,j)∈ΩN,并读取块的列号x或行号,以及与块权重wL;
b35.将步骤b33中读取的块权重wL与B×B 2D kaiser窗K2D的划分ΩN对应点相乘,获得此划分ΩN中对应于每像素的权重,并将其与步骤b34中获得的权重累加数据对应点相加,获得权重累加更新,即 (i,j)∈ΩN;
b38.若所述当前链表读指针指向的链表节点不是行链表的尾节点,则令所述当前链表读指针指向后续节点并跳转步骤b32,否则结束步骤b30。
进一步地,所述步骤b60中计算图像行M的重构值的方法为:
其中yaggr为完成集合操作后的重构图像,i∈[0,W-1]
更新缓冲,即:
其中i∈[0,W-1],j∈[0,H-2]。
称整数W(Ω)为划分集Ω={Ωn}的宽度,若满足
称整数H(Ω)为划分集Ω={Ωn}的高度,若满足
定义FR(Ωn)满足
定义FC(Ωn)满足
且
更进一步地,所述按行索引是指按照行号管理图像块信息,同一链表中存储的图像块行号相等,称此链表为此行的对应链表;所述按列索引是指按照列号管理图像块信息,同一链表中存储的图像块列号相等,称此链表为此列的对应链表。
作为另外一种优选的技术方案,所述步骤b包括以下步骤:
b200.自链表信息表中获取当前帧中M-F(ΩN)列所对应的列链表信息,若对应链表不存在或为空,则执行步骤b400;
b300.根据步骤b200获得链表信息访问所述存储器,读取链表中的图像处理信息,计算图像累加数据更新,并更新图像累加缓冲;
b400.若N<Nmax,则N←N+1,并回到步骤b200,继续执行;
b500.释放M-F(ΩN)列所对应的列链表,以及相关图像处理信息的存储空间;
b600.根据图像累加缓冲内数据计算重构图像的列M,作为图像累加缓冲;
b700.N←0,M←M+1,若M-F(ΩN)小于等于图像宽,则回到步骤b200,否则本帧图像处理结束。
更进一步地,所述步骤b300包括以下步骤:
b301.若当前链表为空链表,则结束步骤b300,否则令所述当前链表读指针等于链表头节点指针;
b302.令块L为所述当前链表读指针指向链表节点所包含的本次进入步骤b300后尚未读取过的图像块编号,若不存在这样的图像块,则跳转执行步骤b308;
b303.读取块L中划分ΩN,即读取(i,j)∈ΩN,并读取块的行号y,以及与块权重wL;
b305.将步骤b303中读取的块权重wL与B×B 2D kaiser窗K2D的划分ΩN对应点相乘,获得此划分ΩN中对应于每像素的权重,并将其与步骤b304中获得的权重累加数据对应点相加,获得权重累加更新,
b308.若所述当前链表读指针指向的链表节点不是列链表的尾节点,则令所述当前链表读指针指向后续节点并跳转步骤b302,否则结束步骤300。
更进一步地,所述步骤b600中计算图像列M的重构值的方法为:
其中yaggr为完成集合操作后的重构图像,j∈[0,H-1]
更新缓冲,即:
其中i∈[0,W-2],j∈[0,H-1]。
其中,为空集
称整数W(Ω)为划分集Ω={Ωn}的宽度,若满足
称整数H(Ω)为划分集Ω={Ωn}的高度,若满足
定义FR(Ωn)满足
定义FC(Ωn)满足
且
更进一步地,所述按行索引是指按照行号管理图像块信息,同一链表中存储的图像块行号相等,称此链表为此行的对应链表;所述按列索引是指按照列号管理图像块信息,同一链表中存储的图像块列号相等,称此链表为此列的对应链表。
本发明在各种BM3D参数下每一个块图像数据均只需读写一次外部存储器,消除了大部分外部存储器重复访问。除了图像数据外,本发明的主要存储以及访问开销为块权重,块坐标以及链表指针。而对于合理的参数与数据格式,这些开销不大于10%。并且累加与重建过程只需利用少量的存储器,从而使累加与重建过程所需缓冲得以在芯片或处理器片内实现,由此消除了累加与重建过程的外部存储器访问,从而在完全不损失BM3D降噪能力的前提下节约了大量外部存储器带宽以及功耗。进一步的,在片上RAM容量受限的场合,本发明也可以通过设置适当的参数在片上RAM开销与外部存储器访问间取得平衡。由于本发明中累加数据的精度并不影响外部存储器占用与访问带宽开销,因此可以根据可用的片上RAM情况采用更高的字长以提升算法的效果并减少溢出的可能。
相比之下方法2的外部存储带宽与存储空间消耗正比于取决于累加过程选择的累加器位深。对于典型的32bit的累加器位深,即使不计及方法2固有的无效访问浪费的带宽,本发明节省的外部存储空间以及外部存储带宽也可达到3/4。
例如在典型的BM3D参数下(8x8块,块步长为6,每组8块,两遍处理),本发明取参数:每链表节点存储15图像块,按行索引,图像累加缓冲为4行,划分Ω0与Ω1为8x4块,F(Ω0)=0,F(Ω1)=4,累加数据为32bit。那么即使不丢弃块,处理1D1标清亮度数据的集合器外部存储带宽也仅约600MB/s,额外带宽开销低于5%,仅有相应情况下方法2的1/4。本发明可与3D降噪过程中的块选择性丢弃技术配合使用,并可获取相当的带宽节省程度。例如典型参数下背景技术若在3D降噪过程中选择性的丢弃一半块,可在不到1dB PSNR损失的前提下将存储器带宽需求从2.4GB/s降低至1.2GB/s,而进一步配合应用本发明后在其余条件相同时则可将存储器需求从1.2GB/s降低至300MB/s以下而不会进一步的损失性能。
若对于图像处理信息采用压缩技术,可在实际系统中进一步的降低存储带宽需求,具体数值由参数设定以及所采用的压缩技术以及视频场景决定。对于典型的BM3D应用场景,采用DCT类图像块变换结合熵编码压缩图像块可以进一步节省1/2以上的内存带宽。
本发明可以通过恰当的安排链表节点结构与图像块的划分,使得内存访问匹配DDR SDRAM的访问粒度且大部分数据访问为长突发模式访问。克服了方法2额外的带宽浪费的问题,当外部存储器使用DDR SDRAM实现时,可以获得高访问效率,进一步的节省了带宽。
本方法的数据结构与控制流程简单,易于软件实现,并可利用多处理器进行并行处理。另一方面,数据结构与算法便于预读以及流水化处理,使得本方法同样的易于芯片实现,并且在各种BM3D的配置参数下都可以容易的达到高工作频率,利于满足高清与多路处理所需的高吞吐率需求,实现BM3D的实时处理。
附图说明
图1视频图像BM3D的处理过程。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
以下结合附图和具体实施例分析本发明在BM3D实时处理应用情况。图1为视频图像BM3D实时处理过程,其中包括块匹配、3D降噪、集合三个处理步骤。BM3D块匹配对视频图像执行块匹配、生成图像块组等操作,并继续对视频图像进行3D降噪。BM3D集合步骤重建3D降噪后的视频图像。为获得更好的效果,视频图像BM3D过程可多次迭代执行,标准BM3D算法为两次迭代。
为说明本发明的BM3D集合方法,本实施例以对亮度数据进行第一遍集合处理为例。本实施例中对原始视频图像进行块匹配和3D降噪后得到图像处理信息,这里,该图像处理信息包括图像块、块坐标、块权重和组信息。本实施例中选取块尺寸B=8,块步长为6,每组8块,单路PAL格式D1视频,参考帧数为9。每链表节点存储15图像块,按行索引。假设可用于图像缓冲的片上RAM不超过8KiByte,选择图像累加缓冲行数D为2,位宽为32bit,容量为5760byte。选择划分Ωn,n∈[0,3]为8×2块,F(Ωn)=2n,n∈[0,3]。本实施例不对图像处理信息应用压缩。
需要说明一点的是,本实施例中块尺寸、块步长、组,视频制式的选取,链表节点存储的图像块等参数的选择,以及图像处理信息是否压缩并不影响本发明所要达到的有益效果,只要选取的上述参数为本领域技术人员熟知的技术特征均可以作为本发明的实施例,也就是说选择其他本领域技术人员熟知的典型参数照样使得本发明达到有益的效果。
下面按步骤,对本实施例作进一步详细说明,图2是本发明的BM3D集合方法的流程图,对上述图像处理信息进行BM3D集合,包括以下步骤::
步骤100、在所有其他步骤之前执行,且只执行一次,初始化图像处理信息的存储空间,为所有链表节点分配内存空间,并将所有链表节点加入空闲链表,为外部存储器内的链表信息分配存储空间。
步骤200对每一输入的图像处理信息执行,由以下步骤201至步骤203组成:
步骤201、接收所述图像处理信息单元,若当前图像处理信息对应的链表无可用的空间存储所述图像处理信息单元,则执行步骤202,否则执行步骤203;
本实施例中,利用所述图像信息的块坐标及组信息检查链表信息来检查链表是否具有可用空间。所述组信息包含了但不限于组中包含的块所从属的图像,该图像从属的视频流以及迭代处理编号。所述链表信息指各个视频流的各次迭代处理的各个图像的各个行(按行索引)或列(按列索引)所对应链表的地址信息。所述地址信息可以包括但不限于链表可用标志,链表指针,链表头指针,链表尾指针,链表尾节点标志以及链表节点中图像块存储空间的使用情况等信息。本发明并不限定所使用的链表结构,本领域技术人员熟知的各种链表数据结构及相关操作手段均可以用于本发明的具体实施例,例如可采用单链表,双向链表,环形链表等各种链表结构。链表信息可按部分或者全部单独存储或者与图像处理信息一并存储,例如链表可用标志可以但不限于使用链表头指针的特定值表示,链表尾节点标志可以但不限于使用链表指针的特定值表示,链表节点中图像块存储空间的使用情况信息可以但不限于设定图像处理信息的特定值,每个链表节点中可存储包含一个或多个图像块的图像处理信息或其指针。
本实施例采用按行索引的图像处理信息管理方式,每个行链表为单链表,链表节点的添加均自链表头部进行。因此本实施例中,链表信息包括链表头指针,链表头节点中图像块存储空间的占用情况以及链表后续节点指针,表示链表当前存储节点地址的当前链表指针即为链表头指针,链表尾标记通过指定链表后续节点指针为空指针实现。其中链表头指针与链表头节点中图像块存储空间占用情况单独存储,各个节点的链表后继节点指针与相关的图像处理信息一并存储在链表节点内。链表头节点图像块存储空间的占用情况采用链表头节点中已写入的图像块数量表示,0表示空,15表示满。采用其他本领域人员所熟知的链表管理方式也可以作为实施例采用,例如采用自链表尾添加节点的方式管理链表,此时需要在链表信息中添加链表尾指针。
进一步的,按行索引时每个图像的每一行具有一个对应的行链表,当进行多视频流以及多遍处理时,每一个视频流的每一遍处理的每个图像的每一行都具有各自独立的链表,因此链表信息表管理多个行链表。访问链表信息表时,根据组信息确定当前需要写出的图像处理信息属于哪个图像,并利用块坐标进一步确定其所对应于哪个行链表(行索引时)或列链表(列索引时)本实施例中,除了链表头节点外的其余节点总是满的,这意味着,除了链表为空链表的特例以外,链表是否具有可用的存储空间取决于链表头节点是否具有可用存储空间,这又可通过检查链表头节点中已写入的图像块数量获得。若链表头节点中已写入的图像块数量为15,则链表中无可用的存储空间。
本实施例中未采用图像处理信息压缩,因此图像块的尺寸为定值,每一链表节点中存储的图像块也为定值。在其他实施例中,图像处理信息,尤其是图像块可以应用各类压缩技术以减少其数据量,此时每一帧图像所包含的图像处理信息量可能为定值或随图像内容变动。在图像处理信息量为不定值时,可以但不限于始终按最大可能的值安排存储空间或按照实际图像处理信息量的大小动态分配,具体手段选择取决于压缩算法与存储数据结构以及存储器访问策略,本发明不做限定。在采用压缩技术的场合,写入外部储存器的数据中可能需要包含用于压缩与解压缩的额外信息,例如图像块压缩/未压缩标志、图像块压缩算法标志、图像块压缩后尺寸等信息,这些信息可以但不限定于与压缩后的图像处理信息一并存储或与链表信息一并存储或单独存储,并在步骤300中读取以用于图像处理信息的解压缩过程,其具体组织与运用方式本发明不做限定。
进一步的,当一个不属于当前的链表信息中任何一个链表的图像处理信息被输入时,可能需要为其所属的链表信息分配存储空间并进行初始化,尤其是当链表信息的全部或者部分为单独存储时,若供链表信息使用的空闲存储空间不足则阻塞步骤201直至有足够的存储空间可供分配。由于步骤300所处理完成的帧所对应的图像处理信息与链表信息均不再使用,其存储空间得以释放,因此链表信息占据的存储空间不会无限增长。应当在步骤100内为图像处理信息及链表信息分配足够的存储容量,保证任何情况下存在供链表信息使用的空闲存储空间,或者当不存在供链表信息使用的空闲空间时至少有一个步骤300不被阻塞,否则将造成死锁。对于本实施例,满足不造成死锁的条件下同一时刻最多可能存在(576-7)×10=5690个行链表以及相关的链表信息,对于多遍处理以及多流处理相应的倍增。每次执行步骤200都需要访问链表信息,带宽开销虽然远小于图像处理信息的带宽,但因为粒度较小且DRAM需要换行,对DRAM访问效率存在不利的影响。将这些信息全部放在片内存储器以全部消除相应的外部存储器访问是可以做到的,但存在更为节省片上存储器的做法。由于BM3D算法的块匹配步骤的搜索范围实际限制了组中各个块的距离,也即限制了每次操作可能访问的链表信息范围。具有cache的处理器可以自动的利用此特性降低链表信息访问的内存带宽,而在AS IC或具有片上RAM的处理器实现的场合,使用一个小的内部SRAM作为缓冲存储当前可能被访问到的链表信息并将其余地址信息保存在外部存储器是较好的选择。
为链表信息分配内存空间后,可立即或延迟对全部或者部分链表信息项进行初始化,若某一个行链表在初始化之后的操作中没有相关的图像处理信息被写入,那么其链表信息维持初始化值,在步骤300重建过程中即可识别此链表不包含有效数据从而忽略此链表。以本实施例为例,本实施例采用数组的形式管理行链表信息,每一帧图像最多可能的720-7=713个行链表信息按照整体分配,每次一个属于新的图像帧的图像处理信息被输入时,为此帧的所有行链表信息一起分配存储空间,并将所有项初始化为空链表。此初始化过程在后续链表处理过程中完成。当此图像帧在步骤300中重建完成后,相关的713个行链表空间同时被释放以供后续使用。
进一步地,本实施例采用滑窗缓冲方式管理链表信息,利用BM3D组的局域特性,判定在内部链表信息缓冲内更新后的链表信息暂时不会再更新后将其写入外部存储器,并读取外部存储器中下一行操作可能用到的链表信息放入内部链表信息缓冲以供低延迟的随机访问。对于一个指定的链表信息,此过程会对多个图像帧重复直至步骤300读取此链表信息。若所需读取的链表信息之前并未被初始化,则使用初始化值取代读取的数据,由此在很低的硬件开销的前提下将链表信息相关的外部存储器访问开销降至可忽略,当链表信息自缓冲被写回外部存储器时同时完成了链表信息的初始化操作。本实施例中链表信息被初始化为空链表,通过将链表头指针标记为空实现。
在多个步骤200并发的情况下,会出现对链表信息的竞争访问,需要注意进程同步,并且如上述的内部写缓冲在这种情况下会造成数据一致性问题,可采用适当的同步及数据一致性协议或其他的软/硬件手段解决,本发明对此不做限定。
步骤202、为当前图像处理信息对应的链表分配存储空间;
本实施例中,此一步骤摘取空闲链表的头节点,并将其作为当前图像处理信息新的链表头节点,相应的更新链表信息,例如将链表头节点中的所有存储空间标记为可用,将新加入的节点的后继节点设为原有的行链表头节点。
在本实施例中,为图像处理信息空闲链表分配了足够的空间使得在任何情况下链表信息存储空间先于空闲链表满,这使得空闲链表总是非空,然而在某些实施例中,空闲链表有可能为空,此时阻塞步骤202直至空闲链表非空。与链表信息类似的,应当在步骤100内为图像处理信息及链表信息分配足够的存储容量,保证任何情况下空闲链表不为空或者空闲链表为空时至少有一个步骤300不被阻塞,否则将造成死锁。具体需要的存储容量总是有限的,但依不同BM3D实现例所选择参数有所不同,一般相当于几个到几十个图像帧尺寸。
步骤203、将图像处理信息写入当前链表写指针所指向的链表节点中,并更新链表信息。
本实施例中,当前链表写指针即为行链表头指针,且总是将图像处理信息写入标号等于链表头节点中已写入的图像块数量L的空间,包括一个8×8图像块,一个列号,以及一个块权重的存储空间。完成操作后,链表信息中当前链表对应的L自增。
至此一次步骤200的操作执行结束。
本实施例依次对图像处理信息进行处理,多个步骤200串行执行,仅当一次步骤200的处理结束后,才能执行下一次步骤200。在不同的实施例中也允许多个步骤200并发执行。若多个步骤200并发执行以同时处理不同的图像处理信息,则需要适当的机制解决对包括外部存储器以及链表信息及空闲链表在内的临界资源的访问冲突以及数据一致性问题。
进一步地,所述步骤300对每一重建的图像P执行,包括以下步骤301至步骤317:
步骤301、设置整数M=0,并设定整数N=0,初始化累加缓冲,即令累加数据数组 i∈[0,W-1],j∈[0,H-1],本实施例中W=720,H=2。对于多个步骤300并发执行的情况,各进程具有各自独立的局部变量,包括但不限于M、N、 等变量。等待步骤203将包含P内M-F(ΩN)行(根据行索引时)或列(根据列索引时)图像数据的全部图像处理信息写入存储器。
由于本方法在实施时可能由两个或多个并发的进程组成,并符合生产者-消费者模型,相应的需要对各个进程进行同步,本步骤即用于进程间同步,堵塞重构进程直至后续操作所需数据准备完毕。
一般来说,由于块匹配固有的随机性,精确的判定步骤301自堵塞中恢复执行的时刻是困难的,因此通常将其适当的推迟至一个可确定堵塞结束的时刻。由于BM3D的中块匹配步骤中存在一个最大的时-空搜索范围,随着块匹配步骤的进行,P最终会超出被匹配块B的匹配搜索范围,此后在集合过程中不再会有图像块属于此图像帧,此时即可判定步骤203已经完成此图像帧内全部图像处理信息的处理,其中包括M-F(ΩN)行(根据行索引时)或列(根据列索引时)图像数据的全部图像处理信息,则判定步骤301堵塞结束。进一步的,若重建顺序与BM3D的块匹配步骤选择图像块的顺序一致,即对于常见按光栅顺序进行图像处理过程,为按行索引且自顶部开始向下重建时,可提前判定图像行M-F(ΩN)不再可能与块匹配步骤的搜索范围相交,从而降低处理延迟。更进一步的,在某些BM3D实施例中使用了选择性块丢弃的技术,最终用于集合的图像块所属时空范围小于搜索范围,此时可选择前者的范围作为判定本步骤结束的依据。本实施例中,等待步骤200写出关于的M-F(ΩN)行的全部图像处理信息并将M-F(ΩN)行的链表信息保存至外部存储器后,再执行步骤302,额外的要求保存链表信息是为了在步骤302内保证链表信息一致性。
步骤302、自链表信息表中获取当前帧中M-F(ΩN)行(根据行索引时)或列(根据列索引时)所对应的行链表信息(根据行索引时)或列链表信息(根据列索引时),若对应链表不存在或为空,则跳转步骤313。
由于步骤202、步骤203需要操作链表信息,且可以并发,因此对链表信息的操作中应当使用适当的同步机制以保证操作正确,可采用但不限于采用自旋锁或信号量等同步方式,也可以通过控制步骤302的执行时机使得步骤202、步骤203与步骤302操作的链表信息表项分离以保证不出现访问冲突。在步骤200采用内部缓冲链表信息的情况下应当注意数据一致性问题,处理器内建的数据一致性机制或其他的数据一致性机制均可使用,本发明对此不作限定。在本实施例中,同步以及数据一致性通过步骤301的同步机制一并保证,即等待步骤200写出关于的M-F(ΩN)行的全部图像处理信息并将M-F(ΩN)行的链表信息保存至外部存储器后,再执行步骤302由外部存储器读取M-F(ΩN)行的链表信息。
步骤303、令当前链表读指针等于链表头节点指针,此链表头节点指针为步骤302中自链表信息表中获取。
步骤304、L←0。
步骤305、检查当前链表读指针指向的链表节点中图像处理信息L是否可用,即图像块L是否可用。若块L不可用,则跳转步骤312,若L≥Lmax则块L不可用,Lmax为当前读链表节点包含的图像块数,对于链表头节点,步骤302中自链表信息中获取Lmax,对于链表的其他节点,Lmax=15。
步骤306、读取块L中划分ΩN,即读取(i,j)∈ΩN,并读取块的列号x,以及块权重wL。通常的,选择适当的划分集Ω以及链表节点的数据组织形式以使访问为突发优化并减少DRAM的换行操作,提高外部存储器访问效率。
步骤308、将步骤307中读取的块权重wL与8×82D kaiser窗K2D的划分ΩN对应点相乘,获得此划分ΩN对应于每像素的权重,并将其与步骤307错误!未找到引用源。中获得的权重累加数据对应点相加,获得权重累加更新,即(i,j)∈ΩN。
步骤309、将步骤308中获得的对应于每像素的权重与步骤306中获得的数据对应点相乘,并将其与步骤307中获得的图像累加值数据对应点相加,即计算(i,j)∈ΩN。
步骤311、L←L+1,跳转步骤305。
步骤312、检查当前链表读指针指向的链表节点不是链表的尾节点,如不是,则令当前链表读指针指向后续节点并跳转步骤304。
步骤313、若N<Nmax,则N ←N+1并跳转步骤301。
步骤314、释放M-F(ΩN)行链表空间。
本实施例中释放空间即将其全部节点加入空闲链表。此操作通过修改空闲链表的尾指针以及尾节点的后继指针完成,将尾节点的后继指针指向行链表头节点,并令空闲链表的尾指针指向行链表尾节点。由于本实施例中空闲链表尾指针仅有步骤200操作,在分配了足够的存储空间从而保证空闲链表非空的前提下,可以不使用额外的同步措施,但在其他实施例中可能需要同步机制以保证空闲链表的正确操作。
步骤315、计算重构图像的行M。即有计算:
其中yaggr为完成集合操作后的重构图像,i∈[0,719]
更新缓冲,即:
其中i∈[0,719]
步骤316、N←0,M←M+1,若M-F(ΩN)小于等于图像高(根据行索引时)或宽(根据列索引时)跳转302。
步骤317、释放帧P相关的链表信息空间,本次步骤300结束。
本实施例中,步骤200与步骤300各自串行循环执行,但步骤200与步骤300之间为并发。当操作开始后,首先执行步骤100,而后对每一输入图像处理数据单元执行步骤200,同时逐个对各个图像帧循环执行步骤300,每次步骤300执行完毕即完成一个图像帧的集合操作。
在不同的实施例中,也允许步骤200与步骤300交替执行、多个步骤200与步骤300并发执行、步骤200与多个步骤300并发执行以及多个步骤200与多个步骤300并发执行,以适应不同的执行装置。
在不偏离本发明的精神和范围的情况下还可以构成许多有很大差别的实施例。应当理解,除了如所附的权利要求所限定的,本发明不限于在说明书中所述的具体实施例。
Claims (15)
1.一种BM3D集合方法,其特征在于,包括以下步骤:
a.将经过3D降噪处理的图像处理信息按行索引或按列索引存储;
b.从所述存储的位置读出所述存储位置中特定帧的图像处理信息,并重建所述特定帧的图像处理信息,完成图像重构。
2.根据权利要求1所述的BM3D集合方法,其特征在于,在执行步骤a之前进行初始化步骤:分配存储空间;初始化存储数据结构;初始化临时变量。
3.根据权利要求1所述的BM3D集合方法,其特征在于,所述存储方式通过链表进行管理。
4.根据权利要求1所述的BM3D集合方法,其特征在于,所述图像处理信息包括图像块、块坐标、块权重和组信息。
5.根据权利要求1所述的BM3D集合方法,其特征在于,所述步骤a并发执行或串行执行。
6.根据权利要求1所述的BM3D集合方法,其特征在于,所述步骤b串行执行或并发执行。
7.根据权利要求3所述的BM3D集合方法,其特征在于,所述步骤a中,若对应的链表在所述存储器中无可用的空间存储所述图像处理信息,则为当前图像处理信息对应的链表分配存储空间。
8.根据权利要求1至6中任一权利要求所述的BM3D集合方法,其特征在于,所述步骤b包括以下步骤:
b20.自链表信息表中获取当前帧中M-F(ΩN)行所对应的行链表信息,若对应链表不存在或为空,则执行步骤b40;
b30.根据步骤b20获得的链表信息访问所述存储器,读取链表中的图像处理信息,计算图像累加数据更新,并更新图像累加缓冲;
b40.若N<Nmax,则N←N+1,并回到步骤b20,继续执行;
b50.释放M-F(ΩN)行所对应的行链表,以及相关图像处理信息的存储空间;
b60.根据图像累加缓冲内数据计算重构图像的行M;
b70.N←0,M ←M+1,若M-F(ΩN)小于等于图像高,则回到步骤b20,否则本帧图像处理结束。
9.根据权利要求8所述的BM3D集合方法,其特征在于,所述步骤b30包括以下步骤:
b31.若当前链表为空链表,则结束步骤b30,否则令所述当前链表读指针等于链表头节点指针;
b32.令块L为所述当前链表读指针指向链表节点所包含的本次进入步骤b30后尚未读取过的图像块编号,若不存在这样的图像块,则跳转执行步骤b38;
b35.将步骤b33中读取的块权重wL与B×B 2D kaiser窗K2D的划分ΩN对应点相乘,获得此划分ΩN中对应于每像素的权重,并将其与步骤b34中获得的权重累加数据对应点相加,获得权重累加更新,即 (i,j)∈ΩN;
b38.若所述当前链表读指针指向的链表节点不是行链表的尾节点,则令所述当前链表读指针指向后续节点并跳转步骤b32,否则结束步骤b30。
10.根据权利要求8所述的BM3D集合方法,其特征在于,所述步骤b60中计算图像行M的重构值的方法为:
其中yaggr为完成集合操作后的重构图像,i∈[0,W-1]更新缓冲,即:
其中i∈[0,W-1],j∈[0,H-2]。
11.根据权利要求1至6中任一权利要求所述的BM3D集合方法,其特征在于,所述步骤b包括以下步骤:
b200.自链表信息表中获取当前帧中M-F(ΩN)列所对应的列链表信息,若对应链表不存在或为空,则执行步骤b400;
b300.根据步骤b200获得链表信息访问所述存储器,读取链表中的图像处理信息,计算图像累加数据更新,并更新图像累加缓冲;
b400.若N<Nmax,则N ←N+1,并回到步骤b200,继续执行;
b 500.释放M-F(ΩN)列所对应的列链表,以及相关图像处理信息的存储空间;
b600.根据图像累加缓冲内数据计算重构图像的列M,作为图像累加缓冲;
b700.N←0,M←M+1,若M-F(ΩN)小于等于图像宽,则回到步骤b200,否则本帧图像处理结束。
12.根据权利要求11所述的BM3D集合方法,其特征在于,所述步骤b300包括以下步骤:
b301.若当前链表为空链表,则结束步骤b300,否则令所述当前链表读指针等于链表头节点指针;
b302.令块L为所述当前链表读指针指向链表节点所包含的本次进入步骤b300错误!未找到引用源。后尚未读取过的图像块编号,若不存在这样的图像块,则跳转执行步骤b308;
b305.将步骤b303中读取的块权重wL与B×B 2D kaiser窗K2D的划分ΩN对应点相乘,获得此划分ΩN中对应于每像素的权重,并将其与步骤b304中获得的权重累加数据对应点相加,获得权重累加更新,
b306.将步骤b305中获得的对应于每像素的权重与步骤b303中获得的数据对应点相乘,并将其与步骤b304中获得的图像累加值数据对应点相加,
b308.若所述当前链表读指针指向的链表节点不是列链表的尾节点,则令所述当前链表读指针指向后续节点并跳转步骤b302,否则结束步骤b300。
13.根据权利要求10所述的BM3D集合方法,其特征在于,所述步骤b600中计算图像列M的重构值的方法为:
其中yaggr为完成集合操作后的重构图像,j∈[0,H-1]
更新缓冲,即:
其中i∈[0,W-2],j∈[0,H-1]。
15.根据权利要求1所述的一种BM3D集合方法,其特征在于,所述按行索引是指按照行号管理图像块信息,同一链表中存储的图像块行号相等,称此链表为此行的对应链表;所述按列索引是指按照列号管理图像块信息,同一链表中存储的图像块列号相等,称此链表为此列的对应链表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010220587.9A CN101895676B (zh) | 2010-07-07 | 2010-07-07 | 一种适用于bm3d实时处理的集合方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010220587.9A CN101895676B (zh) | 2010-07-07 | 2010-07-07 | 一种适用于bm3d实时处理的集合方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101895676A true CN101895676A (zh) | 2010-11-24 |
CN101895676B CN101895676B (zh) | 2015-12-09 |
Family
ID=43104729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010220587.9A Active CN101895676B (zh) | 2010-07-07 | 2010-07-07 | 一种适用于bm3d实时处理的集合方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101895676B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102572223A (zh) * | 2011-12-06 | 2012-07-11 | 上海富瀚微电子有限公司 | 一种用于视频降噪的相似块搜索方法 |
CN102883158A (zh) * | 2011-07-14 | 2013-01-16 | 华为技术有限公司 | 一种参考帧压缩存储和解压方法及装置 |
CN105976334A (zh) * | 2016-05-06 | 2016-09-28 | 西安电子科技大学 | 一种三维滤波去噪算法的去噪处理系统及方法 |
CN107239454A (zh) * | 2016-03-28 | 2017-10-10 | 福建天晴数码有限公司 | 基于文本数据库的检索方法及系统 |
CN107730464A (zh) * | 2017-10-09 | 2018-02-23 | 四川大学 | 基于块匹配的图像降噪并行算法 |
CN109697704A (zh) * | 2018-11-28 | 2019-04-30 | 山东师范大学 | 基于bm3d算法的自适应全变分espi图像降噪方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101257630A (zh) * | 2008-03-25 | 2008-09-03 | 浙江大学 | 结合三维滤波的视频编码方法和装置 |
CN101355648A (zh) * | 2008-06-26 | 2009-01-28 | 天津市亚安科技电子有限公司 | 图像降噪并增强图像的方法 |
CN101448077A (zh) * | 2008-12-26 | 2009-06-03 | 四川虹微技术有限公司 | 一种自适应视频图像3d降噪方法 |
US20090232375A1 (en) * | 2005-09-26 | 2009-09-17 | Koninklijke Philips Electronics N.V. | Iterative reconstruction with enhanced noise control filtering |
CN101789043A (zh) * | 2010-01-29 | 2010-07-28 | 上海富瀚微电子有限公司 | 一种基于asic设计的bm3d集合装置 |
-
2010
- 2010-07-07 CN CN201010220587.9A patent/CN101895676B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090232375A1 (en) * | 2005-09-26 | 2009-09-17 | Koninklijke Philips Electronics N.V. | Iterative reconstruction with enhanced noise control filtering |
CN101257630A (zh) * | 2008-03-25 | 2008-09-03 | 浙江大学 | 结合三维滤波的视频编码方法和装置 |
CN101355648A (zh) * | 2008-06-26 | 2009-01-28 | 天津市亚安科技电子有限公司 | 图像降噪并增强图像的方法 |
CN101448077A (zh) * | 2008-12-26 | 2009-06-03 | 四川虹微技术有限公司 | 一种自适应视频图像3d降噪方法 |
CN101789043A (zh) * | 2010-01-29 | 2010-07-28 | 上海富瀚微电子有限公司 | 一种基于asic设计的bm3d集合装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102883158A (zh) * | 2011-07-14 | 2013-01-16 | 华为技术有限公司 | 一种参考帧压缩存储和解压方法及装置 |
WO2013007215A1 (zh) * | 2011-07-14 | 2013-01-17 | 华为技术有限公司 | 一种参考帧压缩存储和解压方法及装置 |
CN102572223A (zh) * | 2011-12-06 | 2012-07-11 | 上海富瀚微电子有限公司 | 一种用于视频降噪的相似块搜索方法 |
CN102572223B (zh) * | 2011-12-06 | 2013-12-11 | 上海富瀚微电子有限公司 | 一种用于视频降噪的相似块搜索方法 |
CN107239454A (zh) * | 2016-03-28 | 2017-10-10 | 福建天晴数码有限公司 | 基于文本数据库的检索方法及系统 |
CN107239454B (zh) * | 2016-03-28 | 2020-11-17 | 福建天晴数码有限公司 | 基于文本数据库的检索方法及系统 |
CN105976334A (zh) * | 2016-05-06 | 2016-09-28 | 西安电子科技大学 | 一种三维滤波去噪算法的去噪处理系统及方法 |
CN105976334B (zh) * | 2016-05-06 | 2019-11-15 | 西安电子科技大学 | 一种三维滤波去噪算法的去噪处理系统及方法 |
CN107730464A (zh) * | 2017-10-09 | 2018-02-23 | 四川大学 | 基于块匹配的图像降噪并行算法 |
CN107730464B (zh) * | 2017-10-09 | 2021-03-30 | 四川大学 | 基于块匹配的图像降噪并行算法 |
CN109697704A (zh) * | 2018-11-28 | 2019-04-30 | 山东师范大学 | 基于bm3d算法的自适应全变分espi图像降噪方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101895676B (zh) | 2015-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775801B2 (en) | Neural processor | |
KR101474478B1 (ko) | 로컬 및 글로벌 데이터 공유 | |
CN101895676B (zh) | 一种适用于bm3d实时处理的集合方法 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
US10768856B1 (en) | Memory access for multiple circuit components | |
CN105120293A (zh) | 基于cpu和gpu的图像协同解码方法及装置 | |
CN113312415A (zh) | 用于数据库操作的近存储器加速 | |
US11861337B2 (en) | Deep neural networks compiler for a trace-based accelerator | |
US20140086309A1 (en) | Method and device for encoding and decoding an image | |
US9753984B2 (en) | Data access using decompression maps | |
CN102968390A (zh) | 基于预先解码分析的配置信息缓存管理方法及系统 | |
CN116301920B (zh) | 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统 | |
CN114329327A (zh) | 基于上下三角分解的稀疏矩阵并行求解方法及装置 | |
CN102158694A (zh) | 一种基于gpu的遥感图像解压缩方法 | |
CN102521299B (zh) | 资源描述框架数据的处理方法 | |
US20240028666A1 (en) | Method for optimizing matrix multiplication operation on system on chip, and related product | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
CN101789043B (zh) | 一种基于asic设计的bm3d集合装置 | |
CN112001492B (zh) | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 | |
CN112559952B (zh) | 基于序列分层的异构众核快速傅里叶变换方法 | |
CN117973455A (zh) | 基于fpga的卷积神经网络加速器实现方法 | |
CN102201817B (zh) | 基于存储器折叠架构优化的低功耗ldpc译码器 | |
CN115828044B (zh) | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 | |
US20190324909A1 (en) | Information processing apparatus and information processing method | |
CN106933882A (zh) | 一种大数据增量计算方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
CB02 | Change of applicant information |
Address after: 200000 room 703, block A, No. 1050, Shanghai, Wuzhong Road Applicant after: SHANGHAI FULHAN MICROELECTRONICS CO., LTD. Address before: 200000 room 703, block A, No. 1050, Shanghai, Wuzhong Road Applicant before: Shanghai Fullhan Microelectronics Co., Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant |