話說昨天寫了一天的HDR作業
先是從數張快門速度不同的照片重建HDR
再來是將HDR壓縮回LDR
建立HDR影像
雖然現在論文的作者很負責任地提供了Matlab的Code可以下載,但不知怎麼在HDR重建時會遇到矩陣尺寸過大的問題,因此後來用Matlab內建的makehdr來重建
makehdr
在makehdr中需要設定線性區域的上下界與每張影像的曝光程度(快門速度) ,在有效範圍內的亮度值除以進光量(快門速度),得到真實亮度。將每張影像的真實亮度加入hdrTemp影像中,最後將hdrTemp中的值除以每個pixel有效的影像數(該pixel曝光程度在有效範圍內的影像總數)得到hdr影像
全部都過曝得像素填入最大值,全部都曝光不足處填入最小值,不是過曝就是曝光不足的部分利用旁邊的像素填滿~
HDR->LDR
compress low frequency part
將hdr影像mapping到LDR的部分,老師提供的code的概念是將影像中的細節與非細節部分分開,並對非細節部分進行較大的壓縮,再將此兩部分合成。而這兩篇論文的重點都在如何產生非細節影像。最理想狀況是將每個物體的明暗與紋理分開。
tone mapping
至於matlab內建的tonemap則是將影像取log2後並壓縮到[0,1]後轉到Lab空間,對L進行壓縮。壓縮L用的是constrast limited histogram equalization的方法,將影像分割成許多小塊(ex: 8x8)在每個小塊中做histogram eq. 使 histogram符合某種分布(ex:平均分布),在對附近的方塊使用內插法,以避免方塊之間的邊界太明顯。之後在將壓縮後Lab轉回rgb