Different Applied Median Filter(DAMF)

DAMF解决的问题:中值滤波使用固定大小的模板。随着噪声密度的增加,固定大小的模板在消除椒盐噪声方面表现一般:​对于高密度椒盐噪声,滤波模板太小会导致窗口中的所有像素产生噪声,而滤波模板太大会导致最接近原始像素的像素值丢失。

定义2.1

令A:=[aij]m×nA:=[a_{ij}]_{m\times n}A:=[aij​]m×n​为图像矩阵(image matrix ,简写为:im),ai,ja_{i,j}ai,j​为整数,且0≤ai,j≤2550\le a_{i,j}\le 2550≤ai,j​≤255。如果aij=0a_{ij}=0aij​=0或aij=255a_{ij}=255aij​=255,则称aija_{ij}aij​为噪声条目(noisy entry),否则称为正则条目(regular entry)。

定义2.2

记AAA为im,如果对于部分i,ji,ji,j,aij为噪声条目,a_{ij}为噪声条目,aij​为噪声条目,则AAA称为噪声图像矩阵(noise image matrix,简写为:nim)

定义2.3

令AAA为nim,矩阵B:=[bij]m×nB:=[b_{ij}]_{m\times n}B:=[bij​]m×n​称为二值矩阵(binary matrix),其中:
bij={0,aijis a noisy entry of A1,otherwise b_{i j}=\left\{\begin{array}{l}0, a_{i j} \text { is a noisy entry of } A \\1, \quad \text { otherwise }\end{array}\right. bij​={0,aij​ is a noisy entry of A1, otherwise ​
定义2.4

令A:=[aij]m×n,t∈{1,2,…,min⁡{m,n}}A:=[a_{ij}]_{m\times n},t \in\{1,2, \ldots, \min \{m, n\}\}A:=[aij​]m×n​,t∈{1,2,…,min{m,n}},称为AAA的ttt-对称填充矩阵(t-symmetric
pad matrix),表示为:

例2.1:令A:=[111213212225503233]A:=\left[ \begin{array}{ccc}11 & 12 & 13 \\21 & 22 & 255 \\0 & 32 & 33\end{array}\right ]A:=⎣⎡​11210​122232​1325533​⎦⎤​,则它的3-对称填充矩阵PAt:=[prs](m+2t)×(n+2t)P_{A}^{t}:=\left[p_{r s}\right]_{(m+2 t) \times(n+2 t)}PAt​:=[prs​](m+2t)×(n+2t)​为:

定义2.5

令A:=[aij]m×nA:=[a_{ij}]_{m\times n}A:=[aij​]m×n​,PAtP^t_APAt​为AAA的ttt-对称填充矩阵,且k∈{1,2,...,t}k\in\{1,2,...,t\}k∈{1,2,...,t},则矩阵
Aijk:=[p(i+t−k)(j+t−k)⋯p(i+t−k)(j+t+k)⋮p(i+t)(j+t)⋮p(i+t−k)(j+t−k)⋯p(i+t+k)(j+t+k)](2k+1)×(2k+1)A_{ij}^k:=\left[\begin{array}{ccc}p_{(i+t-k)(j+t-k)} & \cdots & p_{(i+t-k)(j+t+k)} \\\vdots & p_{(i+t)(j+t)} & \vdots \\p_{(i+t-k)(j+t-k)} & \cdots & p_{(i+t+k)(j+t+k)}\end{array}\right]_{(2 k+1) \times(2 k+1)} Aijk​:=⎣⎢⎡​p(i+t−k)(j+t−k)​⋮p(i+t−k)(j+t−k)​​⋯p(i+t)(j+t)​⋯​p(i+t−k)(j+t+k)​⋮p(i+t+k)(j+t+k)​​⎦⎥⎤​(2k+1)×(2k+1)​

称为aija_{ij}aij​在PAtP^t_APAt​的kkk近似矩阵(k-approximate matrix)
例2.2:在例2.1中,PA3P^3_{A}PA3​中a21a_{21}a21​的1-近似矩阵A211A_{21}^1A211​为:[1111122121220032]\left[\begin{array}{ccc}11 & 11 & 12 \\21 & 21 & 22 \\0 & 0 & 32\end{array}\right ]⎣⎡​11210​11210​122232​⎦⎤​

定义2.6
令AijkA_{ij}^kAijk​为kkk-近似矩阵,则包含AijkA^k_{ij}Aijk​所有条目的递增矩阵Hijk:=[h1u]1×(2k+1)2H_{i j}^{k}:=\left[h_{1 u}\right]_{1 \times(2 k+1)^{2}}Hijk​:=[h1u​]1×(2k+1)2​称为AijkA^k_{ij}Aijk​的行矩阵或条目矩阵(row matrix or entry matrix((em)))
例2.3:在例2.2中,
H211=[0011111221212232]H_{21}^{1}=\left[\begin{array}{lllllllll}0 & 0 & 11 & 11 & 12 & 21 & 21 & 22 & 32\end{array}\right] H211​=[0​0​11​11​12​21​21​22​32​]

定义2.7
令AijkA_{ij}^kAijk​为kkk-近似矩阵,则包含AijkA^k_{ij}Aijk​所有正则条目的递增矩阵Rijk:=[r1v]R^k_{ij}:=[r_{1v}]Rijk​:=[r1v​]称为正则行矩阵或正则条目矩阵(regular row matrix or regular entry matrix (rem))

例2.4
考虑例2.3,
R211=[11111221212232]R_{21}^{1}=\left[\begin{array}{lllllll}11 & 11 & 12 & 21 & 21 & 22 & 32\end{array}\right] R211​=[11​11​12​21​21​22​32​]

定义2.8
令AijkA_{ij}^kAijk​的rem为Rijk:=[r1v]1×wR^k_{ij}:=[r_{1v}]_{1\times w}Rijk​:=[r1v​]1×w​,则

称为RijkR^k_{ij}Rijk​的中值。

定义 2.9
条目全为0的矩阵称为零矩阵或空矩阵(zero or null matrix),表示为[0][0][0]

# -*- coding:utf-8 -*-'''
@paper:Different applied median filter in salt and pepper noise
'''
import numpy as np# Different applied median filter
class Damf(object):def binary_matrix(self, A):'''Set the noise entry to 0.Set regular entry to 1'''B = np.zeros(np.shape(A))B[(A == 255) | (A == 0)] = 0B[(A != 255) & (A != 0)] = 1return Bdef t_symmetric_pad_matrix(self, A, t):m, n = np.shape(A)img_pad = np.zeros((m + t, n + t))img_pad[t:, t:] = Aleft_up = np.rot90(np.rot90(A[:t, :t]))up = np.flip(A[:t, :], 0)right_up = np.rot90(np.rot90(A[:t, -t:]))left = np.flip(A[:, 0:t], 1)right = np.flip(A[:, -t:], 1)left_down = np.rot90(np.rot90(A[-t:, :t]))dowm = np.flip(A[-t:, :], 0)right_down = np.rot90(np.rot90(A[-t:, -t:]))up_h = np.hstack((left_up, up, right_up))  # h:horizontalmiddle_h = np.hstack((left, A, right))down_h = np.hstack((left_down, dowm, right_down))img_pad = np.vstack((up_h, middle_h, down_h))return img_paddef 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 regular_row_matrix(self, img_k_approximate):H = img_k_approximate.flatten()H = np.sort(H)R = H[(H != 255) & (H != 0)]return Rdef process_image(self, nim):t1 = 3img_DAMF = nim.copy()B = self.binary_matrix(nim)P_A_3 = self.t_symmetric_pad_matrix(nim, t1)P_B_3 = self.t_symmetric_pad_matrix(B, t1)m, n = np.shape(nim)for i in range(m):for j in range(n):if B[i, j] == 0:B_ij_1 = self.k_approximate_matrix(P_B_3, i, j, 1, t1)B_ij_2 = self.k_approximate_matrix(P_B_3, i, j, 2, t1)B_ij_3 = self.k_approximate_matrix(P_B_3, i, j, 3, t1)if B_ij_1.any() > 0:  # 使用3x3板A_ij_1 = self.k_approximate_matrix(P_A_3, i, j, 1, t1)R_ij_1 = self.regular_row_matrix(A_ij_1)mR_ij_1 = np.median(R_ij_1)img_DAMF[i, j] = mR_ij_1elif B_ij_2.any() > 0:  # 使用5x5模板A_ij_2 = self.k_approximate_matrix(P_A_3, i, j, 2, t1)R_ij_2 = self.regular_row_matrix(A_ij_2)mR_ij_2 = np.median(R_ij_2)img_DAMF[i, j] = mR_ij_2elif B_ij_3.any() > 0:  # 使用7x7模板A_ij_3 = self.k_approximate_matrix(P_A_3, i, j, 3, t1)R_ij_3 = self.regular_row_matrix(A_ij_3)mR_ij_3 = np.median(R_ij_3)img_DAMF[i, j] = mR_ij_3B = self.binary_matrix(img_DAMF)t2 = 1P_A_1 = self.t_symmetric_pad_matrix(img_DAMF, t2)P_B_1 = self.t_symmetric_pad_matrix(B, t2)for i in range(m):for j in range(n):if B[i, j] == 0:B_ij_1 = self.k_approximate_matrix(P_B_1, i, j, 1, t2)if B_ij_1.any() > 0:A_ij_1 = self.k_approximate_matrix(P_A_1, i, j, 1, t2)R_ij_1 = self.regular_row_matrix(A_ij_1)mR_ij_1 = np.median(R_ij_1)img_DAMF[i, j] = mR_ij_1return img_DAMF

结果

原图

Noise level Noise image DAMF
90%
95%
99%

【论文复现】中值滤波改进:Different Applied Median Filter(DAMF)相关推荐

  1. 【论文复现】中值滤波改进:Noise Adaptive Fuzzy Switching Median Filter(NAFSMF)

    Noise Adaptive Fuzzy Switching Median Filter (NAFSM) 将图像 X X X的噪声像素置0,非噪声像素置1,保存到binary noise mask N ...

  2. 数字图像处理——中值滤波中心加权中值滤波

    引言:在处理图像时,线性滤波将破坏边缘,而且不能有效滤除脉冲噪声.非线性滤波基于对输入信号序列的一种非线性映射关系,常可把某一特定的噪声近似映射为零而保留信号的重要特征,因而可以在一定程度上克服线性滤 ...

  3. 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验

    图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...

  4. Python实现图像的椒盐噪声添加和基础的平滑处理(均值滤波与中值滤波)

    均值滤波与中值滤波是最常见的两种平滑的方式,尤其是中值滤波能起到强大的降噪效果. 本文内容分为三部分: 1.实现添加图片的椒盐噪声 2.实现调用内置函数进行均值和中值滤波 3.自编函数深刻理解均值和中 ...

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

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

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

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

  7. 【图像去噪】基于matlab GUI均值+中值滤波图像去噪(含PNSR)【含Matlab源码 372期】

    ⛄一.图像去噪及滤波简介 1 图像去噪 1.1 图像噪声定义 噪声是干扰图像视觉效果的重要因素,图像去噪是指减少图像中噪声的过程.噪声分类有三种:加性噪声,乘性噪声和量化噪声.我们用f(x,y)表示图 ...

  8. [Python从零到壹] 五十六.图像增强及运算篇之图像平滑(中值滤波、双边滤波)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. 图像平滑处理(归一化块滤波、高斯滤波、中值滤波、双边滤波)

    图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...

最新文章

  1. Linux安装无法运行install,Linux新手安装Debian-8.2.0可能遇到的问题
  2. 讨论:如何降低Cocos2d开发的游戏包体大小
  3. Spring 框架之Ioc控制反转
  4. ios 使用UINavagationController时,push,pop方法执行的一些方法
  5. 熵权法 —— python
  6. 《开源框架那点事儿33》极限挑战:用一条循环语句正确输出99表!【前两名奖图书一本】...
  7. iptables随笔
  8. c# Open Source
  9. R中安装LightGBM(Windows 64位)
  10. TensorRT 环境搭建记录
  11. IT软件项目管理视频教程—软件项目管理实战教程
  12. 制作纯天然无污染的微软官方win10Pe(超详细)
  13. 2019年最新淘宝联盟淘宝客升高佣规则
  14. 那些年的广告语【持续更】
  15. 低客单价的商品怎样做运营、怎么样做优化、以及怎样做推广
  16. HTML中的长度单位px、em、rem
  17. [学习笔记]400G QSFP-DD PAM4 NRZ的成帧和非成帧测试, 400G/200G/100G/50G/40G/25G/10G 7种速率12种模式的端口实现
  18. python break语句作用_Python break语句详解
  19. 【蓝桥杯真题】单词分析
  20. 5-TDengine集成SpringBoot,MyBatis,MyBatisPlus

热门文章

  1. 眼部识别取代指纹识别还有多远?
  2. 第五模块 为什么要使用克隆、如何实现克隆对象、序列化与反序列实现克隆的好处、深拷贝与浅拷贝
  3. css文字怎么居中,css文字居中怎么打
  4. 超级课程表APP爬虫,大学生都这么玩
  5. 百度云推送相关问题记录
  6. 如何保障测试效率和测试质量
  7. 计算机控制面板 关机时间,电脑设置关机时间_电脑怎么设置关机时间
  8. 英文系统『紫光输入法』不能输入中文 大概原因
  9. 网站实现QQ第三方登录详细步骤
  10. 前瞻2020年“CES”未来汽车科技?