霍 一 馬曉軒
1(北京信息職業技術學院產業互聯網學院 北京 100018) 2(北京建筑大學電氣與信息工程學院 北京 100044)
現在國內煤礦的生產環境安全情況非常嚴峻,隨著國家對煤礦安全生產的日益重視,各大煤礦已經大量安裝了煤礦安全生產監控系統。但礦井的井下圖像在采集、傳輸、接收過程,有時會處于有干擾的外部環境中,例如粉塵的干擾,使得圖像的輸入、輸出環節將會被“椒鹽噪聲”所影響,從而導致圖像的質量下降,有時會影響到圖像的分辨率;有時會影響到圖像原本的結構;有時會影響到圖像的邊緣,對于圖像的后續處理極為不利。為了能夠實時監控礦井生產狀況,獲得高質量的圖像對礦井圖像采集十分重要。目前針對礦井的井下有噪圖像的噪點處理,一般采用濾波算法對有噪圖像的噪聲作濾波處理,在提高數字圖像質量的問題上,取得了一定的研究成果[1-4]。經典的數字圖像去噪算法主要包括中值濾波算法、均值濾波算法、維納濾波算法、小波濾波算法等。
但是就降噪算法而言,仍然面臨著許多問題,比如:降噪算法處理后的圖像不清晰、不連續、邊緣保護失真等。本文通過研究分析卡爾曼濾波的初狀態值選取與遺傳算法來優化卡爾曼濾波,并設計一種新的圖像去噪算法GAK,用來提高濾波后的圖像的清晰度、連續性、信噪比。實驗結果表明,本文算法降噪后的圖像信噪比高、可觀性好、連續性強,圖像的質量得到了有效的改善。
圖像的噪聲也稱為噪點,是指各種顆粒、雜質等物質混入了正常介質中,對正常介質產生了干擾,從而影響了介質的正常狀態。對于礦井圖像的噪點而言,一般是指井下圖像在獲取、傳輸、編排、調整時所受到的隨機干擾信號,如井下沙塵或者煤炭粉塵,這些隨機干擾信號會形成一定的椒鹽噪聲,進而對圖像的頻率、像素、分辨率等方面產生較大影響,從而會影響圖片的清晰度。這些含椒鹽噪點的礦井圖像,會影響后續的礦井勘察等問題,因此圖像去噪是一個重要的研究課題。
椒鹽噪聲也稱為脈沖噪聲,是圖像中經常見到的一種噪聲。對于灰度圖像而言,椒鹽噪點在圖像中呈現一種隨機分布的白點或黑點,就是在淺色區域內有黑色點像素影響了淺色區域的結構與美觀,或是在深色區域內有白色點像素影響了深色區域的結構與美觀;對于彩色圖像而言,椒鹽噪聲可能是在某些固定色素區域內有各種不同的點色像素,且這些點色像素不連續,像素值不固定,影響了色素區域的結構與美觀。椒鹽噪點視覺效果是,猶如胡椒面和鹽,不均勻地撒在了圖像上,影響了圖像中人或物的可辨識度。椒鹽噪聲是一種非線性噪聲,其噪點一般服從隨機分布,因此用線性濾波器濾除噪點的效果不好,一般采用非線性濾波器濾波噪點,可以得到較好的效果[5]。
1.3.1均值濾波法
均值濾波也稱為線性濾波,其主要的方法理念是是取數字圖像中一個點的像素值,以該點為中心點,對該點周圍的一個3×3或者5×5的鄰域矩陣,做矩陣的均值替換中心值操作,這樣求得的值更接近像素的真實值,從而消除圖像中的噪聲點。均值濾波對線性噪聲的抑制是比較好的,但對非線性的噪點影響不大,因為在修復噪點的同時,會使圖像分辨率降低,從而使圖像過于模糊,使其噪點復原不夠徹底[6]。
1.3.2中值濾波法
中值濾波是一種非線性濾波,它基于有序排列的數理統計,可以有效地復原圖像中的非線性噪點。中值濾波對非線性噪聲的抑制是比較好的,處理后的圖像比較清晰,但也會引起一定量的圖像不連續性。此外,中值濾波對線性的高斯噪聲影響不大,因為高斯噪點通常服從高斯分布,所以高斯噪點是線性分布的,無論進行怎樣的中值數據選擇,始終無法改變其幅值,最終噪點值還是噪點值[7]。
1.3.3維納濾波法
維納濾波是對目標的觀測數據進行提取劃分,然后根據最小均方誤差準則進行估算,從而修復噪點。它的優點是適用范圍較為廣泛,且處理連續的平穩隨機過程效果不錯。其缺點是對觀測數據的條件要求比較高,很不容易達到理想值。因為非平穩的隨機過程的噪聲不容易進行觀測,進而對觀測數據不易提取劃分,所以維納濾波在圖像去噪方面的使用并不是太多[8]。
1.3.4小波濾波法
小波去噪的圖像去噪原理是將時間域或者是空間域上的帶有噪聲的圖像進行轉換,轉變到小波域進而形成多層的小波系數,再基于小波分析思想對小波系數的特性進行系統分析。小波變換與傅里葉變換的不同主要在于小波變換可以進行尺度的選擇,相當于把傅里葉變換所得到的長波按照一定尺度的大小切分成若干個短波,所謂的短波也就是小波。將切分后的小波按照設立的小波基,進行高低頻率的篩選,從而濾除噪點[9]。小波濾波的優點是適用范圍極廣,但是小波變換的基與尺度是很難確定的,導致小波變換在去噪方面不夠精準。
卡爾曼濾波的特點是:算法是逐步遞推的,按照每個時間點進行更新,或者是按照每個迭代次數進行更新[10-11]。卡爾曼濾波適用于平穩或者非平穩的隨機過程,還適用于濾除線性的噪聲,但是也根據非線性噪聲的特點,進行初狀態值設計,形成擴展卡爾曼濾波,擴展卡爾曼濾波可適用于濾除非線性的噪聲。其采取的誤差準則仍為估計誤差的均方值最小。
本文利用椒鹽噪點圖像中噪點的鄰域像素值進行卡爾曼濾波的初狀態值設計,形成擴展卡爾曼濾波,從而加強對非線性噪點的抑制效果。
因為下文的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取值流程
遺傳算法(Genetic Algorithm)是一種與大自然中個體與種群逐代優化而相類似的優化數值的方法。在大自然中,生物的一般進化過程中,大多數都是上一代將自身較為優異的基因遺傳給下一代,而每個未能遺傳到優異基因的下一代個體,將會較快地被大自然所淘汰;有著優異基因的下一代個體,因為自身基因優異,后期能形成較強的抗性,導致將會較慢地被大自然所淘汰。這些未被大自然所淘汰的個體,越來越多,其中同類的個體進行繁殖,就這樣很多個同類個體就形成了一個大的種群。這種種群的形成,一般就是生物自然法則(優勝劣汰)的一種體現。
遺傳算法就是按照生物的自然法則,對求解問題進行編碼,形成編碼基因個體,然后通過合理的適應度函數,對編碼基因個體進行合理的選擇、交叉和變異,從而篩選出多種個體形成各個種群,而其中最龐大的種群就是我們所尋求的最優解。這種遺傳算法的尋求最優解的方式方法,就像大自然的種群進化一樣,多個優秀的個體更能形成適應較為復雜環境的種群。遺傳算法中,最終被保留下來的最大種群中的個體經過計算解碼,可視為近似最優解[12-14]。
GAK算法原理是利用卡爾曼濾波算法改進遺傳算法,再利用改進后的遺傳算法求出最優個體值,將該值替換掉卡爾曼濾波中的卡爾曼增益值,從而優化卡爾曼濾波。
GAK算法以卡爾曼濾波方程為主導設計遺傳算法的適應度函數;以遺傳算法的常規求解步驟為模板,求解最優增益值,即最優卡爾曼增益值。
遺傳算法具有這樣的獨特性質:遺傳算法是對某一變量進行編碼,形成編碼基因個體的操作,而非針對變量本身,因而消除了約束條件的限制,如單調性、可導性、收斂性等。因此對于需要對代價函數Jk求偏導從而得出卡爾曼增益值來說,使用GAK算法無須先證明代價函數Jk的偏導數存在。遺傳算法一般采用適應度函數來進行遺傳更新所需的求解值,不需要其他數學推導和限制條件,對問題依賴性小。因此使用GAK算法只要能找到合適的適應度函數,就能有效地指導搜索出最優的卡爾曼增益。此外,遺傳算法是編碼個體與個體之間的獨立競爭,不會相互影響,不容易陷入局部最優,因此使用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)是以卡爾曼濾波方程為基礎進行設計的,目的是得到最優的誤差協方差的種群與最優增益值,從而替換卡爾曼增益,優化卡爾曼濾波。
擴展卡爾曼濾波的狀態方程和量測方程最終可以表示為:
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
(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算法流程
為了確定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%。
為了檢驗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%之間。通過實驗說明,本文算法在處理椒鹽噪聲的圖像時是切實可行的。
針對礦井井下椒鹽噪聲圖像的干擾問題,本文提出了一種新的基于卡爾曼濾波與遺傳算法的圖像去噪算法GAK。通過分析設計卡爾曼濾波算法的初值,然后利用遺傳算法對卡爾曼增益進行優化,提出新的圖像去噪算法GAK,并利用該算法成功地抑制了椒鹽噪聲圖像的椒鹽噪點。通過MATLAB平臺上進行了仿真實驗,確定了GAK算法的種群數、交叉概率值、變異概率值,并得到不同濾波算法濾波后所得的去噪圖像及其MSE值、PSNR值。經過圖像的視覺比較、MSE值與PSNR值的數據比較以及MSE值與PSNR值的比較,證明本文提出的基于卡爾曼濾波與遺傳算法的去噪算法GAK,優于中值濾波算法、均值濾波算法、維納濾波算法、小波濾波(Sym4小波)算法。經過GAK算法濾波后的圖像清晰度強、連續性好、PSNR值高,并且GAK算法十分適合處理低密度的井下椒鹽噪點圖像。
GAK算法可應用于煤礦安全生產監控系統,使該系統產生的礦井井下圖像避免粉塵干擾,使得圖像的輸入、輸出環節將會不被“椒鹽噪聲”所影響,提高圖像的質量與圖像的分辨率。下一步將深入研究在達到很好的濾波效果的同時,有效降低濾波耗時,提高濾波效率。