3.2.3 Quantization Techniques(HDR量化)(Advanced High Dynamic Range Imaging)Schlick TMO

3.2.3 Quantization Techniques(HDR量化)(Advanced High Dynamic Range Imaging)Schlick TMO

Schlick [341]提出了一種基於有理函數的算子,以提供一種直接直觀的色調映射方法。 TMO定義爲:

其中p∈[1,∞),它可以自動估算爲 

 

 變量N是輸出顯示的位數,L0是HVS可以感知的監視器的最低亮度值。 由於將相同的函數應用於所有像素,因此在公式(3.9)中使用p是統一的量化過程。 可以使用如下自適應參數p進行非均勻量化處理:

其中k∈[0,1]是用戶選擇的不均勻權重,L w,avg(x)是圍繞像素的給定區域的平均亮度強度。 這種不統一過程的行爲通常與本地操作員相關。 Schlick在所有實驗中均使用k = 0.5。 還提出了三種計算平均亮度強度值Lw,avg(x)的技術。 有關更多詳細信息,請參閱Schlick的原始文章[341]。 這種不統一的過程可以由以下事實證明:

 人眼在圖像中從一個點連續移動到另一點。 對於眼睛所關注的每個點,都存在一個周圍區域,該區域創建局部適應並修改亮度感知。 量化技術提供了一種簡單且計算速度快的TMO。 參見圖3.4。 但是,用戶需要爲每個圖像指定適當的k值。

 

 

1059/5000

清單3.8提供了Schlick TMO [341]的MATLAB代碼。完整代碼可在文件SchlickTMO.m中找到。參數s模式指定所使用的Schlick技術的模型類型。共有三種模式:手動,自動和不一致。手動模式將參數p作爲用戶的輸入。自動模式和非均勻模式分別使用均勻和非均勻量化技術。取決於使用的模式,變量p是p或p',nBit是輸出顯示的位數N,L0是L0,k是k。第一步是以一種健壯的方式(以避免出現不愉快的現象)來計算最大值L Max和最小亮度L Min,即計算百分位數。這些值可用於計算p。然後,基於s模式,選擇三種模態之一,p由用戶給定(手動模式),或者使用公式(3.9)(自動模式)或使用公式(3.10)(非均勻模式)計算。最後,通過應用公式(3.8)來減小亮度通道的動態範圍。

原圖

matlab自帶的

%%
clc
clear
hdr=hdrread("Bottles_Small.hdr");
RGBout=SchlickTMO(hdr);
imshow(RGBout);

結果圖

改進的算法

%% HDR量化
% Schlick TMO 
clc
clear
hdr=hdrread("Bottles_Small.hdr");
hdr_r=hdr(:,:,1);
hdr_g=hdr(:,:,2);
hdr_b=hdr(:,:,3);
%亮度壓縮
L=lum(hdr);
%計算最大亮度
Lmax=MaxQuart(L,0.99);
%計算最小亮度
Lmin=MaxQuart(L(L>0.0),0.01);
L0=1;
p=L0*Lmax/(2^8*Lmin);
Ld=p.*L./((p-1).*L+Lmax);

%顏色校正
cc_s=0.5;
imgout=zeros(size(hdr));
for i=1:size(hdr, 3)
    imgout(:,:,i) = ((hdr(:,:,i) ./ Ld).^cc_s) .* Ld;
end
RGBout=ConvertRGBtosRGB(imgout,0);
%如果像素值大於1,壓縮到1,如果像素值小於0,壓縮到0
for i=1:size(hdr,1)
    for j=1:size(hdr,2)
        for k=1:size(hdr,3)
            if(RGBout(i,j,k)>1)
                RGBout(i,j,k)=1;
            end
            if(RGBout(i,j,k)<0)
                RGBout(i,j,k)=1;
            end
        end
    end
end
RGBout=RemoveSpecials(RGBout);
imshow(RGBout);

結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章