實時高動態範圍圖像的繪製和顯示方法
2023-07-13 06:13:16 2
專利名稱:實時高動態範圍圖像的繪製和顯示方法
技術領域:
本發明涉及一種實時高動態範圍圖像的繪製和顯示方法。
背景技術:
一幅圖像亮度級的最大值和最小值之比被稱為動態範圍。通過眼睛瞳孔的自動調節,人類眼睛能夠感受到的亮度的動態範圍為1000000000∶1。即使在計算機生成的圖像中,採用全局光照算法生成的圖像的動態範圍最高也能達到30000∶1。在傳統方法中,每個像素的顏色是由24個二進位位存儲,其中紅、綠、藍三色每個通道佔用8位,有時加上8位的alpha通道,一共32位。最後渲染出的顏色介於0.0-1.0之間,能顯示的明亮對比度為256∶1。所以傳統方法很難表示高對比度和高動態範圍的真實場景。最近幾年,由於計算機計算能力的飛速增長,在消費級的圖形硬體已經能夠實現實時的高動態範圍繪製。
在繪製高動態範圍圖像時,需要保存高動態範圍信息。有一類方法是直接用高精度浮點格式的緩存保存,比如當前最新的顯卡支持A16B16G16R16F和A32B32G32R32F格式的緩存。此類方法需要消耗更多容量的緩存,並且無法應用於老的硬體設備上。本發明採用了RGBE8的編碼格式,通過對信息編碼來保存高動態範圍信息。該方法無需硬體的額外支持,消耗顯存少,通過參數調整能夠以不同的精度壓縮不同範圍的顏色信息。
當前的顯示設備的顯示範圍通常都屬於低動態範圍,高動態範圍圖像不能直接在通常的顯示設備上顯示,否則會丟失圖像的高動態範圍信息,造成曝光不足或者過度曝光。高動態範圍的圖像需要經過色調映射將顏色信息從高動態範圍映射到低動態範圍,才能正確地在顯示設備上顯示出來。色調映射方法通常分為全局算子和局部算子。全局算子的基本思想是對一幅圖像上的所有像素用同一個映射函數進行映射。全局算子架構簡單,效率較高,但是對於較亮和較暗的區域容易失真。在局部算子方法中,每個像素不再由統一映射函數處理,而是根據其相鄰像素來決定映射的結果。局部算子改善了細節失真的問題,通常能獲得比全局算子更好的效果。但是算法通常比較複雜,效率不高,一般應用在非實時繪製領域。本發明針對實時繪製的領域,因此採用了全局算子方法,設計了新的全局映射函數,在確保實時性的同時獲得了較好的圖像質量。
真實環境中存在這樣一種現象由於光線在大氣或者人眼中的散射,特別明亮的物體周圍有一層光暈,稱之為輝光效果。高動態範圍圖像經過色調映射後,仍然存在很亮的部分,如果直接顯示出來看起來會不自然。因此需要模擬輝光效果以獲得更真實的圖像。輝光效果需要將原場景進行模糊處理,這一般是通過二維高斯濾波函數完成的。採用此種方法圖像的質量嚴重依賴於採樣點的個數,但是採樣點太多會使得計算量大大增加,無法保證實時性。本發明採用了二次卷積的方法來進行高斯模糊,使得對n2個採樣點只需2n次計算,該方法簡單快速,同時也能獲得較好的圖像質量。
發明內容
本發明的目的是提供一種實時繪製和顯示高動態範圍圖像的方法。
實時繪製並顯示高動態範圍圖像的方法包括如下步驟1)在繪製圖像時採用RGBE8格式,保存高動態範圍信息;該格式將圖像像素的顏色向量用R、G、B、E四分量表示,其中E為指數分量,由R、G、B三個分量共享;每一分量大小為1位元組,四個分量共佔用4位元組空間;2)計算高動態範圍信息圖像的亮度的幾何平均值,對保存了高動態範圍信息的圖像進行亮度過濾,生成一幅新圖像,新圖像只包含原圖像亮度大於一定闕值的像素,對新圖像進行二維高斯模糊,生成輝光效果的圖像;3)採用全局壓縮函數對包含了高動態範圍信息的圖像進行色調映射,使得高動態範圍信息被壓縮到低動態範圍;4)把進行了色調映射的圖像和輝光效果的圖像進行alpha混合,實現最終效果。
所述的在繪製圖像時採用RGBE8格式,保存高動態範圍信息的步驟為1)設p為圖像像素,其顏色向量由四元組r、b、b、a表示,其中r、g、b、a分別代表紅、綠、藍、alpha分量,計算p的紅、綠、藍顏色分量的最大值m;2)計算出指數e=logbasem,]]>將e偏移壓縮後存放到像素p的alpha分量中,pa=clamp((e+128)/256,0,1);3)通過公式1將圖像的顏色值編碼,通過公式2解碼,prgb=prgblogbasem]]>公式1Prgb=PrgbbasePa256-128]]>公式2其中base是對數運算的底數,由用戶設定。當base增加時,壓縮的範圍增大,壓縮精度降低;當base減小時,壓縮範圍減小,壓縮精度增加。
所述的圖像亮度L的計算方法為設P為圖像的一個像素,L=R×0.2126+G×0.7152+B×0.0722公式3其中,R、G、B分別是像素P顏色的紅、綠、藍分量的值。
所述的高動態範圍圖像的亮度過濾方法包括如下步驟1)根據圖像的平均亮度對圖像各像素的亮度進行縮放;2)設定闕值t,亮度大於t的像素將被過濾出來;3)將過濾出來的像素的亮度壓縮到區間
中。
所述的對新圖像進行二維高斯模糊首先沿X軸方向對圖像進行一維高斯模糊,生成中間結果圖像;然後對中間結果圖像沿Y軸方向再進行一次一維高斯模糊,通過兩次分步的在正交方向上的一維高斯模糊來實現二維高斯模糊的效果。
所述的對高動態範圍圖像進行色調映射根據圖像的平均亮度將像素P的亮度縮放後,依據公式4將像素P的亮度壓縮到區間
中,Lcolor=Lscaled1+Lscaled]]>公式4其中,Lscaled是縮放後的像素P的亮度,Lcolor是進行色調映射後的像素P的亮度。
所述的把進行了色調映射的圖像和輝光效果的圖像進行alpha混合設Prgb是經過色調映射後的圖像任一像素的顏色向量,Brgb是輝光效果圖像的對應像素的顏色向量,二者依據公式5進行alpha混合,Prgb=Prgb+α×Brgb公式5其中α是控制混合效果的係數。
所述的將e偏移壓縮後存放到像素的alpha分量中pa=clamp((e+128)/256,0,1),其中函數y=clamp(x,0,1)是將x的值截取到區間
內,即當x≤0時,y=0;當0<x≤1時,y=x;當x>1時,y=1。
所述的設定闕值t,亮度大於t的像素將被過濾出來首先根據公式6對圖像各像素的亮度進行縮放;Lscaled=aLwL-w]]>公式6
其中a為縮放係數,由用戶指定, 是圖像的平均亮度,Lscaled是經過縮放後的亮度。然後給定闕值t,依據公式7,亮度大於t的像素將被保留,亮度小於t的像素將被置為0,Lbright=max(Lscaled-t,0)公式7其中Lbright是過濾出的像素的亮度。
所述的將過濾出來的像素的亮度壓縮到區間
中設Lbright是過濾出來的亮度,指定參數o,依據公式8對Lbright進行壓縮,確保壓縮後的亮度L′bright位於
區間內,Lbright=Lbrighto+Lbright]]>公式8。
本發明通過RGBE8格式保存高動態範圍信息,能夠在消耗較小的顯存容量同時保存大範圍的信息,該方法對硬體要求低,可以廣泛運行在不同的硬體平臺上,具有很好的可移植性。在進行高斯濾波時,本發明將二維高斯濾波分拆為兩個在正交方向上的一維高斯濾波,使得對n2個採樣點的高斯模糊只需2n次計算就能完成,大大提高了效率。本發明採用了全局映射函數對高動態範圍圖像進行色調映射,該方法原理簡單效率高,能夠滿足實時的要求,同時獲得較好的圖像質量。
圖1是實時繪製和顯示高動態範圍圖像的流程圖;圖2a是本發明用於亮度過濾的原圖;圖2b是本發明取闕值為0.5時進行亮度過濾的結果;圖2c是本發明取闕值為0.8時進行亮度過濾的結果;圖3是本發明進行高斯模糊的示意圖;圖4是本發明的高動態範圍圖像繪製和顯示的效果示例1;圖5是本發明的高動態範圍圖像繪製和顯示的效果示例2;具體實施方式
實時繪製和顯示高動態範圍圖像方法的原理是在圖像的繪製過程中,保留高動態範圍信息,生成高動態範圍圖像。通過對高動態範圍圖像進行高斯模糊實現輝光效果,最後通過色調映射將高動態範圍圖像映射到低動態範圍並和輝光效果圖像混合生成最終圖像。本方法首先在繪製圖像時,採用高精度浮點數存儲圖像的高動態範圍信息,並將高動態範圍圖像以RGBE8格式存儲到幀緩衝中,當從幀緩衝中取出圖像數據時,先進行解碼。然後從原圖像過濾出亮度大於一定闕值的像素進行高斯模糊,生成一幅輝光效果的圖像。接下來將高動態範圍圖像色調映射到低動態範圍,再與輝光效果圖像進行alpha混合,生成最終效果圖像。本方法的步驟如圖1所示1)以RGBE8格式存儲高動態範圍圖像,這種格式由R、G、B、E四個通道組成,其中E為指數通道。每個通道為8比特字節數據類型,4個通道一共是32比特。其步驟為(1)計算圖像每個像素顏色分量的最大值。RGBE8編碼格式將像素的顏色用指數形式保存,顏色向量的紅、綠、藍三個分量共享同一個指數,因此需要找出顏色分量的最大值m,以此計算出指數。
(2)根據最大值m,計算出指數e=logbasem,]]>其中base由用戶指定,base的取值決定了可壓縮信息的範圍。隨著base值增大能夠壓縮的信息的範圍也增大,但是壓縮的精度也相應的降低,會出現馬赫帶效應。因此我們需要權衡壓縮範圍和精度,在我們的系統中,base=1.02,該值能夠壓縮較大範圍的信息,同時保證較好的圖像質量。因為e要存放到像素的alpha分量中,而alpha分量為大小8比特的字節數據,其取值範圍為
區間,因此需要將e通過式pa=clamp((e+128)/256,0,1)偏移壓縮,其中函數y=clamp(x,0,1)是將x的值截取到區間
內,即當x≤0時,y=0;當0<x≤1時,y=x;當x>1時,y=1。
(3)對圖像的每個像素,根據公式1重新計算其顏色向量中的紅、綠、藍分量的值Prgb,使其以指數形式保存。
prgb=prgblogbasem]]>公式1(4)當要使用經RGBE8格式編碼的數據時,先通過公式2對數據解碼。
Prgb=Prgbbasepa256-128]]>公式22)實現輝光效果。真實環境中存在這樣一種現象由於光線在大氣或者人眼中的散射,特別明亮的物體周圍有一層光暈,稱之為輝光效果。高動態範圍圖像經過色調映射後,仍然存在很亮的部分,如果直接顯示出來看起來會不自然。因此需要模擬輝光效果以獲得更真實的圖像。其步驟為(1)計算高動態範圍圖像的亮度的幾何平均值。在計算圖像的平均亮度之前,首先依據公式3計算圖像的各像素的亮度,我們採用了YUV色彩模型將圖像各像素的顏色值轉換為亮度,該模型能更精確的模擬人的視覺,L=R×0.2126+G×0.7152+B×0.0722公式3其中R、G、B分別是圖像像素的紅、綠、藍顏色分量。
然後求出圖像的幾何平均亮度。同算術平均值相比,幾何平均值能夠避免少數像素亮度的接著依據公式6計算出各個像素的亮度相對於平均亮度的比值,以此判定各像素的相對明暗程度。
Lscaled=aLwL-w]]>公式6其中其中a為縮放係數,由用戶指定,對於亮度明暗對比不是特別劇烈的圖像,a值一般取0.18。對於圖像亮度很大的區域,a可取相對較小的值;對於圖像亮度很小的區域,a可取相對較大的值。 是圖像的平均亮度,Lscaled是經過縮放後的亮度。
(2)對高動態範圍圖像進行亮度過濾。依據公式6我們可以計算出各像素相對圖像平均亮度的比值Lscaled,設定闕值t,依據公式7可以把亮度大於t的像素提取出來,生成一幅新的圖像。
Lbright=max(Lscaled-t,0)公式7該圖像只保留了亮度大於t的像素的亮度,亮度小於t的像素的亮度被置為0。經過亮度過濾提取出的亮度值可能大於1,我們需要對其進行壓縮。設定參數o,依據公式8,我們將每個像素的亮度壓縮到
區間中。
Lbright=Lbrighto+Lbright]]>公式8其中參數o決定了被分離出的明亮區域的亮度。通常對比度越高的圖像o值取值越大。
(3)對新的圖像進行高斯模糊。高斯模糊用於實現朦朧的光暈效果。我們採用了二維高斯濾波函數來實現高斯模糊。採用高斯濾波函數進行模糊時,生成的圖像的質量嚴重依賴於採樣點的個數,但是採樣點過多會導致計算量大大增加,無法滿足實時要求。高斯濾波函數具有線性可分特性,即對二維高斯濾波函數的計算可以分拆到兩個獨立的一維空間分別進行。基於該特性,我們把二維高斯濾波沿正交方向分拆為兩個一維高斯濾波。第一次對圖像沿X軸方向進行一維高斯濾波,生成一個中間結果圖像。第二次對中間結果圖像沿Y軸方向再進行一次一維高斯濾波。採樣這種方法後,對n2個採樣點的計算只需2n步就能完成,大大降低了計算複雜度同時保證了圖像質量。
3)對包含了高動態範圍信息的圖像進行色調映射。當前的顯示設備通常只能顯示低動態範圍的信息,高動態範圍圖像不能直接顯示出來,否則會造成曝光不足或者曝光過度。因此高動態範圍圖像需要經過色調映射將高動態範圍信息映射到低動態範圍,並儘可能保持信息完整。為了保證實時性,對高動態範圍圖像的每個像素,我們採用了統一的非線性壓縮函數。非線性壓縮函數如下Lcolor=Lscaled1+Lscaled]]>公式4該等式確保所有像素的亮度都被壓縮到
區間。若Lscaled較大時,該等式的縮放係數大約為1/L,當Lscaled較小時,縮放係數大約為1。
4)把進行了色調映射的圖像和輝光效果的圖像進行alpha混合,實現最終效果。通過對兩幅圖像進行alpha混合,把輝光效果融入到原圖像中。設Prgb是經過色調映射後的圖像任一像素的顏色向量,Brgb是輝光效果圖像的對應像素的顏色向量。設定混合參數α,二者進行顏色混合,計算方式如下Prgb=Prgb+α×Brgb公式5這裡給出了一些高動態範圍圖像繪製和顯示的示例。從示例中可以看出,無論是室內光照情況(圖4),還是室外光照情況(圖5),本章的算法均能實時繪製和顯示各種環境下的高動態範圍圖像,算法效率高,效果好。
權利要求
1.一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於包括如下步驟1)在繪製圖像時採用RGBE8格式,保存高動態範圍信息;該格式將圖像像素的顏色向量用R、G、B、E四分量表示,其中E為指數分量,由R、G、B三個分量共享;每一分量大小為1位元組,四個分量共佔用4位元組空間,其所包括的動態範圍的大小大約是從10-38cd/m2到1038cd/m2;2)計算高動態範圍信息圖像的亮度的幾何平均值,對保存了高動態範圍信息的圖像進行亮度過濾,生成一幅新圖像,新圖像只包含原圖像亮度大於一定闕值的像素,對新圖像進行二維高斯模糊,生成輝光效果的圖像;3)採用全局壓縮函數對包含了高動態範圍信息的圖像進行色調映射,使得高動態範圍信息被壓縮到低動態範圍;4)把進行了色調映射的圖像和輝光效果的圖像進行alpha混合,實時繪製並顯示高動態範圍圖像。
2.根據權利要求1所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的在繪製圖像時採用RGBE8格式,保存高動態範圍信息的步驟為1)設p為圖像像素,其顏色向量由四元組r、g、b、a表示,其中r、g、b、a分別代表紅、綠、藍、alpha分量,計算p的紅、綠、藍顏色分量的最大值m;2)計算出指數e=logbasem,]]>將e偏移壓縮後存放到像素p的alpha分量中,Pa=clamp((e+128)/256,0,1);3)通過公式1將圖像的顏色值編碼,通過公式2解碼,prgb=prgblogbasem]]>公式1Prgb=Prgbbasepa256-128]]>公式2其中base是對數運算的底數,由用戶設定,當base增加時,壓縮的範圍增大,壓縮精度降低;當base減小時,壓縮範圍減小,壓縮精度增加。
3.根據權利要求1所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的圖像亮度L的計算方法為設P為圖像的一個像素,L=R×0.2126+G×0.7152+B×0.0722公式3其中,R、G、B分別是像素P顏色的紅、綠、藍分量的值。
4.根據權利要求1所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的高動態範圍圖像的亮度過濾方法包括如下步驟1)根據圖像的平均亮度對圖像各像素的亮度進行縮放;2)設定闕值t,亮度大於t的像素將被過濾出來;3)將過濾出來的像素的亮度壓縮到區間
中。
5.根據權利要求1所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的對新圖像進行二維高斯模糊首先沿X軸方向對圖像進行一維高斯模糊,生成中間結果圖像;然後對中間結果圖像沿Y軸方向再進行一次一維高斯模糊,通過兩次分步的在正交方向上的一維高斯模糊來實現二維高斯模糊的效果。
6.根據權利要求1所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的對高動態範圍圖像進行色調映射根據圖像的平均亮度將像素P的亮度縮放後,依據公式4將像素P的亮度壓縮到區間
中,Lcolor=Lscaled1+Lscaled]]>公式4其中,Lscaled是縮放後的像素P的亮度,Lcolor是進行色調映射後的像素P的亮度。
7.根據權利要求1所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的把進行了色調映射的圖像和輝光效果的圖像進行alpha混合設Prgb是經過色調映射後的圖像任一像素的顏色向量,Brgb是輝光效果圖像的對應像素的顏色向量,二者依據公式5進行alpha混合,Prgb=Prgb+α×Prgb公式5其中α是控制混合效果的係數。
8.根據權利要求2所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的將e偏移壓縮後存放到像素的alpha分量中Pa=clamp((e+128)/256,0,1),其中函數y=clamp(x,0,1)是將x的值截取到區間
內,即當x≤0時,y=0;當0<x≤1時,y=x;當x>1時,y=1。
9.根據權利要求4所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的設定闕值t,亮度大於t的像素將被過濾出來首先根據公式6對圖像各像素的亮度進行縮放;Lscaled=aLwL-w]]>公式6其中a為縮放係數,由用戶指定, 是圖像的平均亮度,Lscaled是經過縮放後的亮度。然後給定闕值t,依據公式7,亮度大於t的像素將被保留,亮度小於t的像素將被置為0,Lbright=max(Lscaled-t,0)公式7其中Lbright是過濾出的像素的亮度。
10.根據權利要求4所述的一種實時繪製並顯示高動態範圍圖像的方法,其特徵在於所述的將過濾出來的像素的亮度壓縮到區間
中設Lbright是過濾出來的亮度,指定參數o,依據公式8對Lbright進行壓縮,確保壓縮後的亮度L′bright位於
區間內,Lbright=Lbrighto+Lbright]]>公式8。
全文摘要
本發明公開了一種實時繪製並顯示高動態範圍圖像的方法。其步驟為1)在繪製場景時保留高動態範圍信息;2)實現輝光效果首先計算圖像的平均亮度,然後依據設定的闕值對圖像進行亮度過濾,生成只包含過濾出的高亮度的區域的新圖像,對新圖像進行二維高斯模糊,產生出輝光效果;3)對原來包含高動態範圍信息的圖像進行色調映射,使得高動態範圍的圖像能在低動態範圍裡顯示出來並保持儘可能多的細節;4)將進行了色調映射的圖像和模糊後的圖像進行alpha混合生成最終圖像。本發明採用了對圖像進行後處理的方法,計算量小,能夠滿足實時繪製的要求,具有很好的實用價值。
文檔編號G06T15/50GK101082992SQ20071006992
公開日2007年12月5日 申請日期2007年7月6日 優先權日2007年7月6日
發明者潘志庚, 楊皓然, 何高奇 申請人:浙江大學