当前位置:首页 >> 信息与通信 >>

基于卡尔滤波的图像除噪处理


C%2023%20Aug%202017%2013%3A42%3A31%20%2B0800&authorization=bce-auth-v1%2Ffa1126e91489401fa7cc85045ce7179e%2F2017-08-23T05%3A42%3A21Z%2F-1%2Fhost%2F24bb857b813083e81b36d0a5e11716ed0fdaed7691fe04b93ac9df788e026134&x-bce-range=0-2325&token=c16f0fd5493ec984e0236fd973b3719c51b10898c4a17104fb0fcb96c1edcad5&expire=2027-07-02T05:42:21Z" style="width: 100%;">
基于卡尔曼滤波的图像除噪处理
摘要:图像在采集和和传输的过程中可能要受到外界的干扰,为了保证图像信息 的准确性,除噪就显得尤为重要。本文介绍的就是利用 Matlab 软件使用卡尔曼 滤波进行图像的除噪处理。 关键词:图像除噪;Matlab;卡尔曼滤波

一、引言
目前大多数数字图像系统中,输入图像都是采用先冻结再扫描方式将多维 图像变成一维电信号,再对其进行处理、存储、传输等加工变换。最后往往还要 再组成多维图像信号, 而图像噪声也将同样受到这样的分解和合成。在这些过程 中电气系统和外界影响将使得图像噪声的精确分析变得十分复杂。因此,我们需 要对图像进行除噪,得到更准确的图像信息。

一、Matlab
2.1 简介 Matlab 是美国 MathWorks 公司推出的数学软件,是一种面向工程和科学计 算的交互式计算软件。主要用于算法开发、数据可视化、数据分析、以及数值计 算,但是由于 Matlab 拥有许多的附加工具箱,因此它也可以应用到其他领域, 譬如:图像处理、信号检测、音频分析以及金融建模和分析等等。 2.2 Matlab 在图像处理中的应用 (1)图像文件格式的读写和显示。 MATLAB 提供了图像文件的读入函数 imread(),用来读取,如:bmp、jpg、hdf 等格式的图像文件;图像写出函数为 imwrite(),以及图像显示函数 image()、imshow()等。 (2)图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算,以及 卷积、滤波等非线性运算。 (3)图像变换。MATLAB 提供了一维和二维离散傅里叶变换(DFT)、快速傅 里叶变换(FFT)、离散余弦变换(DCT)以及连续小波变换(CWT)等等。 (4)图像的分析和增强。为了能对图像进行处理,MALTAB 针对图像的统计 计算提供了校正、中值滤波、直方图均衡、对比度调整以及自适应滤波等。 2.3.均方误差(MSE) 在相同测量条件下进行的测量称为等精度测量,例如在同样的条件下,用同 一个游标卡尺测量铜棒的直径若干次, 这就是等精度测量。 对于等精度测量来说, 还有一种表示误差的方法,就是标准误差。 标准误差定义为各测量值的平方值的平方根,故又称为均方误差。

? n ,则这组测量值的标准误差 ? 等于: 设 n 个测量值的误差为 ?1、? 2 ......
?? ? 21 ? ? 2 2 ? ... ? ? 2 n
n ?

??
n

2 t

数理统计中均方误差是指参数估计值与参数真值之差平方的期望值,记为 MSE。

2.4 峰值信噪比 PSNR(Peak Signal to Noise Ratio)表示的是到达噪声比率的顶点信号, PSNR 一般是用于最大值信号和噪声之间的工程项目。为了衡量经过处理后的图 像品质,我们通常会参考 PSNR 值来认定某个处理程序是否有效,或者说是处理 的效果是怎么样的。 Peak 就是 8bits 表示法的最大值 255, MES 指的是 Mean Square Error(均方误差,各值相差的 n 次方的平均值)。 PSNR 的计算公式如下:
PSNR ? 10 ? log(
framesize

2552 ) MSE

MSE ?

? (I
n ?1

2

? P2 )

Fram esize

I 是指原始图像第 n 个 pixel 值, P 是指处理后的图像第 n 个 pixel 值。 PSNR 的单位为 db, 所以 PSNR 的值越大,就代表失真越少。

三、卡尔曼滤波
3.1 卡尔曼滤波的特点 卡尔曼滤波是用状态空间法描述系统的,有状态方程和量测方程组成。 卡 尔曼滤波是用一个状态的估计值和最近一个观测数据来估计状态变量的 当 前 值,并以状态变量的估计值的形式给出。卡尔曼滤波具有以下的特点; (1)算法是递推的; (2)卡尔曼滤波使用于非平稳过程; (3)卡尔曼滤波采取的误差准则仍为估计误差的均方值最小。 3.2 状态方程和量测方程 假设某系统 k 时刻的状态变量为 xk ,状态方程和量测方程可以表示为:
xk ?1 ? Ak xk ? wk yk ? Ck xk ? vk

其中,k 表示时间,指的是第 k 步迭代时相应信号的取值;输入信号 wk 是一白噪 声,输出信号的观测噪声 vk 也是一个白噪声;A 表示状态变量之间的增益矩阵,

Ak 表示第 k 步迭代时,增益矩阵 A 的取值;C 表示状态变量与输出信号之间的增
益矩阵,第 k 步迭代时取值用 Ck 表示。 3.3 卡尔曼滤波的递推算法 当不考虑观测噪声和输入信号时,状态方程和量测方程为:

x ? Ak x k ?1
^'

^'

^

y ? Ck x k ? Ck Ak x

^'

^'

k ?1

由于不考虑观测噪声的影响,输出信号的估计值与实际值是有误差的,用

yk

~

表示:

y k ? yk ? y
为了提高状态估计的质量,用输出信号的估计误差
x ? Ak x ? H k( yk ? y ) ? Ak x k ?1 ? H k ( yk ? Ck Ak x k ?1 )
^ ^ ^ ^ ^'

~

^'

yk

~

来校正状态变量:

其中,

H k 为增益矩阵(实质上是一个加权矩阵)。经过校正后的状态变量的估计误差以及
xk
~ '

其均方差分别用

和 P k 表示,卡尔曼滤波要求状态变量的估计误差的均方差

Pk 为最小,

而且卡尔曼滤波的关键就是计算出加权矩阵的最佳值。 把未经校正的状态变量的估计误差的 均方差用表示:

x ? xk ? x k
Pk ? E[(xk ? x k )(xk ? x k )T ]
' ^ ^ ^' ^'

~'

^

P k ? E[(xk ? x k )(xk ? x k )T ]

四、MATLAB 仿真与分析
4.1 原理 基于 MATLAB 平台设计卡尔曼滤波器对一张.jpg 图片进行除噪处理,先导入一张 图片,然后依次给图片加高斯白噪声和椒盐噪声,再利用卡尔曼滤波器除噪。除 噪之后利用 Matlab 输出除噪前后的均方误差和峰值信噪比。 源程序: %1.显示原图中分别加入椒盐噪声和高斯白噪声 clear; close all; mine = imread('C:\Users\yuerui\Desktop\hzw.jpg'); %读取图像 show_size = size(mine); %显示图像尺寸 mine_noise1 = imnoise(mine,'salt & pepper',0.05); %给图像加椒盐 噪声 mine_noise2 = imnoise(mine,'gaussian',0.05); %对给定图像加 高斯白噪声 figure(1); subplot(1,3,1);imshow(mine); title('原图'); %显示加 椒盐噪声图像 subplot(1,3,2);imshow(mine_noise1); title('椒盐噪声(0.05)'); %显示加椒

盐噪声图像 subplot(1,3,3);imshow(mine_noise1); title('高斯白噪声(0.05)');%显示加 高斯白噪声图像 %2.设计一个卡尔曼滤波器分别处理两种含噪图像 [r1,c1,m] = size(mine_noise1); [r2,c2,n] = size(mine_noise2); mine_noise1 = double(mine_noise1)/255; %int 转化成 double 类型 mine_noise2 = double(mine_noise2)/255; %int 转化成 double 类型 P = 2; %先验误差估计协方差初始值 Q = 0.25; %过程白噪协方差 R = 0.25; %观测白噪协方差 A = 2; %系统矩阵 H = 1; %观测矩阵 X = mine_noise1(1,:,:); %读取加噪图像第一行 Y = mine_noise1(1,:,:); mine_alter1 = zeros(r1,c1,m); mine_alter2 = zeros(r2,c2,n); mine_alter1(1,:,:) = X; mine_alter2(1,:,:) = Y; for K = 2:r1 X = A * X; %X(k|k-1) = A X(k-1|k-1) + B U(k) P = A * P * A' + Q; %P(k|k-1) = A P(k-1|k-1) A’+ Q Kg = P * H'/(H * P * H' + R);%Kg(k) = P(k|k-1) H’ / (H P(k|k-1) H’ + R) X = X + Kg * (mine_noise1(K - 1,:,:) - H * X); %X(k|k) = X(k|k-1) + Kg(k)(Z(k) - H X(k|k-1)) P = (1 - Kg * H) * P; %P(k|k) =(I - Kg(k) H)P(k|k-1) mine_alter1(K,:,:) = X; %保存像素值 end for K = 2:r2 X = A * Y; %X(k|k-1) = A X(k-1|k-1) + B U(k) P = A * P * A' + Q; %P(k|k-1) = A P(k-1|k-1) A’+ Q Kg = P * H'/(H * P * H' + R); %Kg(k) = P(k|k-1) H’ / (H P(k|k-1) H’ + R) Y = Y + Kg * (mine_noise2(K - 1,:,:) - H * Y); %X(k|k) = X(k|k-1) + Kg(k)(Z(k) - H X(k|k-1)) P = (1 - Kg * H) * P; %P(k|k) =(I - Kg(k) H)P(k|k-1) mine_alter2(K,:,:) = Y; %保存像素值 end figure(2); subplot(1,3,1);imshow(mine_alter1); subplot(1,3,2);imshow(mine_alter2);

%3.求除噪前后图像的均方差和峰值信噪比 signal=0; for i=1:r1 for j=1:c1 signal=signal+(mine_alter1(i,j)-mine_noise1(i,j))^2; end end mse1=(signal/(r1*c1)) psnr1=10*log((255^2)/mse1) for i=1:r1 for j=1:c1 signal=signal+(mine_alter1(i,j)-mine_noise1(i,j))^2; end end mse2=(signal/(r2*c2)) psnr2=10*log((255^2)/mse2) 4.2 实验结果 (1)加入均值为 0、方差为 0.05 的椒盐噪声和高斯白噪声:

图 4.1 仿真结果

(2)除噪前后的峰值信噪比以及均方误差
加入噪声类型 方差为 0.05 的椒盐噪声 方差为 0.05 的高斯白噪声 峰值信噪比(PSNR) 137.8589 130.9274 均方误差(MSE) 0.0670 0.1340

表 4.1 除噪后的峰值信噪比以及均方误差

4.3 分析 从图 4.1 以及表 4.1 可以看出,卡尔曼滤波器可以对图像进行除噪处理,而 且处理椒盐噪声的效果要比处理高斯白噪声的好, 说明卡尔曼滤波器对椒盐噪声 有更好的抑制作用。

五、结束语
本文通过 MATLAB 软件成功的实现了卡尔曼滤波的图像除噪处理。在数字图 像处理领域, 对于图像除噪处理技术的研究具有十分重要的作用。本文最终的除 噪效果并不十分理想, 只可以去掉部分的噪声,尤其是图像的边缘部分的噪声的 处理就不是很好。

参考文献
[1]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2001. [2]张宏伟.基于 MATLAB 的图像去噪方法的研究与实现[J].大庆师范学院报, 2016(3):01-04. [3]冯刚,吕茂庭,覃天.基于 MATLAB 的卡尔曼滤波仿真研究[J].计算机科学与 技术,2011(12):1672-5468. [4]岂兴明,王占富,郭正彪,矫津毅.MATLAB7.0 程序快速入门[M].北京:人民 邮电出版社,2009. [5]许爱强,史贤俊,曲东才.MATLAB 平台下数字信号优化处理及其仿真[J].计 算机仿真,2003(z1):1006-9348. [6] 李永全 .Matlab 在数字信号处理课程设计中的应用 [J]. 现代电子技术, 2004(7):1004-373X. [7]谭菊华,王涛.基于 MATLAB 实现卡尔曼滤波器的设计[J].计算机光盘软件与 应用,2011(07):1007-9599. [8]王向阳,杨红颖,牛盼盼.高级数字图像处理技术[M].北京:北京师范大学出 版社,2014.9.


相关文章:
基于脊线方向的卡尔曼滤波在指纹图像去噪中的应用
基于脊线方向的卡尔滤波在指纹图像去噪中的应用_信息与通信_工程科技_专业资料。卡尔滤波应用信号检测与估计论文 题目: 题目:基于脊线方向的卡尔滤波在指纹图...
卡尔曼滤波在实时噪声处理中的应用
卡尔滤波算法在实时信号处理中的应用 卡尔滤波...卡尔滤波算法是基于最小均方误差 准则的一阶自...( n ) 图 3 自适应噪声对消系统 它是利用噪声...
基于Max_Median滤波的红外图像噪声去除
基于Max_Median滤波的红外图像噪声去除_信息与通信_工程科技_专业资料。摘要随着红外...基于神经网络的算法、 常量统计法、 卡尔曼滤波算法、 维纳滤波算法、 场景匹配...
卡尔曼滤波原理及其应用
近年来更被应用于计算机图像处理,例如头 脸识别,...又需要认为系统中的各个噪声与状态变量均呈高斯分布...三、Kalman 原理卡尔滤波基于状态空间方法的一套...
卡尔曼滤波
气象 适用领域范围 雷达跟踪去噪声 适用领域范围 控制、制导、导航、通讯等现代...例如在图像处理方面,应 用卡尔滤波对由于某些噪声影响而造成模糊的图像进行复原...
卡尔曼滤波器在PID控制器中的应用
基于卡尔滤波器的PID 控制系统, 通过卡尔曼滤波器 对系统的一些噪声进行滤波...滤波处理. 对于离散域系统: 离散卡尔曼滤波器递推算法为: 图1 卡尔曼滤波器...
卡尔曼滤波器及其简matlab仿真
近年来更被应用于计算机图像处理,例如头脸识 别,图像分割,图像边缘检测等等。 ...现在我们用卡尔滤波,过滤掉噪声,估算出房间的实际温度。 系统参数名称 解释如...
基于Matlab的卡尔曼滤波算法仿真
1. 卡尔滤波器递推运算流程 卡尔滤波过程实际上是获取维纳解的递推...(1)=5; a=1; c=1; %过程噪声 Q1=randn(1,N)*1; %测量噪声 Q2=...
测试信号处理
《测试信号处理》读书报告 题目 :基于最小二乘—卡尔滤波的 wMPS 系统跟踪...例如在图像处理方面,应用卡尔曼滤波对由于某些 噪声影响而造成模糊的图像进行复原...
卡尔曼滤波在雷达数据领域的仿真
卡尔滤波 在雷达数据处理领域的仿真研究 电信科学...白噪声策动的产生该过程的线性模型来表示;2、不...u ? 0 .1 g 1-1 无偏初值距离误差 1...
更多相关标签: