朱建旺,趙敏,穆華超
中國人民解放軍95894部隊,北京市 昌平區(qū) 102211
導讀:介紹了無人機圖像增強,提出了改進的自適應(yīng)限制對比度直方圖均衡算法和基于暗原色先驗的改進算法,分別介紹了算法原理,并通過大量實驗,從主客觀兩個方面分析了算法的優(yōu)越性。
無人機獲取圖像是以高空向地面拍攝的形式,其有兩方面的特殊性導致目標跟蹤任務(wù)受到對比度的影響。首先,無人機距離地面距離一般較遠,圖像中包括的信息多,目標尺寸小,這導致的后果是增大了對跟蹤目標的識別和檢測的難度。其次,由于拍攝角度的原因,畫面中包含天空的部分的亮度偏高,而地面部分的對比度會被嚴重拉低。同時如果遇上有霧天氣,將導致航拍圖像畫面的清晰度降低,進而導致目標跟蹤的不準確。所以在目標跟蹤之前先對圖像進行增強就顯得很有必要。
圖像增強是一種改善圖像效果的一種方法。這種方法不考慮圖像質(zhì)量下降的客觀原因,而是根據(jù)特定的需求來突出一幅圖像中的所需信息,同時削弱或去除某些不需要的信息。圖像增強處理只能增強對某種信息的辨識能力,此外,還會損失一些其他信息。圖像增強的方法有多種,如對比度拉升、Gamma校正、去霧增強、直方圖均衡化等。當無人機在對地面目標進行跟蹤時,圖像序列是由云臺相機由空向地拍攝得到的,因此,會在一定程度上影響圖像序列的對比度。本文提出將CLAHE增強算法應(yīng)用于圖像序列的預處理來有效提高圖像的對比度。針對無人機執(zhí)行地面目標跟蹤任務(wù)時會受到霧天情況的影響,導致目標的辨識度嚴重降低的問題,本文對圖像序列應(yīng)用了一種基于暗原色先驗的改進算法。
比較了大量的圖像對比度提高方法包括伽馬變換,領(lǐng)域統(tǒng)計方法,直方圖匹配等。由于直方圖均衡化可以拉伸圖像灰度的動態(tài)范圍,突出一些細節(jié),同時通過限制對比度來減少圖像的失真現(xiàn)象。所以本文選擇限制對比度自適應(yīng)直方圖均衡(CLAHE,Contrast Limited Adaptive Histogram Equalization) 方法作為無人機目標跟蹤任務(wù)的預處理。
直方圖均衡(HE, Histogram Equalization) 技術(shù)就是對原始圖像的灰度直方圖進行處理,將灰度直方圖從像素集中的某個灰度區(qū)間變成在全部灰度范圍內(nèi)的均勻分布,其優(yōu)點是算法簡單,并不需要借助外來因素設(shè)置參數(shù),能有效地增強圖像的對比度。
通常,我們假設(shè)像素灰度值 的取值范圍為[0,L-1],且0表示最暗,L-1表示最亮,變換后圖像的像素為S,N為一副圖像所含像素數(shù)目。圖像中灰度值為i的數(shù)目用ni描述,則圖像中灰度值為r的像素出現(xiàn)的概率為:
圖1 直方圖均衡化效果圖
令圖像像素變換函數(shù)為:
圖1為將一個電子顯微鏡下細胞圖像進行直方圖均衡化的結(jié)果,從對比結(jié)果可以看出,經(jīng)過直方圖均衡化的圖像對比度得到了提升,從而使得圖像中原本不清晰的細節(jié)變得清晰。
HE算法對于圖像的所有像素使用同樣的直方圖變換,若在一幅圖像中,像素亮度分布比較平衡,則HE效果較好。但當圖像中包含過亮或者過暗的區(qū)域時,增強效果就會很差。自適應(yīng)直方圖均衡化(AHE,Adaptive Histogram Equalization) 形成于HE算法基礎(chǔ)之上,AHE算法通過統(tǒng)計像素鄰域的的直方圖,通過鄰域的直方圖變換重新分布像素的亮度來改變圖像的對比度。該算法不僅提高了圖像的局部對比度,還能夠保留更多的圖像細節(jié),最簡單的形式,就是每個像素通過自身一個矩形鄰域的直方圖均衡化處理該像素。此外,由于圖像邊沿部分的像素通常沒有完整的矩形鄰域,邊緣像素的鄰域不完全在圖像內(nèi)部,所以圖像的邊沿要經(jīng)過預處理。這個問題可以通過給圖像加邊來解決,加邊的方式一般是增加幾行或幾列,這些行或列像素可以設(shè)定某個定值,可以直接復制原先的邊沿,也可以和邊沿鏡像。
將M×N圖像分成a×b個矩形子圖像,每個矩形子圖像的尺寸為m×n,其中M=a×m; N=b×n。
令圖像像素變換函數(shù)為:
圖2 自適應(yīng)直方圖均衡圖像效果
從圖2可以看出,自適應(yīng)直方圖均衡后的圖像對比度得到很好提升,圖像也變得清晰,但缺點是由于相鄰子圖像間的平均灰度值相差較大,引入了很嚴重的塊狀效應(yīng)。
在處理過程中加入了直方圖裁剪過程是CLAHE和普通AHE的不同之處。這個特性也可以應(yīng)用到HE中,衍生為所謂的限制對比度直方圖均衡(CLHE,Contrast Limited Histogram Equalization) ,但這在實際中很少使用。在CLAHE中,對每個局部都要執(zhí)行直方圖的裁剪操作,相比AHE,CLAHE可以在裁剪直方圖的工程中抑制噪聲和邊緣的過度放大,變換函數(shù)的斜率主要決定了指定像素值鄰域的對比度,斜率越大的部分對比度提高的就越大。這個斜率和鄰域的直方圖的高低正相關(guān)和累計直方圖的增長率成比例,CLAHE算法首先使用裁剪幅度來裁剪并重分布直方圖,以達到限制直方圖中數(shù)量過多的灰度的目的,然后計算累積分布函數(shù)(CDF,Cumulative Distribution Function) ,這限制了CDF的斜率。直方圖分布決定了限制幅度值,而鄰域大小決定了直方圖分布,因此,變換函數(shù)與鄰域大小的取值密切相關(guān)。
裁剪幅度通常由(5) 式得到,設(shè)裁剪幅度為ClipLimit
式中,M為每個圖像塊內(nèi)像素總數(shù);ceil表示向上取整,round表示四舍五入;Td為預先設(shè)定的受限閾值,由它決定對比度增強幅度,取值范圍為[0,1],當Td=0時該值為每個灰度占據(jù)像素數(shù)的平均值,當設(shè)置此值時,輸出圖像為原圖;當Td=1時,ClipLimit=M,相當于HE算法。
由于在不同的應(yīng)用場景中Td的取值不同,為了獲得對于本文中無人機空對地圖像應(yīng)用場景Td值,本文采用實驗法來獲取。得益于計算機視覺開源openCV(Open Source Computer Vision Library)的Trackbar函數(shù)的滑動條功能,先將Td的默認值設(shè)為0,最大值設(shè)為1,以0.001為間隔。從0~1緩慢滑動Trackbar的滑動條,并觀察圖像經(jīng)當前Td值下CLAHE的處理效果,當處理效果滿意時,記錄Td值。經(jīng)過測試大量的無人機空對地拍攝的圖像,最終得到的取值范圍,如圖3所示。
通過實驗得到適用于無人機空對地拍攝的圖像Td值的取值范圍為[0.65,0.85]之間。
參考前人的研究發(fā)現(xiàn),通常得到這個裁剪限幅值之后,首先對子塊的直方圖裁剪,使其幅值低于這個限幅值,再將超出限幅值的部分重新分布,或是直接舍去,如圖4藍色部分所示。如果舍去這部分像素,圖像的亮度會低于理論值。而如果將像素重新分配到灰度直方圖中,這會導致低于裁剪幅度的部分再一次超過裁剪幅度,如圖4的綠色部分所示。
圖3 實驗法獲取Td值
圖4 裁剪直方圖峰值示意圖
如圖4所示,這時直方圖再一次超出了限制幅度。對于這個問題,一種方法是通過多次迭代裁剪重分布過程,使得上升的部分忽略不計,另一種方法先統(tǒng)計直方圖中高于裁剪幅度的部分的像素總數(shù)totalExcess,此時假設(shè)將totalExcess等分給所有灰度級,統(tǒng)直方圖整體上升的高度W=totalExcess/N,以upper=ClipLimit-W為下限對直方圖進行如下處理:
(1) 若幅值高于ClipLimit-W,直接置為ClipLimit;
(2) 若幅值處于Upper和ClipLimit之間,將其填補至ClipLimit;
(3) 若幅值低于Upper,直接填補W個像素。
重復上述操作若干次之后,用來填補的像素點個數(shù)通常會略小于totalExcess,即剩余一些像素沒有分配。于是再把這些點均勻地分配到幅值仍然小于 的灰度值。
為了彌補上文所提到的關(guān)于直方圖裁剪方法的不足,本文提出了基于單限幅直方圖裁剪方法。假設(shè)將裁減下來的高于ClipLimit的部分的和totalExcess僅分配給灰度值小于ClipLimit的灰度級,則原先高于ClipLimit的部分不變動,而原先低于且臨近ClipLimit又會超過ClipLimit,但經(jīng)過少許次的迭代過程,像素將完全被分配。這一改進將提高直方圖裁剪的效率。改進方法如下:
(1) 求直方圖中高于ClipLimit的部分像素總數(shù)totalExcess,記錄高于ClipLimit的灰度值及其個數(shù)UpNum和低于ClipLimit的灰度值及其個數(shù)DownNum;
(2) 將直方圖中高于ClipLimit的部分,直接置為ClipLimit;
(3) 將直方圖中低于ClipLimit的灰度值部分分配t o t a l E x c e s s/D o w n N u m個像素,并將余下的DownNum個像素隨機分配給低于ClipLimit的灰度值部分。
針對以上改進,本文選擇了5幅分辨率不同的的圖像并設(shè)置TD=0.02在操作系統(tǒng)為Windows10,運行內(nèi)存為4GB,CPU為Inter(R)CoreTMi5-3470 3.20GHz的臺式機上通過Visual Studio2015編譯器上進行了實驗,比較上文中提到的原始裁剪和本節(jié)改進后的方法。首先計算了圖像的總像素數(shù),然后統(tǒng)計了圖像超過裁剪幅度的總像素數(shù)和灰度數(shù)目,最后對兩種不同算法的迭代次數(shù)和運行時間做了統(tǒng)計,實驗結(jié)果如表1所示。
實驗結(jié)果顯示,改進后的分配方法不僅可將高于裁剪幅度的像素完全分配,并且經(jīng)過少于3次的迭代就可以完全分配完畢。
如果對圖像中的每一個像素都采用上述操作,計算量會非常大,難以達到無人機目標跟蹤任務(wù)的實時性要求。而通過插值方法,僅僅計算圖像中一些子塊的直方圖,然后根據(jù)這些像素與子塊的位置關(guān)系近似出當前像素的鄰域直方圖,可使上述算法計算量極大的減少,并且圖像的增強效果并沒有降低。首先將一幅圖像均勻地分成尺寸相同的子塊,采用8行8列的格式效果通常比較好,如圖6的右側(cè)部分所示。然后計算各塊的直方圖、CDF以及對應(yīng)的變換函數(shù)。
表1 基于單限幅直方圖裁剪方法結(jié)果
對于紅色區(qū)域部分的像素,直接用該塊的直方圖變換函數(shù),對于綠色區(qū)域的像素分別計算相鄰兩塊的直方圖,然后再由線性插值方法得到。
對于藍色區(qū)域的像素首先計算像素四個相鄰塊的直方圖變換值,然后再由雙線性插值來得到。而圖中黑色小方框?qū)?yīng)的像素的直方圖變換恰好是符合定義的。在這一過程中變換函數(shù)的計算次數(shù)極大地減少了,只是增加了雙線性插值的計算量。
圖6 插值法計算其余塊直方圖均衡變換函數(shù)
本文選取了兩幅圖像,分別采用普通的直方圖均衡算法和本文的CLAHE算法進行實驗,結(jié)果如圖7所示。
同時,本文對以上圖像的方差(灰度) ,平均梯度,信息熵,對比度做了計算,并依據(jù)SMD2清晰度標準計算了圖像的清晰度,以此對本文CLAHE結(jié)果進行了客觀評價。評價結(jié)果如表2所示。
由表2可以看出本文改進的CLAHE算法相比普通CLAHE算法能夠提升圖像的對比度。在畫面的清晰度方面,雖然相比普通的CLAHE并未有穩(wěn)定的增強效果但相比原圖,增強效果明顯。綜上所述,本文改進的CLAHE算法可適用于無人機視頻序列的圖像增強。
圖7 本文CLAHE效果圖
表2 改進的CLAHE算法客觀評價
由于無人機拍攝的圖像具有比例尺大、面積小等特點,很適合拍攝帶狀區(qū)域的圖像。但如果遇上有霧天氣等情況,霧氣會降低航拍圖像畫面的清晰度,進而導致目標跟蹤的不準確,所以對圖像去霧的研究就顯得很有必要。
暗通道先驗方法本質(zhì)上是圖像恢復,此處將該方法用在圖像增強上,主要是考慮到,在圖像恢復前先要找到圖像質(zhì)量下降的原因,然后根據(jù)圖像下降原因建立"降質(zhì)模型",最后運用該模型恢復圖像。而圖像增強的目的主要是為了提高圖像的可讀懂性,突出圖像中感興趣的區(qū)域,減少不需要的特征,不需要考慮圖像質(zhì)量下降的原因。
下面介紹暗通道先驗方法。
(1) 暗通道的概念
在絕大多數(shù)非天空的局部區(qū)域,某些像素總會有至少一個顏色通道具有很低的值。換言之,該區(qū)域光強度的最小值是個很小的數(shù)。下面給出了暗通道的數(shù)學定義。對于任何輸入圖像J,暗通道可用下式表示:
暗通道先驗的理論指出:
實際生活中造成暗原色中低通道值主要有三個因素:
1) 生活中存在的物體的陰影,如汽車、建筑物和城市中玻璃窗戶等物體,或者是自然景觀的投影,例如樹葉、樹與巖石等;
2) 彩色物體或表面的RGB通道中的某些通道的顏色較低;
3) 黑暗的物體或表面,如灰色的泥土和灌木,這些場景的圖像通常具有非常黑暗的顏色。
(2) 暗通道去霧的原理
首先,在計算機視覺和計算機圖形中,常用下述方程來描述霧圖形成的模型:
將式(8)稍作處理,變形為下式:
其中,上標c表示R、G、B三個通道。
首先假設(shè)透射率t(x) 在每一個窗口內(nèi)為常數(shù),定義為,并且已經(jīng)給定A值,然后對式(9)兩邊求兩次最小值運算,得到下式:
上式中,J是要求的無霧的圖像,根據(jù)前述的暗通道先驗理論有:
因此,可推導出:
將(12)帶入式(10)中,得到:
這就是透射率的預估。
在現(xiàn)實生活中,即使是晴天白云,空氣中也存在著一些顆粒,因此,看遠處的物體還是能感覺到霧的影響,另外,霧的存在讓人類感到景深的存在,因此,在去霧的時候保留一定程度的霧是很有必要的,通常在式(13)中引入一個取值范圍在[0,1]之間的因子,則式(13)修正為:
考慮到暗通道先驗去霧算法對于圖像中的天空部分會出現(xiàn)過渡區(qū)域,針對這一缺陷,提出了一種基于暗原色先驗的改進算法。下面介紹這一算法。
(1) 暗原色的改進思想和原理
實驗發(fā)現(xiàn),經(jīng)典的暗原色先驗的方法并不適用于大面積白色區(qū)域,原因是這些區(qū)域的暗通道值也過高,不滿足先驗條件。我們選取通道中的最大值,認為這些值等于1或接近1,并將其稱為明像素(設(shè)像素的取值范圍為[0,1]) 。雖然明像素在圖像中并非大規(guī)模存在,但在圖像中出現(xiàn)明亮的天空區(qū)域、高亮區(qū)域等,在這些區(qū)域中,暗通道也呈現(xiàn)出極大的數(shù)值,并不符合暗通道先驗的條件,本文對這些區(qū)域進行特殊處理,提出一種基于暗原色先驗的改進方法。
凡是暗通道數(shù)值大于大氣光值的區(qū)域,肯定為明區(qū)域,因此,可將明區(qū)域表示如下:
式中,Ibright(x)表示無霧圖像的明色。
則霧天圖像的明色區(qū)域可表示為:
式中,I(x)表示霧天圖像,Ibright(x)表示霧天圖像的明色。
由式(6)可知,霧天圖像的暗原色區(qū)域可表示為:
將式(16)和(17)結(jié)合,得出暗明原色圖,其公式表示如下:
式中,Idb(x)為暗明原色圖中在x處的像素值。
(2) 基于暗明原色圖求取粗透射率
對式(9)兩邊求兩次最大值運算,得到下式:
將Jbright(x)→1代入式(19),同時加入調(diào)節(jié)因子后,可得
式中,Idb(x)為暗明原色圖中在x處的像素值。
A值是通過選取暗通道圖像的0.1%個像素的位置,對這些像素求加權(quán)平均而得到的,將大氣光照值A(chǔ)和透射率t(x)帶入式(8)中,無霧圖像J(x)便恢復出了。
式中,當t(x)趨于0時,直接衰減項也趨近于0,導致復原的圖像中存在一定的噪聲。因此對t(x)設(shè)一個下限,t0通常取0.1。
在暗通道先驗方法中,在原始圖象中取一個像素值得到A,去霧處理的過程中,天空部分出現(xiàn)過渡區(qū)域,處理后的圖像就含有許多色斑并伴有偏色現(xiàn)象,這是因為當A取原始像素中某一個點的像素時,可能會造成各通道的A值很有可能與最大值很接近。
本文采用上面介紹的基于暗原色先驗的改進算法來解決這一問題??紤]到圖像中天空部分對去霧效果的影響,本文選用無天空部分、天空部分被樹枝遮擋、天空部分沒有被遮擋的三幅圖像,分別采用暗通道先驗去霧算法和基于暗原色先驗的改進算法進行去霧,去霧效果如圖8、圖9、圖10所示:
從圖8中可看出,對于不存在天空部分的圖像,暗通道先驗算法的去霧效果和基于暗原色先驗的改進算法的去霧效果差不多,只是暗通道先驗算法去霧后的圖像比較暗。
在圖9中,待去霧圖像中天空部分被樹枝遮擋,暗通道先驗算法去霧后的圖像在樹枝遮擋的天空部分出現(xiàn)了不太明顯的過渡區(qū)域,此時基于暗原色先驗的改進算法的去霧效果要好。
圖8 圖像中無天空部分
圖9 圖像中天空部分被樹枝遮擋
圖10 圖像中天空部分沒有被遮擋
表3 圖像中無天空部分處理后的客觀評價
表4 圖像中天空部分被遮擋處理后的客觀評價
表5 圖像中天空部分沒有被遮擋處理后的客觀評價
在圖10中,待去霧圖像中天空部分沒有被遮擋,暗通道先驗算法去霧后的圖像在天空部分出現(xiàn)了很明顯的過渡區(qū)域,原圖像中由于大霧影響,幾乎看不出天空,而基于暗原色先驗的改進算法將天空部分也成功去霧,可見本文采用的基于暗原色先驗的改進算法的去霧效果更好。
圖11 圖像增強技術(shù)在無人機電力巡線中應(yīng)用廣泛
為了更加直觀地觀察兩種算法對圖像的去霧效果,針對上面三幅圖像,選擇方差(灰度) 、平均梯度、信息熵、對比度、SMD2清晰度標準以及算法耗時六個評價指標,同時采用暗通道先驗去霧算法和本文算法進行試驗,對圖像去霧效果進行客觀評價。結(jié)果見表3、4和5。
由表3、4和5可以看出,本文算法處理后的圖像方差要比暗通道先驗去霧算法的大,同時信息熵和平均梯度也要高,說明經(jīng)本文算法去霧后的圖像包含的信息量更多,清晰度更高,與人眼直觀看到的效果一致。不足之處是本文算法比暗通道先驗去霧算法要耗時,在處理大圖像時這一缺點更加明顯,但總體來說本文算法更具有優(yōu)勢。
通過主觀和客觀兩個方面對比暗通道先驗去霧算法和本文算法,充分說明了本文算法的去霧效果更好,為下一步目標跟蹤奠定了基礎(chǔ)。 ■
(參考文獻:略,如有需要,請聯(lián)系編輯部。)