CN102651121B - 一种基于fpga的3*3均值滤波算法的实现方法 - Google Patents

一种基于fpga的3*3均值滤波算法的实现方法 Download PDF

Info

Publication number
CN102651121B
CN102651121B CN201110044808.6A CN201110044808A CN102651121B CN 102651121 B CN102651121 B CN 102651121B CN 201110044808 A CN201110044808 A CN 201110044808A CN 102651121 B CN102651121 B CN 102651121B
Authority
CN
China
Prior art keywords
loss
remainder
sum
obtains
average
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.)
Expired - Fee Related
Application number
CN201110044808.6A
Other languages
English (en)
Other versions
CN102651121A (zh
Inventor
杜利利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Acoustics CAS
Original Assignee
Institute of Acoustics CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Acoustics CAS filed Critical Institute of Acoustics CAS
Priority to CN201110044808.6A priority Critical patent/CN102651121B/zh
Publication of CN102651121A publication Critical patent/CN102651121A/zh
Application granted granted Critical
Publication of CN102651121B publication Critical patent/CN102651121B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种基于FPGA的3*3均值滤波算法的实现方法,该方法采用FPGA模块实现8bit灰度图像的3*3滤波窗口的均值滤波,所述的方法包含如下步骤:第一个采样周期,计算9个输入数据之和;第二个采样周期:将9个输入数据之和右移3位得到s1;将9个输入数据之和右移6位得到s2;取9个输入数据之和的低3位sum[2:0]乘以9得到9m;取sum右移6位乘以8得到8s2;取sum的低6位得到n;第三个采样周期,设定余数部分的分子计算loss的值;第四个采样周期,判断s2的大小,确定余数部分的分子;第五个采样周期,判断上个周期得到really_loss,若really_loss大于71,则均值输出为需加余数1;否则均值的余数为零。利用该算法能够进行流水线操作,在达到实时处理效果的同时并不降低图像平滑的质量。

Description

一种基于FPGA的3*3均值滤波算法的实现方法
技术领域
本发明可应用于空间域图像增强领域,涉及一种基于FPGA的3*3均值滤波的快速算法及设计技术,具体涉及一种基于FPGA的3*3均值滤波算法的实现方法。 
背景技术
图像增强的主要目的是处理图像,使其比原始图像更适合于特定应用,也就是说研究图像增强技术是面向具体问题的,不存在通用的图像增强方法。例如,一种很适合增强X射线图像的方法,不一定是增强由空间探测器发回的火星图像的最好方法。由于其广泛的应用,图像增强本身就是图像处理中最具有吸引力的领域之一。图像增强的方法分为两大类:空间域方法和频域方法。“空间域”一词是指图像平面自身,这类方法是以对图像的像素直接处理为基础的。“频域”处理技术是以修改图像的傅氏变换为基础的。 
平滑线性空间滤波器的输出响应是包含在滤波掩模邻域内像素的简单平均值,也称为均值滤波器。由于其直观的概念和简单的处理,一直在图像增强领域中占有重要的地位。并且对于图像平均处理的一个重要应用是在天文学领域,在天文学中经常用极低亮度水平成像,经常导致传感器噪声混入单幅图像,从而实际上使图像在分析时无法使用。 
现场可编程门阵列(FPGA)是在专用集成电路(ASIC)的基础上发展起来的一种可动态编程的器件,与其他中小规模集成电路相比,其优点主要在于它有很强的灵活性,即其内部的具体逻辑功能可以根据需要配置,对电路的修改和维护很方便,设计周期短,可重构,扩展性好等,特别适用于流水线方式的数据处理。考虑到当前对常用的3*3滤波窗口的数学模型进行处理,基本上都采用软件进行处理,不能保证对接收图像实时性的处理要求,即使是一些快速的运算处理器,对于除法的运算操作也是比较复杂和费时的,那么利用FPGA实现除9的实时均值滤波就有很重要的意义。 
发明内容
本发明的目的在于,为克服目前常用的3*3滤波算法采用现有的数学模型进行处理,不能保证对接收图像实时性的处理要求,即使是一些快速的运算处理器,对 于除法的运算操作也是比较复杂和费时的,从而提供一种基于FPGA的3*3均值滤波算法的实现方法。 
为达到上述目的,本发明提供一种基于FPGA的3*3均值滤波算法的实现方法,该方法采用FPGA模块实现8bit灰度图像的3*3滤波窗口的均值滤波,所述的方法包含如下步骤: 
1)在第一个采样周期,计算9个输入数据之和; 
2)在第二个采样周期:将9个输入数据之和右移3位得到s1;将9个输入数据之和右移6位得到s2;取9个输入数据之和的低3位sum[2:0]乘以9得到9m;取sum右移6位乘以8得到8s2;取sum的低6位得到n; 
3)在第三个采样周期,设定余数部分的分子为loss=9m+8s2-n=9m+8(9s3+k)-n=(9m+8k-n)+72s3,其中余数部分包含s3和所有的余数,计算loss的值; 
4)在第四个采样周期,判断s2的大小, 
若由上个周期得到的s2<9,那么s3将为0,则商为average=s1-s2,余数部分的分子为really_loss=loss; 
若9≤s2<18,那么s3将为1,则商为average=s1-s2+1,余数的分子为:really_loss=loss-72; 
若18≤s2<27,那么s3将为2,则商为average=s1-s2+2,余数的分子为:really_loss=loss-144; 
若s2≥27,那么s3将为3,则商为average=s1-s2+3,余数的分子为:really_loss=loss-216; 
5)在第五个采样周期,判断上个周期得到really_loss,若really_loss大于71,则最后模块的均值输出为需加余数1;否则均值的余数为零;得到该模块的准确输出。 
所述的FPGA模块包含如下子模块: 
数据输入子模块,接受并行输入的9个数据,在时钟上升沿,把9个数据读进来; 
数据处理子模块,该子模块用于完成对输入的9个数据进行处理,得到均值; 
该子模块进一步包含: 
求和单元,用于计算并行输入9个数据的和; 
移位单元对得到的和进行右移3位得到s1,右移6位得到s2; 
乘法单元将输入数据之和的低3位sum[2:0]乘以9得到9m,再s2乘以8得到8s2; 
第一设定单元,用于根据所述求和单元、移位单元和乘法单元得到的数据设定余数分子; 
第一判断单元,用于判断移位模块得到的s2的取值范围,得到4个判决结果; 
第二设定单元:用于根据判断单元得到的4个判决结果分别设定不同的商,并相应更新所述余数分子; 
第二判断单元,用于判断更新的余数分子与71的关系,得到两个判断结果; 
第三设定单元,用于根绝第二判断单元的结果设定两个不同的均值作为输出均值; 
输出子模块,输出第三设定单元得到的均值。 
本发明的优点在于,本发明提供的一种基于FPGA的3*3均值滤波算法及设计技术,该算法结合FPGA的并行结构和适合流水线设计的结构特点,构建图像均值滤波实时处理模块,因此能够快速的实现对8bit灰度图像的3*3滤波窗口的均值滤波;且利用该算法设计的模块具有稳定的运算周期,从而能够进行流水线操作,在达到实时处理效果的同时不降低图像平滑的质量。 
附图说明
图1为本发明的基于FPGA的3*3均值滤波算法实现方法的步骤流程图。 
具体实施方式
下面结合附图和实施例对本发明进行进一步说明。 
一、算法原理 
对于该算法的具体推导过程如下: 
先假设该3*3滤波窗口内的数据如下,数据宽度为8位: 
P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9
设sum=P1+P2+P3+P4+P5+P6+P7+P8+P9,那么 可变形为 式中 
Figure BDA0000047650240000034
为sum右移三位, 
Figure BDA0000047650240000035
为sum右移六位, 这在FPGA中很容易实现。sum的最大值可达到255*9=2295,那么 
Figure BDA0000047650240000041
的最大值为3。判断 
Figure BDA0000047650240000042
值的大小,可以用一条if语句和三条else语句就可以并行判断出结果来。如果对上式忽略余数部分,那么只需3个周期就可以计算出均值结果,但经过分析发现此方法除9的误差为1,而且误差率很大,所以对这种牵扯到多级除法的运算,余数部分就不能忽略。 
经过改进得到该算法的详细推导: 
设sum=8s1+m,sum=64s2+n,s2=9s3+k。式中m,n,k为sum除8,除64,s2除9的余数。 
sum 9 = sum 8 - sum 64 + sum 64 / 9
= 8 s 1 + m 8 - 64 s 2 + n 64 + 64 s 2 + n 64 / 9
= 8 s 1 + m 8 - 64 s 2 + n 64 + 64 ( 9 s 3 + k ) + n 64 / 9
= s 1 - s 2 + s 3 + 9 m - n + 8 k 72
利用硬件语言实现上述算法时,s1,s2都可以通过简单的右移除法得到,s3可以通过判断s2的取值范围进行确定,对于余数部分的确定,因为在未考虑余数时最大误差为1,所以可通过判断余数部分的分子与71的关系来确定。 
二、算法具体实现 
对和进行除9运算可用Verilog HDL语言进行转化形成流水线操作,每次运算都可以用5个时钟周期实现。 
模块设计为并行输入9个数据,提供一个采样时钟,在时钟上升沿,把9个数据读进来。输出即为计算出来的输入数据的均值。 
如附图1所示,图1为该改进算法采用FPGA实现时的具体步骤: 
在第一个采样周期:计算9个输入数据之和sum。 
在第二个采样周期:将sum右移3位(即为sum除以8的商)得到s1;将sum右移6位(即为sum除以64的商)得到s2;取sum的低3位sum2:0](即为sum除以 8的余数)乘以9得到9m;取sum右移6位(即为sum除以64的商)乘以8得到8s2;取sum的低6位(即为sum除以64的余数)得到n。 
在第三个采样周期:设定余数部分(包含了s3和所有的余数)的分子为:loss=9m+8s2-n=9m+8(9s3+k)-n=(9m+8k-n)+72s3,计算loss的值。 
在第四个采样周期:此时需要判断该部分的大小,若由上个周期得到的s2<9,那么s3将为0,则商为average=s1-s2,余数部分的分子为really_loss=loss;若9≤s2<18,那么s3将为1,则商为average=s1-s2+1,余数的分子为:really_loss=loss-72;若18≤s2<27,那么s3将为2,则商为average=s1-s2+2,余数的分子为:really_loss=loss-144;若s2≥27,那么s3将为3,则商为average=s1-s2+3,余数的分子为:really_loss=loss-216。 
在第五个采样周期:判断由上个周期得到really_loss是否大于71,若大于71,则最后模块的均值输出为需加余数1;否则均值的余数为零。 
此时便可以得到该模块的准确输出。 
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。 

Claims (3)

1.一种基于FPGA的3*3均值滤波算法的实现方法,该方法采用FPGA模块实现8bit灰度图像的3*3滤波窗口的均值滤波,所述的方法包含如下步骤:
1)在第一个采样周期,计算9个输入数据之和;
2)在第二个采样周期:将9个输入数据之和右移3位得到s1;将9个输入数据之和右移6位得到s2;取9个输入数据之和的低3位乘以9得到9m;取9个输入数据之和右移6位乘以8得到8s2;取9个输入数据之和的低6位得到n;
3)在第三个采样周期,设定余数部分的分子为loss=9m+8s2-n=9m+8(9s3+k)-n=(9m+8k-n)+72s3,其中余数部分包含s3和所有的余数,计算loss的值;
4)在第四个采样周期,判断s2的大小,
若由第二个周期得到的s2的值小于9,那么由第三周期得到的s3将为0,则商为average=s1-s2,余数部分的分子为really_loss=loss;
若s2取值满足9≤s2<18,那么s3将为1,则商为average=s1-s2+1,余数的分子为:really_loss=loss-72;
若s2取值满足18≤s2<27,那么s3将为2,则商为average=s1-s2+2,余数的分子为:really_loss=loss-144;
若s2取值满足s2≥27,那么s3将为3,则商为average=s1-s2+3,余数的分子为:really_loss=loss-216;
5)在第五个采样周期,判断上个周期得到really_loss,若really_loss大于71,则最后模块的均值输出为上个周期得到的商与1的和;否则输出均值为上个周期得到的商的值。
2.根据权利要求1所述的基于FPGA的3*3均值滤波算法的实现方法,其特征在于,所述的FPGA模块包含如下子模块:
数据输入子模块,接受并行输入的9个数据,在时钟上升沿,把9个数据读进来;
数据处理子模块,该子模块用于完成对输入的9个数据进行处理,得到均值;
该数据处理子模块进一步包含:
求和单元,用于计算并行输入9个数据的和;
移位单元对得到的和进行右移3位得到s1,右移6位得到s2;
乘法单元将输入数据之和的低3位sum[2:0]乘以9得到9m,再s2乘以8得到8s2;
第一设定单元,用于根据所述求和单元、移位单元和乘法单元得到的数据设定余数分子;
第一判断单元,用于判断移位模块得到的s2的取值范围,得到4个判决结果;
第二设定单元:用于根据判断单元得到的4个判决结果分别设定不同的商,并相应更新所述余数分子;
第二判断单元,用于判断更新的余数分子与71的关系,得到两个判断结果;
第三设定单元,用于根据第二判断单元的结果设定两个不同的均值作为输出均值;
输出子模块,输出第三设定单元得到的均值。
3.根据权利要求1或2所述的基于FPGA的3*3均值滤波算法的实现方法,其特征在于,所述的时钟为采样周期,该采样周期可调。
CN201110044808.6A 2011-02-23 2011-02-23 一种基于fpga的3*3均值滤波算法的实现方法 Expired - Fee Related CN102651121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110044808.6A CN102651121B (zh) 2011-02-23 2011-02-23 一种基于fpga的3*3均值滤波算法的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110044808.6A CN102651121B (zh) 2011-02-23 2011-02-23 一种基于fpga的3*3均值滤波算法的实现方法

Publications (2)

Publication Number Publication Date
CN102651121A CN102651121A (zh) 2012-08-29
CN102651121B true CN102651121B (zh) 2014-04-02

Family

ID=46693125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110044808.6A Expired - Fee Related CN102651121B (zh) 2011-02-23 2011-02-23 一种基于fpga的3*3均值滤波算法的实现方法

Country Status (1)

Country Link
CN (1) CN102651121B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113822827B (zh) * 2021-09-18 2024-03-22 凌云光技术股份有限公司 一种基于fpga外置存储器的均值滤波方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1979411A (zh) * 2005-11-30 2007-06-13 北京中电华大电子设计有限责任公司 一种高速除法器的实现方法与装置
CN1996384A (zh) * 2006-12-25 2007-07-11 华中科技大学 红外图像多级均值对比度增强方法
CN101937424A (zh) * 2010-09-10 2011-01-05 南京航空航天大学 基于fpga实现高速fft处理的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8150902B2 (en) * 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1979411A (zh) * 2005-11-30 2007-06-13 北京中电华大电子设计有限责任公司 一种高速除法器的实现方法与装置
CN1996384A (zh) * 2006-12-25 2007-07-11 华中科技大学 红外图像多级均值对比度增强方法
CN101937424A (zh) * 2010-09-10 2011-01-05 南京航空航天大学 基于fpga实现高速fft处理的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于FPGA的高速图像处理研究;郭帅;《中国优秀硕士学位论文全文数据库信息科技辑》;20080415(第4期);全文 *
郭帅.基于FPGA的高速图像处理研究.《中国优秀硕士学位论文全文数据库信息科技辑》.2008,(第4期),

Also Published As

Publication number Publication date
CN102651121A (zh) 2012-08-29

Similar Documents

Publication Publication Date Title
Krishnan et al. On the selection of optimum Savitzky-Golay filters
Dabhade et al. A reconfigurable and scalable FPGA architecture for bilateral filtering
Tomasi et al. High-performance optical-flow architecture based on a multi-scale, multi-orientation phase-based model
Zhao et al. FP-Stereo: Hardware-efficient stereo vision for embedded applications
Aguilar-González et al. An FPGA 2D-convolution unit based on the CAPH language
Hasan Performance-vetted 3-D MAC processors for parallel volumetric convolution algorithm: A 256× 256× 20 MRI filtering case study
CN103345379B (zh) 一种复数乘法器及其实现方法
CN102651121B (zh) 一种基于fpga的3*3均值滤波算法的实现方法
Jana et al. An area efficient vlsi architecture for 1-d and 2-d discrete wavelet transform (dwt) and inverse discrete wavelet transform (idwt)
Spagnolo et al. Design of Approximate Bilateral Filters for Image Denoising on FPGAs
Constantinides et al. Synthesis of saturation arithmetic architectures
US20080275679A1 (en) Non-Linear Transient Analysis Module and Method for Phase Locked Loop
CN114371232B (zh) 基于卡尔曼滤波算法的色谱滤波方法、装置、介质、系统
CN103323063A (zh) 超声波流量计及其时间差测量方法
George et al. A novel and efficient hardware accelerator architecture for signal normalization
Singh et al. FPGA-based hardware-accelerated design of linear prediction analysis for real-time speech signal
TK et al. Performance and evaluation Sobel edge detection on various methodologies
Cohen et al. Complex floating point—a novel data word representation for DSP processors
Zhang et al. An efficient multiplier-less architecture for 2-D convolution with quadrant symmetric kernels
Boudabous et al. FPGA implementation of vector directional distance filter based on HW/SW environment validation
Li et al. A scalable systolic accelerator for estimation of the spectral correlation density function and its FPGA implementation
Jiang et al. An energy-efficient and high-PSNR image denoising pre-processor based on optimized non-local means algorithm for real-time FHD video applications
CN105022917A (zh) 一种信号精确提取与处理方法
Ahsan et al. VHDL modelling of fixed-point DWT for the purpose of EMG signal denoising
JP2011198336A (ja) 周波数成分解析プログラム、および周波数成分解析装置

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
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140402

Termination date: 20170223

CF01 Termination of patent right due to non-payment of annual fee