matlab去雾处理是视频,一种快速视频去雾方法与流程
本發明涉及視頻處理技術領域,尤其是一種快速視頻去霧方法。
背景技術:
霧霾條件下拍攝的視頻,受到大氣環境的影響,會產生退化和失真,這些視頻無法反應真實場景的信息。視頻去霧是通過一定技術處理,去除霧霾的干擾,恢復視頻的細節信息,得到具有良好視覺效果的視頻。理論上,視頻去霧算法以圖像算法為基礎,將視頻的每幀圖像單獨作去霧處理,再將處理后的圖像按順序排列重新構成視頻,即可完成視頻去霧,然而圖像去霧算法計算復雜,難以滿足視頻的是實行要求。總之,視頻需要一種既要滿足去霧性能的要求,又要保證其計算復雜度較低和速度較快的數據處理方法。
技術實現要素:
本發明所要解決的技術問題在于,提供一種快速視頻去霧方法,能夠減少計算量,提高去霧算法的運行效率
為解決上述技術問題,本發明提供一種快速視頻去霧方法,包括如下步驟:
(1)采集一幀圖像保存入幀存,設置循環變量i=1、k=1;
(2)設一個像素RGB三通道的最小灰度值為min(x),該幀圖像中所有像素min(x)的最大、最小、平均值分別為gmax、gmin、gmean,以滿足min(x)≥g0的所有像素RGB三通道中的最大灰度值為大氣光A;其中
(3)以像素x為中心、周圍γ×γ個像素的min(x)中的最小值為x的暗通道值Dark(x),計算一幀圖像所有像素的Dark(x)并保存入另一幀存,以此作為該幀圖像的暗通道圖;
(4)按照暗通道物理模型,根據步驟(2)得到的大氣光和步驟(3)得到的暗通道圖進行求解,去霧計算式為:
式中I(x)為像素x在原圖中RGB三通道的灰度值,J(x)為去霧后x的RGB三通道的灰度值,得到去霧后的視頻圖像作為輸出;
(5)設循環變量j=0,i=i+1,k=k+1采集新一幀圖像存入幀存,采集的同時計算gmax、gmin、gmean,并按順序逐個將像素RGB最小值min(x)同暗通道圖中該像素的暗通道值Dark(x)進行比較;如果min(x)<Dark(x),則j=j+1,一幀保存結束后,若j≥ir÷(γ×γ)或k>β×fr,轉步驟(7),否則轉步驟(6);其中ir為視頻分辨率,fr為視頻信號每秒的幀數,β為大于0的實數;
(6)從一幀畫面的左上角像素開始,逐個像素進行遍歷到右下角像素;如果min(x)≥Dark(x),暗通道圖中的Dark(x)不變,繼續比較下一個像素;如果min(x)<Dark(x),則用min(x)替代暗通道圖中的Dark(x),再搜索暗通道圖中以x為中心γ×γ正方形范圍內的其它像素;對于其中的某個像素y,若min(x)<Dark(y),則以min(x)替換Dark(y),一幀所有像素遍歷完成后轉步驟(8);
(7)用步驟(3)的方法重新計算該幀圖像的暗通道圖,k=1;
(8)判斷是否需要重新計算大氣光,若|gmax-A|≤30或i≤α×fr,轉步驟(10),否則轉步驟(9);其中fr為視頻信號每秒的幀數,α為大于0的實數;
(9)用步驟(2)的方法重新計算此幀圖像大氣光Anew,A=Anew,i=1;
(10)將A作為此幀圖像的大氣光;
(11)按照暗通道物理模型,根據大氣光和暗通道圖像,按步驟(4)的方法進行求解,得到去霧增強后的視頻圖像作為輸出,一幀處理完轉步驟(5)繼續處理下一幀。
優選的,步驟(3)中,γ越大計算量越大,γ過小會影響去霧效果,根據人眼的視覺特點取γ×γ為3×3。
優選的,步驟(5)中,β越小,暗通道圖更新越快,去霧效果越好,但是計算量越大;β越大,暗通道圖更新越慢,計算量越小,去霧效果越差,根據人眼的視覺特點取β為1/3。
優選的,步驟(8)中,α越小,大氣光更新越快,單幀畫面的去霧效果越好,但是視頻中越容易會出現閃爍,且計算量越大;α越大,大氣光更新越慢,計算量越小,視頻中越不會出現閃爍,但單幀畫面的去霧效果越差。根據人眼的視覺特點取α為3。
本發明的有益效果為:(1)實現了一種快速視頻去霧方法,該方法可以由通用計算機實現,也可以用于DSP、ARM、FPGA、CPLD等嵌入式系統;(2)設置了大氣光重新計算的條件,簡化計算方法,避免了排序運算,減少了計算量,提高了去霧算法的運行效率;(3)設置了暗通道圖重新計算的條件,設計了暗通道圖的修正方法,減少了計算量,提高了去霧算法的運行效率。
附圖說明
圖1為本發明的灰度直方圖簡化模型示意圖。
圖2為本發明的3×3個像素示意圖。
圖3為本發明的大氣光計算流程示意圖。
圖4為本發明的暗通道圖計算流程示意圖。
具體實施方式
以某型FPGA系統為例,該系統對分辨率為1024×768、幀頻為60Hz的視頻信號進行處理。計算暗通道圖時,以一個像素為中心,對周圍3×3的像素進行搜索,α=3、β=1/3。如圖3和4所示,一種快速視頻去霧方法,包括如下步驟:
(1)采集一幀圖像保存入幀存,設置循環變量i=1、k=1;
(2)設一個像素RGB三通道的最小灰度值為min(x),該幀圖像中所有像素min(x)的最大、最小、平均值分別為gmax、gmin、gmean,以滿足min(x)≥g0的所有像素RGB三通道中的最大灰度值為大氣光A;其中
(3)以像素x為中心、周圍3×3個像素的min(x)中的最小值為x的暗通道值Dark(x),計算一幀圖像所有像素的Dark(x)并保存入另一幀存,以此作為該幀圖像的暗通道圖;
(4)按照暗通道物理模型,根據步驟(2)得到的大氣光和步驟(3)得到的暗通道圖進行求解,去霧計算式為:
式中I(x)為像素x在原圖中RGB三通道的灰度值,J(x)為去霧后x的RGB三通道的灰度值,得到去霧后的視頻圖像作為輸出;
(5)設循環變量j=0,i=i+1,k=k+1,采集新一幀圖像存入幀存,采集的同時計算gmax、gmin、gmean,并按順序逐個將像素RGB最小值min(x)同暗通道圖中該像素的暗通道值Dark(x)進行比較;如果min(x)<Dark(x),則j=j+1,一幀保存結束后,若j≥1024×768÷9或k>20,轉步驟(7),否則轉步驟(6);
(6)從一幀畫面的左上角像素開始,逐個像素進行遍歷到右下角像素;如果min(x)≥Dark(x),暗通道圖中的Dark(x)不變,繼續比較下一個像素;如果min(x)<Dark(x),則用min(x)替代暗通道圖中的Dark(x),再搜索暗通道圖中以x為中心3×3正方形范圍內的其它像素;對于其中的某個像素y,若min(x)<Dark(y),則以min(x)替換Dark(y),一幀所有像素遍歷完成后轉步驟(8);
(7)用步驟(3)的方法重新計算該幀圖像的暗通道圖,k=1;
(8)判斷是否需要重新計算大氣光,若|gmax-A|≤30或i≤180,轉步驟(10),否則轉步驟(9);
(9)用步驟(2)的方法重新計算此幀圖像大氣光Anew,A=Anew,i=1;
(10)將A作為此幀圖像的大氣光;
(11)按照暗通道物理模型,根據大氣光和暗通道圖像,按步驟(4)的方法進行求解,得到去霧增強后的視頻圖像作為輸出,一幀處理完轉步驟(5)繼續處理下一幀。
一種快速視頻去霧方法,首先對輸入視頻的一幀圖像進行判斷,確定其是否需要重新計算大氣光和暗通道圖。若不需要重新計算大氣光,則按照上一幀畫面使用的大氣光進行去霧處理;若需要重新計算大氣光,則按照本專利提出的簡化模型計算大氣光。若不需要重新計算通道圖,則根據本幀畫面的灰度對上一幀畫面使用的暗通道圖進行修正;若需要重新計算暗通道圖,則根據本幀畫面重新計算暗通道圖。
由于視頻中相鄰幀圖像存在一定的相關性,可以將一幀圖像的大氣光和暗通道圖用于其后若干幀的去霧計算以減少計算量。設fr為視頻信號每秒的幀數,本專利每隔α×fr幀重新計算一次大氣光,每隔β×fr幀重新計算一次暗通道圖。α、β為大于0的實數。這兩個參數事先選定,α、β越小,大氣光和暗通道圖更新較快,去霧效果越好,但是計算量大;α、β越大,大氣光和暗通道圖更新較慢,計算量小。根據人眼的視覺特點可以分別取3和1/3,即最長相隔3秒重新計算大氣光,最長相隔1/3秒重新計算暗通道圖。定時更新雖然可以減少計算量,但是難以解決視頻中大氣光或暗通道圖發生突變的問題。
設RGB是像素x紅綠藍三通道的顏色分量,一個像素RGB三個分量中的最小值為min(x),一幀圖像中所有min(x)的最大、最小、平均值為gmax、gmin、gmean,A為上一幀圖像的大氣光,以|gmax-A|>30或連續α×fr幀都沒有重算大氣光為重新計算大氣光的條件。為了簡化大氣光的計算,利用圖1中的模型來代替灰度直方圖。圖1中三角形abc的面積為一幀畫面的像素數量,而三角形dbe為abc面積的0.1%,可以求得:
以一幀圖像中滿足min(x)≥g0的所有像素RGB三通道的最大值為大氣光A。大氣光的具體求解流程如圖3所示。
He算法以像素x為中心,周圍γ×γ個像素的min(x)中的最小值為x的暗通道值Dark(x),γ=3時該區域的位置如圖2所示。一幀圖像所有像素的Dark(x)組成該圖像的暗通道圖。由于視頻信號中相鄰幀之間的相關性,相鄰幀之間的暗通道圖一般區別不大,可以通過對上一幀的暗通道圖進行修正得到本幀的暗通道圖。在采集一幀畫面時,將各個像素RGB依次保存入幀存,同時把像素x的RGB中的最小值min(x)與上一幀的暗通道圖中該像素的值Dark(x)比較,若min(x)≥Dark(x),則Dark(x)不需要修正;若min(x)<Dark(x),則以min(x)替換暗通道圖中該像素的值Dark(x),同時遍歷在暗通道圖中以該像素為中心,周圍γ×γ個像素。對于該區域中的某個像素y,若min(x)<Dark(y),則以min(x)替換Dark(y)。
設n為一幀圖像中滿足min(x)<Dark(x)的像素數量,若n較大,說明本幀圖像的暗通道圖與上一幀的區別較大,應該重新計算暗通道圖。設ir為視頻的分辨率,以n≥ir/(γ×γ)或連續β×fr幀都沒有重算暗通道圖為重新計算暗通道圖的條件。暗通道圖具體求解流程如圖4所示。
得到大氣光和暗通道圖后,通過大氣傳播模型進行反向求解得到去霧后的一幀圖像,對于像素x,去霧計算式為:
式中I(x)為像素x在原圖中RGB三通道的灰度值,J(x)為去霧后x的RGB三通道的灰度值。
本發明實現了一種快速視頻去霧方法,該方法可以由通用計算機實現,也可以用于DSP、ARM、FPGA、CPLD等嵌入式系統;設置了大氣光重新計算的條件,簡化計算方法,避免了排序運算,減少了計算量,提高了去霧算法的運行效率;設置了暗通道圖重新計算的條件,設計了暗通道圖的修正方法,減少了計算量,提高了去霧算法的運行效率。
總結
以上是生活随笔為你收集整理的matlab去雾处理是视频,一种快速视频去雾方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用 python 写游戏《外星人入侵》:
- 下一篇: RDD的执行流程(简略)