HDR 拍照模式的原理,實現及應用

2021-09-06 19:04:30 字數 1785 閱讀 5501

hdr 拍照:

(high dynamic range imaging)高動態範圍成像,是用來實現比普通數字影象技術更大**動態範圍(即更大的明暗區別)的一組技術。

高動態範圍成像的目的就是要正確地表示真實世界中從太陽光直射到最暗的陰影這樣大的範圍亮度。如今一般的數位相機和手機中都實現這樣的拍照模式。

適合場景:

比較適合在陰暗變化明顯的場景下使用,這樣能使明處的景物不致過曝,而使得暗處的景物不致欠曝。譬如逆光環境下拍人物,能夠將人物和環境都能拍清晰。

或者說能將處在暗處的景物拍攝出來的細節表現得更加充分!

以下來看幾組**:

圖1如上圖1中所看到的,開啟 hdr 後,暗處的樹和牆壁都獲得正確的**,都能看得清楚。

圖2

圖3如上圖3中開啟了 hdr, 左上角及樓道裡的場景能拍得更亮一些。均來自網路!

詳細實現方法:

事實上現方法是通過設三組 ev 值來對當前拍攝的景物**,一張**是使用當前測光從而算出來的正常情況下的ev值**,另外兩張則分別使用其0.5倍的ev值和2倍的ev值進行**。終於對三張**按某種演算法進行合成,暗處的景物使用2倍ev**的區域性**,而亮處的物體則使用0.5倍ev**的區域性**。這樣就能使得整個**的場景都不致於太亮或太暗。

**實現:

在 ***\alps.jb3.tdd.mp.v2_td_***\mediatek\custom\common\kernel\imgsensor\ov5645_mipi_yuv\ov5645mipiyuv_sensor.c 驅動檔案裡有這樣乙個函式

bool ov5645mipi_set_param_exposure_for_hdr(uint16 para)

totalgain = ov5645mipisensor.currentaxdgain;

exposuretime = ov5645mipisensor.currentexposuretime;

switch (para)

totalgain = (totalgain > ov5645mipi_max_axd_gain) ? ov5645mipi_max_axd_gain : totalgain;

//exposuretime = (exposuretime > ov5645mipi_max_exposure_time) ? ov5645mipi_max_exposure_time : exposuretime;

ov5645mipiwritesensorgain(totalgain);

ov5645mipiwriteshutter(exposuretime);

ov5645mipisensordb("[ov5645mipi]exit ov5645mipi_set_param_exposure_for_hdr function:\n ");

return true;

}

此函式會執行三次,分別跑了 ae_ev_comp_00, ae_ev_comp_20, ae_ev_comp_n20 這三個 case, 這三個 case 中分別以三組 totalgain 和 exposuretime 值來進行**的。

能夠看到這三組值所呈現的0.5,1,2倍的關係。

參考文件:

HDR 拍照模式的原理,實現及應用

hdr 拍照 high dynamic range imaging 高動態範圍成像,是用來實現比普通數字影象技術更大 動態範圍 即更大的明暗差別 的一組技術。高動態範圍成像的目的就是要正確地表示真實世界中從太陽光直射到最暗的陰影這樣大的範圍亮度。現在一般的數位相機和手機中都實現這種拍照模式。適合場景...

Python偏函式實現原理及應用

1.為什麼要使用偏函式 如果我們定義了乙個函式,比如說將四個數相加add one two,three,four 上層有很多函式需要呼叫這個函式。在這些呼叫中,80 的呼叫傳遞的引數都是one 1,two 20,如果我們每都輸入相同的引數,這樣乏味而且浪費,固然,我們可以通過預設引數來解決這個問題 但...

奇異值分解的原理 實現及應用

總結有乙個 m n m times n m n 的矩陣 a aa 可以分解成如下形式 a u vta u sigma v t a u vt 其中 u r m mu in r u rm m 和 v rn nv in r v rn n 均為單位正交陣,即有 uut iuu t i uut i 和 vvt...