基于维纳滤波的图像运动模糊还原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;
相关文章
|
22天前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
13天前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
13天前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
27天前
|
传感器 算法 数据挖掘
基于协方差交叉(CI)的多传感器融合算法matlab仿真,对比单传感器和SCC融合
基于协方差交叉(CI)的多传感器融合算法,通过MATLAB仿真对比单传感器、SCC与CI融合在位置/速度估计误差(RMSE)及等概率椭圆上的性能。采用MATLAB2022A实现,结果表明CI融合在未知相关性下仍具鲁棒性,有效降低估计误差。
141 15
|
22天前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
352 5
|
27天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的XGBoost序列预测算法matlab仿真
基于WOA优化XGBoost的序列预测算法,利用鲸鱼优化算法自动寻优超参数,提升预测精度。结合MATLAB实现,适用于金融、气象等领域,具有较强非线性拟合能力,实验结果表明该方法显著优于传统模型。(238字)
|
19天前
|
机器学习/深度学习 边缘计算 算法
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
109 0
|
23天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
23天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
140 14
|
19天前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)

热门文章

最新文章