田文啟 李 震 段新濤 張潤(rùn)澤
(1.河南師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院 新鄉(xiāng) 453007)
(2.鄭州市財(cái)貿(mào)學(xué)校 鄭州 450000)
在日常生活中,照相機(jī)成為了我們不可缺少的一個(gè)重要工具,但大多數(shù)人并沒(méi)有學(xué)習(xí)過(guò)攝影所需要的基本的技巧,造成所拍攝的照片質(zhì)量不佳,有的時(shí)候甚至造成所要拍攝的物體完全看不清楚,其中常見(jiàn)的有運(yùn)動(dòng)模糊、抖動(dòng)、光照不均等造成的圖像質(zhì)量不佳,所以通過(guò)相應(yīng)的圖像處理算法解決此類問(wèn)題很有必要。逆光恢復(fù)算法主要針對(duì)由于逆光拍攝所造成的照片質(zhì)量不佳這一問(wèn)題進(jìn)行分析和解決。關(guān)于逆光問(wèn)題已經(jīng)有很多研究者對(duì)逆光圖像增強(qiáng)的方法進(jìn)行了探究,常見(jiàn)的逆光圖像增強(qiáng)技術(shù)[1]可分為兩大類:全局處理算法、局部處理算法?;谌值膱D像增強(qiáng)技術(shù)主要包括:空間域里有直方圖均衡化[2]、直方圖匹配化[3]、對(duì)數(shù)變換[4~5]等,其中直方圖均衡化是利用圖像的直方圖分布,將其中較暗區(qū)域的灰度值拉伸到整個(gè)灰度空間,從而達(dá)到提升對(duì)比度的效果,但其僅適用于整體偏暗的逆光圖像,直方圖匹配化則是將直方圖均衡化作為中間結(jié)果,進(jìn)而得到原始像素的規(guī)定化后的像素之間的映射關(guān)系,改變圖像的直方圖,達(dá)到圖像增強(qiáng)的目的,而對(duì)數(shù)變換頻域里主要方法有同態(tài)濾波[6];基于局部的圖像增強(qiáng)算法常見(jiàn)的有Retinex其包括單尺度Retinex 算法[7]和多尺度Retinex 算法[8]另外也有平衡保持雙直方圖均衡[9]這些全局的算法都有一個(gè)通病,要么對(duì)逆光區(qū)增強(qiáng)不夠要么對(duì)非逆光區(qū)的亮度提升的過(guò)高造成非逆光區(qū)細(xì)節(jié)的損失,雖然已經(jīng)有能很好克服這個(gè)問(wèn)題的算法但其算法復(fù)雜度又過(guò)高如文獻(xiàn)[10]。本文基于文獻(xiàn)[10~11]的思路和基礎(chǔ),對(duì)分割后的逆光區(qū)和非逆光區(qū)分別采用不同的算法處理力求找到一種較為合適的算法組合,解決圖像非逆光區(qū)的虛化的問(wèn)題,以及相比于其他類似算法具有較低算法復(fù)雜度的新的逆光恢復(fù)算法。
用現(xiàn)有的圖像逆光處理算法在具體的實(shí)施上又可以分為時(shí)域算法和頻域算法[12],以下我將分別列出:時(shí)域逆光算法線性亮度變換、非線性亮度變換,和頻域逆光算法中比較經(jīng)典的Retinex 算法、同態(tài)濾波。
用圖像的頻域算法,首先對(duì)圖像的像素矩陣進(jìn)行時(shí)域頻轉(zhuǎn)換,在頻域?qū)D像進(jìn)行處理,其中變換域并不只頻域一種,相應(yīng)的還有小波域[13]、離散余弦變換(DCT)[14]等,這里我們只探討傅里葉變換后所對(duì)應(yīng)的頻域,在快速傅里葉變換(fft)被發(fā)現(xiàn)以前,由于運(yùn)算量過(guò)大造成用計(jì)算機(jī)實(shí)現(xiàn)傅里葉變換很難實(shí)現(xiàn),即使使用快速傅里葉變換,時(shí)頻轉(zhuǎn)換也會(huì)增加算法的運(yùn)算量,但利用圖像像素矩陣在頻域的性質(zhì),可以得到很好的逆光恢復(fù)效果。
2.1.1 Retinex算法
Retinex 的原理基于所有的顏色都是物體反射不同波長(zhǎng)的光的能力所決定的,該算法主要有單尺度(SSR)的Retinex 算法[15]、多尺度(MSR)Retinex算法以及彩色恢復(fù)多尺度Retinex 算法。這里主要介紹單尺度(SSR)算法,一幅圖像可以表示為由入射圖像R(x,y)和反射圖像L(x,y)共同構(gòu)成,實(shí)現(xiàn)該算法的公式如下:
參數(shù)c 的選擇會(huì)直接影響圖像增強(qiáng)的效果,c越小,SSR 的動(dòng)態(tài)壓縮能力越強(qiáng),圖像陰暗部分的細(xì)節(jié)得到更好的增強(qiáng),但是由于平均對(duì)比度范圍較小,結(jié)果會(huì)產(chǎn)生顏色失真;c 越大,SSR 的顏色保真度越高,但是動(dòng)態(tài)壓縮能力會(huì)減弱。通常SSR是在動(dòng)態(tài)范圍壓縮和色感一致性之間尋找平衡點(diǎn),其恢復(fù)效果如下:
圖1 單尺度Retinex增強(qiáng)
2.1.2 同態(tài)濾波
同態(tài)濾波的思想和Rtinex的思想是一致的,但具體實(shí)施的方法有所不同,同態(tài)濾波通過(guò)濾波器來(lái)完成對(duì)圖像入射分量的去除,從而只保留圖像的反射分量,將圖像f(x,y)建模成,入射分量i(x,y)和反射分量r(x,y)的乘積,所以有:
對(duì)兩邊取對(duì)數(shù),并做Fourier 變換,得到線性組合的頻率域:
對(duì)低頻能量進(jìn)行壓制,這樣就降低了動(dòng)態(tài)范圍,而要對(duì)高頻進(jìn)行提高,這樣就增強(qiáng)了圖像的對(duì)比度,同態(tài)濾波的變換函數(shù)如下:
同態(tài)濾波結(jié)果如圖2。
圖像的時(shí)域算法又叫做空間域處理[12],即直接對(duì)圖像的像素值所構(gòu)成的矩陣空間進(jìn)行處理,現(xiàn)有的時(shí)域逆光恢復(fù)算法大多是對(duì)圖像進(jìn)行亮度變換,通過(guò)設(shè)計(jì)一個(gè)可以滿足要求的變換函數(shù),對(duì)像素矩陣直接進(jìn)行變換得到相應(yīng)的處理結(jié)果。
圖2 同態(tài)濾波效果
2.2.1 線性亮度變換
線性亮度變換的變換函數(shù)是線性的,即其函數(shù)圖像是由一條直線或者幾條直線構(gòu)成,其中比較有代表性的兩段折線調(diào)節(jié)公式如下:
其中是提前選好的分割逆光區(qū)和非逆光區(qū)的閾值,其中k1、k2、b1、b2分別是兩條直線的斜率和截距,是可以根據(jù)需要調(diào)節(jié)的,其變換函數(shù)圖像如圖3。
圖3 分段函數(shù)變換函數(shù)示例圖
2.2.2 非線性亮度變換
非線性亮度變換函數(shù)的定義和原理與線性變換的類似,只不過(guò)是把線性函數(shù)變換成了非線性函數(shù),其中把對(duì)數(shù)作為其變換函數(shù)比較常見(jiàn),變換公式如下:
式子中的c 是用來(lái)控制圖像亮度提升的大小的,當(dāng)c 越大的時(shí)候,圖像的整體亮度就被提升的更亮。
文獻(xiàn)[11]中作者提出了一種改進(jìn)的非線性自適應(yīng)逆光處理算法,有效地避免了對(duì)數(shù)變換法對(duì)圖像的非逆光區(qū)的過(guò)度增強(qiáng)的缺點(diǎn),本文的逆光區(qū)的增強(qiáng)算法就是基于此算法,它使得用更少的非逆光區(qū)的亮度提升就能彌補(bǔ)圖像分割所帶來(lái)的邊界失真問(wèn)題成為可能。
圖4 非線性亮度變換結(jié)果
根據(jù)逆光圖像的特點(diǎn),其分割算法適合采用基于閾值的分割算法,相較于其他的圖像分割算法,具有計(jì)算簡(jiǎn)單、運(yùn)算效率較高的優(yōu)點(diǎn)。這里我們選用了閾值分割算法里比較成熟且常用的Otsu 算法。這里用fn(x,y)≤T 表示逆光區(qū),用fn(x,y)>T表示非逆光區(qū),用pi=ni/MN 表示亮度為i的概率,閾值T 的選區(qū)就是為了將逆光區(qū)和亮光區(qū)分開(kāi),設(shè)圖像的大小為M×N,L 表示亮度級(jí),ni表示亮度級(jí)為i的像素?cái)?shù)目,那么圖像的像素值為MN=n0+n1+n2+…nL-1,閾值T取能使類間方差達(dá)到最大的值。
公式中的P1(T)是像素值分到逆光區(qū)的概率,m(T)是逆光區(qū)的均值,m1是亮光區(qū)的均值,以上就是Otsu 算法選區(qū)閾值T 的方法。我們采用在圖像的灰度空間上等間隔取閾值的方法來(lái)驗(yàn)證Otsu 算法在圖像的逆光恢復(fù)上的適用性,閾值的選取示意圖如圖5。
圖5 閾值選取示a區(qū)間意圖
按照數(shù)軸中的整個(gè)a 區(qū)間的閾值進(jìn)行分割的結(jié)果如圖6所示。
從圖可以看出,閾值取在a2L2 到a2R1 之間的效果最好,我們?cè)俅芜M(jìn)行同樣的步驟對(duì)[a2L2,a]按照a 區(qū)間的方法及命名規(guī)則命名為區(qū)間b,等間隔取閾值,從效果看出從b2R1 到b2R2(b 區(qū)間的命名規(guī)則與a 區(qū)間類似)的效果較好且無(wú)明顯差別,故我們得到結(jié)論對(duì)于這張逆光圖片閾值應(yīng)該取在[115,124]之間,歸一化后得到效果較好的閾值區(qū)間為[0.44,0.48]。同樣的我們將區(qū)間[a,a2R1]命名為c 區(qū)間操作,類似的我們得到從c2L1 到c2L2(c區(qū)間命名規(guī)則和b 區(qū)間一致)效果差不多,歸一化后得到閾值區(qū)間為[0.48,0.54],綜合兩個(gè)區(qū)間可得當(dāng)閾值取在區(qū)間[0.44,0.54]中都能得到較好的分割效果。圖像的直方圖如圖7所示。
圖6 a區(qū)間分割效果圖
圖7 圖像的直方圖
我們所確定的最佳區(qū)間在兩峰值之間,是符合理論實(shí)際的,圖8 是采用Otsu 算法所確定的閾值進(jìn)行圖像分割的效果。
圖8 Otsu分割效果圖
Otsu 算法得到的歸一化分割閾值為0.525,在我們所確定的最佳分割的閾值區(qū)間里,因此驗(yàn)證了Otsu算法對(duì)于逆光圖像分割效果的有效性。
為了解決非逆光區(qū)的虛化以及算法復(fù)雜度過(guò)高的情況,本文提出了一種基于閾值分割的自適應(yīng)逆光恢復(fù)算法,其算法流程圖如圖9所示。
圖9 本文算法流程圖
首先將圖像由RGB 空間轉(zhuǎn)化到HSV 空間,這么做的目的是,在不影響逆光恢復(fù)的效果的同時(shí)減少算法的復(fù)雜度和參與運(yùn)算的數(shù)據(jù)量,因?yàn)閳D像的逆光恢復(fù)只涉及到了圖像的亮度分量,所以我們只需要對(duì)圖像的亮度分量進(jìn)行處理。其次我們對(duì)圖像的亮度分量進(jìn)行分割,所采取的方法就是Otsu算法,對(duì)分割后的逆光區(qū)進(jìn)行非線性逆光調(diào)節(jié)[11],使得用更少的非逆光區(qū)的亮度提升就能彌補(bǔ)圖像分割所帶來(lái)的邊界失真問(wèn)題,其變換函數(shù)如下:
其中參數(shù)C 控制圖像變換后的亮度大小其選取遵循如下規(guī)則:
參數(shù)D的選取則采用如下公式:
其中參數(shù)A的選取采用下面的公式:
公式中的k 為常數(shù),選取的為定值k=60,而對(duì)圖像進(jìn)行分割后只對(duì)暗區(qū)進(jìn)行操作雖然克服了非逆光區(qū)的過(guò)度增強(qiáng)問(wèn)題,但帶來(lái)了比較棘手的問(wèn)題,即分割邊緣的銜接不自然所帶來(lái)的不好的視覺(jué)體驗(yàn),文獻(xiàn)[10]采用了基于局部信息熵的自適應(yīng)圖像增強(qiáng)融合,但算法復(fù)雜度過(guò)高,尤其是當(dāng)圖像很大的時(shí)候,而本文針對(duì)這一問(wèn)題采用了對(duì)非逆光區(qū)進(jìn)行亮度提高和增強(qiáng)處理的方法,使得圖像銜接的更加自然,我們采用了非線性疊加算法[16]對(duì)非逆光區(qū)增加亮度,其算法公式如下:
其中img(x,y)是處理后較亮的圖像像素值,I(x,y)為要提升亮度的圖像像素值,k 為常數(shù)值在[0,1]之間的數(shù),可以調(diào)節(jié)亮度的提升強(qiáng)度,當(dāng)k 越大時(shí),則亮度提升的越高,這里我們選的k 值為處理后逆光區(qū)歸一化后最亮的像素值。最后將處理好的逆光區(qū)和亮度調(diào)整后與處理過(guò)的非逆光區(qū)融合到一起,并轉(zhuǎn)換回RGB 色彩空間。其整個(gè)過(guò)程的各個(gè)步驟的運(yùn)行結(jié)果,和最終的處理效果圖如圖10。
圖10 本文各個(gè)步驟效果圖
由圖可以看出,對(duì)非逆光區(qū)域進(jìn)行亮度提升后,其分割邊緣不銜接的問(wèn)題得到了有效的解決,消除因?yàn)閳D像分割所帶來(lái)的不良的視覺(jué)體驗(yàn),算法復(fù)雜度也大大降低,解決了非逆光區(qū)的虛化問(wèn)題。
本文所給出的運(yùn)行結(jié)果和運(yùn)行時(shí)間均是在內(nèi)存為4GB(DDR3)、顯卡為GeForce GTX960M、CPU頻率為2.3GHz、操作系統(tǒng)為Windows10的筆記本電腦上進(jìn)行的,所采用的軟件為Matlab2016b。
本文算法與其他列舉的算法在對(duì)不同大小和類型的逆光圖像的恢復(fù)效果對(duì)比如圖11所示。
通過(guò)對(duì)比可以看出本文算法在處理不同大小,不同亮度的圖像其效果具有魯棒性,圖像在非逆光區(qū)的虛化問(wèn)題得到了解決。
算法的時(shí)間復(fù)雜度也比其他的自適應(yīng)算法低,表1 是本文算法和文獻(xiàn)[10]的算法對(duì)不同各大小的圖像進(jìn)行逆光恢復(fù)的運(yùn)行時(shí)間對(duì)比表。
圖11 算法運(yùn)行效果對(duì)比圖
表1 算法運(yùn)行時(shí)間對(duì)比表
由算法運(yùn)行時(shí)間對(duì)比表可以看出,本文所提出的算法在避免了非逆光區(qū)虛化的情況下,具有較低的算法時(shí)間復(fù)雜度。
對(duì)于逆光圖像的恢復(fù)質(zhì)量的好壞我們采用了圖像的信息熵值來(lái)衡量,圖像的信息熵越高則表明圖像所包含的信息越多細(xì)節(jié)越多,可以作為逆光圖像恢復(fù)質(zhì)量的一個(gè)評(píng)判標(biāo)準(zhǔn),表2 是各種不同逆光恢復(fù)算法恢復(fù)出的圖像的信息熵。
表2 處理后圖像信息熵對(duì)比表
由信息熵值大小的對(duì)比結(jié)果可以看出算法對(duì)圖像細(xì)節(jié)損失的多少,可以看出本文所提出的方法在保證了圖像的細(xì)節(jié)的前提下,具有較高的信息熵,即獲得了較好逆光恢復(fù)效果。
為了解決逆光恢復(fù)算法對(duì)圖像非逆光區(qū)域的亮度過(guò)度提升所造成的虛化以及算法復(fù)雜度過(guò)高的問(wèn)題,本文驗(yàn)證了Otsu算法對(duì)逆光圖像分割的適用性,提出了一種基于閾值分割的圖像自適應(yīng)逆光恢復(fù)算法。為了彌補(bǔ)逆光區(qū)和非逆光區(qū)的銜接問(wèn)題所帶來(lái)的不佳視覺(jué)體驗(yàn),對(duì)非逆光區(qū)采用了非線性亮度疊加算法進(jìn)行亮度提升,得到了較好效果的逆光恢復(fù)圖像,解決了非逆光區(qū)的虛化問(wèn)題,對(duì)比其他現(xiàn)有的逆光恢復(fù)算法,該算法具有較低的時(shí)間復(fù)雜度,且能較好的恢復(fù)逆光區(qū)的細(xì)節(jié)。