维纳滤波器是一种自适应的滤波器,在数字信号处理中有着广泛的应用。ispforfun会在从今天开始定期给大家带来维纳滤波器在图像处理中应用。本节讲诉维纳滤波器在图像去噪中的简单应用。

让我们从Matlab中的函数wiener2开始。Matlab的help中对wiener2的说明如下:

wiener2估计图像中每个像素的局部均值和局部方差,

其中,是图像A中每个像素的NXM邻域。维纳滤波器的去噪原理如下:

其中是噪声的方差,如果没有给出来,那么会根据图像的局部方差进行估计。

ispforfun根据这段原理,编写了如下的matlab代码,共享给大家。

function J = wiener_image_denoising_filter(I, Win, noise_var)
% J = wiener_image_denoising_filter(I, w)
% -----------------------------------------
% by: ispforfun
% I is the input image. Single channel image.
% Win is the window size for filtering.[img_height, img_width] = size(I);
half_win_size = floor(Win/2.0);[X, Y] = meshgrid(1:img_width, 1:img_height);
[dX, dY] = meshgrid(-half_win_size(2):half_win_size(2), -half_win_size(1):half_win_size(1));dX = reshape(dX, [1 1 Win(1) Win(2)]);
dY = reshape(dY, [1 1 Win(1) Win(2)]);
X = repmat(X, [1 1 Win(1) Win(2)]) + repmat(dX, [img_height img_width 1 1]);
Y = repmat(Y, [1 1 Win(1) Win(2)]) + repmat(dY, [img_height img_width 1 1]);X(X<1) = 2 - X(X<1);
X(X>img_width) = 2*img_width - X(X>img_width);
Y(Y<1) = 2 - Y(Y<1);
Y(Y>img_height) = 2*img_height - Y(Y>img_height);patch = @(f)f(Y + (X-1)*img_height);P = patch(I);img_mean = local_image_mean(P);
img_var = local_image_var(P, img_mean, Win);if nargin < 3estimated_noise_var = sum(sum(img_var))/(img_height * img_width);
elseestimated_noise_var = noise_var;
endgain = (estimated_noise_var == 0.0).*zeros(img_height, img_width) + ...(estimated_noise_var ~= 0.0).*((img_var - estimated_noise_var)./img_var);J = img_mean + gain.*(double(I) - img_mean);J = min(max(J, 0), 255);J = uint8(J);%gain = (img_var - estimated_noise_var)./img_var;function img_mean = local_image_mean(P)
% img_mean = local_image_mean(P)local_img_sum = sum(sum(double(P), 4), 3);
sum_size = size(P,3)*size(P,4);img_mean = local_img_sum/sum_size;function img_var = local_image_var(P, img_mean, Win)
% img_var = local_img_var(P, img_mean)diff_img_patch = double(P) - repmat(img_mean, [1 1 Win(1) Win(2)]);
diff_img_patch_pow2 = diff_img_patch.^2;
local_diff_img_sum = sum(sum(double(diff_img_patch_pow2), 4), 3);
img_var = local_diff_img_sum/(Win(1)*Win(2) - 1);

实验如下,富含噪声的图像如下:

去噪后的图像如下:

维纳滤波器(Wiener Filter)在图像处理中的应用(一)相关推荐

  1. 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter

    实验要求: Objective: To understand the high performance of the parametric Wiener Filter in image restora ...

  2. 数字图像处理Python语言实现-图像滤波-维纳滤波(Wiener Filter)

    维纳滤波(Wiener Filter) 1.前言 维纳滤波器(Wiener Filter)是最早用于图像复原经典滤波之一,目前被广泛用于信号滤波降噪和图像预处理中.维纳滤波器的目的是使用相关信号作为输 ...

  3. Wiener Filter

    假设分别有两个WSS process:$x[n]$,$y[n]$,这两个process之间存在某种关系,并且我们也了解这种关系.现在我们手头上有process $x[n]$,目的是要设计一个LTI系统 ...

  4. 维纳滤波原理(Wiener Filter)

    维纳滤波原理(Wiener Filter) - 知乎 自适应滤波:维纳滤波器--FIR及IIR设计 - 桂. - 博客园

  5. 中blur函数_Comonad在图像处理中的应用

    前几天我回答了一个关于comonad的问题Monad和Comonad到底是什么东西?.其中有讲到comonad的应用例子,但都还不够直观和实用.后来找到一个Comonad在图像处理中的应用的例子,觉得 ...

  6. 卷积在图像处理中的应用

    卷积运算 1.卷积定义 我们称 ( f*g )(n) 为 f,g 的卷积. ● 其连续的定义为: ● 其离散的定义为: 这两个式子有一个共同的特征: 如果遍历这些直线,就好比,把毛巾沿着角卷起来. 观 ...

  7. 傅里叶变换在图像处理中的应用初步学习

    1 理解傅里叶变换在图像处理中的应用 一维傅里叶变换的作用对象是信号,信号是一维连续的:随着时间不断推移,信号强度的变换情况,可称为时域. 图像处理中的傅里叶变换的作用对象是二维矩阵.随着位置的不断改 ...

  8. 傅里叶变换在图像处理中的作用

    傅立叶变换在图像处理中非常的有用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法, 比如离散余弦变换,gabor与小波在图像处理中也有重要的分量. 印象中,傅立叶变换在图像处理以下几个话题 ...

  9. 5、VTK在图像处理中的应用

    5.VTK在图像处理中的应用 图像是VTK中一个非常重要的数据.数字图像广泛应用于工业生产.生物医学.媒体娱乐.地质.气象等重要领域,数字图像处理具有重要的应用价值.我们在掌握了VTK的基本知识后,这 ...

最新文章

  1. 后退键无效 html,javascript – Cordova – window.history.back()不支持iOS 9中的HTML后退按钮...
  2. jfinal js 拦截_jfinal 使用拦截器处理繁琐的前置条件判定
  3. 配置MySQL8.0 环境变量
  4. 这是一份面向Android开发者的复习指南,成功入职字节跳动
  5. java开发中jdbc连接数据 库的操作代码
  6. mysql+安全性语言实验,实验四--数据库的安全性、完整性控制
  7. 接口与继承:不允许继承的类
  8. 异常检测算法:孤立森林(Isolation Forest)
  9. 在c语言三种编译预处理功能,C语言三种预处理功能
  10. 开宗明义—UEFI介绍 (二)
  11. axis调用webservice
  12. 几种常见的距离计算公式
  13. python表示倍数的英语句型_英语倍数表达法
  14. 【kubernetes/k8s概念】CNI详解
  15. 盛德奇嘉提醒冬季对爱车养护全攻略:保养洗车均要注意
  16. 如何选择云主机或者VPS挂EA?
  17. wps打印缩放到一页_WPS文档过长时,如何在A4纸上完美打印
  18. Android短信数据库简析
  19. 5款类蝉妈妈抖音数据工具推荐
  20. Scrolling and zooming chart with ChartScroller

热门文章

  1. 【Vue 实战项目】后台管理系统登录页详解附源码
  2. 总结吴恩达 ChatGPT Prompt 免费课程
  3. windows系统锁定计算机组合键,WIN键间断性触发在锁定状态!!
  4. PTA基础编程题目集
  5. 政府信息化需求开启 OA办公系统平台化时代
  6. WDMycould Gen2安装SVN Server
  7. 一加7充电_一加7T充电、续航能力测评
  8. VS中使用Qt方法详解
  9. 3_Intellij_Idea在Debug模式下如何在控制台输入
  10. openssl bio