中值滤波器 设计
- 格式:doc
- 大小:259.01 KB
- 文档页数:12
自适应中值滤波器的设计与实现中值滤波器是一种常用的图像降噪滤波器,可以有效地去除图像中的椒盐噪声。
而自适应中值滤波器则是在传统中值滤波器的基础上进行改进,能够在保持图像细节的同时更好地去除噪声。
本文将介绍自适应中值滤波器的设计原理和实现方法。
一、自适应中值滤波器的设计原理具体来说,自适应中值滤波器的设计原理如下:1.设定滤波窗口的大小和初始值。
2.对于滤波窗口内的像素,按照灰度值进行排序,找到中间值,即中心像素点。
3.计算滤波窗口内的最大灰度值和最小灰度值,并计算其差值。
4.判断中心像素点是否为椒盐噪声,如果是,则将中心像素点的灰度值设置为滤波窗口内的中值,即进行中值滤波。
5.如果中心像素点不是椒盐噪声,则将滤波窗口的大小加1,并重新执行步骤2-4,直到找到合适的滤波窗口大小。
二、自适应中值滤波器的实现方法1.读入待处理的图像,并设定滤波窗口的大小和初始值。
2.对图像的每个像素点都进行以下操作:a.获取滤波窗口内的像素,并按照灰度值进行排序。
b.找到滤波窗口内的中心像素点。
c.计算滤波窗口内的最大灰度值和最小灰度值,并计算其差值。
d.判断中心像素点是否为椒盐噪声,如果是,则将中心像素点的灰度值设置为滤波窗口内的中值,即进行中值滤波。
e.如果中心像素点不是椒盐噪声,则将滤波窗口的大小加1,并重新执行步骤a-d,直到找到合适的滤波窗口大小。
3.输出处理后的图像。
三、自适应中值滤波器的优缺点及应用自适应中值滤波器在图像处理领域有广泛的应用。
它可以应用于数字图像处理、计算机视觉、医学影像等领域,用于去除图像中的椒盐噪声,提高图像质量。
此外,自适应中值滤波器还可以用于图像分割、边缘检测等任务中,以改进算法的鲁棒性和准确性。
总结起来,自适应中值滤波器是一种有效的图像降噪滤波器,在保持图像细节的同时能够较好地去除噪声。
其设计原理是基于中值滤波器的改进,通过对滤波窗口内像素灰度值的分析来决定中心像素点是否进行中值滤波。
中值滤波器( Median Filter ) C++ 实现(转)中值滤波据我的理解是把摄像头得到的图像或者其他图像⾥⾯⼀些噪点去掉, 去掉的原理是在3*3⾥⾯去寻找中值,下⾯有讲到~~⾄于摄像头⾥⾯为什么有噪点,我也不清楚,有清楚的⼈,不妨解释下咯~~给其他不懂的童鞋们解答解答,或者对中值滤波的理解,有更加透彻的,也不妨在这⾥⾯留⾔~~谢谢啦!!这把可以清晰地看到,这⾥有6,2,0,3,97,4,19,3,10这些像素,然后中间的这些像素值就被这些像素的中位数也就是中值取代了。
为了满⾜和前⾯⼀篇⽂章的格式相对应,我们马上进⼊下⼀个单元,来看看在平滑和降噪⽅⾯的功效!原图1 中值滤波之后噪声图(5%) 中值滤波后:⾮常impressive的⼀点在这⾥就可以看出来了,很明显中值滤波不仅是图像变得平滑,同时去除了椒盐噪声(图像最外圈的像素没有去除掉只是因为我没有从0-width处理⽽已)。
从这⾥中值的逻辑来看,我们做中值操作的时候,那么⽩⾊(255)和⿊⾊(0)因为是最⼤最⼩值,除⾮周围的颜⾊都是⿊⾊或者⽩⾊,不然⼀般都会被剔除掉,这就是和均值最⼤的不同!所以在效果上要好很多。
⼀般来说这个中值滤波是去除椒盐噪声的⾮常理想的选择。
⼀样的,最后还是贴⼀段我运⾏的代码:void medianFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height){memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );for (int j=1;j{for (int i=1;i{int k = 0;unsigned char window[9];for (int jj = j - 1; jj < j + 2; ++jj)for (int ii = i - 1; ii < i + 2; ++ii)window[k++] = corrupted[jj * width + ii];// Order elements (only half of them)for (int m = 0; m < 5; ++m){int min = m;for (int n = m + 1; n < 9; ++n)if (window[n] < window[min])min = n;// Put found minimum element in its placeunsigned char temp = window[m];window[m] = window[min];window[min] = temp;}smooth[ j*width+i ] = window[4]; }}}。
Matlab中的多种滤波器设计方法介绍引言滤波器是数字信号处理中常用的工具,它可以去除噪声、改善信号质量以及实现其他信号处理功能。
在Matlab中,有许多不同的滤波器设计方法可供选择。
本文将介绍一些常见的滤波器设计方法,并详细说明它们的原理和应用场景。
一、FIR滤波器设计1.1 理想低通滤波器设计理想低通滤波器是一种理论上的滤波器,它可以完全去除截止频率之上的频率分量。
在Matlab中,可以使用函数fir1来设计理想低通滤波器。
该函数需要指定滤波器阶数及截止频率,并返回滤波器的系数。
但是,由于理想低通滤波器是非因果、无限长的,因此在实际应用中很少使用。
1.2 窗函数法设计为了解决理想滤波器的限制,窗函数法设计了一种有限长、因果的线性相位FIR滤波器。
该方法利用窗函数对理想滤波器的频率响应进行加权,从而得到实际可用的滤波器。
在Matlab中,可以使用函数fir1来实现窗函数法设计。
1.3 Parks-McClellan算法设计Parks-McClellan算法是一种优化设计方法,它可以根据指定的频率响应要求,自动选择最优的滤波器系数。
在Matlab中,可以使用函数firpm来实现Parks-McClellan算法。
二、IIR滤波器设计2.1 Butterworth滤波器设计Butterworth滤波器是一种常用的IIR滤波器,它具有平坦的幅频响应,并且在通带和阻带之间有宽的过渡带。
在Matlab中,可以使用函数butter来设计Butterworth滤波器。
2.2 Chebyshev滤波器设计Chebyshev滤波器是一种具有较陡的滚降率的IIR滤波器,它在通带和阻带之间有一个相对较小的过渡带。
在Matlab中,可以使用函数cheby1和cheby2来设计Chebyshev滤波器。
2.3 Elliptic滤波器设计Elliptic滤波器是一种在通带和阻带上均具有较陡的滚降率的IIR滤波器,它相较于Chebyshev滤波器在通带和阻带上都具有更好的过渡特性。
中值滤波算法公式:
中值滤波器在处理图像时,将像素点的值设置为邻域像素值的中值。
具体来说,对于一维情况,如果序列为{x1, x2, ..., xn},中值滤波器的输出为:
median(x1, x2, ..., xn)
对于二维情况,中值滤波器通常用于消除图像中的噪声。
假设有一个二维矩阵,中值滤波器的输出为:
median(x11, x12, ..., x22)
其中,x11, x12, ..., x22是二维矩阵中每个像素点的邻域像素值。
注意:中值滤波算法对于去除图像中的椒盐噪声特别有效,但对于高斯噪声效果较差。
在更具体的应用中,中值滤波算法可以有多种变种。
例如,可以选择不同的邻域大小,可以选择对所有像素应用滤波器,或者只对特定类型的像素应用滤波器。
在某些情况下,还可以使用更复杂的排序算法来计算中值,以提高处理速度。
中值滤波算法的优点是简单且易于实现。
它不需要知道像素的统计特性,也不需要对像素值进行复杂的数学运算。
此外,中值滤波器对于去除由异常值引起的噪声特别有效。
然而,中值滤波算法也有一些局限性。
例如,它可能会改变图像的边缘细节,因为它将像素值设置为邻域像素值的中值,而不是原始像素值。
此外,对于高斯噪声,中值滤波算法可能不是最佳选择,因为高斯噪声的分布特性与中值滤波器的去除效果不太匹配。
在实际应用中,需要根据具体需求选择适当的滤波算法。
中值滤波算法适用于去除椒盐噪声,但对于其他类型的噪声,可能需要使用其他类型的滤波器,如高斯滤波器、均值滤波器或自适应滤波器等。
中值滤波器算法中值滤波器算法是一种常用的图像处理算法,用于去除图像中的噪声。
噪声是图像中不希望存在的干扰信号,可能由于图像采集过程中的电磁干扰、传感器的噪声或信号传输过程中的干扰等原因引起。
噪声会使得图像失真,降低图像的质量和清晰度,因此需要进行去噪处理。
中值滤波器算法的基本思想是将图像中的每个像素点的灰度值替换为该像素点周围邻域中灰度值的中值。
这样可以有效地去除噪声,并保持图像的边缘和细节信息。
中值滤波器算法的具体步骤如下:1. 对图像进行扫描,遍历图像中的每个像素点。
2. 对于每个像素点,选择一个固定大小的邻域窗口,该窗口覆盖了该像素点及其周围的像素。
3. 将窗口中的所有像素的灰度值按照大小进行排序,找到排序后的中间值。
4. 将该中间值作为该像素点的新灰度值。
5. 重复步骤2到步骤4,直到遍历完所有像素点。
中值滤波器算法的核心在于选择合适的窗口大小。
窗口大小的选择会影响去噪的效果和图像的细节保留程度。
如果窗口过小,可能无法去除大尺度的噪声;如果窗口过大,可能会导致图像细节的模糊。
因此,在实际应用中需要根据具体情况进行选择。
中值滤波器算法具有以下优点:1. 对于椒盐噪声等随机噪声有较好的去噪效果,能够有效地去除噪声点。
2. 不会引入新的噪声,保持图像的边缘和细节信息。
3. 算法简单,计算速度快,适用于实时处理和嵌入式系统。
然而,中值滤波器算法也存在一些局限性:1. 对于高斯噪声等连续分布的噪声效果较差,无法完全去除噪声。
2. 窗口大小的选择需要根据具体情况进行调整,调整不当可能会导致图像细节的丢失或模糊。
3. 算法无法区分图像中的目标和噪声,可能会将目标的细节也平滑掉。
为了提高中值滤波器算法的去噪效果,可以结合其他滤波方法进行优化。
例如,可以先使用高斯滤波器对图像进行平滑处理,然后再应用中值滤波器进行去噪。
这样可以兼顾去噪效果和图像细节的保留。
中值滤波器算法是一种简单且有效的图像去噪方法。
通过选择合适的窗口大小,可以去除图像中的噪声,提高图像的质量和清晰度。
均值与中值滤波课程设计一、课程目标知识目标:1. 学生能理解均值与中值滤波的原理,掌握其计算方法和应用场景。
2. 学生能区分并运用均值滤波和中值滤波处理图像噪声,了解不同滤波器的优缺点。
3. 学生能运用所学知识解决实际问题,如对图像进行预处理以改善图像质量。
技能目标:1. 学生能够运用编程软件(如MATLAB)实现均值与中值滤波算法,提高实际操作能力。
2. 学生能够通过实际案例分析,培养分析和解决问题的能力。
3. 学生能够通过小组合作,培养沟通协作能力和团队精神。
情感态度价值观目标:1. 学生能够对图像处理产生兴趣,培养探索精神和创新意识。
2. 学生能够认识到均值与中值滤波在实际应用中的价值,提高学习的积极性和主动性。
3. 学生能够树立正确的价值观,认识到技术发展对社会进步的重要性。
课程性质:本课程属于图像处理领域的入门课程,旨在让学生了解并掌握基本的滤波方法。
学生特点:学生为高年级本科生,已具备一定的数学基础和编程能力,对图像处理有一定了解。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,提高学生的实际操作能力和解决问题的能力。
在教学过程中,注重启发式教学,引导学生主动思考,激发学生的学习兴趣。
同时,关注学生的情感态度价值观培养,提升其综合素质。
通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 基本概念介绍:滤波器原理、图像噪声类型及其特点。
- 教材章节:第2章 图像噪声与滤波器原理2. 均值滤波:算法原理、计算方法、应用场景及优缺点分析。
- 教材章节:第3章 均值滤波3. 中值滤波:算法原理、计算方法、应用场景及优缺点分析。
- 教材章节:第4章 中值滤波4. 滤波算法编程实践:使用MATLAB实现均值与中值滤波算法。
- 教材章节:第5章 滤波算法编程实践5. 案例分析:实际图像处理案例,运用均值与中值滤波解决噪声问题。
中值滤波和低通滤波的效果中值滤波和低通滤波是两种常用的图像处理方法,用于去除图像中的噪声和平滑图像。
本文将逐步介绍它们的原理、方法和效果。
第一部分:中值滤波中值滤波是一种非线性滤波方法,通过取邻域内像素值的中值来替代当前像素值,从而消除图像中的椒盐噪声或其他突发噪声。
其基本步骤如下:1. 定义滤波窗口的大小,通常是一个方形或圆形的区域。
2. 将滤波窗口从图像的左上角开始,逐个像素地遍历整个图像。
3. 对于每个滤波窗口中的像素,将其邻域内的像素值进行排序。
4. 取排序后的像素值的中值,并将该值赋给当前像素。
5. 继续遍历下一个像素,直到整个图像都被处理完成。
中值滤波可以有效地去除椒盐噪声,同时又能保留图像中的边缘信息。
这是因为中值滤波通过选择中间值来替代异常像素值,从而抑制了噪声的影响,但也可能对图像的细节产生一定影响。
此外,中值滤波适用于各种类型的图像,如灰度图像、彩色图像等。
第二部分:低通滤波低通滤波是一种线性滤波方法,通过抑制高频信号来实现图像的平滑处理。
常见的低通滤波器包括均值滤波、高斯滤波等。
下面以均值滤波为例,介绍低通滤波的基本步骤:1. 定义滤波窗口的大小和模板,通常是一个方形区域。
2. 将滤波窗口从图像的左上角开始,逐个像素地遍历整个图像。
3. 对于每个滤波窗口中的像素,计算其邻域内像素值的均值。
4. 将计算后的均值赋给当前像素。
5. 继续遍历下一个像素,直到整个图像都被处理完成。
低通滤波主要用于平滑图像,抑制图像中的高频信号,从而减少图像的噪声和细节。
由于低通滤波是基于邻域像素的平均值计算,因此会模糊图像的细节部分。
此外,低通滤波适用于各种类型的图像,具有简单、快速的优点。
第三部分:中值滤波与低通滤波的比较中值滤波和低通滤波在图像处理中都有其独特的应用和效果,下面将对它们进行比较:1. 去噪效果:中值滤波在去除椒盐噪声方面表现优秀,能够有效消除突发性的噪声点,而低通滤波器主要用于平滑图像,去除整体的噪声。
自适应中值滤波器的设计与实现自适应中值滤波器是一种基于信号的局部特性进行处理的滤波器。
它适用于在图像处理中去除椒盐噪声(salt and pepper noise)的任务。
椒盐噪声是一种随机噪声,它会在图像中产生亮或暗的像素点。
自适应中值滤波器的设计和实现可以分为以下几个步骤。
首先,我们需要定义一个滑动窗口的大小,以确定每次滤波的区域。
通常选择一个正方形的窗口,大小通常在3×3到7×7之间。
较小的窗口会导致噪声较少的图像细节损失,但也可能无法完全去除噪声。
较大的窗口可以去除更多的噪声,但可能会模糊图像。
接下来,我们需要确定中值滤波器的参数。
通常情况下,我们需要选择一个适当的阈值,来判断是否对像素进行滤波。
一个常用的阈值是像素值的标准差的倍数K,如果像素值与其领域的中值之间的差异超过K倍的标准差,则认为该像素是噪声。
为了更好地抑制噪声,阈值K通常选择较大的值。
然而,过大的阈值也可能会导致图像细节的损失。
一种常用的自适应中值滤波器算法是逐级嵌套。
首先使用较小的窗口进行滤波,然后根据滤波结果进行判断。
如果像素的灰度值与中值之间的差异大于阈值,则继续使用较大的窗口进行滤波,直到像素的灰度值与中值之间的差异小于阈值为止。
这种逐级嵌套的方法可以在保留图像细节的同时去除噪声。
在实现自适应中值滤波器时,可以使用编程语言如Python或MATLAB 来编写代码。
首先需要读取图像,并将图像转换为灰度图像。
然后,利用嵌套循环遍历每个像素,并在每个像素的领域内计算中值。
根据阈值判断是否对像素进行滤波,如果需要滤波,则继续使用较大的窗口进行滤波。
最后,将滤波结果保存为新的图像。
需要注意的是,自适应中值滤波器的设计和实现是一个复杂的任务,并且其性能和效果取决于所选择的参数和算法。
因此,在使用自适应中值滤波器时,需要根据具体的应用场景和需求进行适当的调整和优化,以达到较好的滤波效果。
学号10700214EDA技术及应用设计说明书中值滤波器设计起止日期:2013 年12 月16 日至2013年12 月20 日学生姓名杨文彬班级10电信2班成绩指导教师(签字)计算机与信息工程学院2013年12月20日天津城市建设学院课程设计任务书2013 —2014 学年第1 学期计算机与信息工程学院电子信息科学与技术专业电信2 班级课程设计名称:EDA技术及应用设计题目:中值滤波器设计完成期限:自2013 年12月16 日至2013 年12 月20 日共 1 周一.课程设计依据在掌握常用数字电路原理和技术的基础上,利用EDA技术和硬件描述语言,EDA开发软件(Quartus Ⅱ)和硬件开发平台(达盛试验箱CycloneⅡFPGA)进行初步数字系统设计。
二.课程设计内容采用状态机和流水线设计实现对输入数据的中值滤波,数据点数N=9,即依次对9个输入数据的进行处理。
串行数据输入、输出速率均为9600Byte/s。
提示:中值就是对输入N个数据排队,取中间值作为滤波输出。
三.课程设计要求1.要求独立完成设计任务。
2.课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表13.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。
4.测试要求:根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。
5.课设说明书要求:1)说明题目的设计原理和思路、采用方法及设计流程。
2)系统框图、VHDL语言设计清单或原理图。
3)对各子模块的功能以及各子模块之间的关系作较详细的描述。
4)详细说明调试方法和调试过程。
5)说明测试结果:仿真时序图和结果显示图。
并对其进行说明和分析。
指导教师(签字):教研室主任(签字):批准日期:2013 年12 月12 日目录第一章VHDL与QuartusⅡ (1)1.1 VHDL (1)1.2 QuartusⅡ (1)第二章中值滤波的基本理论和主要特性 (2)2.1中值滤波器的基本理论 (2)2.2中值滤波器的主要的特性 (2)第三章中值滤波器的算法 (3)第五章FPGA设计实现 (4)5.1 FPGA设计的优势 (4)5.2 状态机和流水线技术的应用 (4)第六章中值滤波器的模块图和结果图 (5)第七章程序 (7)参考文献 (9)第一章 VHDL与QuartusⅡ1.1 VHDLVHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
1.2 QuartusⅡAltera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
当前官方提供下载的最新版本是v13.0。
Altera Quartus II(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy 器件统一设计流程的设计工具。
工程师使用同样的低价位工具对Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。
系统设计者现在能够用Quartus II软件评估HardCopy Stratix器件的性能和功耗,相应地进行最大吞吐量设计。
Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
第二章中值滤波的基本理论和主要特性2.1中值滤波器的基本理论中值滤波器是在1971年由J.w.Jukey首先提出并应用于一维信号处理技术(时间序列分析)中,后来被二维图像信号处理技术所引用。
中值滤波是基于邻域操作的,可通过定义个大小为N×N(N为奇数,一般采用3×3或者5×5模板,相对比较采用3×3模板拥有耗时短,资源省的优点,而采用5×5模板能获得更好的处理效果更好一些)的邻域,以其中心点滑动过一幅图像的方式进行操作。
中值滤波是一种能有效地抑制图像噪声而提高信噪比的非线性滤波技术。
它是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。
用公式表示为:g(x,y)=median{f(x-i,y-j)} (i,j)∈S上式中g(x,y),f(x,y)为像素的灰度值;S为模板窗口。
对于不同的图像内容和不同的应用要求,往往采用不同的模板窗口。
中值滤波器能够很好地滤除脉冲噪声,同时又可以很好的保护目标图像的边缘因而中值滤波对极限像素值( 与周围像素灰度值差别较大的像素) 远不如平均值那么敏感, 从而可以消除孤立的噪声点, 又可以使图像产生较少的模糊。
2.2中值滤波器的主要的特性中值滤波器的主要特性有:滤除噪声的性能、中值滤波的频谱特性[、对某些信号的不变性。
滤除噪声的性能:中值滤波器是非线性运算,类似于卷积运算,过程是非常复杂的。
经研究表明,对于零值正态分布的噪声输入,中值滤波器的输出与输入的分布密度有关,输出噪声方差与输入噪声密度函数的平方成反比。
对于随机噪声的抑制能力,中值滤波比平均值滤波效果要差一点。
但对于脉冲噪声来讲,相距较远的窄脉冲,中值滤波还是很有优势的。
中值滤波的频谱特性:对于中值滤波是非线性运算,在输入很热输出之间的频率上不存在一一对应的关系,故不能用一般线性滤波器频率特性分析方法。
采用总体实验观察法,经大量实验表明,中值滤波器的频率响应与输入信号的频谱有关,呈现不规则波动不大的曲线,信号经滤波后频谱可以认为是基本不变的。
对某些信号的不变性:对于某些特性的输入信号,中值滤器输出信号保持不变,相对于一般的线性滤波器而言中值滤波器有更好的保护图像细节的优势。
第三章中值滤波器的算法基于硬件的排序算法设计可以充分地利用硬件平台的并行性特点,从而达到加快处理速度目的。
我们以3×3模块为例子,利用冒泡法求把模板数据3个行向量同时排序,进行流水操作,生成一个新的矩阵模板;求出每一行的最大值、中值、最小值,分别表示Max1=max[a11,a12,a13],Mill=mil[a11,a12,a13],Min1=min[a11,a12,a13]。
同理可得每一行的最大值、中间值、最小值Max2=max[a21,a22,a23],Mil2=mil[a21,a22,a23],Min2=min[a21,a22,a23],Max3=max[a31,a32,a33],Mil3=mi l[a31,a32,a33],Min3=min[a31,a32,a33]。
利用此方法,对窗中3行3列共9个像素取中值运算,中值滤波只需21次比较运算就可以计算出中值输出,比传统的中值滤波的36次的运算量减少了42%。
因此,相比于传统中值滤波算法,硬件实现快速中值滤波算法将占用更少的硬件资源,从而使它能够到达较高的工作频率,以满足图像实时处理的要求。
由此可得,由每一行的最大值、中值、最小值组成的新的三个数组,其中3个最小值组成的数组中的最小值为这9个数中最小值,最大值组成的数组中的最大值为这9最大值,并且3个中值中的最大值至少大于5个数,即本行中的最小值、其它两行的中的最小值;3个中值的最小值至少小于5个数,即本行的最大值,其它2行中值及最大值。
最后,只需要比较3个最大值中的最小值Min of Max,3个中值中的中值Mil of Mil,3个最小值中的最大值Max of Min,就可以得到这9个数的中值,比较的原理图如图3.1中间值的求得过程[12]。
我们可以看个例子如图3-2(a)(b),经过排序以后只要比较三个最大值7、6、10中的最小值6,三个中值5、4、9的中值5,三个最小值1、3、8的最大值8,即比较6、5、8的大小取其中值6,所以6就为这9个数的中值。
第五章 FPGA设计实现5.1 FPGA设计的优势用硬件实现某种密码算法,首先要用硬件描述语言(如HHDL、Verlog HDL)进行系统设计和编码,然后采用专用集成电路(ASIC)或现场可编程逻辑门阵列(FPGA)来具体实现。
采用ASIC方法设计周期较长,且费用也较昂贵;而采用FPGA,可由设计者自己对芯片内部单元进行配置,设计比较灵活,只需改变配置就可实现安全不同的功能,大大缩短了设计周期和开发时间,节省人力物力,同时经过优化可以达到较高的性能。
另外,有多种EDA 开发软件支持FPGA的设计,在本设计中作者采用了ALTERA公司的Quartus II开发软件。
5.2 状态机和流水线技术的应用面积和速度这两个指标贯穿着FPGA设计的始终,是设计质量评价的终极标准。
设计目标就是在满足给定的时序要求(包含对设计频率的要求)的前提下,占用较小的芯片面积;或者在所规定的面积下,使设计时序余小量更大,频率更高。
通过功能模块复用可减少设计消耗的芯片面积;反之,并行复制多个操作模块可较大地提高设计频率。
在本设计中充分考虑了这一对矜持体,采用状态机和流水线相结合的技术,使得在减少芯片资源消耗的情况下又能提高设计频率。
第六章中值滤波器的模块图和结果图采用状态机和流水线设计实现对输入数据的中值滤波,数据点数N=9,依次对9个输入数据进行处理。
串行数据输入、输出速率均为9600Byte/s。
图6.1 中值滤波器的模块图图6.2 中值滤波器的结果图第七章程序module median3x3(a11,a12,a13,a21,a22,a23,a31,a32,a33,ra11,ra12,ra13,ra21,ra22,ra23,ra31,ra32,ra33,median);output[15:0] median,ra11,ra12,ra13,ra21,ra22,ra23,ra31,ra32,ra33;input[15:0] a11,a12,a13,a21,a22,a23,a31,a32,a33;reg[15:0] ra11,ra12,ra13,ra21,ra22,ra23,ra31,ra32,ra33,median;reg[15:0] va11,va12,va13,va21,va22,va23,va31,va32,va33;always@(a11 or a12 or a13 or a21 or a22 or a23 or a31 or a32 or a33)begin{va11,va12,va13,,va21,va22,va23,va31,va32,va33}={a11,a12,a13,a21,a22,a23,a31,a32,a33}; sort2(va11,va12);sort2(va11,va13);sort2(va11,va21);sort2(va11,va22);sort2(va11,va23);sort2(va11,va31);sort2(va11,va32);sort2(va11,va33);sort2(va12,va13);sort2(va12,va21);sort2(va12,va22);sort2(va12,va23);sort2(va12,va31);sort2(va12,va32);sort2(va12,va33);sort2(va13,va21);sort2(va13,va22);sort2(va13,va23);sort2(va13,va31);sort2(va13,va32);sort2(va13,va33);sort2(va21,va22);sort2(va21,va23);sort2(va21,va31);sort2(va21,va32);sort2(va21,va33);sort2(va22,va23);sort2(va22,va31);sort2(va22,va32);sort2(va22,va33);sort2(va23,va31);sort2(va23,va32);sort2(va23,va33);sort2(va31,va32);sort2(va31,va33);sort2(va32,va33);{ra11,ra12,ra13,ra21,ra22,ra23,ra31,ra32,ra33}={va11,va12,va13,va21,va22,va23,va31,va32,va33}; median=va22;endtask sort2;inout[7:0] x,y;reg[7:0] tmp;if(x>y)begintmp=x;x=y;y=tmp;endendtaskendmodule参考文献[1]J.Batlle,J.Marti,E Ridao,A New FPGA/DSP.Based Parallel Architecture forReal-TimeImage Processing,Real-Time Imaging,2002,8(5),345.356[2]阮秋琦.数字图像处理学[M].北京:电子工业出版社,2001[3]Rafael C.Gonzalez,Richard E.Woods,Digital Image Processing,Second Edition(英文版),北京,电子工业出版社,2003[4] 霍宏淘,林小竹.何薇.数字图像处理[M].北京理工大学出版社,2002[5] Athanas P M,Abbot A L.Addressing the computational requirements of image processing witha cutom computing machine;An overview [C]//The Ninth International Parallel ProcessingSyposium,Sanata Barbara:IEEE Computer Society,1995.。