一种基于FPGA实现高吞吐率中值滤波器的方法
未命名
10-08
阅读:128
评论:0

一种基于fpga实现高吞吐率中值滤波器的方法
技术领域
1.本发明属于数字图像处理领域,尤其涉及一种基于fpga(fieldprogrammablegate array,现场可编程逻辑门阵列)实现高吞吐率中值滤波器的方法。
背景技术:
2.中值滤波器是基于排序统计理论的一种非线性滤波器,更多地用于从图像中去除脉冲噪声。与传统的线性滤波相比,它是一种更可靠的方法,因为它保留了锐利的边缘,尽管它的计算成本也高得多。
3.中值滤波的基本原理是把数字图像中一点的值用该点的一个邻域中各点值的中值代替,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将模板内像素按照像素值的大小进行排序,生成单调上升(或下降)的二维数据序列,找出排序后像素值的中值作为输出值。然后将二维模板从左到右,从上到下滑动,每滑动一个单位就进行一次中值滤波处理。二维模板通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。
4.现有文献提出的可流水线执行的5*5中值滤波器流程如图1所示,主要分为四个步骤,图中每个实心点表示一个像素,带箭头的线段表示对线段上的像素进行排序,排序后的最小值位于箭头顶端,最大值位于箭头尾端,带圆圈的实心点表示部分排序中需要计算出的像素值,不带圆圈的实心点表示部分排序中不需要计算出的像素值。图1的图a为原始的5*5像素值,图1的图b表示先对每一列进行排序,图1的图c表示对每一行进行部分排序,图1的图d表示对斜率k=1的对角线上进行部分排序,图1的图e表示对斜率k=1/2的对角线上进行部分排序。处理完的结果即为图1的图a中最中间像素滤波后的值。
5.普通的排序网络一般指对输入的像素进行完全排序,即输入多少值就输出多少排序后的值,但是有些情况下不需要全部的输出,比如将5个输入值排序后只关心其中前两个最大的值,这种只输出部分值的排序称为部分排序。部分排序相比于完全排序可以节省一定的资源消耗。图1的图c,图1的图d,图1的图e中的排序都是部分排序。
6.现有的方案主要是选择3*3的二维模板进行中值滤波,对5*5的二维模板研究较少。究其原因,主要是因为5*5中值滤波的复杂度显著高于3*3。对于5*5的二维模板,每计算一个像素的中值滤波结果,都需要计算周围25个像素的中值,总运算量与整幅图的像素个数成正比,此外,许多应用场景对中值滤波的吞吐率要求很高,当图片尺寸较大时,对处理器的性能是巨大的考验。
技术实现要素:
7.为解决上述技术问题,本发明提供一种基于fpga实现高吞吐率中值滤波器的方法,选用的二维模板为5*5矩形窗,每个时钟输入32个8bits(共256bits)像素值,进行32路并行中值滤波,经过处理后每个时钟输出32个滤波后的8bits像素值。本发明的处理过程主要分为两个模块,分别为ram缓存模块和并行中值滤波网络模块。本发明通过32路并行计算
来提高吞吐率,同时根据邻近像素求中值过程的相似性复用一部分中间结果来优化处理资源。
8.为达到上述目的,本发明采用如下技术方案:
9.一种基于fpga实现高吞吐率中值滤波器的方法,选用5*5矩形窗为二维模板,每个时钟输入32个8bits像素值进行32路并行中值滤波,经过处理后每个时钟输出32个滤波后的8bits像素值;所述方法通过ram缓存模块和并行中值滤波网络模块实现;所述ram缓存模块用于存储前4行的数据,等第5行的数据到来后再将5行数据同时读出送到后面的并行中值滤波网络模块;所述并行中值滤波网络模块用于接收ram缓存模块输出的5行数据,完成并行中值滤波计算,然后输出滤波结果。
10.进一步地,所述ram缓存模块包括写控制模块和读控制模块。
11.进一步地,所述写控制模块用于控制轮流向5块ram中写入数据,每块ram中写入图像中一行的数据,每个时钟写入32个像素值;所述读控制模块用于控制从5块ram中同时读数据,然后将读出的5行数据输出给并行中值滤波网络模块。
12.进一步地,所述并行中值滤波网络模块数据选取流程为:选取最左边5列像素作为第一路中值滤波的输入,选取第2列到第6列像素作为第二路中值滤波的输入,以此类推,选取出32路中值滤波的输入。
13.进一步地,所述并行中值滤波网络模块由32个公共排序网络、32个独立排序网络和一个数据分配模块组成。
14.进一步地,每个公共排序网络用于对输入的5个像素值进行从小到大排序,每5个公共排序网络的结果为一个5*5矩形窗中列排序的结果,每个公共排序网络的结果被多个像素共同使用;利用数据分配模块为每一个独立排序网络选取相邻5列数据,然后数据进入独立排序网络。
15.进一步地,所述公共排序网络由9个基本排序单元组成,并在左边六个基本排序单元之后插入一级流水线寄存器,任意5个像素值进入公共排序网络后,经过一个时钟的延迟,变为5个从小到大排序后的值。
16.进一步地,所述独立排序网络包括部分行排序、部分对角线排序(k=1)和部分对角线排序(k=1/2),包括25个输入像素值;其插入四级流水线寄存器,第一级流水线寄存器位于部分行排序中间,第二级流水线寄存器位于部分行排序后,第三级流水线寄存器位于部分对角线排序(k=1)中间,第四级流水线寄存器位于部分对角线排序(k=1)后,即独立排序网络经过4个时钟的延迟输出滤波结果。
17.进一步地,所述基本排序单元用于实现两个8bits像素值的大小比较以及交换顺序;基本排序单元由一个8bits比较器和两个多路选择器组成,假设两个8bits像素值分别为a和b,8bits比较器的输出控制多路选择器输出a或b。
18.有益效果:
19.1、本发明充分利用fpga并行计算能力强的特点,全流水设计,在处理时钟为200mhz时,设计方案吞吐率可达到6.4gb/s。
20.2、所有模块都经过仔细优化,本发明中的排序网络结构将需要的比较次数减少到最低,最大限度降低资源消耗。
附图说明
21.图1为单个像素5*5中值滤波流程图;
22.图2为本发明的基于fpga实现高吞吐率中值滤波器的方法的原理图;
23.图3为ram缓存模块内部设计图;
24.图4为并行中值滤波网络模块数据选取流程示意图;
25.图5为并行中值滤波网络模块内部设计图;
26.图6为基本排序单元与简化符号图;
27.图7为公共排序网络内部结构图;
28.图8为独立排序网络内部结构图。
具体实施方式
29.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
30.本发明选用的二维模板为5*5矩形窗,每个时钟输入32个8bits(共256bits)像素值,按照图2的处理流程进行32路并行中值滤波,经过处理后每个时钟输出32个滤波后的8bits像素值。本发明的处理过程主要分为两个模块,分别为ram(随机存取存储器,randomaccessmemory)缓存模块和并行中值滤波网络模块。
31.(1)ram缓存模块设计:
32.对于一幅大小为n*m的灰度图像,共有n行m列,图像数据一般按行存储在fpga外的存储器中。开始进行图像处理时需要按行将图像读出来输入处理模块,对于5*5矩形窗的中值滤波,需要同时输入5行的数据才能开始处理,ram缓存模块的作用就是先存储前4行的数据,等第5行的数据到来后再将这5行数据同时读出送到后面的并行中值滤波网络模块中,如图3所示。
33.ram缓存模块包括写控制模块和读控制模块。所述写控制模块主要负责控制轮流向5块ram(ram_1~ram_5)中写数据,每块ram中写入图像中一行的数据,例如第1行数据写入ram_1,第2行数据写入ram_2,第5行数据写入ram_5,第6行数据写入ram_1,以此类推。每行数据有32个像素值。
34.所述读控制模块主要负责控制从5块ram中同时读数据,然后将读出的5行数据输出给并行中值滤波网络模块。
35.(2)并行中值滤波网络模块设计:
36.并行中值滤波网络模块数据选取流程如图4所示。图中每个格子表示一个8bits像素值,d1_1表示图像中第1行第1列位置的像素值,d2_3表示图像中第2行第3列位置的像素值,以此类推。图中每5列格子组成5*5矩形窗进行中值滤波,dout_1到dout_32表示每个时钟的32个并行中值滤波输出。此外,图4中最左侧两列用阴影填充的格子代表上一个时钟输入的最后两列像素值,最右侧两列用阴影填充的格子代表下一个时钟输入的前两列像素值。
37.并行中值滤波网络模块内部设计如图5所示,主要由32个公共排序网络、32个独立
排序网络和一个数据分配模块组成。图5中左边一列是32个公共排序网络,每个公共排序网络的功能为对输入的五个像素值进行从小到大排序。每5个公共排序网络的结果就是图1的图b中一个5*5矩形窗中列排序的结果,所以每个公共排序网络的结果会被多个像素共同使用。数据分配模块负责为每一个独立排序网络选取相邻5列数据。然后数据进入独立排序网络,独立排序网络用于实现图1的图c到图1的图e的处理过程,处理完的输出即为中值滤波结果。
38.下文描述公共排序网络、独立排序网络的具体设计。首先介绍基本排序单元。一个基本排序单元可以用图6表示,可以实现两个8bits像素值的大小比较以及交换顺序。基本排序单元由一个8bits比较器和两个mux(多路选择器)组成,假设两个8bits像素值分别为a和b,8bits比较器的输出控制多路选择器输出a还是b,a和b指代输入的两个像素值。l是a、b中的较小值,h是a、b中的较大值。图6中右半部分是一个基本排序单元的简化符号。
39.公共排序网络的内部结构如图7所示,一共由9个基本排序单元组成。基本排序单元全部由组合逻辑组成,为了提高系统频率,需要插入一级流水线寄存器,图7中虚线位置即为插入流水线寄存器的位置。in1~in5五个任意像素值进入该网络后,经过一个时钟的延迟,就可以变为5个从小到大排序后的值。
40.独立排序网络的内部结构如图8所示,in1~in25为25个输入像素值。该网络结构主要分为三部分,分别是部分行排序(对应图1的图c),部分对角线排序(k=1)(对应图1的图d),部分对角线排序(k=1/2)(对应图1的图e),k是指图1中每个步骤中待排序的像素所在直线的斜率。图8中的竖直虚线表示流水线寄存器的位置,共插入四级流水线寄存器,即独立排序网络经过4个时钟的延迟输出滤波结果。
41.本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,选用5*5矩形窗为二维模板,每个时钟输入32个8bits像素值进行32路并行中值滤波,经过处理后每个时钟输出32个滤波后的8bits像素值;所述方法通过ram缓存模块和并行中值滤波网络模块实现;所述ram缓存模块用于存储前4行的数据,等第5行的数据到来后再将5行数据同时读出送到后面的并行中值滤波网络模块;所述并行中值滤波网络模块用于接收ram缓存模块输出的5行数据,完成并行中值滤波计算,然后输出滤波结果。2.根据权利要求1所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述ram缓存模块包括写控制模块和读控制模块。3.根据权利要求2所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述写控制模块用于控制轮流向5块ram中写入数据,每块ram中写入图像中一行的数据,每个时钟写入32个像素值;所述读控制模块用于控制从5块ram中同时读数据,然后将读出的5行数据输出给并行中值滤波网络模块。4.根据权利要求1所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述并行中值滤波网络模块数据选取流程为:选取最左边5列像素作为第一路中值滤波的输入,选取第2列到第6列像素作为第二路中值滤波的输入,以此类推,选取出32路中值滤波的输入。5.根据权利要求4所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述并行中值滤波网络模块由32个公共排序网络、32个独立排序网络和一个数据分配模块组成。6.根据权利要求5所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,每个公共排序网络用于对输入的5个像素值进行从小到大排序,每5个公共排序网络的结果为一个5*5矩形窗中列排序的结果,每个公共排序网络的结果被多个像素共同使用;利用数据分配模块为每一个独立排序网络选取相邻5列数据,然后数据进入独立排序网络。7.根据权利要求5所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述公共排序网络由9个基本排序单元组成,并在左边六个基本排序单元之后插入一级流水线寄存器,任意5个像素值进入公共排序网络后,经过一个时钟的延迟,变为5个从小到大排序后的值。8.根据权利要求5所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述独立排序网络包括部分行排序、部分对角线排序(k=1)和部分对角线排序(k=1/2),包括25个输入像素值;其插入四级流水线寄存器,第一级流水线寄存器位于部分行排序中间,第二级流水线寄存器位于部分行排序后,第三级流水线寄存器位于部分对角线排序(k=1)中间,第四级流水线寄存器位于部分对角线排序(k=1)后,即独立排序网络经过4个时钟的延迟输出滤波结果。9.根据权利要求7或8所述的一种基于fpga实现高吞吐率中值滤波器的方法,其特征在于,所述基本排序单元用于实现两个8bits像素值的大小比较以及交换顺序;基本排序单元由一个8bits比较器和两个多路选择器组成,假设两个8bits像素值分别为a和b,8bits比较器的输出控制多路选择器输出a或b。
技术总结
本发明提出一种基于FPGA实现高吞吐率中值滤波器的方法,其为一种32路并行的中值滤波器的设计方法,选用的二维模板为5*5矩形窗,每个时钟输入32个8bits(共256bits)像素值,进行32路并行中值滤波,经过处理后每个时钟输出32个滤波后的8bits像素值。本发明的处理过程主要分为两个模块,分别为RAM缓存模块和并行中值滤波网络模块。本发明通过32路并行计算来提高吞吐率,同时根据邻近像素求中值过程的相似性复用一部分中间结果来优化处理资源。性复用一部分中间结果来优化处理资源。性复用一部分中间结果来优化处理资源。
技术研发人员:王岩 曲春辉 杜江 尹航 艾占杨 岳海涛
受保护的技术使用者:中国科学院空天信息创新研究院
技术研发日:2023.07.14
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/