均值滤波计算_基于Python的中值与均值滤波图片降噪算法思路

80c84f06913007664d83a30643bb57dc.png 据平日学习内容推断,本以为会用一道简单而无脑的算法题结束一学期的学习。不曾想乍一看却毫无头绪,虽说仔细研究后发现其实并不难,在这里记录一下思考和解决过程。
首先我们要了解一下什么叫均值滤波和中值滤波,在这里摘录两段题目中给出的介绍。

(a) Local averaging is a common method to denoise images (i.e. suppress noise) where a small square neighbourhood of odd size (e.g. 3x3, 5x5) around each pixel from the noisy image is taken and the average of this neighbourhood is computed. A new ‘denoised’ image is then formed where each pixel is the average from the local neighbourhood of the corresponding pixel in the noisy image.

(b) Median filtering is an alternate method to denoise images where a  small square neighbourhood of odd size (e.g. 3x3, 5x5) around each pixel from the noisy image is taken and the median value of this neighbourhood is computed. A new ‘denoised’ image is then formed where each pixel is the median from the local neighbourhood of the corresponding pixel in the noisy image.

倘若未曾接触过图像处理,乍一看可能你也跟我一样毫无头绪。在写程序的过程中,我习惯遵循一个解决问题的方法,即提出问题,解决问题,遇到困难,针对性学习。
在这 道题目中,我们要解决的第一个问题是matplotlib是如何处理图像数据的。 根据我最初的构想,因为有RGB三个通道,图像数据应该由一个三维矩阵构成,形状类似于这样。 f6878a09b449e7def694b5ae490df7ed.png 但在实际读取的时候,我只得到了一个二维矩阵。 91e11d0ff04f8418043bf15f4d7700af.png 因为没有接触过图像运算,在这里纠结了蛮久也不清楚是什么原因,最后到Stackoverflow问了一下。 152a5d81f8325a5083fdda23e3153de0.png aab6c9fb56d6838a01a3877bd216bfc8.png 原来我们作业中的位图是Grayscale Image,已经经过了灰度处理,所以成为了二维矩阵。而未经过灰度处理的图像结构和我推测的相似,是一个三位矩阵包含RGB三个通道。如果我们要处理RGB三通道的图像,进行简单的公式换算即可。公式如下: a38127cf7140b27ec1cf12e1885b2c36.png 第一个问题解决,下一步我希望确定这个Numpy数组的形状,以及它与这张图像之间的关系。首先我们看一下这个图片的基本信息。 0aea93aae65605c07319611bf61e27a7.png 这是一个是一个308x242像素的图像,不出意外的话理论上应该是每个像素对应了一个灰度值,把这个数组的形状打印一下看看。 7e2d393a01cac00b2ed739b9ff85ab2a.png 果然和猜测的相同,每一个灰度值代表了一个像素点。到这里,我们可以回到最初的问题,什么是均值滤波和中值滤波。其实那段话已经解释的比较明确,均值和中值都是指代像素值。由此可见,我们只要对每个像素点周边的3x3或者5x5的像素进行分析,然后重新生成一个降噪后的图像即可。 402863e9fce38b54c679e6d415783532.png 使用一个四层的循环嵌套,其中的高度和宽度为数组形状,point_y与point_x指代filter size定义的需要均值或中值的像素点规模,减去filter size的目的是防止到达图片边界时超出范围引起数组溢出。 最后根据中值和均值的定义进行计算即可,在这里以中值为例,首先对获取到的周边像素点进行排序,随后选择中间值为新图像的灰度值,赋予新的图像数组即可。 424de853f5a208b33a3247ee2fe4616a.png 至此,一个基于中值滤波和均值滤波的降噪算法完成,这个只考虑了灰度图,所以其实并不具有普适性,也并不算难,只是涉及了一些图像处理的基础。 最后来一个降噪前与降噪后对比的效果图。 cd6fe373a5fac54334e262d48806e720.png
List of References Huang, T., G. J. T. G. Y. Yang, and Greory Tang. "A fast two-dimensional median filtering algorithm." IEEE Transactions on Acoustics, Speech, and Signal Processing 27.1 (1979): 13-18. Median filter [Online] https://en.wikipedia.org/wiki/Median_filter [14 May 2020]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值