劉晨
(喀什大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,新疆喀什 844000)
關(guān)鍵字 :C#;C++;圖像清晰化
隨著圖像處理技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,對(duì)特殊天氣條件下得到的圖像的處理成為計(jì)算機(jī)視覺領(lǐng)域的一個(gè)重要研究方向.由于霧霾、沙塵等因素的影響,在此天氣條件下得到的圖像會(huì)存在對(duì)比度低、細(xì)節(jié)丟失等情況,這些缺失將會(huì)影響后續(xù)圖像分析識(shí)別工作.因此,需要對(duì)此類圖像進(jìn)行清晰化[1-3]處理,增強(qiáng)圖像的信息.目前圖像清晰化算法主要有Retinex 算法[4]、直方圖均衡化算法[5]、自動(dòng)顏色均衡算法[6]、小波變換算法[7]、圖像復(fù)原算法[8]、快速去霧算法[9]以及卷積神經(jīng)網(wǎng)絡(luò)算法[10]和深度學(xué)習(xí)算法[11-12]等.
本系統(tǒng)實(shí)現(xiàn)五種圖像清晰化算法,分別是RetinexSSR(單尺度Retinex 算法)、HE(直方圖均衡算法)、ACE(自動(dòng)顏色均衡算法)、MEAN(基于均值濾波思想的快速算法)和DCP(基于暗通道先驗(yàn)的算法).利用C#程序設(shè)計(jì)語(yǔ)言[13-14]和C++程序設(shè)計(jì)語(yǔ)言編程完成系統(tǒng)界面設(shè)計(jì)、算法設(shè)計(jì)和軟件的開發(fā).本文用C#設(shè)計(jì)軟件界面,并用C++程序完成圖像清晰化算法函數(shù)并且生成DLL,在C#中調(diào)用DLL 中的庫(kù)函數(shù).
圖1 所示的是系統(tǒng)整體概述,圖2 是系統(tǒng)運(yùn)行初始界面圖,圖3 是具體程序接口調(diào)用過程.FromSSR/FromHE/FromACE/FromMean/FormDCP 是五種清晰化算法界面設(shè)計(jì)模塊,SSRDLL/HEDLL/ACEDLL/MEANDLL/DCPDLL 是實(shí)現(xiàn)具體圖像清晰化算法模塊并且生成動(dòng)態(tài)鏈接庫(kù),SSR/HE/ACE/MEAN/DCP是使用C#程序調(diào)用對(duì)用DLL模塊.
圖1 系統(tǒng)概述
圖2 系統(tǒng)界面
圖3 接口調(diào)用
MEAN 算法[9]及其具體的實(shí)現(xiàn)細(xì)節(jié)基于單幅圖像的快速算法描述如下:
(1)輸入圖像H(x);
(2)求取M(x)為
其中,r,g,b分別表示圖像紅綠藍(lán)三個(gè)通道;
(3)對(duì)M(x)進(jìn)行均值濾波得到Mave(x)為
(4)求取M(x)中所有元素的均值mav;
(5)利用Mave(x)求出L(x)為
其中ρ為參數(shù)值;
(6)使用Mave(x)和H(x)求A為
(7)輸出圖像,得到的清晰化圖像F(x)為
具體的公式推導(dǎo)參見文獻(xiàn)[9],使用C++程序語(yǔ)言和C#調(diào)用生成的DLL 庫(kù)的算法實(shí)現(xiàn)過程如圖4所示.
圖4 算法實(shí)現(xiàn)過程
RetinexSSR,HE,ACE,DCP 算法概述如下,具體算法過程參見相應(yīng)文獻(xiàn).
(1)RetinexSSR 算法
在Retinex模型中I(x,y)=R(x,y)*L(x,y),I(x,y)是觀察到的圖像;R(x,y)是反射分量,代表模型本質(zhì)信息;L(x,y) 是入射分量,可以表示為L(zhǎng)(x,y)=I(x,y)*G(x,y),G(x,y)是高斯函數(shù).通常將乘法域轉(zhuǎn)化到對(duì)數(shù)域求解R(x,y).
(2)HE 算法
圖像的灰度直方圖可以寫成
其中,nk為灰度級(jí)為k的像素的個(gè)數(shù),L是灰度級(jí).在直方圖的基礎(chǔ)上,進(jìn)一步定義Pr(k),其表示歸一化的直方圖為灰度級(jí)出現(xiàn)的相對(duì)頻率,Pr(k)=nk/N,N表示圖像像素總數(shù).
(3)ACE 算法
首先獲得中間圖像,對(duì)圖像進(jìn)行色彩進(jìn)行調(diào)整,從而完成圖像色差矯正,得到空域重構(gòu)中間圖像:
其中Ic(p) -Ic(j)表示像素點(diǎn)p和j亮度差,d(p,j)表示度量函數(shù).最后將其映射到[0,255]空間中從而得到:
(4)DCP 算法
DCP算法中模型可以表示為
其中I為有霧霾的圖像,J表示理想圖像,t是透射率,A表示全局大氣光照,通常選擇暗通道中最亮的0.1%的像素來(lái)計(jì)算獲得.
定義暗通道為
其中,c是圖像中各個(gè)顏色通道.根據(jù)暗通道原理Jdark(x)是趨于0 的.推導(dǎo)公式可以得到透射率,通常在透射率中加入一個(gè)系數(shù)得到
圖2 展示的是系統(tǒng)初始界面,其對(duì)應(yīng)是Ret?inexSSR,HE,ACE,MEAN,DCP 五種具體清晰化算法菜單選項(xiàng).圖5 到圖9 中使用的圖片是網(wǎng)絡(luò)上各個(gè)算法使用的經(jīng)典圖片,圖10 中使用圖片是在沙塵天氣下使用手機(jī)拍攝的喀什大學(xué)新泉校區(qū)照片.
圖5 RetinexSSR算法
在RetinexSSR 算法界面中有打開圖像和保存圖像.系統(tǒng)打開時(shí)候,中間左右兩邊顯示的都是原始待處理圖片.算法完成后,系統(tǒng)界面左邊顯示的原始待處理圖片,系統(tǒng)界面右邊顯示的是算法完成后圖片(后續(xù)各個(gè)算法一樣進(jìn)行設(shè)置).SSR 操作就是對(duì)圖片進(jìn)行RetinexSSR 算法處理.Radius 是算法中窗口半徑值,SigmaS 和a 值[0,1]是算法中使用的參數(shù)值,可以進(jìn)行設(shè)置.運(yùn)行結(jié)果如圖5 所示.
在HE 界面中有打開圖像和保存圖像.直方圖增強(qiáng)操作就是對(duì)圖片進(jìn)行HE 清晰化算法處理.運(yùn)行結(jié)果如圖6 所示.
圖6 HE算法
在ACE 系統(tǒng)界面中有打開圖像和保存圖像.ACE 操作就是對(duì)圖片進(jìn)行ACE 算法處理.radius 是算法中窗口半徑值,ratio 是算法中使用的參數(shù)值,可以進(jìn)行設(shè)置.運(yùn)行結(jié)果如圖7所示.
圖7 ACE算法
在DCP 去霧界面中有打開圖像和保存圖像.DCP 處理操作就是對(duì)圖片進(jìn)行DCP 清晰化算法處理.RadiusDark,aipha,RadiusGuider,epsilon 是算法中使用的參數(shù)值,可以進(jìn)行設(shè)置.運(yùn)行結(jié)果如圖8所示.
圖8 DCP算法
在MEAN去霧界面中有打開圖像和保存圖像.MEAN 處理操作就是對(duì)圖片進(jìn)行MEAN 算法處理.radius 是算法中窗口半徑值,rho 是算法中使用的參數(shù)值,可以進(jìn)行設(shè)置.運(yùn)行結(jié)果如圖9所示.
圖9 MEAN算法
從圖5—9 所示運(yùn)行結(jié)果中可以看出,在五種清晰化算法RetinexSSR,HE,ACE,MEAN,DCP 中MEAN 算法效果最好.本文使用MEAN 算法對(duì)喀什地區(qū)沙塵圖片進(jìn)行處理,選取的圖片是在喀什沙塵天氣下使用手機(jī)拍攝的喀什大學(xué)新泉校區(qū)圖片.具體處理效果如圖10所示.
圖10 MEAN算法處理喀什大學(xué)新泉校區(qū)沙塵圖片
本系統(tǒng)實(shí)現(xiàn)了RetinexSSR,HE,ACE,MEAN,DCP 五種圖像清晰化算法.利用C#程序設(shè)計(jì)語(yǔ)言編程完成系統(tǒng)界面設(shè)計(jì),并用C++程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)五種不同圖像清晰化算法并且生成動(dòng)態(tài)鏈接庫(kù)DLL,在C#界面程序里調(diào)用DLL庫(kù)函數(shù).在后續(xù)研究中將實(shí)現(xiàn)更多的圖像清晰化算法.