基于维纳滤波的图像运动模糊还原matlab仿真

简介: 基于维纳滤波的图像运动模糊还原matlab仿真

1.算法描述

    在信号处理中,维纳滤波是常用的降噪方法,它能够把实际信号从带有噪声的观测量中提取出来,无论是在语言信号还是图像信号中,维纳滤波都有重要的应用。维纳滤波是一种线性最小均方误差(LMMSE)估计,线性指的是这种估计形式是线性的,最小方差则是我们后面构造滤波器的优化准则,也就是说实际信号与估计量的差 y−y^ 要有最小的方差。而维纳滤波就是要构造一种滤波器,使得观测信号通过滤波器后能够得到的输出是实际信号的最小均方误差估计。最后说明一下,本文讲述的维纳滤波都是基于离散时间域的,一方面是因为在实际中一般需要处理的都是离散的情况,另一方面是对于连续域的情况分析较为复杂抽象故这里不予讨论。

    维纳滤波(wiener filtering) 一种基于最小均方误差准则、对平稳过程的最优估计器。这种滤波器的输出与期望输出之间的均方误差为最小,因此,它是一个最佳滤波系统。它可用于提取被平稳噪声污染的信号。从连续的(或离散的)输入数据中滤除噪声和干扰以提取有用信息的过程称为滤波,这是信号处理中经常采用的主要方法之一,具有十分重要的应用价值,而相应的装置称为滤波器。根据滤波器的输出是否为输入的线性函数,可将它分为线性滤波器和非线性滤波器两种。维纳滤波器是一种线性滤波器。

081764992a5215645f265498029681b6_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   对原始图像进行维纳滤波的算法是首先估计出每个像素点的M*N邻域内的平均值和方差值。有如下两个表达式计算: 

f6e973dfb576a963dcc4624151be28b5_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    用如下的表达式计算输出的灰度值。其中a(n1,n2)是调整前的灰度值,b(n1,n2)是调整后的灰度值。

f20ea372ee1a7d3fbdceaa0a84437204_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

     维纳滤波的基本原理是:设观察信号y(t)含有彼此统计独立的期望信号x(t)和白噪声ω(t)可用维纳滤波从观察信号y(t)中恢复期望信号x(t)。从噪声中提取信号波形的各种估计方法中,维纳(Wiener)滤波是一种最基本的方法,适用于需要从噪声中分离出的有用信号是整个信号(波形),而不只是它的几个参量。设维纳滤波器的输入为含噪声的随机信号。期望输出与实际输出之间的差值为误差,对该误差求均方,即为均方误差。因此均方误差越小,噪声滤除效果就越好。为使均方误差最小,关键在于求冲激响应。如果能够满足维纳-霍夫方程 ,就可使维纳滤波器达到最佳。

优点:适应面较广,无论平稳随机过程是连续的还是离散的,是标量的还是向量的,都可应用。对某些问题,还可求出滤波器传递函数的显式解,并进而采用由简单的物理元件组成的网络构成维纳滤波器。

缺点:要求得到半无限时间区间内的全部观察数据的条件很难满足,同时它也不能用于噪声为非平稳的随机过程的情况,对于向量情况应用也不方便。因此,维纳滤波在实际问题中应用不多。

2.仿真效果预览
matlab2022a仿真结果如下:

b9ada58770fb206685ae61bc2fb4d970_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
0b92ffb9d2d585b587be6f625eb93f36_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
f7627e3985aad0e0477a7886a9ce6296_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
fae9582e713cea3e0cec304db09e1d1c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

figure(2);
subplot(231),imshow(I),title('原始图像');
 
LEN = 20;
THETA =10;
PSF = fspecial('motion',LEN,THETA);
 
Blurred = imfilter(I,PSF,'circular');
subplot(232),imshow(Blurred),title('生成的运动的模糊的图像');
 
noise = 0.1*randn(size(I));
subplot(233),imshow(im2uint8(noise)),title('随机噪声');
 
BlurredNoisy=imadd(Blurred,im2uint8(noise));
subplot(234),imshow(BlurredNoisy),title('添加了噪声的模糊图像');
 
Move=deconvwnr(Blurred,PSF);
subplot(235),imshow(Move),title('还原运动模糊的图像');
 
nsr = sum(noise(:).^2)/sum(im2double(I(:)).^2);
wnr2 = deconvwnr(BlurredNoisy,PSF,nsr);
subplot(236),imshow(wnr2),title('还原添加了噪声的图像');
 
%*************************维纳滤波应用于边缘提取****************************
N = wiener2(I,[3,3]);%选用不同的维纳窗在此修改
M = I - N;
My_Wedge = im2bw (M,5/256);%化二值图像
BW1 = edge(I,'prewitt');
BW2 = edge(I,'canny');
BW3 = edge(I,'zerocross');
BW4 = edge(I,'roberts');
 
figure(3)
subplot(2,4,[3 4 7 8]),imshow(My_Wedge),title('应用维纳滤波进行边沿提取');
subplot(241),imshow(BW1),title('prewitt');
subplot(242),imshow(BW2),title('canny');
subplot(245),imshow(BW3),title('zerocross');
subplot(246),imshow(BW4),title('roberts');
 
%*************************维纳滤波应用于图像增强***************************
for i = [1 2 3 4 5]
    K = wiener2(I,[5,5]);
end
 
  K = K + I;
相关文章
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
268 0
|
2月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
132 0
|
2月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
117 0
|
2月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
193 0
|
2月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
188 8
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
2月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
132 0
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
178 8

热门文章

最新文章