本發(fā)明屬于圖像處理技術(shù)領(lǐng)域,更進(jìn)一步是一種去霧并行優(yōu)化方法,可用于對(duì)后續(xù)的實(shí)時(shí)視頻監(jiān)控,圖像識(shí)別提供清晰的圖像源。
背景技術(shù):
霧霾天氣條件下,室外圖像采集設(shè)備受其影響,采集到的圖像會(huì)出現(xiàn)模糊,對(duì)比度下降,色調(diào)偏移等退化現(xiàn)象,不僅嚴(yán)重影響了視覺檢測(cè)系統(tǒng)的正常工作,也給后期智能識(shí)別等應(yīng)用帶來了巨大挑戰(zhàn)。
何愷明等人提出的暗通道先驗(yàn)去霧方法,在單幀圖像去霧效果方面得到了學(xué)術(shù)界的認(rèn)可,然而在處理速度方面,由于該方法計(jì)算時(shí)間較長(zhǎng),通過單純的CPU串行運(yùn)算,難以滿足視頻監(jiān)控場(chǎng)景對(duì)實(shí)時(shí)性的要求。
基于圖像數(shù)據(jù)利于分割,可以大量并行的特點(diǎn),很多基于CPU+GPU的異構(gòu)計(jì)算的解決方案應(yīng)運(yùn)而生。國防科技大學(xué)的薛云剛等人在論文《基于CUDA的暗原色先驗(yàn)去霧算法并行實(shí)現(xiàn)與優(yōu)化》中提出一種基于CUDA計(jì)算框架的并行實(shí)現(xiàn)方法,對(duì)640×480的圖像有25幀/秒的處理速度;四川川大智勝軟件股份有限公司,四川大學(xué)的專利申請(qǐng)“一種基于CUDA的圖像實(shí)時(shí)去霧方法”(公開號(hào):CN103049890A,申請(qǐng)?zhí)枺篊N201310017014.X,申請(qǐng)日:2013年1月17日)中公開了一種基于CUDA的圖像實(shí)時(shí)去霧的方法,對(duì)600×400的圖像可以達(dá)到32幀/秒的處理速度。這些方法存在以下不足:
首先,現(xiàn)有的異構(gòu)計(jì)算解決方案均對(duì)低分辨率達(dá)到25幀/秒以上的處理速度,隨著近年來監(jiān)控設(shè)備逐步向1920×1080的高分辨率過渡,這種處理速度不能滿足的高清視頻的實(shí)時(shí)處理需求;
其次,基于CUDA計(jì)算框架編寫的程序僅能運(yùn)行在NVIDIA公司生產(chǎn)的GPU上,其可移植性較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服已有技術(shù)的不足,提出一種基于OpenCL的暗通道去霧并行優(yōu)化方法,以提高視頻的去霧速度和實(shí)現(xiàn)平臺(tái)的兼容性。
為了實(shí)現(xiàn)上述目的,本發(fā)明包括:
(1)選用支持開放計(jì)算語言O(shè)penCL的平臺(tái),對(duì)該平臺(tái)進(jìn)行初始化,并從中選取能運(yùn)行內(nèi)核函數(shù)的設(shè)備E,該設(shè)備包括CPU,GPU,intel MIC加速卡;
(2)將RGB彩色有霧視頻的一幀圖像I從主機(jī)內(nèi)存拷貝到設(shè)備E的全局內(nèi)存中;
(3)通過并行處理的方式計(jì)算RGB彩色有霧圖像I各像素位置的灰度值,生成灰度圖Igray,通過并行處理的方式計(jì)算各像素位置RGB三通道最小值,生成最小值圖Imin;
(4)對(duì)最小值圖Imin進(jìn)行最小值濾波,得到暗通道圖Idark;
(5)根據(jù)暗通道圖Idark計(jì)算大氣光A:
(5a)計(jì)算暗通道圖Idark的直方圖h;
(5b)根據(jù)直方圖h求得灰度值最大的0.1%像素點(diǎn)對(duì)應(yīng)的灰度值下界l;
(5c)以l為閾值對(duì)暗通道圖像Idark進(jìn)行二值化得到二值圖像I';
(5d)對(duì)有霧圖像I的RGB三通道圖Ir、Ig、Ib分別點(diǎn)乘二值圖像I',得到RGB三通道灰度圖像Ir'、Ig'、Ib';
(5e)分別計(jì)算RGB三通道灰度圖像Ir'、Ig'、Ib'的直方圖hr、hg、hb;
(5f)通過RGB三通道直方圖hr、hg、hb,計(jì)算大氣光A={Ar,Ag,Ab},
其中,c∈{r,g,b},i為在0~255變化的灰度值,Ar、Ag、Ab分別為紅色,綠色,藍(lán)色三通道的大氣光值;
(6)根據(jù)大氣光A和有霧圖像I的RGB三通道圖Ir、Ig、Ib,計(jì)算預(yù)估透射率圖t;
(7)根據(jù)有霧圖像的灰度圖Igray和預(yù)估透射率圖t,得到精細(xì)透射率圖t:
(7a)對(duì)預(yù)估透射率圖t進(jìn)行行向均值濾波,得到行均值濾波結(jié)果圖tr;再對(duì)行均值濾波結(jié)果圖tr進(jìn)行列向均值濾波,得到平滑透射率圖mt;
(7b)對(duì)有霧圖像的灰度圖Igray進(jìn)行均值濾波,得到平滑引導(dǎo)圖mI;
(7c)根據(jù)平滑透射率圖mt、平滑引導(dǎo)圖mI、預(yù)估透射率圖t和有霧圖像的灰度圖Igray,得到平滑縮放矩陣ma、平滑偏移矩陣mb;
(7d)根據(jù)平滑縮放矩陣ma、平滑偏移矩陣mb和有霧圖像的灰度圖Igray,得到精細(xì)透射率圖
(8)根據(jù)RGB三通道有霧圖像I、精細(xì)透射率圖和大氣光A,計(jì)算去霧結(jié)果圖J;
(9)將RGB三通道去霧結(jié)果圖J從設(shè)備E讀回主機(jī)內(nèi)存;
本發(fā)明與現(xiàn)有技術(shù)相比較,具有如下優(yōu)點(diǎn):
第一,由于本發(fā)明使用了開放計(jì)算語言O(shè)penCL,基于OpenCL語言編寫的程序,可以在INTEL,AMD的CPU,NVIDIA,AMD的GPU,INTEL的MIC平臺(tái)運(yùn)行,與此相對(duì)的,其他解決方案采用的CUDA計(jì)算語言作為NVIDIA專屬計(jì)算框架,僅能在NVDIA顯卡上運(yùn)行,因此,本發(fā)明方案具有更好的平臺(tái)兼容性。
第二,由于本發(fā)明引入直方圖求解大氣光,與選取單一像素點(diǎn)的原暗通道去霧算法相比,所得大氣光值在數(shù)值上具有穩(wěn)定性。
第三,由于本發(fā)明在均值濾波中使用了局部?jī)?nèi)存,該類型內(nèi)存具有很高的存取速度,本發(fā)明中對(duì)局部?jī)?nèi)存的使用,保證了對(duì)全局內(nèi)存的讀寫操作為合并訪問,提高了讀取寫入效率,節(jié)省了處理時(shí)間。
第四,由于本發(fā)明在均值濾波中采用了先分塊計(jì)算,再合并分塊處理結(jié)果的方法,提高了并行度,節(jié)省了處理時(shí)間。
第五,由于本發(fā)明在均值濾波中采用了先進(jìn)行行向?yàn)V波,再進(jìn)行列向?yàn)V波的行列分離的處理方法,避免了對(duì)同一像素點(diǎn)的冗余訪問,提高了處理速度。
附圖說明
圖1是本發(fā)明的實(shí)現(xiàn)流程圖。
圖2是本發(fā)明使用的RGB彩色有霧視頻的一幀圖像。
圖3是本發(fā)明的去霧結(jié)果圖。
具體實(shí)施方式
以下參照附圖,對(duì)本發(fā)明具體實(shí)施方式和效果做進(jìn)一步描述:
參照?qǐng)D1,本發(fā)明采用OpenCL計(jì)算框架,可以在任何一款支持OpenCL架構(gòu)的設(shè)備上實(shí)現(xiàn),其步驟如下:
步驟1,初始化。
選用支持開放計(jì)算語言O(shè)penCL的平臺(tái),對(duì)該平臺(tái)進(jìn)行初始化,并從中選取能運(yùn)行內(nèi)核函數(shù)的設(shè)備E,該設(shè)備包括CPU,GPU,intel MIC加速卡。
步驟2,將RGB彩色有霧視頻的一幀圖像I從主機(jī)內(nèi)存拷貝到設(shè)備E的全局內(nèi)存中。
由于視頻可以看作時(shí)間連續(xù)的圖像序列,本發(fā)明通過對(duì)RGB彩色有霧視頻連續(xù)幀進(jìn)行圖像去霧來實(shí)現(xiàn)視頻去霧,將有霧視頻連續(xù)幀圖像從主機(jī)內(nèi)存拷貝到設(shè)備的全局內(nèi)存中,以進(jìn)行圖像去霧操作。
步驟3,計(jì)算灰度圖和三通道最小值圖。
以單個(gè)線程處理單個(gè)像素點(diǎn),不同線程處理不同坐標(biāo)位置像素點(diǎn)的方式,計(jì)算RGB彩色有霧圖像I各坐標(biāo)位置的灰度值,形成灰度圖Igray;
其中,灰度圖Igray在坐標(biāo)x處的像素值:
Igray(x)=0.299×r+0.587×g+0.114×b,r,g,b分別為有霧圖像I在x處的紅色、綠色、藍(lán)色像素值;
以單個(gè)線程處理單個(gè)像素點(diǎn),不同線程處理不同坐標(biāo)位置像素點(diǎn)的方式,計(jì)算各像素位置RGB三通道最小值,形成最小值圖Imin;
其中,最小值圖Imin在坐標(biāo)x處的像素值:Imin(x)=min(r,g,b)。
步驟4,對(duì)最小值圖Imin進(jìn)行最小值濾波,得到暗通道圖Idark。
計(jì)算暗通道圖Idark在坐標(biāo)x處的像素值Idark(x):
形成暗通道圖Idark,其中,Ω(x)為以坐標(biāo)x為中心的正方形鄰域。
步驟5,計(jì)算大氣光。
(5a)計(jì)算暗通道圖Idark的直方圖h;
(5b)根據(jù)直方圖h求得灰度值最大的0.1%像素點(diǎn)對(duì)應(yīng)的灰度值下界l:
計(jì)算累計(jì)和數(shù)組s在坐標(biāo)o處的值:通過累計(jì)和數(shù)組s查找滿足下式的灰度值下界l:
s[l]>=0.001×n
s[l+1]<0.001×n
其中,s[l],s[l+1]分別為s在坐標(biāo)l,l+1處的值,n為暗通道圖Idark像素點(diǎn)總數(shù);
(5c)以l為閾值對(duì)暗通道圖像Idark進(jìn)行二值化,得到二值圖像I';
(5d)對(duì)有霧圖像I的RGB三通道圖Ir、Ig、Ib分別點(diǎn)乘二值圖像I',得到RGB三通道灰度圖像Ir'、Ig'、Ib';
(5e)分別計(jì)算RGB三通道灰度圖像Ir'、Ig'、Ib'的直方圖hr、hg、hb;
(5f)通過RGB三通道直方圖hr、hg、hb,計(jì)算大氣光A={Ar,Ag,Ab},
其中,c∈{r,g,b},i為在0~255變化的灰度值,Ar、Ag、Ab分別為紅色,綠色,藍(lán)色三通道的大氣光值。
步驟6,計(jì)算預(yù)估透射率圖。
(6a)根據(jù)紅色,綠色,藍(lán)色三通道的大氣光值A(chǔ)r、Ag、Ab,計(jì)算預(yù)估透射率圖t在坐標(biāo)z處的像素值t(z):
其中Ir(y)、Ig(y)、Ib(y)分別為RGB三通道圖Ir、Ig、Ib在坐標(biāo)y處的灰度值,Ω(z)為以坐標(biāo)z為中心的正方形鄰域;
(6b)將各坐標(biāo)處像素值t(z)進(jìn)行組合,形成預(yù)估透射率圖t。
步驟7,對(duì)預(yù)估透射率圖進(jìn)行導(dǎo)向?yàn)V波,得到精細(xì)透射率圖。
(7a)對(duì)預(yù)估透射率圖t進(jìn)行行向均值濾波,得到行均值濾波結(jié)果圖tr;再對(duì)行均值濾波結(jié)果圖tr進(jìn)行列向均值濾波,得到平滑透射率圖mt:
(7a1)設(shè)置H個(gè)工作組,每個(gè)工作組包含256個(gè)線程,每個(gè)工作組對(duì)應(yīng)處理預(yù)估透射率圖t的一行數(shù)據(jù),其中H為預(yù)估透射率圖t的高度;
(7a2)使用第i個(gè)工作組的全部線程,通過合并訪存的方式,讀入預(yù)估透射率圖t的第i行數(shù)據(jù),存儲(chǔ)到局部?jī)?nèi)存數(shù)組g起始坐標(biāo)為l1=R+1的連續(xù)內(nèi)存空間中,其中R為濾波器半徑;
(7a3)對(duì)局部?jī)?nèi)存數(shù)組g的邊界擴(kuò)展像素賦值:
先對(duì)數(shù)組g的l1個(gè)左邊界擴(kuò)展像素賦值,得到數(shù)組g在坐標(biāo)j處的像素值:
g[j]=g[2l1-1-j],其中,0<=j(luò)<l1;
再對(duì)數(shù)組g的l2個(gè)右邊界擴(kuò)展像素賦值,得到數(shù)組g在坐標(biāo)l1+W+k處的像素值:
g[l1+W+k]=g[l1+W-1-k],其中:l2=(W+l1+R+M-1)/M×M-W-l1,W為預(yù)估透射率圖t的寬度,M為濾波器寬度M=2×R+1,0<=k<l2;
(7a4)計(jì)算分塊數(shù):L=(W+R+l2)/M;
(7a5)以第i個(gè)工作組中前L個(gè)線程,并行計(jì)算局部?jī)?nèi)存數(shù)組g的L個(gè)分塊的前綴和:
g[m]=g[m-1]+g[m],其中,g[m]為數(shù)組g在坐標(biāo)m處的像素值,對(duì)第l個(gè)線程,
1+l×M<=m<1+(l+1)×M,l為線程編號(hào);
(7a6)以第i個(gè)工作組中所有線程并行計(jì)算行均值濾波結(jié)果圖tr在第i行的像素值,再用各行結(jié)果合并形成行均值濾波結(jié)果圖tr,其中tr在坐標(biāo)位置(i,j)處的像素值為:
tr(i,j)=(g[j+l1+R]+g[(j+M-1)/M×M]-g[j])/M;
(7a7)根據(jù)行均值濾波結(jié)果圖tr,以第i個(gè)線程,計(jì)算第i列第0行的濾波結(jié)果:
其中,tr(j,i)為tr在坐標(biāo)位置(j,i)的像素值;
(7a8)根據(jù)行均值濾波結(jié)果圖tr,第i列第0行濾波結(jié)果mt(0,i),以第i個(gè)線程,計(jì)算第i列的H-1行濾波結(jié)果mt(j,i):
mt(j,i)=mt(j-1,i)+q(j+R,i)-q(j-R,i),
其中,
1<=j(luò)<H,mt(j-1,i)為第i列,第j-1行濾波結(jié)果;
(7a9)將第i列第0行的濾波結(jié)果mt(0,i)與第i列的H-1行濾波結(jié)果mt(j,i)進(jìn)行組合,形成平滑透射率圖mt。
(7b)對(duì)有霧圖像的灰度圖Igray進(jìn)行均值濾波,得到平滑引導(dǎo)圖mI;
(7c)根據(jù)平滑透射率圖mt、平滑引導(dǎo)圖mI、預(yù)估透射率圖t和有霧圖像的灰度圖Igray,得到平滑縮放矩陣ma、平滑偏移矩陣mb:
(7c1)根據(jù)有霧圖像的灰度圖Igray和平滑引導(dǎo)圖mI,計(jì)算引導(dǎo)圖方差矩陣varI:
varI=fmean(Igray.*Igray,R)-mI.*mI,
其中fmean(Igray.*Igray,R)表示對(duì)Igray與Igray點(diǎn)乘的結(jié)果進(jìn)行均值濾波,R為濾波器半徑;
(7c2)根據(jù)預(yù)估透射率圖、有霧圖像的灰度圖Igray、平滑引導(dǎo)圖mI和平滑透射率圖mt,計(jì)算引導(dǎo)圖與預(yù)估透射率圖的協(xié)方差矩陣covIt:
covIt=fmean(t.*Igray,R)-mt.*mI,
其中,fmean(t.*Igray,R)表示對(duì)Igray與t點(diǎn)乘的結(jié)果進(jìn)行均值濾波,R為濾波器半徑,.*為點(diǎn)乘運(yùn)算符;
(7c3)根據(jù)引導(dǎo)圖方差矩陣varI、引導(dǎo)圖與預(yù)估透射率圖的協(xié)方差矩陣covIt、平滑引導(dǎo)圖mI和平滑透射率圖mt,計(jì)算縮放矩陣a、偏移矩陣b:
b=mI-a.*mt
(7c4)對(duì)縮放矩陣a、偏移矩陣b分別進(jìn)行均值濾波,得到平滑縮放矩陣ma、平滑偏移矩陣mb;
(7d)根據(jù)平滑縮放矩陣ma、平滑偏移矩陣mb和有霧圖像的灰度圖Igray,得到精細(xì)透射率圖:
步驟8,計(jì)算去霧結(jié)果圖。
(8a)計(jì)算去霧結(jié)果圖J在坐標(biāo)z處像素值J(z):
其中,分別為有霧圖像I,精細(xì)透射率圖在坐標(biāo)z處的像素值;
(8b)將各坐標(biāo)處的像素值J(z)進(jìn)行組合,形成去霧結(jié)果圖J。
步驟9,將去霧結(jié)果圖J拷貝到主機(jī)內(nèi)存,完成對(duì)有霧視頻的單幀去霧。
本發(fā)明通過以上步驟,實(shí)現(xiàn)了高速的視頻去霧操作,可以為后續(xù)的視頻監(jiān)控,圖像識(shí)別等應(yīng)用提供清晰的圖像源。
本發(fā)明的效果可由以下實(shí)驗(yàn)進(jìn)一步說明:
實(shí)驗(yàn)1,平臺(tái)兼容性測(cè)試:
本實(shí)驗(yàn)測(cè)試的有霧視頻分辨率為640×480,計(jì)算在不同平臺(tái)上對(duì)測(cè)試視頻前500幀進(jìn)行去霧,輸出視頻的平均幀率=幀數(shù)/處理時(shí)間(秒),如表一所示:
表一,不同平臺(tái)視頻去霧平均幀率表
從表一可以看出,本發(fā)明適用于不同平臺(tái),且去霧輸出視頻的平均幀率均高于現(xiàn)有解決方案。
實(shí)驗(yàn)2,性能測(cè)試
本實(shí)驗(yàn)測(cè)試設(shè)備為AMD HD7750顯卡,選取不同分辨率有霧視頻,計(jì)算對(duì)前500幀進(jìn)行去霧,輸出視頻的平均幀率,如表二所示:
表二,AMD HD7750顯卡對(duì)不同分辨率視頻去霧平均幀率表
從表二可以看出,本發(fā)明對(duì)于高分辨率圖像具有超過40幀每秒的處理速率,實(shí)現(xiàn)了高清視頻實(shí)時(shí)處理。
實(shí)驗(yàn)3,去霧效果測(cè)試
本實(shí)驗(yàn)測(cè)試的有霧視頻分辨率為640×480,對(duì)比有霧視頻中的一幀圖像與該幀圖像去霧后圖像的清晰度。
取有霧視頻第320幀圖像,如圖2所示,用本發(fā)明方法對(duì)該有霧圖像進(jìn)行去霧處理,得到去霧后圖像如圖3所示。
對(duì)比圖2圖3可見,去霧后圖像清晰度明顯提高,表明本發(fā)明具有良好的去霧效果。
綜上,本發(fā)明解決了現(xiàn)有技術(shù)方案的缺陷,適用于多種并行計(jì)算平臺(tái),實(shí)現(xiàn)了高清視頻實(shí)時(shí)處理,可以為后續(xù)的視頻監(jiān)控,圖像識(shí)別等應(yīng)用提供清晰的圖像源。