【论文复现】中值滤波改进:Different Applied Median Filter(DAMF)
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:=⎣⎡112101222321325533⎦⎤,则它的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 ]⎣⎡1121011210122232⎦⎤
定义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=[0011111221212232]
定义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=[11111221212232]
定义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)相关推荐
- 【论文复现】中值滤波改进:Noise Adaptive Fuzzy Switching Median Filter(NAFSMF)
Noise Adaptive Fuzzy Switching Median Filter (NAFSM) 将图像 X X X的噪声像素置0,非噪声像素置1,保存到binary noise mask N ...
- 数字图像处理——中值滤波中心加权中值滤波
引言:在处理图像时,线性滤波将破坏边缘,而且不能有效滤除脉冲噪声.非线性滤波基于对输入信号序列的一种非线性映射关系,常可把某一特定的噪声近似映射为零而保留信号的重要特征,因而可以在一定程度上克服线性滤 ...
- 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验
图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...
- Python实现图像的椒盐噪声添加和基础的平滑处理(均值滤波与中值滤波)
均值滤波与中值滤波是最常见的两种平滑的方式,尤其是中值滤波能起到强大的降噪效果. 本文内容分为三部分: 1.实现添加图片的椒盐噪声 2.实现调用内置函数进行均值和中值滤波 3.自编函数深刻理解均值和中 ...
- 数字图像处理——中值滤波及其改进算法
一.算法介绍 中值滤波器是非线性滤波器的一个例子,它在保留图像特征方面非常有效. 但是,滤波器的窗口大小直接影响中值滤波器的性能. 较小的窗口保留了特征,但会导致噪声抑制的减少. 在较大窗口的情况下, ...
- 自适应中值滤波及实现
前言 无意中看到了一篇比较老的论文,Adaptive median filters: new algorithms and results.感兴趣的可以下载下来看看.主要就是提出了一种自适应中值滤波算 ...
- 【图像去噪】基于matlab GUI均值+中值滤波图像去噪(含PNSR)【含Matlab源码 372期】
⛄一.图像去噪及滤波简介 1 图像去噪 1.1 图像噪声定义 噪声是干扰图像视觉效果的重要因素,图像去噪是指减少图像中噪声的过程.噪声分类有三种:加性噪声,乘性噪声和量化噪声.我们用f(x,y)表示图 ...
- [Python从零到壹] 五十六.图像增强及运算篇之图像平滑(中值滤波、双边滤波)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 图像平滑处理(归一化块滤波、高斯滤波、中值滤波、双边滤波)
图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...
最新文章
- Linux安装无法运行install,Linux新手安装Debian-8.2.0可能遇到的问题
- 讨论:如何降低Cocos2d开发的游戏包体大小
- Spring 框架之Ioc控制反转
- ios 使用UINavagationController时,push,pop方法执行的一些方法
- 熵权法 —— python
- 《开源框架那点事儿33》极限挑战:用一条循环语句正确输出99表!【前两名奖图书一本】...
- iptables随笔
- c# Open Source
- R中安装LightGBM(Windows 64位)
- TensorRT 环境搭建记录
- IT软件项目管理视频教程—软件项目管理实战教程
- 制作纯天然无污染的微软官方win10Pe(超详细)
- 2019年最新淘宝联盟淘宝客升高佣规则
- 那些年的广告语【持续更】
- 低客单价的商品怎样做运营、怎么样做优化、以及怎样做推广
- HTML中的长度单位px、em、rem
- [学习笔记]400G QSFP-DD PAM4 NRZ的成帧和非成帧测试, 400G/200G/100G/50G/40G/25G/10G 7种速率12种模式的端口实现
- python break语句作用_Python break语句详解
- 【蓝桥杯真题】单词分析
- 5-TDengine集成SpringBoot,MyBatis,MyBatisPlus