摘自知乎:https://zhuanlan.zhihu.com/p/90093872
HDR - 高動態(tài)范圍成像
高動態(tài)范圍成像(HDRI或HDR)是一種用于成像和攝影的技術(shù)浓恶,用于再現(xiàn)比標準數(shù)字成像或攝影技術(shù)更大的動態(tài)范圍的光度卑吭。雖然人眼可以適應廣泛的光照條件谁榜,但大多數(shù)成像設備每個通道使用8位煮嫌,因此我們只能使用256級哺壶。當我們拍攝真實世界的場景時,明亮的區(qū)域可能曝光過度袖订,而黑暗的區(qū)域可能曝光不足德撬,所以我們不能用一次曝光來捕捉所有的細節(jié)。HDR成像適用于每個通道使用8位以上的圖像(通常是32位浮點值)蚜厉,允許更寬的動態(tài)范圍长已。
獲取HDR圖像有不同的方法,但最常見的是使用不同曝光值拍攝的場景照片。要組合這些曝光术瓮,了解相機的響應函數(shù)是很有用的康聂,有算法可以估計它。HDR圖像合并后胞四,必須將其轉(zhuǎn)換回8位才能在通常的顯示器上查看恬汁。這個過程被稱為色調(diào)映射。當場景或相機的物體在鏡頭之間移動時辜伟,會出現(xiàn)額外的復雜性氓侧,因為不同曝光的圖像應該被注冊和對齊。
人類視覺與相機的成像亮度范圍
上面三張圖可以看出來导狡,相機實際上能看到的高低亮度范圍非常小约巷,不足以覆蓋真實世界的光線范圍,HDR的基本原理就是從低曝光到高曝光旱捧,拍攝多張照片独郎,融合起來,使一張圖盡量把高光和黑暗的細節(jié)都表現(xiàn)出來枚赡。(注:上面圖像標注有誤氓癌,低曝光應該是只能覆蓋高亮區(qū)域,高曝光只能覆蓋暗區(qū)贫橙,其他區(qū)域會過曝)
基礎(chǔ)HDR算法
對于raw圖來說
對于RGB圖來說要多兩個步驟
RGB圖像由于經(jīng)過了系統(tǒng)的非線性處理(例如tone reproduction等)贪婉,因此其像素值與場景的輻照度之間不再是線性關(guān)系:
相機響應曲線
相機響應曲線是指相機在不同曝光下的輸出亮度值與實際光照強度之間的關(guān)系曲線。相機響應曲線是相機的重要參數(shù)之一卢肃,它直接影響到相片的曝光效果疲迂。相機響應曲線通常可以通過測量相機的色彩響應來確定莫湘,色彩響應是指相機在不同色彩下的輸出亮度值與實際光照強度之間的關(guān)系曲線鬼譬。相機響應曲線通常是非線性的,因此在實際拍攝中需要根據(jù)實際情況進行曝光補償逊脯,以達到理想的曝光效果。
在這個過程中竣贪,每張照片的像素值被還原到對應的光輻照度军洼,然后多張照片的光輻照度用特定的權(quán)重加權(quán)平均,得到最后的輻照圖
色調(diào)映射
在下面這張HDR圖像中幾個用方框標注的像素點的最大值和最小值比例超過了15000:1演怎,是值域很寬廣的矩陣.
但是我們通常的顯示設備(比如你的LCD顯示器)只是8位的匕争,其動態(tài)范圍非常有限
因此我們需要把HDR圖像的值壓縮到有限的范圍——這個過程就叫做色調(diào)映射(tonemapping)
下圖是線性映射和非線性映射的區(qū)別
HDRI
HDRI文件格式介紹(OpenEXR、RadianceRGBE爷耀、FloatTIFF)
HDRI(High-DynamicRange Image)就是記錄采用了HDR技術(shù)的圖象數(shù)據(jù)文件甘桑。常用的HDRI文件有OpenEXR、RadianceRGBE、FloatTIFF三種格式
OpenEXR文件格式
OpenEXR是由工業(yè)光魔(IndustrialLight & Magic)開發(fā)的一種HDR標準跑杭。OpenEXR文件的擴展名為.exr铆帽,常見的OpenEXR文件是FP16(16bitFloat Point,也被稱為halfFloat Point)數(shù)據(jù)圖像文件德谅,每個通道的數(shù)據(jù)類型是FP16爹橱,一共四個通道64bpp,每個通道1個bit位用來標志“指數(shù)”窄做,5個bit用來存放指數(shù)的值愧驱,10個bit存放色度坐標(u,v)的尾數(shù)椭盏,其動態(tài)范圍從6.14× 10 ^ -5到6.41× 10 ^ 4组砚。
在OpenEXR的算法里面共使用16bit來表示光照數(shù)據(jù)。雖然看起來和使用16bit亮度通道運算位數(shù)相同掏颊,但是OpenEXR巧妙的采用了1個bit位用來標志“指數(shù)”糟红,5個bit用來存放指數(shù)的值,10個bit存放色度坐標的尾數(shù)蚯舱。這樣就輕易的解決了浮點數(shù)值由于位數(shù)少而精度不高的問題改化。大大的拓寬的在FP16下的動態(tài)范圍。根據(jù)實際的計算結(jié)果:在正規(guī)化的情況下OpenEXR可以提供和人眼基本相同的動態(tài)范圍枉昏,最暗到最亮是0.00006103515625(6.14 ×10 ^ -5)到65504(6.41 ×10 ^ 4)陈肛,動態(tài)范圍是9.03;非正規(guī)化條件下兄裂,OpenEXR可以提供從最暗到最亮的數(shù)值從0.000000059604644775390625(5.96 ×10 ^ -8 )到65504(6.41 ×10 ^ 4)句旱,化為動態(tài)范圍表示就是12。
下面是Still寫的OpenEXR讀寫代碼晰奖,保存的.exr文件采用Zips壓縮編碼谈撒。
bool COpenExr::Load(const char fileName[], int& width, int& height, float** pixels)
{
std::vector<float> vecpixels;
if(!Load(fileName, width, height, vecpixels))
return false;
int num = width * height * 3;
*pixels = new float[num];
if(NULL == *pixels)
return false;
std::vector<float>::pointer ptr = &vecpixels[0];
memcpy(*pixels, ptr, num * 4);
return true;
}
bool COpenExr::Load(const char fileName[], int& width, int& height, std::vector<float> &pixels)
{
Imf::Array<Imf::Rgba> pixelsdata;
bool bLoad = loadImage(fileName, width, height, pixelsdata);
if(!bLoad) return false;
for(int y = 0; y < height; y++)
{
int i = y * width;
for(int x = 0; x < width; x++)
{
int j = i + x;
const Imf::Rgba &rp = pixelsdata[j];
pixels.push_back( float(rp.r));
pixels.push_back( float(rp.g));
pixels.push_back( float(rp.b));
}
}
return true;
}
bool COpenExr::loadImage (const char fileName[], int& width, int& height, Imf::Array<Imf::Rgba>& pixels)
{
Imf::RgbaInputFile in (fileName);
Imath::Box2i dataWindow = in.dataWindow();
int dw, dh, dx, dy;
width = dw = dataWindow.max.x - dataWindow.min.x + 1;
height = dh = dataWindow.max.y - dataWindow.min.y + 1;
dx = dataWindow.min.x;
dy = dataWindow.min.y;
pixels.resizeErase (dw * dh);
in.setFrameBuffer (pixels - dx - dy * dw, 1, dw);
try
{
in.readPixels (dataWindow.min.y, dataWindow.max.y);
}catch (const exception &e)
{
std::cerr << e.what() << std::endl;
return false;
}
return true;
}
bool COpenExr::Save(const char fileName[], int width, int height, const float* pixels)
{
std::vector<float> vecpixels(pixels, pixels + width * height * 3);
return Save(fileName, width, height, vecpixels);
}
bool COpenExr::Save(const char fileName[], int width, int height, const std::vector<float> pixels)
{
Imf::Array<Imf::Rgba> pixelsdata;
pixelsdata.resizeErase(width * height);
for(int y = 0; y < height; y++)
{
int i = y * width;
for(int x = 0; x < width; x++)
{
int j = i + x;
half r = pixels[j * 3 ];
half g = pixels[j * 3 + 1];
half b = pixels[j * 3 + 2];
pixelsdata[j] = Imf::Rgba(r, g, b);
}
}
return SaveImage(fileName, width, height, pixelsdata);
}
bool COpenExr::SaveImage(const char fileName[], int width, int height, const Imf::Array<Imf::Rgba> &pixels)
{
Imf::RgbaOutputFile file (fileName, width, height);
file.setFrameBuffer(pixels, 1, width);
try
{
file.writePixels(height);
}catch(const exception &e)
{
std::cerr<< e.what() <<std::endl;
return false;
}
return true;
}
Radiance RGBE文件格式
RGBE文件的擴展名為.hdr,RGBE正式名稱為RadianceRGBE格式匾南。這個本來是BR啃匿、FR等作為radiance材質(zhì)的一種格式,也叫做radiancemap蛆楞,后來成為流行的一種HDR格式溯乒。所謂E,就是指數(shù)豹爹。RadianceRGBE文件每個通道為8bitBYTE數(shù)據(jù)類型裆悄,4個通道一共是32bit。RGBE可以使用RLE壓縮編碼壓縮臂聋,也可以不壓縮光稼。由文件頭或南、RGBE數(shù)據(jù)組成。
文件頭如下:
類型輸出格式
char programtype[16]; //#?Radiance/n#Generated by still/n
float gamma; //1.0
float exposure; //1.0
字符串常量//FORMAT=32-bit_rle_rgbe/n/n
int nWidth, int nHeight //-Y nHeight +X nWidth/n
RGBE數(shù)據(jù)與HDRFP32(RGB)相互轉(zhuǎn)換公式如下:
1艾君、rgbe->FP32(RGB)
如果e為0采够, R = G= B = 0.0,否則:
R = r * 2^(e – 128 - 8);
G = g * 2^(e – 128 - 8);
B = b * 2^(e – 128 - 8);
2腻贰、FP32(RGB)-> rgbe
v = max(R, G, B);
如果v< 1e-32, r = g = b = e = 0, 否則:
將v用科學計算法表示成v = m * 2 ^ n ( 0 < m < 1):
r = R * m * 256.0/v;
g = G * m * 256.0/v;
b = B * m * 256.0/v;
e = n + 128;
Still注:
1吁恍、我們一般說HDR采用FP32,指的是HDR圖象運算時候的內(nèi)存數(shù)據(jù)類型播演,而RadianceRGBE文件采用8bitBYTE類型存儲HDR數(shù)據(jù)冀瓦。也就是說打開RadianceRGBE文件,要使用上面的公式1將RadianceRGBE文件的8bitBYTE文件數(shù)據(jù)轉(zhuǎn)換為FP32的HDR內(nèi)存數(shù)據(jù)進行運算写烤;保存為RadianceRGBE文件時翼闽,要使用上面的公式2將HDR的FP32內(nèi)存數(shù)據(jù)轉(zhuǎn)換為RadianceRGBE的8bitBYTE文件數(shù)據(jù)進行保存。同理洲炊,OpenEXR文件的讀寫也存在將其FP16的文件數(shù)據(jù)到HDR的 FP32圖象數(shù)據(jù)的轉(zhuǎn)換感局;而下面將要講的FloatTiff是不需要進行數(shù)據(jù)轉(zhuǎn)換,直接將HDR的FP 32圖象數(shù)據(jù)保存到TIFF文件中即可暂衡。
2询微、Radiance有多種文件格式,其官方庫包含內(nèi)容比較復雜狂巢,所以撑毛,實際的讀寫沒有使用其官方庫,而是使用了網(wǎng)絡上一個簡單的C語言讀寫類唧领,Still并對其進行了部分修改(在文件頭寫入“Generatedby Still”)藻雌。
FloatTiff文件格式
Tiff文件的擴展名為.tif(.tiff),F(xiàn)loatTiff每個通道為FP32(32bit Float Point)類型斩个,一共3個通道96bpp胯杭。用Tiff文件存儲HDR數(shù)據(jù),直接將HDR的FP32保存到TIFF文件中受啥,有官方庫可以利用做个。下面是Still寫的代碼樣例,HDR數(shù)據(jù)我采用的是LZW壓縮編碼:
bool CFloatTiff::Load(const char fileName[], int& width, int& height, float** pixels)
{
TIFF* fp = NULL;
if((fp = TIFFOpen(fileName, "r")) == NULL)
return false;
//獲取信息
uint16 bps, spp, datatype, photometric, compression, planarconfig, fillorder;
//每個通道占據(jù)的數(shù)據(jù)位數(shù)
if( (TIFFGetField(fp, TIFFTAG_BITSPERSAMPLE, &bps) == 0) || (bps != 32))
return false;
//每個象素的通道數(shù)目
if((TIFFGetField(fp, TIFFTAG_SAMPLESPERPIXEL, &spp) == 0) || (spp != 3))
return false;
//每個通道的數(shù)據(jù)類型
if((TIFFGetField(fp, TIFFTAG_SAMPLEFORMAT, &datatype) == 0) || (datatype != AMPLEFORMAT_IEEEFP))
return false;
//圖像的數(shù)據(jù)采用的顏色模型
if((TIFFGetField(fp, TIFFTAG_PHOTOMETRIC, &photometric) == 0) || (photometric != PHOTOMETRIC_RGB))
return false;
TIFFGetField(fp, TIFFTAG_IMAGEWIDTH, &width);
TIFFGetField(fp, TIFFTAG_IMAGELENGTH, &height);
int num = width * height * 3;
*pixels = new float[num];
if(NULL == *pixels)
return false;
if( TIFFReadEncodedStrip(fp, 0, *pixels, width * height * 3 * 4) == -1)
return false;
TIFFClose(fp);
return true;
}
bool CFloatTiff::Save(const char fileName[], int width, int height, const float* pixels)
{
if(NULL == pixels)
return false;
TIFF *fp = NULL;
if((fp = TIFFOpen(fileName, "w")) == NULL)
return false;
TIFFSetField(fp, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField(fp, TIFFTAG_IMAGELENGTH, height);
TIFFSetField(fp, TIFFTAG_COMPRESSION, COMPRESSION_LZW);//COMPRESSION_DEFLATE;
TIFFSetField(fp, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(fp, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
TIFFSetField(fp, TIFFTAG_BITSPERSAMPLE, 32);
TIFFSetField(fp, TIFFTAG_SAMPLESPERPIXEL, 3);
TIFFSetField(fp, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
if(TIFFWriteEncodedStrip(fp, 0, const_cast<float*>(pixels), width * height * 3 * 4) == -1)
return false;
TIFFClose(fp);
return true;
}
HDR視頻
HDR圖像(High-Dynamic Range Image)即高動態(tài)范圍圖像滚局,簡稱HDRI叁温,它將每個曝光瞬間相對應最佳細節(jié)的LDR圖像(Low-Dynamic Range,低動態(tài)范圍)合成為最終的HDR圖像核畴;通俗來說,就是將同一個畫面進行多次曝光冲九,再合成為一張圖像谤草。HDR視頻就是帶有HDR特效的特殊視頻跟束,這種視頻相比普通視頻來說畫面更加生動有質(zhì)感。無論是HDR圖像還是HDR視頻丑孩,都是基于HDR技術(shù)的冀宴, HDR是一種概念,同時也是一種特殊的圖像/視頻文件格式温学。HDR的意義在于:讓顯示器畫面更接近人眼所觀察到的現(xiàn)實世界略贮。
播放條件:HDR視頻資源、一款支持HDR的顯示器或者HDR電視仗岖、支持HDR視頻的播放器軟件即可實現(xiàn)播放逃延。
目前HDR視頻源較為有限,主要獲取途徑有:支持HDR的游戲(如古墓麗影崛起等)轧拄,藍光電影視頻揽祥,Netflix(奈飛),YouTube檩电,ITunes拄丰,Vimeo,愛奇藝(你沒看錯俐末,愛奇藝是國內(nèi)率先支持HDR視頻的平臺)料按,優(yōu)酷(優(yōu)酷目前已有HDR模式),索尼富士的相機卓箫,NHK/BBC等電視臺载矿。
【視頻HDR技術(shù)】
1)Dolby Vision(杜比視界)
本質(zhì)上是一系列的畫質(zhì)增強技術(shù),這里我們主要介紹它的HDR部分丽柿。杜比實驗室的研究人員在探索HDR需要多少的動態(tài)范圍時做了一項主觀測試恢准,有大約90%的受訪者對0到10,000 nits(cd/m2)的亮度范圍感到滿意。所以杜比設計了一條理論最高亮度10,000 nits(cd/m2)的EOTF(Electro-Optical Transfer Function甫题,電光轉(zhuǎn)換函數(shù))曲線PQ作為Dolby Vision標準的核心馁筐,但目前還沒有顯示設備能達到這一亮度所以目前Dolby Vision在內(nèi)容標準上使用的實際最高亮度值為4,000 nits(cd/m2)。Dolby Vision支持最高到12 bits的位深和Rec.2020 的寬色域坠非,并且擁有獨立的SDR版本進行向下兼容敏沉。
2)HDR10和HDR10+
HDR10全稱HDR10 Media Profile,在2015年8月27日由消費者技術(shù)協(xié)會(Consumer Technology Association炎码,CTA)發(fā)布盟迟。HDR10采用Rec. 2020寬色域、10 bits位深潦闲、SMPTE ST 2084 (PQ)[4]作為傳輸曲線攒菠、使用SMPTE ST 2086色彩容積元數(shù)據(jù)(Mastering Display Color Volume)、最大幀平均亮度水平(Maximum Frame Average Light Level歉闰,MaxFALL) 和最大內(nèi)容亮度水平(Maximum Content Light Level辖众,MaxCLL)卓起,HDR10在數(shù)據(jù)編碼上采用高效率視頻編碼(High Efficiency Video Coding,HEVC)凹炸。HDR10不支持向SDR兼容戏阅,因此無法在傳統(tǒng)廣播電視流上使用∑∷可以說是一個免費授權(quán)的簡化版Dolby Vision奕筐。
HDR10+于2017年4月20日由三星和亞馬遜視頻發(fā)布,是一種基于HDR10的標準变骡。HDR10+同樣采用Rec.2020寬色域和10 bits位深离赫,和HDR10相比增加了動態(tài)元數(shù)據(jù)(SMPTE ST2094-40)。HDR10+的動態(tài)元數(shù)據(jù)是在逐個場景(scene-by-scene)或逐幀(frame-by-frame)的基礎(chǔ)上更精確地進行色調(diào)和亮度級別的優(yōu)化調(diào)整锣光。
- HLG
Hybrid Log-Gamma(HLG)是由BBC和NHK聯(lián)合開發(fā)的HDR標準笆怠。它與標準動態(tài)范圍(SDR)兼容,也支持Rec.2020寬色域和10bits位深誊爹。HLG定義了非線性光電傳遞函數(shù)(Optical-Electro Transfer Function蹬刷,OETF),其中信號值的下半部分使用伽馬曲線频丘,信號值的上半部分使用對數(shù)曲線办成。HLG可以與SDR兼容,目前電視臺的視頻主要拍攝制作采用此格式搂漠。
小結(jié):Dolby Vison迂卢、HDR10、HDR10+和HLG四種HDR標準之間的相關(guān)技術(shù)參數(shù)比較桐汤。
這么多種標準雖然有相互競爭的部分而克,在不同的領(lǐng)域還是有各自的傾向的。對于電影制片公司來說怔毛,制作一部院線電影的HDR版本就只有Dolby Vision可以選擇了员萍,目前只有Dolby Vision的標準里有支持院線的選項(作為杜比影院的一部分)。而在廣播領(lǐng)域自然是HLG占有大量份額拣度。在流媒體或者藍光影片這樣的家庭娛樂服務來說則是各有份額撕贞。
對于HDR技術(shù)來說康谆,元數(shù)據(jù)就記錄了電影畫面中非常重要的信息盯滚,其中主要包括了色彩和亮度兩大方面的信息迅耘,具體來看包括了影像的分辨率、色域范圍冤馏、色度取樣日麸、色彩深度、碼率逮光、編碼格式代箭、幀率辕录、畫面比例、制作端顯示設備的亮度等梢卸,其中有兩個元數(shù)據(jù)是非常關(guān)鍵的,分別是MaxCLL內(nèi)容的最高亮度等級和MaxFALL平均幀最高亮度等級副女。通過這些信息蛤高,我們就能讓HDR顯示設備正確處理HDR畫面中的色彩與亮度細節(jié),不會讓這些重要的細節(jié)層次信息丟失碑幅。從功能上來說戴陡,HDR的元數(shù)據(jù)是來幫助顯示設備以更好的方式來顯示畫面內(nèi)容。從內(nèi)容和作用范圍上來看沟涨,可以分為靜態(tài)元數(shù)據(jù)和動態(tài)元數(shù)據(jù)恤批。
1.靜態(tài)元數(shù)據(jù):
一段視頻中采用同樣的元數(shù)據(jù),去控制每一幀畫面的色彩與細節(jié)裹赴,在幀之間并不會變化喜庞。優(yōu)勢當然是簡單,而不足之處也同樣明顯棋返,整部電影都采用同樣的元數(shù)據(jù)來控制光影變化延都,可是電影之中的每一幀畫面的動態(tài)范圍并非一樣,很容易會造成某些大動態(tài)場景的畫面的暗部或高光細節(jié)出現(xiàn)丟失睛竣,比如說雪山晰房、黑夜等場景。這也是早期HDR顯示設備的HDR畫面表現(xiàn)并不如意的主要原因射沟,有些時候黑位很扎實殊者,陽光感十足,有些時候畫面容易出現(xiàn)過曝問題验夯,高光層次丟失猖吴。
包括如下3大部分的內(nèi)容。
第一部分是用于視頻內(nèi)容母版制作的顯示器的色彩容積信息( 顏色空間簿姨、白點及最大最小亮度范圍) 距误,這部分內(nèi)容是在SMPTE ST 2086標準中定義的。
第二部分是Maximum content light level (MaxCLL)扁位,它表示的是整段視頻所有幀里面准潭,最亮的像素點的光亮度。
第三部分是Maximum Frame-Average Light Level (MaxFALL)域仇,它表示的是整段視頻里面刑然,最亮的幀的平均光亮度。
優(yōu)勢當然是簡單
2.動態(tài)元數(shù)據(jù):
就是允許為每一幀或者每一個場景切換指定元數(shù)據(jù)暇务。以最大程度地優(yōu)化HDR畫面的亮度表現(xiàn)泼掠,盡量保證每一個場景的畫面動態(tài)可以充分釋放怔软,同時還能保留豐富的暗部與高光細節(jié)層次。HDR10+和Dolby Vision都采用了動態(tài)元數(shù)據(jù)择镇。
元數(shù)據(jù):SMPTE ST 2086挡逼、SMPTE ST 2094、CEA-861.3
色調(diào)映射
色調(diào)映射腻豌,是在有限[動態(tài)范圍]媒介上近似顯示[高動態(tài)范圍圖像]的一項[計算機圖形學]技術(shù)家坎。打印結(jié)果、CRT 或者 LCD 顯示器以及[投影儀]等都只有有限的動態(tài)范圍吝梅。
本質(zhì)上來講虱疏,色調(diào)映射是要解決的問題是進行大幅度的[對比度]衰減將場景亮度變換到可以顯示的范圍,同時要保持圖像細節(jié)與顏色等對于表現(xiàn)原始場景非常重要的信息苏携。
有了元數(shù)據(jù)做瞪,要實現(xiàn)正確的HDR畫面顯示,還需要進行正確的色調(diào)映射才能實現(xiàn)右冻。顯示設備的色調(diào)映射装蓬,同樣也分為靜態(tài)映射與動態(tài)映射兩種方式。
靜態(tài)映射會根據(jù)HDR節(jié)目源中的靜態(tài)元數(shù)據(jù)国旷,對整部電影進行單一的色調(diào)映射矛物,或者說采用單一的亮度曲線來處理高光滾落或高切點,對于顯示設備的HDR處理性能要求不高跪但,較為容易實現(xiàn)履羞,所有的HDR設備都支持靜態(tài)映射。
動態(tài)映射并不等于動態(tài)元數(shù)據(jù)屡久,兩者可以共同運行忆首,而動態(tài)映射還可以單獨運行。從運行效率和正確率的角度來說被环,結(jié)合動態(tài)元數(shù)據(jù)的動態(tài)映射是最為理想的糙及。通過HDR10+和Dolby Vision中的動態(tài)元數(shù)據(jù),顯示設備并不需要配備高性能的處理器就能實現(xiàn)逐個場景甚至是逐幀的動態(tài)映射筛欢。這種方式屬于預處理的動態(tài)映射技術(shù)浸锨。那么當遇到大量采用靜態(tài)元數(shù)據(jù)的HDR10節(jié)目源的時候,想要進行動態(tài)映射處理版姑,就只能依賴顯示設備內(nèi)置的處理系統(tǒng)了柱搜。需要注意的是,這種方式屬于后處理的動態(tài)映射處理剥险,并不能保證畫面一定是正確的聪蘸。也是因為這個原因,顯示設備中的后處理動態(tài)映射處理功能,往往還會留給用戶一定可調(diào)的空間健爬,比如說預留高中低三個不同處理強度的設置檔位控乾,用戶可以根據(jù)片源是偏向高光還是偏向暗部來自行選擇。而前面所提到的動態(tài)元數(shù)據(jù)和動態(tài)映射相結(jié)合的預處理動態(tài)映射模式娜遵,如HDR10+就基本上只有開啟或關(guān)閉的選項蜕衡。
PSNR
是一個表示[信號]最大可能功率和影響它的表示精度的破壞性[噪聲]功率的比值的工程術(shù)語。由于許多信號都有非常寬的[動態(tài)范圍]设拟,峰值信噪比常用[對數(shù)][分貝(dB)]單位來表示衷咽。大于比率1:1(高于0分貝)表示信號多于噪聲。
PSNR是最普遍蒜绽,最廣泛使用的評鑒[畫質(zhì)]的客觀量測法,不過許多實驗結(jié)果都顯示桶现,PSNR的分數(shù)無法和人眼看到的視覺品質(zhì)完全一致躲雅,有可能PSNR較高者看起來反而比PSNR較低者差。這是因為人眼的視覺對于誤差的敏感度并不是絕對的骡和,其感知結(jié)果會受到許多因素的影響而產(chǎn)生變化(例如:人眼對空間頻率較低的對比差異敏感度較高相赁,人眼對[亮度對比]差異的敏感度較色度高,人眼對一個區(qū)域的感知結(jié)果會受到其周圍鄰近區(qū)域的影響)慰于。
DOL HDR
傳統(tǒng)多幀HDR
傳統(tǒng)多幀HDR一般是使用non-overlapped模式钮科,即每個圖像采集的周期中,相機在下一個圖像采集開始前婆赠,均要完成曝光/讀出整個過程
Sony的行交織HDR稱為DOL-HDR(Digital overlap)
OV的行交織稱為staggered HDR
行交織HDR的效果如下:
行交織HDR一般是使用overlapped模式绵脯。即相機讀出數(shù)據(jù)和下一幀曝光開始出現(xiàn)重疊的情況,在同一個時刻內(nèi)休里,相機執(zhí)行兩個操作蛆挫,導致在同樣的單位時間內(nèi),在overlapped曝光模式下妙黍,可以采集到更多的圖片悴侵,即相機的幀率更高。原理如下圖:
在傳統(tǒng)的多幀 HDR 里拭嫁,每一幀都需要在上一幀完成讀取后才能進行可免。CMOS 會先進行一次長曝光,然后從上到下完整讀取出整個畫面的數(shù)據(jù)做粤,然后再開始中曝光浇借,從上到下讀一遍,最后以同樣的方式完成短曝光驮宴。換言之兩幀之間的時間間隔是曝光時間 + 傳感器完整完成讀取一幀的時間逮刨,在第一行像素被讀出后,它需要等待其它行的像素被讀取完才能開始中曝光。
如果我們能讓 CMOS 的每一行像素完成讀取后修己,立即開始下一次曝光恢总,就可以省下等待其它像素完成讀取的時間。我們讓 CMOS 完成長曝光后睬愤,讀取完第一行的同時片仿,第一行像素幾乎立即開始中曝光,而無需等待其它行的像素讀取完成尤辱,而在這個時候砂豌,其它行也在進行著讀取 - 下一次曝光的工作,每一行不同的曝光和讀取交替進行光督,就像紡織里互相穿插的紗線一樣阳距,我們就把它稱作行交織技術(shù)。兩幀之間的讀取間隔被縮短结借,物體運動帶來的偽像得以顯著改善筐摘。
簡單講就是:DOL HDR相比傳統(tǒng)HDR讀取完每一行所有像素然后開始曝光,完成后再分別進行長中短這種低效模式下,DOL HDR的長中短三次讀取曝光是同時進行的(準同時)效率更高船老。
不同標準的色域?qū)Ρ?/h3>
相機/SDR/HDR的相對動態(tài)范圍
OETF:光電轉(zhuǎn)換函數(shù)
把光強轉(zhuǎn)化為數(shù)字的函數(shù)咖熟,一般都是對數(shù)形態(tài)曲線(log)
對數(shù)形態(tài)曲線的功能是把線性的亮度-數(shù)值對應關(guān)系,轉(zhuǎn)換成非線性的亮度-視覺感覺對應關(guān)系(線性表達用了一半的范圍去表示一個亮度檔位):
EOTF:電光轉(zhuǎn)換函數(shù)
把數(shù)字亮度轉(zhuǎn)化為光線亮度馍管,SDR一般是Gamma曲線(冪函數(shù)),HDR一般是HLG/PQ(ST2084)
PQ:感知量化曲線
杜比參考Barten Ramp研發(fā)的薪韩,HDR10和HDR10+也使用這個