中值滤波FPGA实现.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中值滤波FPGA实现

课程设计报告书 《数字信号处理及系统设计》 中值滤波-FPGA设计 设计人:班级:硕研学号: 中值滤波器-FPGA实现 ■ 前沿 对于许多图像处理问题,传统的线性滤波方法存在着固有的缺陷。为此,最近几十年来,发展起来了一类新的非线性滤波器结构—中值滤波器。这类滤波器在图像信号处理中具有独特的优势,目前已成为非线性滤波领域的一个研究点。 针对传统中值滤波算法排序量多、速度慢的缺点,提出了一种基于FPGA的中值滤波快速算法。充分利用两个相邻滤波窗口中的相关排序信息,随着一列新像素的移入,同时更新已有的排序信息,从而完成中值滤波处理。该算法将每个窗口查找中值的比较次数降到很低,达到了快速抑制噪声及保持图像细节的目的。 中值滤波器设计的原理 中值滤波是一种非线性滤波方法,于1971年首次提出[1]。它首先对邻域点的灰度值进行排序,然后选择中间值作为输出灰度值。中值滤波的公式如下: g (x, y )=med (f (x -i ,y -j ))i ,j ∈S (1) 其中,g (x, y)和f (x, y)为像素灰度值;S为模板窗口。中值滤波要实现的是用中值g (x, y)来代替中心点值f (x, y)。对于椒盐噪声来说,由于模板的中值很大程度上不会是噪声,因此中值滤波能很好地消除它。当中心点值为噪声时,其值和中值数值相差较大,应该用中值来代替中心点值。但是,当中心点值不为噪声时,其值和中值数值相差不大,如果还用中值来代替中心点值,那么虽然对于单个像素点来说,不会产生较大的差异,但是如果对一整幅图像都进行这样的处理,这将在一定程度上使整幅图像变得模糊。据此,可以对中值滤波算法做一些改进。首先,排序窗口内的图像数据,找到中值。然后将中值和中心点值做差,将差值与事先设定的阈值T进行比较,如果两值之差的绝对值|g (x ,y -f (x, y)|大于等于阈值T,则认为中心点图像数据是噪声,用中值代替原数据值;如果两值之差的绝对值|g (x ,y -f (x, y)|小于阈值T,则认为中心点图像数据是有效数据,保持不变。即 2) 其中,g (x, y)如式(1)中定义。阈值T的选择应该针对不同的图像,根据经验或者实验进行选取。如果阈值选择过大,将有可能滤除不掉噪声;如果阈值选择过小,将仍会使图像变得模糊。由于噪声和周围像素相差较大,也和中值相差较大,因此阈值一般选择在几十左右。这样,滤波处理之后的图像在除去噪声的同时会更加接近于原图像,能在更大程度上保留图像细节,使图像更清晰。 ■中值滤波的快速算法 我们都知道,冒泡排序算法,在中值滤波中,是最基本、最经典的传统通用算法。很多经过改进后的优化版本的快速算法和经过推广衍生后的性能增强的中值滤波算法,都是基于这个冒泡排序算法的原理而产生的。我们下面将会着重描述的中值滤波的快速算法,就是在这个冒泡算法上,经过修改优化得到的。 这个快速算法的理念就在于,我们没有必要对输入窗口中的所有灰度值都进行排序,也不需要得到它们的完整序列。我们只需要找到那个排列在中间位置的值就可以了。它包含了以下所罗列出来的三个步骤:第一步:对输入窗口中的每一列的灰度值,形成一个象素数组,并且对每一个象素数组进行单独的排序。第二步:对输入窗口中的每一行的灰度值,也形成一个类似的象素数组,并且同样对每一个象素数组进行单独的排序。第三步:经过排序之后,形成了新的输入窗口,这个窗口在行和列中都已经得到了排序,对现在排序之后的输入窗口中的对角线上的所有灰度值进行排序,并且选出这一个对角线上所有灰度值的中间值,然后这个中间值就是整个输入窗口的中值,也就是要作为最后输出的那个中值。我们可以得到这样一个快速算法。就是在特殊的3×3的象素大小的输入窗口的情况下,有九个数据需要被处理。那么我们就顺便按照物理位置将这个九个象素点分成列的三组,然后分别进行排序,得到每一列数据的最大值、中间值和最小值。然后对三个最大值、三个最小值和三个中间值进行排序,得到的结果,我们只取三个数,也就是三个最大值中的最小值,三个中间值中的中间值和三个最小值中的最大值。这三个值对应上面的那个说法,就是经过两个步骤之后,行和列都已经排序完了之后的一个对角线上的三个值。这三个值最后经过排序得到的中间值,就是整个输入窗口中九个象素点的灰度值中的中间值了。 中值滤波的快速算法的过程如下图1所示: 图1 在输入窗口大小为3X3的情况下的中值滤波快速算法 中值滤波算法核心是排序,排序算法的优劣直接决定了求取中间值的效率。从而决定滤波器的整体性能。基于硬件的排序算法设计可以充分的利用硬件平台的并行性特点,从而达到加快处理的速度目的。下面分析3X3窗口图像数据的数学模型,说明中间值的求得过程。 设窗口的数据分别为: W11

文档评论(0)

linjuanrong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档