【论文复现】中值滤波改进:Noise Adaptive Fuzzy Switching Median Filter(NAFSMF)
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−T1D(i,j)−T1,1,:::D(i,j)<T1T1≤D(i,j)<T2D(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)相关推荐
- 【论文复现】中值滤波改进:Different Applied Median Filter(DAMF)
Different Applied Median Filter(DAMF) DAMF解决的问题:中值滤波使用固定大小的模板.随着噪声密度的增加,固定大小的模板在消除椒盐噪声方面表现一般:对于高密度椒 ...
- 中点和中值滤波的区别_P8:滤波器(Filter)
前言:在混音中,均衡器(EQ)是最常用的一种效果处理器,而均衡器的核心是滤波器.故此,在学习均衡器之前,需先搞懂滤波器,搞懂了滤波器你也就搞懂了均衡器.本篇内容中的滤波器泛指数字滤波器,另外,我们的目 ...
- matlab 实现中值滤波
平均滤波器不能滤除信号中的脉冲噪声,而中值滤波器可以消除部分脉冲噪声 中值滤波器的原理: 按照样本的幅值排序,然后选择其中的中值,作为滤波器的输出 代码实现如下: clear all; clf N=2 ...
- 中值滤波原理及MATLAB算法实现
中值滤波是一种非线性滤波方式,它依靠模板来实现. 对于一维中值滤波,设模板的尺寸为 M ,M=2*r+1,r为模板半径,给定一维信号f(i),i = 1,2,3--N,则中值滤波输出为: g(i) = ...
- 数字图像处理——中值滤波及其改进算法
一.算法介绍 中值滤波器是非线性滤波器的一个例子,它在保留图像特征方面非常有效. 但是,滤波器的窗口大小直接影响中值滤波器的性能. 较小的窗口保留了特征,但会导致噪声抑制的减少. 在较大窗口的情况下, ...
- 自适应中值滤波及实现
前言 无意中看到了一篇比较老的论文,Adaptive median filters: new algorithms and results.感兴趣的可以下载下来看看.主要就是提出了一种自适应中值滤波算 ...
- 噪点检测matlab,基于噪点检测的中值滤波图像去噪方法
摘 要: 图像去噪是图像处理中一个非常重要的环节.针对传统中值滤波方法存在的不足,提出一种新的基于噪点检测的自适应中值滤波图像去噪方法.该方法通过自适应地改变滤波窗口的大小,局部检测并判断极值点是否 ...
- 中值滤波Median filtering
背景简述 在概率论中,中值将概率分布的高半部分与低半部分分开,对一个随机变量x 而言,x < M 的概率为0.5.对于有限实数集,其排序后中间的数值即为它的中值.集合的大小通常取奇数,以保证中值 ...
- 中值滤波(资料整理,持续更新)
中值滤波(Median Filter),用于图像的中值滤波最早是由美国普林斯顿大学的John Wilder Tukey教授提出来的.常见的线性滤波器,用于图像处理时,有可能导致细节模糊或破坏边缘,更关 ...
最新文章
- SpringBoot 第十篇: 用spring Restdocs创建API文档
- 教你如何解决Python模块导包没有找到的问题
- c winform 上传文件到mysql_WinForm上传文件至服务器
- W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
- PAT (Basic Level) 1095 解码PAT准考证(模拟+stl,好题)
- 各hadoop安装的收集
- Restlet框架– Hello World示例
- mybatis原始mapper开发未集成springMVC
- mysql中创建表并添加约束_创建表并添加约束
- 计算机绘图说课视频,电气工程制图说课ppt课件
- Delphi 安卓11 中文语音合成(中文朗读)注意内容
- 爬去网络数据的一般思路
- 2000国家大地坐标系
- Linux基础命令介绍四:文本编辑vim
- C51串口通信(张毅刚)例8-1程序解释
- h5 每页打印固定表头以及表尾 解决表头过长打印分页表头不固定问题
- 博阳全渠道会员营销平台-升级通知
- C#毕业设计——基于C#+asp.net+SQL Server的电子书城系统设计与实现(毕业论文+程序源码)——电子书城系统
- matlab行向量,列向量
- ThreadLocal实战之数据库执行器线程同步