Noise Adaptive Fuzzy Switching Median Filter (NAFSM)

将图像 X X X的噪声像素置0,非噪声像素置1,保存到binary noise mask N N N
N ( i , j ) = { 0 , X ( i , j ) = L salt  or  L pepper  1 , otherwise  N(i, j)=\left\{\begin{array}{ll}0, & X(i, j)=L_{\text {salt }} \text { or } L_{\text {pepper }} \\1, & \text { otherwise }\end{array}\right. N(i,j)={0,1,​X(i,j)=Lsalt ​ or Lpepper ​ otherwise ​

定义方形滤波窗口, s s s初始化为1:
W 2 s + 1 ( i , j ) = { X ( i + m , j + n ) } where  m , n ∈ ( − s , … , 0 , … , s ) \begin{aligned}W_{2 s+1}(i, j)=\{X(i+m, j+n)\} & \text { where } \\m, n \in(-s, \ldots, 0, \ldots, s)\end{aligned} W2s+1​(i,j)={X(i+m,j+n)}m,n∈(−s,…,0,…,s)​ where

方形滤波窗口 W 2 s + 1 ( i , j ) W_{2s+1}(i,j) W2s+1​(i,j)内图像的非噪声像素数目为
G 2 s + 1 ( i , j ) = ∑ m , n ∈ ( − s , … , 0 , … , s ) N ( i + m , j + n ) G_{2 s+1}(i, j)=\sum_{m, n \in(-s, \ldots, 0, \ldots, s)} N(i+m, j+n) G2s+1​(i,j)=m,n∈(−s,…,0,…,s)∑​N(i+m,j+n)

如果 W 2 s + 1 ( i , j ) W_{2s+1}(i,j) W2s+1​(i,j)内有非噪声像素(即 G 2 s + 1 ( i , j ) ≥ 1 G_{2s+1}(i,j)\ge 1 G2s+1​(i,j)≥1),则用这些非噪声像素计算像素点 ( i , j ) (i,j) (i,j)的替代值:

M ( i , j ) = median ⁡ { X ( i + m , j + n ) } with  N ( i + m , j + n ) = 1 .  M(i, j)=\operatorname{median}\{X(i+m, j+n)\} \text { with } N(i+m, j+n)=1 \text { . } M(i,j)=median{X(i+m,j+n)} with N(i+m,j+n)=1 .

如果没有非噪声像素(即 G 2 s + 1 ( i , j ) < 1 G_{2s+1}(i,j)\lt 1 G2s+1​(i,j)<1),那么滤波窗口将扩大1个尺寸(即 s ← s + 1 s\leftarrow s+1 s←s+1)。直到 G 2 s + 1 ( i , j ) ≥ 1 G_{2s+1}(i,j)\ge 1 G2s+1​(i,j)≥1。
在这个过程如果 s = 3 s=3 s=3时,还是 G 2 s + 1 ( i , j ) < 1 G_{2s+1}(i,j)\lt 1 G2s+1​(i,j)<1,则设定窗口 W W W大小为 3 × 3 3\times 3 3×3来计算 M ( i , j ) M(i,j) M(i,j)
W 3 ( i , j ) = { X ( i + k , j + l ) } where  k , l ∈ ( − 1 , 0 , 1 ) W_{3}(i, j)=\{X(i+k, j+l)\} \text { where } k, l \in(-1,0,1) W3​(i,j)={X(i+k,j+l)} where k,l∈(−1,0,1)

M ( i , j ) = median ⁡ { X ( i − 1 , j − 1 ) , X ( i , j − 1 ) , X ( i + 1 , j − 1 ) , X ( i − 1 , j ) } when  s = 3 and  G 7 ( i , j ) = 0. \begin{aligned}M(i, j)=\operatorname{median}\{& X(i-1, j-1), X(i, j-1), \\&X(i+1, j-1), X(i-1, j)\} \\\text { when } s=& 3 \text { and } G_{7}(i, j)=0 .\end{aligned} M(i,j)=median{ when s=​X(i−1,j−1),X(i,j−1),X(i+1,j−1),X(i−1,j)}3 and G7​(i,j)=0.​

得出 M ( i , j ) M(i,j) M(i,j)后,再通过 3 × 3 3\times 3 3×3窗口来计算窗内其他像素与中心像素灰度值差的绝对值
d ( i + k , j + l ) = ∣ X ( i + k , j + l ) − X ( i , j ) ∣ with  ( i + k , j + l ) ≠ ( i , j ) . \begin{aligned}d(i+k, j+l)=|X(i+k, j+l)-X(i, j)| & \\\text { with }(i+k, j+l) \neq(i, j) .\end{aligned} d(i+k,j+l)=∣X(i+k,j+l)−X(i,j)∣ with (i+k,j+l)​=(i,j).​

然后,定义局部信息为 3 × 3 3\times 3 3×3滤波窗口内的最大绝对亮度差:
D ( i , j ) = max ⁡ { d ( i + k , j + l ) } D(i, j)=\max \{d(i+k, j+l)\} D(i,j)=max{d(i+k,j+l)}

使用最大值操作而不是最小值操作的原因如下图所示:


如图3(a)所示,取最大值操作能使得“噪声像素”被置为最大亮度值255,其他像素则将被置为动态范围内的其他值。这个结果也表达了局部信息,例如图像细节、边缘或无噪声像素,以供进一步处理。

相反的,如图3(b)所示,取最小值操作则无法区分“噪声像素”和“非噪声像素”。

模糊推理:定义模糊隶属函数为:
F ( i , j ) = { 0 , : D ( i , j ) < T 1 D ( i , j ) − T 1 T 2 − T 1 , : T 1 ≤ D ( i , j ) < T 2 1 , : D ( i , j ) ≥ T 2 F(i, j)=\left\{\begin{array}{lll}0, & : & D(i, j)\lt T_{1} \\\frac{D(i, j)-T_{1}}{T_{2}-T_{1}}, & : & T_{1} \leq D(i, j)\lt T_{2} \\1, & : & D(i, j) \geq T_{2}\end{array}\right. F(i,j)=⎩⎨⎧​0,T2​−T1​D(i,j)−T1​​,1,​:::​D(i,j)<T1​T1​≤D(i,j)<T2​D(i,j)≥T2​​
表示像素 ( i , j ) (i,j) (i,j)应该被修复的程度。


0 ∼ T 1 : 0\sim T_1: 0∼T1​:不修复

T 1 ∼ T 2 : T_1\sim T_2: T1​∼T2​: 部分修复

T 2 ∼ 255 : T_2\sim255: T2​∼255:全部修复

T 1 , T 2 T_1,T_2 T1​,T2​分别设为10和30。

替代噪声像素的修正值 Y ( i , j ) Y(i,j) Y(i,j)为被处理的像素 X ( i , j ) X(i,j) X(i,j)与中值像素值 M ( i , j ) M(i,j) M(i,j)的加权和:
Y ( i , j ) = [ 1 − F ( i , j ) ] ⋅ X ( i , j ) + F ( i , j ) ⋅ M ( i , j ) Y(i, j)=[1-F(i, j)] \cdot X(i, j)+F(i, j) \cdot M(i, j) Y(i,j)=[1−F(i,j)]⋅X(i,j)+F(i,j)⋅M(i,j)

# -*- coding:utf-8 -*-
'''
@paper:Noise Adaptive Fuzzy Switching Median Filter for Salt-and-Pepper Noise Reduction
'''
import numpy as np# Adaptive Weighted Mean Filter
class Nafsmf(object):def __init__(self, h, s_max, T1, T2):self.h = hself.s_max = s_maxself.T1 = T1self.T2 = T2def t_zero_pad_matrix(self, A, t):'''图像四周填充t层0'''m, n = np.shape(A)img_pad = np.zeros((m + t, n + t))img_pad[t:, t:] = Areturn img_paddef binary_noise_mask(self, A):'''噪声像素置0,其他像素置1'''B = np.zeros(np.shape(A))B[(A == 255) | (A == 0)] = 0B[(A != 255) & (A != 0)] = 1return Bdef k_approximate_matrix(self, img_pad, i, j, k, t):k_approximate_mat = img_pad[(i + t - k):(i + t + k + 1), (j + t - k):(j + t + k + 1)]return k_approximate_matdef fuzzy(self, D):if D < self.T1:F = 0elif D >= self.T2:F = 1else:F = (D - self.T1) / (self.T2 - self.T1)return Fdef process_image(self, X):m, n = np.shape(X)Y = X.copy()N = self.binary_noise_mask(X)img_pad = self.t_zero_pad_matrix(X, self.s_max)for i in range(m):for j in range(n):if N[i, j] == 0:s = 1while s <= self.s_max:W = self.k_approximate_matrix(img_pad, i, j, k=s, t=self.s_max)G = np.sum(self.binary_noise_mask(W))if G >= 1:M = np.median(W[self.binary_noise_mask(W).astype(bool)])elif G == 0 and s == 3:tem = self.k_approximate_matrix(img_pad, i, j, k=1, t=self.s_max)tem = tem.flatten()M = np.median(tem[0:4])else:s = s + 1continuetem = self.k_approximate_matrix(img_pad, i, j, k=1, t=self.s_max)d = np.abs(tem - X[i, j])D = np.max(d)F = self.fuzzy(D)Y[i, j] = (1 - F) * X[i, j] + F * Mbreakreturn Y

Noise level Noise image NAFSM
90%
95%
99%

【论文复现】中值滤波改进:Noise Adaptive Fuzzy Switching Median Filter(NAFSMF)相关推荐

  1. 【论文复现】中值滤波改进:Different Applied Median Filter(DAMF)

    Different Applied Median Filter(DAMF) DAMF解决的问题:中值滤波使用固定大小的模板.随着噪声密度的增加,固定大小的模板在消除椒盐噪声方面表现一般:​对于高密度椒 ...

  2. 中点和中值滤波的区别_P8:滤波器(Filter)

    前言:在混音中,均衡器(EQ)是最常用的一种效果处理器,而均衡器的核心是滤波器.故此,在学习均衡器之前,需先搞懂滤波器,搞懂了滤波器你也就搞懂了均衡器.本篇内容中的滤波器泛指数字滤波器,另外,我们的目 ...

  3. matlab 实现中值滤波

    平均滤波器不能滤除信号中的脉冲噪声,而中值滤波器可以消除部分脉冲噪声 中值滤波器的原理: 按照样本的幅值排序,然后选择其中的中值,作为滤波器的输出 代码实现如下: clear all; clf N=2 ...

  4. 中值滤波原理及MATLAB算法实现

    中值滤波是一种非线性滤波方式,它依靠模板来实现. 对于一维中值滤波,设模板的尺寸为 M ,M=2*r+1,r为模板半径,给定一维信号f(i),i = 1,2,3--N,则中值滤波输出为: g(i) = ...

  5. 数字图像处理——中值滤波及其改进算法

    一.算法介绍 中值滤波器是非线性滤波器的一个例子,它在保留图像特征方面非常有效. 但是,滤波器的窗口大小直接影响中值滤波器的性能. 较小的窗口保留了特征,但会导致噪声抑制的减少. 在较大窗口的情况下, ...

  6. 自适应中值滤波及实现

    前言 无意中看到了一篇比较老的论文,Adaptive median filters: new algorithms and results.感兴趣的可以下载下来看看.主要就是提出了一种自适应中值滤波算 ...

  7. 噪点检测matlab,基于噪点检测的中值滤波图像去噪方法

    摘  要: 图像去噪是图像处理中一个非常重要的环节.针对传统中值滤波方法存在的不足,提出一种新的基于噪点检测的自适应中值滤波图像去噪方法.该方法通过自适应地改变滤波窗口的大小,局部检测并判断极值点是否 ...

  8. 中值滤波Median filtering

    背景简述 在概率论中,中值将概率分布的高半部分与低半部分分开,对一个随机变量x 而言,x < M 的概率为0.5.对于有限实数集,其排序后中间的数值即为它的中值.集合的大小通常取奇数,以保证中值 ...

  9. 中值滤波(资料整理,持续更新)

    中值滤波(Median Filter),用于图像的中值滤波最早是由美国普林斯顿大学的John Wilder Tukey教授提出来的.常见的线性滤波器,用于图像处理时,有可能导致细节模糊或破坏边缘,更关 ...

最新文章

  1. SpringBoot 第十篇: 用spring Restdocs创建API文档
  2. 教你如何解决Python模块导包没有找到的问题
  3. c winform 上传文件到mysql_WinForm上传文件至服务器
  4. W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
  5. PAT (Basic Level) 1095 解码PAT准考证(模拟+stl,好题)
  6. 各hadoop安装的收集
  7. Restlet框架– Hello World示例
  8. mybatis原始mapper开发未集成springMVC
  9. mysql中创建表并添加约束_创建表并添加约束
  10. 计算机绘图说课视频,电气工程制图说课ppt课件
  11. Delphi 安卓11 中文语音合成(中文朗读)注意内容
  12. 爬去网络数据的一般思路
  13. 2000国家大地坐标系
  14. Linux基础命令介绍四:文本编辑vim
  15. C51串口通信(张毅刚)例8-1程序解释
  16. h5 每页打印固定表头以及表尾 解决表头过长打印分页表头不固定问题
  17. 博阳全渠道会员营销平台-升级通知
  18. C#毕业设计——基于C#+asp.net+SQL Server的电子书城系统设计与实现(毕业论文+程序源码)——电子书城系统
  19. matlab行向量,列向量
  20. ThreadLocal实战之数据库执行器线程同步

热门文章

  1. 前端脚手架是指什么?
  2. 《区块链原理、设计与应用》一3.4 资源共享
  3. 物联网技术概论 第三章测试答案 桂小林 西安交通大学 2021智慧树
  4. 智慧树大数据分析python答案_智慧树大数据分析的python基础答案
  5. 搭建gitserver并实现git push 自动部署
  6. 学生系统。。。。。。
  7. 记录UM8005 8位单片机的程序死机:aS
  8. caffe SSD 代码编译运行流程及问题解决
  9. Spark小象学院笔记
  10. 皖西学院计算机专业男女比例,2018全国高校男女比例排行榜出炉!哪所大学最难找对象?...