方路平,翁佩強,,周國民
(1.浙江工業(yè)大學 信息工程學院,浙江 杭州 310023;2.浙江警察學院 計算機與信息技術(shù)系,浙江 杭州 310053)
作為新型識別碼,彩碼相比于傳統(tǒng)二維碼具有遠距離識別、多識別等優(yōu)點。彩碼技術(shù)在國內(nèi)尚處于起步階段,對彩碼的生成和讀取尚不成熟。在計算機視覺任務(wù)中,目標檢測和跟蹤以及消費電子產(chǎn)品(如手持設(shè)備)都需要高質(zhì)量的圖像和視頻。但是在實際識別過程中,由于亮度的影響,存在彩碼圖像無法識別以及錯誤識別的現(xiàn)象。因此,為保障彩碼識別的準確性,對低光彩碼圖像進行針對性增強具有重要意義。
目前,國內(nèi)外關(guān)于彩碼圖像增強的算法相對較少,應(yīng)對于低光圖像的增強算法已有多種。例如,基于直方圖均衡化[1]方法的基本思想是通過改變圖像像素的分布,使各個像素之間的對比度增大,從而達到增強效果。該方法簡單且容易實現(xiàn),同時又有較快的響應(yīng)速度,但是難以對不同程度的弱光圖像進行針對性增強。后來,有研究者提出基于Retinex理論[2]的多尺度色彩恢復(fù)算法[3](Multi-scale Retinex,MSR),利用單尺度色彩恢復(fù)(Single scale Retinex,SSR)算法[4]對各個通道的圖像先進行高斯濾波處理,再進行線性加權(quán)求和以獲取增強后的圖像。該方法能較好地提高圖像對比度,但是應(yīng)用在彩碼圖像上時會使彩碼色塊顏色產(chǎn)生偏移。除了以上兩種經(jīng)典算法,也有一些新的算法提出來。如牛萬紅等[5]提出了一種大律法結(jié)合信息熵迭代算法來針對低光彩碼圖像進行增強。先利用最大類間方差法(OTSU)確定初始閾值來分割彩碼圖像的前后景,再分別計算前后景信息熵,通過信息熵迭代獲取最優(yōu)分割閾值,再使用獲取的閾值對彩碼圖像各個通道根據(jù)閾值進行二值化,最后合并各個二值化后的通道得到增強后的圖像。該方法能夠很好地還原彩碼圖像的色彩,但由于彩碼背景顏色與有效色塊存在差異,使得通過信息熵迭代的方式來獲取最優(yōu)分割閾值的方法沒有達到預(yù)期效果,在應(yīng)用于不同低光程度的彩碼圖像時,會產(chǎn)生不必要的噪點,影響后續(xù)的識別過程。Guo等[6]提出了一種簡單的微光圖像增強方法,即LIME(Low-light image enhancement via illumination map estimation)。該方法首先對弱光圖像中每個像素的光照進行估計,獲得初始的光照圖像,再將獲得的初始光照圖像經(jīng)Gamma變換后得到增強的光照圖像,最后利用增強的光照圖像實現(xiàn)了基于Retinex模型的增強圖像。針對彩碼的高精度要求,使用上述方法對低光彩碼圖像進行增強,尚且無法達到準確高效的效果,結(jié)果如圖1所示。
圖1 傳統(tǒng)算法實現(xiàn)Fig.1 Implementation of traditional algorithms
近年來深度學習發(fā)展迅速,在計算機視覺領(lǐng)域應(yīng)用廣泛,如圖像識別[7]、圖像分割[8]等;也有一些學者,嘗試將深度學習應(yīng)用于圖像去霧[9],如Lore等[10]提出了一種基于深度學習的圖像自適應(yīng)增強和去噪方法,即LLNet(Low-light image enhancement net),直接使用現(xiàn)有的深層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(即堆棧稀疏去噪自動編碼器)來建立微光圖像與相應(yīng)增強圖像之間的關(guān)系和進行圖像去噪;Li等[11]通過建立低光圖像數(shù)據(jù)集,對構(gòu)造的網(wǎng)絡(luò)進行訓練,再通過訓練好的網(wǎng)絡(luò),即LightenNet(A convolutional neural network for weakly illuminated image enhancement)達到圖像增強的目的。
Retinex理論由Land[12]提出。物體的顏色是由物體對長波(紅)、中波(綠)和短波(藍)光線的反射能力決定的,而不是由反射光強度的絕對值決定的,同時物體的色彩不受光照非均性的影響,具有一致性。因此該模型假定物體的顏色由物體表面的反射屬性決定,與光照強度無關(guān)。Retinex理論可以用函數(shù)描述為
S(x,y)=L(x,y)R(x,y)
(1)
式中:S(x,y)為人眼觀察到的低照度圖像;L(x,y)為反映外界光照環(huán)境的光照分量;R(x,y)為反映物體本質(zhì)屬性的反射分量。
光照分量決定像素的動態(tài)范圍,反射分量反映成像物體的本質(zhì)屬性,R(x,y)通常為需要求解的增強圖像。在對數(shù)域中,將光照分量從原圖像中去除,便得到反射分量。照度分量只能通過近似估計獲取。Retinex算法的一般流程如圖2所示。
圖2 Retinex算法一般流程Fig.2 Retinex algorithm general process
Retinex算法流程通過函數(shù)描述即可將式(1)轉(zhuǎn)換為對數(shù)域,即
logS(x,y)=logR(x,y)+logL(x,y)
(2)
式(2)經(jīng)轉(zhuǎn)換變化之后可得增強后的圖像R(x,y),即
R(x,y)=exp[logS(x,y)-logL(x,y)]
(3)
由式(2,3)可知:Retinex理論對圖像增強的核心就是從原始圖像S(x,y)中估計外界光照環(huán)境的光照分量L(x,y),最后得到反射分量R(x,y)。對光照分量估計的準確與否直接影響后續(xù)圖像的增強效果。傳統(tǒng)的基于Retinex理論的算法,如單尺度Retinex算法(SSR)無法兼顧圖像細節(jié)增強和彩色保持的要求;多尺度Retinex算法(MSR)采用高斯環(huán)繞尺度估計光照分量,在保證圖像細節(jié)的同時使增強后的圖像出現(xiàn)“泛灰”而失真。因此筆者提出了基于卷積神經(jīng)網(wǎng)絡(luò)預(yù)測光照分量的方法,經(jīng)過前期的數(shù)據(jù)集構(gòu)建、模型構(gòu)建和網(wǎng)絡(luò)訓練,能夠有效地提高光照預(yù)測分量的準確度,從而提高后續(xù)圖像增強的效果。
筆者所提出的網(wǎng)絡(luò)來自于在低水平視覺任務(wù)中的深度學習模型[13-14]。該網(wǎng)絡(luò)的作用是學習一種映射關(guān)系,這種映射以弱光彩碼圖像為輸入,對應(yīng)的光照映射圖像為輸出,要求輸入圖像和輸出圖像大小相同。池化層會使得采樣前后的圖像大小不一致,影響網(wǎng)絡(luò)任務(wù)的實現(xiàn),卷積層會因為丟失邊緣信息使得前后圖像大小不一致,因此對所有卷積層需要進行必要的邊緣填充,以保證圖像大小始終不變。通過前3層卷積層提取輸入圖像特征信息,再用第4層卷積生成光照圖像,最后運用Retinex模型進行圖像增強,網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure
考慮到圖片太大會導(dǎo)致計算量增大,為便于網(wǎng)絡(luò)更好地訓練,所提出的網(wǎng)絡(luò)輸入和輸出并非整幅圖像,而是隨機選取低光彩碼圖像的部分區(qū)域和與之相對應(yīng)的光照映射圖像為訓練樣本。輸入低光彩碼圖像的部分區(qū)域,經(jīng)網(wǎng)絡(luò)模型預(yù)測后得到與其大小相同的光照映射圖像。
為確定弱光照彩碼圖像與其光照映射圖像之間的關(guān)系,通過輸入的弱光彩碼圖像提取各通道像素,使用卷積層獲取特征圖像。提取方式可表示為
F1(P)=max(0,W1*P+B1)
(4)
式中:P為輸入的圖像;W1和B1分別為該層的權(quán)重和偏置;“*”為卷積運算符;max(0,x)為該層激活函數(shù)(RelU),以加快收斂速度和強化訓練效果。
根據(jù)監(jiān)督學習反向傳播原理和隨機梯度下降法,對損失函數(shù)(MSE)進行最小化訓練,最終得到網(wǎng)絡(luò)模型參數(shù)θ={W1,W2,W3,W4,B1,B2,B3,B4}。損失函數(shù)表示為
(5)
式中:N為該訓練批次下訓練樣本數(shù)量;F為網(wǎng)絡(luò)結(jié)構(gòu)所學習到的映射關(guān)系;Ui為Pi弱光彩碼圖像對應(yīng)的光照映射圖像。
借鑒Guo的圖像增強方法[6],通過Gamma校正調(diào)整網(wǎng)絡(luò)模型預(yù)測的照明圖,確定結(jié)果中的暗區(qū)。這些區(qū)域可以表示為
L(x)′=L(x)γ
(6)
式中:L(x)為筆者所提出的網(wǎng)絡(luò)預(yù)測得到的光照映射圖像;L(x)′為經(jīng)Gamma矯正后得到的新光照映射圖像;γ=1.7,是一個實驗值。優(yōu)化映射時,假設(shè)輸入圖像為n×n像素,局部區(qū)域具有相同的光照強度。Gamma修正以后,為了消除遮擋的影響,需要通過引導(dǎo)圖像濾波[15]來使光照圖像更加平滑。在引導(dǎo)圖像濾波中,將輸入圖像的紅色通道作為引導(dǎo)圖像。最后,根據(jù)式(1,6)獲得增強圖像R(x)為
(7)
式中:I(x)為原始的弱光彩碼圖像;L(x)′為經(jīng)網(wǎng)絡(luò)預(yù)測、Gamma矯正以及引導(dǎo)濾波后得到的光照映射圖像;R(x)為最終獲得的增強后的彩碼圖像。
訓練筆者所提出的網(wǎng)絡(luò)需要足夠安全可靠的彩碼數(shù)據(jù)圖像。研究采用張恒麗等[15]提出的彩碼生成方法。使用該方法生成的彩碼圖像(寬250 像素、長520 像素)第一層為白色背景,第二層為黑色背景色(寬180 像素、長480 像素)。黑色背景色中含有矩形的大小為30×30 像素的紅、綠、藍、黃4 色中有效的色塊用以存儲彩碼信息。共生成200 張清晰彩碼圖像,將圖像從RGB通道轉(zhuǎn)到HSV通道,改變V通道系數(shù),生成4 個不同等級的弱光彩碼圖像,再利用Retinex理論生成4個不同等級弱光彩碼圖像所對應(yīng)的光照映射圖像。如圖4所示,圖4(a,c)為通過圖1(a)的原始彩碼圖像生成的弱光程度不同的若光彩碼圖像,圖4(b,d)為利用Retinex理論生成的對應(yīng)的光照映射圖像。
圖4 完整數(shù)據(jù)集圖像實例Fig.4 Complete data set image
考慮到神經(jīng)網(wǎng)絡(luò)的計算量以及實際環(huán)境下光照不均勻的情況,假設(shè)圖像局部的光照強度是均勻的,將生成的弱光彩碼圖像以及對應(yīng)的光照映射圖像進行切割裁剪操作??紤]到訓練網(wǎng)絡(luò)計算速度和預(yù)測效果,筆者選取了兩種裁剪方式。
裁剪方式1將完整彩碼圖像的長等分20 份,寬等分10 份,得到25×26 像素的局部彩碼圖像,經(jīng)計算得到160 000 張弱光彩碼的局部圖像作為數(shù)據(jù)集1。如圖5(a)所示,左側(cè)圖像為低光圖像,右側(cè)為其對應(yīng)的光照映射圖像。
圖5 裁剪數(shù)據(jù)集圖像示例Fig.5 Tailoring data set image example
裁剪方式2考慮到裁剪方式1所得圖像的數(shù)據(jù)量較大,使得計算機每次訓練讀取文件的時間較長。同時,該裁剪方法會存在大量的白色背景色的弱光圖像,可能會影響網(wǎng)絡(luò)的訓練。因此,提出裁剪方式2來避免上述情況。首先,將生成的弱光彩碼圖像壓縮為原圖像大小的1/2;隨后,為忽視白色區(qū)域裁剪出黑色背景部分的圖像;最后,通過重疊、裁剪得到大小為50×50 像素,數(shù)量為12 800 張的弱光彩碼的局部圖像作為數(shù)據(jù)集2。如圖5(b)所示,左側(cè)圖像為低光圖像,右側(cè)為其對應(yīng)的光照映射圖像。
筆者所提出的網(wǎng)絡(luò)結(jié)構(gòu)通過Python語言和Matlab程序?qū)崿F(xiàn)。在訓練階段,每一層卷積的權(quán)重都是通過高斯隨機分布進行初始化,偏差設(shè)置為0。初始學習速率為0.01,每1 000 次迭代學習速率降低0.5。計算機CPU為IntelCorei7-4590,主頻為3.3 GHz,內(nèi)存為12 GB。
為確保后續(xù)彩碼圖像增強效果的可靠,首先考慮不同數(shù)據(jù)量的數(shù)據(jù)對網(wǎng)絡(luò)模型的訓練是否會產(chǎn)生影響。實驗中將數(shù)據(jù)集2形式的弱光彩碼的局部圖像數(shù)據(jù)量分別設(shè)定為12 800,9 600,3 200 張。分別采用這3 個數(shù)據(jù)量的數(shù)據(jù)集對網(wǎng)絡(luò)模型進行訓練,記錄每個數(shù)據(jù)量訓練網(wǎng)絡(luò)模型時的迭代次數(shù)以及對應(yīng)的損失函數(shù)值,折線圖如圖6所示。
圖6 不同數(shù)據(jù)量訓練的損失函數(shù)圖Fig.6 Training loss function diagram of different data quantity
圖6中數(shù)據(jù)集1,2,3分別表示3 200,9 600,12 800 張弱光彩碼局部圖像的實驗對象。由圖6可知:不同數(shù)據(jù)量的數(shù)據(jù)集在訓練網(wǎng)絡(luò)模型時迭代多次以后均趨于平緩穩(wěn)定的狀態(tài),且所得到的網(wǎng)絡(luò)模型的損失函數(shù)值相近;12 800 張弱光彩碼局部圖像對應(yīng)的數(shù)據(jù)集3在訓練網(wǎng)絡(luò)模型的過程中能夠較早的進入穩(wěn)定階段且振蕩幅度相比于數(shù)據(jù)集1和數(shù)據(jù)集2較小。因此訓練數(shù)據(jù)集的數(shù)據(jù)量并不會對最終實驗結(jié)果產(chǎn)生過大的影響,但較大的數(shù)據(jù)量能夠使網(wǎng)絡(luò)模型快速地進入穩(wěn)定狀態(tài)。
為避免網(wǎng)絡(luò)模型訓練的迭代次數(shù)影響后續(xù)模型對光照圖像的生成,將構(gòu)建的數(shù)據(jù)集1,2分別進行訓練,記錄迭代次數(shù)與損失函數(shù)的值,得到迭代次數(shù)與損失函數(shù)值的關(guān)系如圖7所示。
圖7 損失函數(shù)折線圖Fig.7 Line graph of loss function
由圖7可知:在訓練過程中,損失函數(shù)值隨著迭代次數(shù)的增加不斷下降,迭代次數(shù)到達500 次以后損失函數(shù)值趨于平緩,損失函數(shù)值處于相對穩(wěn)定狀態(tài)。因此,在模型訓練中,迭代次數(shù)大于500 次之后,模型結(jié)果會相對穩(wěn)定,迭代次數(shù)對彩碼圖像增強效果的影響相對較小。
筆者所提出的網(wǎng)絡(luò)參數(shù)及結(jié)構(gòu)能夠?qū)崿F(xiàn)對低光彩碼圖像增強。為研究不同網(wǎng)絡(luò)參數(shù)對弱光彩碼圖像增強的效果以及對計算效率的影響,嘗試更改網(wǎng)絡(luò)參數(shù),通過MSE損失函數(shù)值判斷網(wǎng)絡(luò)訓練的效果。網(wǎng)絡(luò)結(jié)構(gòu)為4 層卷積,通過改變每一層的卷積核大小和提取的特征層數(shù)研究網(wǎng)絡(luò)的預(yù)測效果,設(shè)定每層間的卷積核大小和提取的特征層數(shù)用“-”連接。對25×26 像素大小的數(shù)據(jù)集1進行卷積層數(shù)為4的多種不同網(wǎng)絡(luò)參數(shù)的訓練,分別更改特征向量為16-8-4-1,32-16-8-1,64-32-16-1,128-64-32-1,以及更改卷積核大小為7-7-1-5,3-7-1-5,其MSE值如表1所示。對50×50 像素大小的數(shù)據(jù)集2做了同數(shù)據(jù)集1一樣的訓練,結(jié)果如表2所示。
表1 25×26像素數(shù)據(jù)集1網(wǎng)絡(luò)實驗結(jié)果Table 1 Network experiment results of data set 1
表2 50×50像素數(shù)據(jù)集2網(wǎng)絡(luò)實驗結(jié)果Table 2 Network experiment results of data set 2
由表2可知:隨著卷積次數(shù)的增加可以獲得更好的MSE性能,然而過多地增加卷積次數(shù)對網(wǎng)絡(luò)性能的改善是有限的。通過增加或者減少卷積核的大小所獲得的MSE會發(fā)生改變,這可能是由于卷積核大小不同影響了模型的結(jié)構(gòu),從而導(dǎo)致性能不同。權(quán)衡了性能和復(fù)雜性,筆者選擇一個中間網(wǎng)絡(luò)結(jié)構(gòu)作為基本網(wǎng)絡(luò)結(jié)構(gòu)。由表1可知:合理的卷積核大小設(shè)置可以令預(yù)測結(jié)果更好。比較表1,2可知:在相同網(wǎng)絡(luò)結(jié)構(gòu)下,25×26 像素大小的數(shù)據(jù)集1訓練結(jié)果優(yōu)于50×50 像素大小的數(shù)據(jù)集2。
分別用數(shù)據(jù)集1和數(shù)據(jù)集2預(yù)留的測試圖像對模型進行預(yù)測,將輸入圖像、預(yù)測圖像以及標簽圖像進行比較,比較結(jié)果如圖8,9所示。
圖9 數(shù)據(jù)集2預(yù)測結(jié)果示例Fig.9 Prediction results of data set 2
由圖8,9可知:數(shù)據(jù)集2的標簽圖像的色塊邊緣有較多的噪聲點,導(dǎo)致網(wǎng)絡(luò)預(yù)測得到的光照映射圖像的背景與色塊無法達到明顯的分割;數(shù)據(jù)集1的標簽圖像的色塊邊緣噪聲點較少,使得網(wǎng)絡(luò)預(yù)測所得到的光照映射圖像能夠明顯的區(qū)分彩碼色塊部分和背景部分。因此,25×26 像素大小的數(shù)據(jù)集1能夠更好地達到圖像增強的效果。
為驗證所提算法的有效性,對計算機合成的低照度圖像和實際低照度圖像分別進行實驗。從客觀和主觀兩方面進行對比分析,對比HE經(jīng)典算法、MSR算法和大律法結(jié)合信息熵算法的優(yōu)劣情況。首先,對合成的弱光照圖像進行定性比較。這些低光彩碼圖像是基于Retinex模型合成的。隨機選取了兩張未進行訓練的完整彩碼圖像生成不同程度的弱光圖像,分別運用上述所提的方法對該圖像進行增強。
實驗選取PSNR,SSIM,MSE作為客觀評價指標:PSNR表征圖像的失真程度,其值越高,失真程度越小;SSIM表征圖像結(jié)構(gòu)信息的完整性,其值越高,增強后圖像與原始圖像的結(jié)構(gòu)特征越相似;MSE表征增強后圖像與原始圖像之間的差距,其值越小說明增強后圖像越接近原始正常光照圖像。圖像1,2的實驗結(jié)果如表3,4所示。
表3 圖像1的客觀指標Table 3 Objectiveindicators of picture 1
表4 圖像2的客觀指標Table 3 Objectiveindicators of picture 2
由表3可知:筆者所提出的算法其SSIM指標高于其他算法,說明對弱光彩碼圖像進行增強處理后能夠很好的保存圖像信息。PSNR和MSE指標同樣證明了筆者所提出的算法相比其他算法有更好的結(jié)果,驗證了所提算法的有效性。
運用HE算法、MRS算法、大律法結(jié)合信息熵算法對圖像1,2進行增強,分別與筆者實驗結(jié)果進行比較,結(jié)果如圖10所示。
圖10 合成弱光圖像增強結(jié)果Fig.10 Synthetic low light image enhancement results
由圖10可知:與生成的弱光彩碼圖像相比,上述4 種增強算法都達到了圖像增強的效果。HE算法較好地保持了色彩,但在不同弱光程度的輸入圖像的情況下,該算法并不能作針對性的增強,導(dǎo)致了左側(cè)圖像仍然存在曝光不足的現(xiàn)象,是一種增強程度不足的表現(xiàn);MSR算法應(yīng)用于弱光彩碼圖像時,在輸入任何弱光程度的圖像情況下,其增強效果相似且令彩碼色塊色彩失真使整張圖像存在泛黃的現(xiàn)象;大律法結(jié)合信息熵算法相比于以上兩種增強算法,其增強效果較為完整,但在色塊邊緣產(chǎn)生了各種顏色的噪點,會影響彩碼識別結(jié)果;筆者所提算法,相比于以上算法不僅對不同程度的弱光圖像實現(xiàn)了針對性的增強,同時也保持各個色塊的色彩信息基本不變,能有效防止彩碼識別的錯誤,但是仍存在局部區(qū)域增強效果不完整的情況,如左圖最右側(cè)部分,可能是由于該算法的損失函數(shù)為均方誤差,使其預(yù)測結(jié)果并不能涵蓋所有圖像像素點。
為驗證筆者所提算法對實際情況的弱光彩碼圖像也有效果,在真實環(huán)境下拍攝了光照不足的彩碼圖像作為輸入圖像來做對應(yīng)的增強處理,結(jié)果如圖11所示。
圖11 現(xiàn)實弱光圖像增強結(jié)果Fig.11 Real low light image enhancement results
由圖11可知:HE算法能在保證圖片原有色彩的情況下,較好地增強圖像亮度,但仍然存在增強不完全的情況;MSR算法則過度地增強了圖像亮度,使得彩碼圖像顏色泛白,因而彩碼色塊顏色也產(chǎn)生了失真的結(jié)果;大律法結(jié)合信息熵算法將彩碼色塊的信息丟失,僅保留了彩碼圖像的外觀,同時在色塊邊緣還存在噪聲點;筆者算法與HE算法相比,對原始圖像有更加完整的增強效果,在保證彩碼色塊的色彩信息完整的情況下,使增強后的圖像更為平滑;相比其他3 種傳統(tǒng)算法,對弱光彩碼圖像增強的效果更好。
在彩碼識別中,存在各種程度曝光不足的弱光彩碼圖像。為解決這一問題,筆者首先從傳統(tǒng)圖像增強算法出發(fā),對弱光彩碼做針對性增強,然后利用Retinex理論特性生成弱光彩碼圖像,對其光照映射圖像進行卷積神經(jīng)網(wǎng)絡(luò)訓練,最后通過訓練的網(wǎng)絡(luò)預(yù)測弱光彩碼圖像對應(yīng)的光照圖像來作針對性的增強。實驗結(jié)果表明:筆者所提出的算法能較好地增強弱光彩碼圖像,同時也盡可能保留了彩碼圖像的信息。因此,筆者所提出的增強效果算法能有效地應(yīng)用于低光彩碼圖像識別,具有一定的借鑒意義。今后將繼續(xù)優(yōu)化網(wǎng)絡(luò)模型,進一步優(yōu)化圖像增強后局部暗區(qū)域的現(xiàn)象。