基于FPGA的中值滤波算法实现

         在这一篇开篇之前,我需要解决一个问题,上一篇我们实现了基于FPGA的均值滤波算法的实现,最后的显示效果图上发现有一些黑白色的斑点,我以为是椒盐噪声,然后在做基于FPGA的中值滤波算法的实验时,我发现黑白斑点并没有消除,中值滤波本来是可以很好的滤掉椒盐噪声,所以说这里并不是椒盐噪声,最后经过我仔细的检查,终于明白了问题的所在。我所使用的Xilinx这款开发板的晶振为125Mhz,串口模块我使用前面设计好的代码,输入时钟为50Mhz,产生的接收完成标志信号也就是一个50Mhz的时钟周期,我这里将接收完成标志作为,双口RAM的写使能,却把IP Core的时钟设置为125Mhz系统时钟,所以在wea有效期间,clka会有至少两次上升沿,所以在串口传输过程中,RAM写入的数据可能会有一部分出现偏差,所以最终显示出来有部分像素有问题。这里我修改如下。

  最后均值滤波的显示效果也是同样的,一幅完好的图片,和原图相比只是变模糊了一些,查看图片请跳至文末。

  在实时图像采集中,不可避免的会引入噪声,尤其是干扰噪声和椒盐噪声,噪声的存在严重影响边缘检测的效果,中值滤波是一种基于排序统计理论的非线性平滑计数,能有效平滑噪声,且能有效保护图像的边缘信息,所以被广泛用于数字图像处理的边缘提取,其基本原理是把数字图像或数字序列中的一点的值用该点邻域内所有点的中值来代替。

中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。所以,中值滤波方法一经提出后,便在数字信号处理领得到重要的应用。

中值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,对模板的像素由小到大进行排序,再用模板的中值来替代原像素的值的方法。

         当我们使用3x3窗口后获取领域中的9个像素,就需要对9个像素值进行排序,为了提高排序效率,排序算法思想如图3-18所示

(1)       对窗内的每行像素按降序排序,得到最大值、中间值和最小值;

(2)       把三行的最小值相比较,取其中的最大值;

(3)       把三行的最大值相比较,取其中的最小值;

(4)       把三行的中间值相比较,再取一次中间值;

(5)       把前面的到的三个值再做一次排序,获得的中值即该窗口的中值。

排序算法思想

  中值滤波的3x3矩阵的生成和均值滤波是完全类似的。我们求中值的方法是,先对3x3矩阵的每行按从大到小进行排序,然后利用排序法求出最大值那一列的最小值,求出之间数那一列的中间值,求出最小值按一列的最大值,最后将求出的三个值再排序,这三个值的中间值就是这个3x3矩阵的中间值。

中值滤波计算

如图所示仿真,可以推算出,这个中值完全是正确的,最后将求出的中值输出,这样中值定理便完成了。 

3x3矩阵的中值输出

         我们在求中值的时候消耗了三个时钟周期,最后输出写RAM使能信号时,需要将per_clken延时3个时钟周期,保证图像数据与写RAM使能对齐、同步性。这里延时的写法和前面文章中所讲的是完全相同的!

  中值滤波和均值滤波比较:中值滤波与均值滤波分别是非线性滤波和线性滤波的代表,这两种滤波非常的相似,但滤波的效果却有很大的差别,均值滤波相当于低通滤波,有将图像模糊化的趋势,对椒盐噪声基本无能为力。中值滤波的优点是可以很好的过滤椒盐噪声,缺点是容易造成图像的不连续。中值滤波有效的移植了最大值和最小值,图像会变得均匀,对椒盐噪声有很好的滤出效果!所以本系统最终选择采用中值滤波的方法。

灰度lena

均值滤波lena

中值滤波lena

  上图为灰度图,中间为均值滤波图像,下图为中值滤波后的图像。通过对比发现,均值滤波后的lena变得更模糊,亮度也变高,而中值滤波后的lena清晰度较好,也是有效的过滤掉了椒盐噪声,由于我们这是所选取的图片椒盐噪声不明显,感兴趣的读者可以自己去试着找一幅带椒盐噪声的图片去处理一下。这里需要强调的一下是滤波后的图像会有部分边缘缺失,这是因为我们在求取均值或中值时,生成的3x3矩阵,在缓存第一行数据时,第二三行数据是没有的,同样缓存到前两行第三行数据也是没有的,但这个时候我们就已经开始了求均值或中值的运算,那么这个时候输出的像素点其实是作废的,这里我们并没有过多的关心这些像素点,只是专注于学习中值滤波。

转载请注明出处:NingHeChuan(宁河川)

图像处理系列文章

第一篇:基于FPGA的VGA显示静态图片

第二篇:基于FPGA的RGB565_YCbCr_Gray算法实现

第三篇:基于FPGA的Uart接收图像数据至VGA显示

番外篇:数字图像处理界标准图像 Lena 后面的故事

第四篇:基于FPGA的均值滤波算法实现

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

2018年最受欢迎Python机器学习库介绍

1463
来自专栏我的技术专栏

浅谈 GPU图形固定渲染管线

图形渲染管道被认为是实时图形渲染的核心,简称为管道。管道的主要功能是由给定的虚拟摄像机、三维物体、灯源、光照模型、纹理贴图或其他来产生或渲染一个二维图像。由此可...

1897
来自专栏python开发者

基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)

基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和...

4156
来自专栏计算机视觉战队

论文阅读——Selective Search for Object Recognition

今天认真把Selective Search for Object Recognition这篇文章阅读完,想来写写自己的见解与想法。如果有错,希望得到大牛们的指点...

29210
来自专栏机器之心

教程 | face-api.js:在浏览器中进行人脸识别的JavaScript接口

号外!号外!现在人们终于可以在浏览器中进行人脸识别了!本文将为大家介绍「face-api.js」,这是一个建立在「tensorflow.js」内核上的 java...

1682
来自专栏WOLFRAM

最新北京高考数学试题 Wolfram 完整版

1074
来自专栏iOSDevLog

机器学习研究和开发所需的组件列表

Here is a list of components that are needed for the successful machine learning...

762
来自专栏marsggbo

DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测

一、目标定位 这一小节视频主要介绍了我们在实现目标定位时标签该如何定义。 ? 上图左下角给出了损失函数的计算公式(这里使用的是平方差) 如图示,加入我们需...

1906
来自专栏IT派

“表”解机器学习

导语:在过去的几个月里,作者一直在专注于整理归纳AI的各类小要点。在被越来越多的朋友同事问及时,我决定将这些总结和心得的完整版分享给大家。为了增加内容的趣味性和...

3485
来自专栏机器学习和数学

[有意思的数学] 傅里叶变换和卷积与图像滤波的关系(1)

开始之前,说个事情,这个公众号的发文的频率是不确定的哈,有时候我可能不方便,或者比较忙的时候,就不更新了,这几天刚开始,我写着写着还有点上瘾,哈哈,所以每天都会...

35311

扫码关注云+社区