APP下载

卡尔曼滤波结合遗传算法的矿井图像去噪算法研究

2022-02-19马晓轩

计算机应用与软件 2022年2期
关键词:椒盐噪点卡尔曼滤波

霍 一 马晓轩

1(北京信息职业技术学院产业互联网学院 北京 100018) 2(北京建筑大学电气与信息工程学院 北京 100044)

0 引 言

现在国内煤矿的生产环境安全情况非常严峻,随着国家对煤矿安全生产的日益重视,各大煤矿已经大量安装了煤矿安全生产监控系统。但矿井的井下图像在采集、传输、接收过程,有时会处于有干扰的外部环境中,例如粉尘的干扰,使得图像的输入、输出环节将会被“椒盐噪声”所影响,从而导致图像的质量下降,有时会影响到图像的分辨率;有时会影响到图像原本的结构;有时会影响到图像的边缘,对于图像的后续处理极为不利。为了能够实时监控矿井生产状况,获得高质量的图像对矿井图像采集十分重要。目前针对矿井的井下有噪图像的噪点处理,一般采用滤波算法对有噪图像的噪声作滤波处理,在提高数字图像质量的问题上,取得了一定的研究成果[1-4]。经典的数字图像去噪算法主要包括中值滤波算法、均值滤波算法、维纳滤波算法、小波滤波算法等。

但是就降噪算法而言,仍然面临着许多问题,比如:降噪算法处理后的图像不清晰、不连续、边缘保护失真等。本文通过研究分析卡尔曼滤波的初状态值选取与遗传算法来优化卡尔曼滤波,并设计一种新的图像去噪算法GAK,用来提高滤波后的图像的清晰度、连续性、信噪比。实验结果表明,本文算法降噪后的图像信噪比高、可观性好、连续性强,图像的质量得到了有效的改善。

1 图像噪声的成因与分析

1.1 图像噪声的成因

图像的噪声也称为噪点,是指各种颗粒、杂质等物质混入了正常介质中,对正常介质产生了干扰,从而影响了介质的正常状态。对于矿井图像的噪点而言,一般是指井下图像在获取、传输、编排、调整时所受到的随机干扰信号,如井下沙尘或者煤炭粉尘,这些随机干扰信号会形成一定的椒盐噪声,进而对图像的频率、像素、分辨率等方面产生较大影响,从而会影响图片的清晰度。这些含椒盐噪点的矿井图像,会影响后续的矿井勘察等问题,因此图像去噪是一个重要的研究课题。

1.2 椒盐噪点图像的分析

椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声。对于灰度图像而言,椒盐噪点在图像中呈现一种随机分布的白点或黑点,就是在浅色区域内有黑色点像素影响了浅色区域的结构与美观,或是在深色区域内有白色点像素影响了深色区域的结构与美观;对于彩色图像而言,椒盐噪声可能是在某些固定色素区域内有各种不同的点色像素,且这些点色像素不连续,像素值不固定,影响了色素区域的结构与美观。椒盐噪点视觉效果是,犹如胡椒面和盐,不均匀地撒在了图像上,影响了图像中人或物的可辨识度。椒盐噪声是一种非线性噪声,其噪点一般服从随机分布,因此用线性滤波器滤除噪点的效果不好,一般采用非线性滤波器滤波噪点,可以得到较好的效果[5]。

1.3 去噪常用的四种算法分析

1.3.1均值滤波法

均值滤波也称为线性滤波,其主要的方法理念是是取数字图像中一个点的像素值,以该点为中心点,对该点周围的一个3×3或者5×5的邻域矩阵,做矩阵的均值替换中心值操作,这样求得的值更接近像素的真实值,从而消除图像中的噪声点。均值滤波对线性噪声的抑制是比较好的,但对非线性的噪点影响不大,因为在修复噪点的同时,会使图像分辨率降低,从而使图像过于模糊,使其噪点复原不够彻底[6]。

1.3.2中值滤波法

中值滤波是一种非线性滤波,它基于有序排列的数理统计,可以有效地复原图像中的非线性噪点。中值滤波对非线性噪声的抑制是比较好的,处理后的图像比较清晰,但也会引起一定量的图像不连续性。此外,中值滤波对线性的高斯噪声影响不大,因为高斯噪点通常服从高斯分布,所以高斯噪点是线性分布的,无论进行怎样的中值数据选择,始终无法改变其幅值,最终噪点值还是噪点值[7]。

1.3.3维纳滤波法

维纳滤波是对目标的观测数据进行提取划分,然后根据最小均方误差准则进行估算,从而修复噪点。它的优点是适用范围较为广泛,且处理连续的平稳随机过程效果不错。其缺点是对观测数据的条件要求比较高,很不容易达到理想值。因为非平稳的随机过程的噪声不容易进行观测,进而对观测数据不易提取划分,所以维纳滤波在图像去噪方面的使用并不是太多[8]。

1.3.4小波滤波法

小波去噪的图像去噪原理是将时间域或者是空间域上的带有噪声的图像进行转换,转变到小波域进而形成多层的小波系数,再基于小波分析思想对小波系数的特性进行系统分析。小波变换与傅里叶变换的不同主要在于小波变换可以进行尺度的选择,相当于把傅里叶变换所得到的长波按照一定尺度的大小切分成若干个短波,所谓的短波也就是小波。将切分后的小波按照设立的小波基,进行高低频率的筛选,从而滤除噪点[9]。小波滤波的优点是适用范围极广,但是小波变换的基与尺度是很难确定的,导致小波变换在去噪方面不够精准。

2 算法基础

2.1 卡尔曼滤波

卡尔曼滤波的特点是:算法是逐步递推的,按照每个时间点进行更新,或者是按照每个迭代次数进行更新[10-11]。卡尔曼滤波适用于平稳或者非平稳的随机过程,还适用于滤除线性的噪声,但是也根据非线性噪声的特点,进行初状态值设计,形成扩展卡尔曼滤波,扩展卡尔曼滤波可适用于滤除非线性的噪声。其采取的误差准则仍为估计误差的均方值最小。

本文利用椒盐噪点图像中噪点的邻域像素值进行卡尔曼滤波的初状态值设计,形成扩展卡尔曼滤波,从而加强对非线性噪点的抑制效果。

2.2 卡尔曼滤波的初状态X1值的确定

因为下文的GAK算法的种群初始化值与卡尔曼滤波的初状态X1值有密切关系。因此确定X1的数值是十分重要的。

因为X1的数值需要接近目标理想值,但是就椒盐噪点图像而言,是不知道图像中每个点的目标理想值的。因此本文提出了利用3×3或5×5矩阵来确定椒盐噪点图像中噪点的位置,及其该噪点的可优化目标理想值。该优化目标理想值设为X1,根据卡尔曼滤波的公式循环递推,形成扩展卡尔曼滤波,从理论上将椒盐噪点图像进行去噪。

利用MATLAB读取一幅椒盐噪点图片,并读取该图片每点数值存入矩阵noise中,然后读取该图片的长和宽的数值用作可检索范围。设一矩阵alter等于一个行列与矩阵noise长和宽数值相等的单位矩阵。在可检索范围内对矩阵noise的每个点进行噪点识别,如果识别出某点是噪点,就进行优化处理,处理后的点的数值赋值给与矩阵noise噪点相同的位置上矩阵alter的点;如果未识别出某点是噪点,就不进行优化处理,使矩阵noise上与矩阵alter上的等位置像素点的数值相等。

在可检索范围内对矩阵noise的每个点进行噪点识别,并确定噪点的优化目标理想值设为X1,这个识别过程与目标理想值X1的确定是这样进行的:先设一变量a,然后读取矩阵noise中的一点,以该点为中心,3×3矩阵为模型,对周围8个点进行加权比较,如果该点值在加权值范围之内,假定为非噪点,如果该点值不在加权值范围之内,假定为噪点,且a=a+1。当该点值与周围8个点值,循环比较后,判断a是否大于5,如果a是大于5,视为该点为噪点,并且将X1的数值等于被比较的8个点的中值。

卡尔曼初值X1取值流程如图1所示。

图1 卡尔曼初值X1取值流程

2.3 遗传算法

遗传算法(Genetic Algorithm)是一种与大自然中个体与种群逐代优化而相类似的优化数值的方法。在大自然中,生物的一般进化过程中,大多数都是上一代将自身较为优异的基因遗传给下一代,而每个未能遗传到优异基因的下一代个体,将会较快地被大自然所淘汰;有着优异基因的下一代个体,因为自身基因优异,后期能形成较强的抗性,导致将会较慢地被大自然所淘汰。这些未被大自然所淘汰的个体,越来越多,其中同类的个体进行繁殖,就这样很多个同类个体就形成了一个大的种群。这种种群的形成,一般就是生物自然法则(优胜劣汰)的一种体现。

遗传算法就是按照生物的自然法则,对求解问题进行编码,形成编码基因个体,然后通过合理的适应度函数,对编码基因个体进行合理的选择、交叉和变异,从而筛选出多种个体形成各个种群,而其中最庞大的种群就是我们所寻求的最优解。这种遗传算法的寻求最优解的方式方法,就像大自然的种群进化一样,多个优秀的个体更能形成适应较为复杂环境的种群。遗传算法中,最终被保留下来的最大种群中的个体经过计算解码,可视为近似最优解[12-14]。

3 算法设计

3.1 GAK算法原理

GAK算法原理是利用卡尔曼滤波算法改进遗传算法,再利用改进后的遗传算法求出最优个体值,将该值替换掉卡尔曼滤波中的卡尔曼增益值,从而优化卡尔曼滤波。

GAK算法以卡尔曼滤波方程为主导设计遗传算法的适应度函数;以遗传算法的常规求解步骤为模板,求解最优增益值,即最优卡尔曼增益值。

3.2 GAK算法的特性分析

遗传算法具有这样的独特性质:遗传算法是对某一变量进行编码,形成编码基因个体的操作,而非针对变量本身,因而消除了约束条件的限制,如单调性、可导性、收敛性等。因此对于需要对代价函数Jk求偏导从而得出卡尔曼增益值来说,使用GAK算法无须先证明代价函数Jk的偏导数存在。遗传算法一般采用适应度函数来进行遗传更新所需的求解值,不需要其他数学推导和限制条件,对问题依赖性小。因此使用GAK算法只要能找到合适的适应度函数,就能有效地指导搜索出最优的卡尔曼增益。此外,遗传算法是编码个体与个体之间的独立竞争,不会相互影响,不容易陷入局部最优,因此使用GAK算法可以避免程序只得到局部最优的卡尔曼增益,可全局搜索最优解。

3.3 GAK算法的适应度函数设计

适应度函数是遗传算法的核心算法,通常用它来进行优劣个体的筛选,它将直接影响遗传算法能否找到最优解。本文的目的是针对图像噪点进行误差估计,利用误差协方差与卡尔曼增益去循环改善噪点状态值,从而复原噪点。因此本文同时对误差协方差、卡尔曼增益进行优化。

适应度函数如下:

Z(k)=w1X(k)+w2Y(k)

(1)

式中:X(k)为增益函数、Y(k)为误差协方差函数。w1和w2分别为函数X(k)和函数Y(k)的权值,且为正实数,并自适应调节函数Z(k)。适应度函数Z(k)的解应是一个无限趋近于0的实数,这样保证函数X(k)和函数Y(k)的解均为最小值。增益函数如式(2)所示。

X(k)=Y(k)×[Y(k)+0.05]-1

(2)

式中:Y(k)为误差协方差函数,误差协方差函数如式(3)所示。

Y(k)=[1-X(k)]×Y(k)

(3)

式中:X(k)为增益函数;Y(k)为误差协方差函数,式(2)、式(3)是以卡尔曼滤波方程为基础进行设计的,目的是得到最优的误差协方差的种群与最优增益值,从而替换卡尔曼增益,优化卡尔曼滤波。

3.4 GAK算法功能和核心编程

扩展卡尔曼滤波的状态方程和量测方程最终可以表示为:

f(X,u)=AXk+f(Xk,u)-AkXk

(4)

h(X,u)=HXk+h(Xk,u)-HkXk

(5)

当初状态X1可以确定时,式(4)-式(5)可近似为卡尔曼滤波的线性状态方程和量测方程:

Xk=AXk+wk

(6)

Yk=CXk+vk

(7)

式(6)-式(7)经推导得出,状态预测方程:

Xk=AXk-1+Buk-1

(8)

误差协方差预测方程:

Pk=APk-1AT+Q

(9)

状态估计校正方程:

Xk=Xk+Kk[Yk-HkXk]

(10)

误差协方差估计校正方程:

Pk=[I-KkHk]Pk-1

(11)

卡尔曼增益方程:

(12)

式(8)-式(12)是卡尔曼滤波的经典迭代滤波方程。本文使用遗传算法优化卡尔曼滤波,将式(3)近似为式(11),将式(2)近似为式(12),并构建了式(1)GAK算法的适应度函数。因此,本文的GAK算法实际是将卡尔曼滤波经典方程式(8)-式(10)保持不变,利用遗传算法修改并优化了卡尔曼滤波经典方程式(11)-式(12),通过遗传算法得出误差协方差、卡尔曼增益。GAK算法的部分伪代码如下:

function[K]=Kalman(X)

X=A*X;

%状态预测方程

Y=H*X+R;

%量测预测方程

P=A*P*A′+Q;

%误差协方差预测方程

[K,P]=GA(P);

%利用GA求卡尔曼增益

X=X+K*[Y-H*X];

%状态估计校正方程

end

GAK算法的适应度函数部分伪代码如下:

function[objvalue]=cal_objvalue(pop,Z)

x=binary2decimal(pop);

%进行二进制编码

objvalue=w1*[(1-x*1)*Z*(1-x*1)]′+w2[x*0.05*x′];

%GAK算法的适应度函数方程

end

3.5 GAK算法求解步骤

(1) 编码基因的设计。本文使用二进制编码,给基因个体进行编码,设二进制编码长度为8。

(2) 初始化种群。设种群数大小为3 000,种群的初值以随机数-1到1乘以权重10加上卡尔曼初状态值X1进行初始化。即Y(k)=10×rand(-1,1)+X1。

(3) 选择编码基因个体。根据适应度函数,利用轮盘赌的方式进行个体选择。选取X(k)、Y(k)的解为何值时,使Z(k)的解值最小,其Y(k)的解值的种群进行复制,最终形成最大种群。而此时的X(k)的解值就是要找的最优卡尔曼增益值。

(4) 交叉编码基因个体。以65%的概率执行交叉选取,当执行交叉编码基因个体时,将随机选取两个编码基因个体,执行两个编码基因个体的等二进制位交换。比较两个编码基因个体的二进制数值大小,留下两个编码基因个体中数值最小的个体,并扩充其个体种群。

(5) 变异个体编码基因个体。以0.15%的概率执行变异选取,当执行变异编码基因个体选取时,便随机选择一个编码基因个体,同时随机选取该编码基因个体的某一个二进制位进行翻转。比较该变异的编码基因个体与其他编码基因个体的二进制数值大小,其中数值最小的编码基因个体被保存,并扩充其个体种群。

(6)从步骤4开始重复进行,直到满足某一卡尔曼增益值,使其误差协方差Zk最小或满足规定的遗传代数,此循环结束。

步骤1-步骤3是GAK算法在实际应用中的关键,步骤4-步骤6是进行GAK算法的3种基本编码基因个体的操作,选择实现了适者生存的原则;交叉可以组合上一代中有价值的编码基因信息,产生较为优秀的后代编码基因个体,以实现GAK算法的高效搜索;变异的作用是保持种群中编码基因个体的多样性,防止GAK算法过早收敛,导致所求解不能达到最优。

GAK算法流程如图2所示。

图2 GAK算法流程

4 实验与分析

4.1 GAK算法的种群数与概率参数确定

为了确定GAK算法的种群数、交叉概率值、变异概率值,本文在MATLAB R2012B环境下编写相关程序,并进行实验仿真。硬件设备为一台PC机,该PC机内存为8 GB,CPU为i3-1005G1,Intel为CORE-i5。

本文选取一幅灰度级为255×255,大小为512×512的工人在煤矿井下操作的图像,该图像选自文献[15]。本文对该图像加以30%的椒盐噪点,用该30%的椒盐噪点图像为例,在不同的种群数、交叉概率值、变异概率值的条件下进行GAK算法的滤波处理。该30%的椒盐噪点图像的均方误差(MSE)为6 233.3,通常来说均方误差越小,图像的去噪效果越好,因此GAK算法滤波后图像的均方误差与测量值均方误差的比率越小,图像的去噪效果越好。GAK算法的不同种群数对均方误差的影响如表1所示。

表1 GAK算法的不同种群数对均方误差影响表

从表1数据可以看出,在种群数为500、1 000、2 000时,GAK算法滤波后的图像的均方误差值都高于261.3,种群数为3 000~5 000时,GAK算法滤波后的图像的均方误差值基本保持不变,均为261.3,而就遗传算法而言,种群数过大,将会加大计算机的运算时间。因此本文最终选定GAK算法的种群数为3 000。

本文选定GAK算法的种群数后,再确定GAK算法的交叉概率值与变异概率值。GAK算法的不同交叉概率值、变异概率值对均方误差的影响,如表2、表3所示。

表2 GAK算法的不同交叉概率值对均方误差影响

表3 GAK算法的不同变异概率值对均方误差影响

从表2、表3数据可以看出,GAK算法的交叉概率值在55%、60%、70%、75%时,GAK算法滤波后图像的均方误差值都高于GAK算法的交叉概率值在65%时GAK算法滤波后的图像的均方误差值256.3,所以该数据表明GAK算法的交叉概率值在65%时,GAK算法的滤波效果为较好水平。GAK算法的变异概率值在0.1%、0.2%、0.25%、0.3%时,GAK算法滤波后图像的均方误差值都高于GAK算法的交叉概率值在0.15%时GAK算法滤波后的图像的均方误差值256.4,所以该数据表明GAK算法的变异概率值在0.15%时,GAK算法的滤波效果为较好水平。因此本文最终选定GAK算法的交叉概率值为65%,变异概率值为0.15%。

4.2 GAK算法的滤波效果

为了检验GAK算法的滤波效果,本文分别对含有1%、5%、10%、15%、20%、25%、30%的井下椒盐噪声图像,进行中值滤波算法、均值滤波算法、维纳滤波算法、小波滤波算法(本文采用Sym4小波)及本文算法GAK的去噪处理算法比较。实验效果如图3-图5所示。

图3 1%椒盐噪声滤波图像

图4 10%椒盐噪声滤波图像

图5 30%椒盐噪声滤波图像

从三幅去噪图像对比图可以看出,在椒盐噪声密度较低的情况下,五种滤波算法均能较好地滤除噪声。从视觉上看,中值滤波算法与本文算法GAK滤波后所得的图像效果最佳。随着噪声密度增大到10%时,均值滤波算法与维纳滤波算法性能下降较快,滤波效果明显下降,滤波图像出现很多未滤除的噪声使图像变得比较模糊。对于小波滤波算法去噪后的图像也有许多噪点,而对于中值滤波算法与本文算法的滤波图像较为清晰,并且本文算法的边缘保护效果较好。当椒盐噪声密度达到30%时,本文算法的图像仍然比较清晰,并且连续性强,而均值滤波算法、维纳滤波算法、小波滤波算法的滤波图像模糊不清,中值滤波算法的滤波图像因连续性下降,也出现了非常明显的若干个噪点。

本文除了利用实验效果图来从主观视觉上,检验本文算法GAK的滤波效果以外,因为均方误差与峰值信噪比是国内外最广泛使用的评价图像质量的客观标准,所以本文还对滤波图像进行了均方误差与峰值信噪比的计算,如表4、表5中数据所示。

表4 不同滤波算法所得去噪图像的MSE值 单位:dB

表5 不同滤波算法所得去噪图像的PSNR值 单位:dB

从表4中可以看出,在不同密度的椒盐噪声干扰情况下,本文算法的MSE值均低于其他四种的滤波算法。从表5可以看出,在不同密度的椒盐噪声干扰情况下,本文算法的PSNR值均高于其他四种的滤波算法。

均方误差与峰值信噪比的数据折线图,如图6-图7所示。

图6 不同滤波算法的MSE图

图7 不同滤波算法的PSNR图

从图6中可以明显看出,本文算法的MSE值上升平缓,相比较而言,均值滤波算法与维纳滤波算法的MSE值上升极快并超过了1 100;小波滤波算法的MSE值上升较于平缓,但当图像的噪点密度上升到30%时,小波滤波算法的MSE值也到达了900多,虽然中值滤波算法的MSE值上升更为平缓,但当图像的噪点密度上升到30%时,中值滤波算法的MSE值为400左右,也高于本文算法的MSE值。就MSE值越小,图像的去噪效果越好而言,本文算法是较优的。从图7可以明显看出本文算法的PSNR值下降平缓,相比较而言,虽然均值滤波算法、中值滤波算法、维纳滤波算法、小波滤波算法的PSNR值也下降较为平缓,但都明显低于本文算法的PSNR值。就PSNR值越大,图像的去噪效果越好而言,本文算法是较优的。

从图7可以看出,本文算法在处理低浓度椒盐噪声图像时,本文算法的PSNR值可以达到80~90之间,也就是说利用本文算法对低浓度椒盐噪声图像进行复原,复原后的图像与真实图像的相似度在80%~90%之间。通过实验说明,本文算法在处理椒盐噪声的图像时是切实可行的。

5 结 语

针对矿井井下椒盐噪声图像的干扰问题,本文提出了一种新的基于卡尔曼滤波与遗传算法的图像去噪算法GAK。通过分析设计卡尔曼滤波算法的初值,然后利用遗传算法对卡尔曼增益进行优化,提出新的图像去噪算法GAK,并利用该算法成功地抑制了椒盐噪声图像的椒盐噪点。通过MATLAB平台上进行了仿真实验,确定了GAK算法的种群数、交叉概率值、变异概率值,并得到不同滤波算法滤波后所得的去噪图像及其MSE值、PSNR值。经过图像的视觉比较、MSE值与PSNR值的数据比较以及MSE值与PSNR值的比较,证明本文提出的基于卡尔曼滤波与遗传算法的去噪算法GAK,优于中值滤波算法、均值滤波算法、维纳滤波算法、小波滤波(Sym4小波)算法。经过GAK算法滤波后的图像清晰度强、连续性好、PSNR值高,并且GAK算法十分适合处理低密度的井下椒盐噪点图像。

GAK算法可应用于煤矿安全生产监控系统,使该系统产生的矿井井下图像避免粉尘干扰,使得图像的输入、输出环节将会不被“椒盐噪声”所影响,提高图像的质量与图像的分辨率。下一步将深入研究在达到很好的滤波效果的同时,有效降低滤波耗时,提高滤波效率。

猜你喜欢

椒盐噪点卡尔曼滤波
基于无迹卡尔曼滤波的室内定位系统
卡尔曼滤波在农电网系统中的研究分析
相机学院
学做椒盐虾
卡尔曼滤波在雷达目标跟踪中的应用
卡尔曼滤波在雷达目标跟踪中的应用
专业降噪很简单!
基于改进连续自适应均值漂移的视频目标跟踪算法
保留细节除噪点
椒盐芝麻烧饼