sensor gain 設置


在 camera驅動調試的過程中, 當 camera 可以正常 預覽和拍照以后, 下面通常要檢查 AE 工作是否正常, 對於 sensor 來說, AE 就是 isp 或者 平台的 AEC 算法通過設置 sensor 的 gain 和 shutter 來控制圖像的亮度。這里面就有一個對應的過程, 一般的tuning 中的曝光表都是使用 平台 提供的 isp tuning 工具配置后產生的, 比如 gain 是 從 1 到 16倍, 有的可能會乘以一個倍數,比如高通平台的曝光表這個倍數是256, 256 表示 1倍。shutter 在 曝光表中是 linecount,這個一般不用轉化。

這個 gain 的設置在 sensor 的 spec 中肯定是有介紹的,不同的sensor 一般不一樣, 比如下面是(原創mojl) sony imx380 的gain 設置的說明:

Analog Gain:

This sensor can apply analog gain on photo-electron signal and digital gain on digital signal after ADC.

The formula for analog gain is shown below.
Analog gain parameters are set with registers. Analog gain and digital gain are set separately.
Analog Gain = (m0 × X + c0) / (m1 × X + c1)

m0 = 0; m1 = -1;  c0 = c1 = 1024

Analog Gain = 1024  / (1024 - X)// X 表示寄存器要設置的值, 這里面規定了 X 的范圍 是 0 - 978

可以計算出 analog gain 的范圍:

1024 /(1024-0)< analog gain < 1024 / (1024-978)

1 < analog gain < 22

Digital Gain:

Digital gain = upper_byte + lower_byte / 256 [times]

upper byte range : 1 - 15

lower byte range: 0 - 255

1 < digital gain < 16

在使用的過程中,一般是先加 analog gain, analog gain 加到最大后 加 digital gain。 那么在代碼中怎么實現這個過程呢,就需要下面的幾個函數:

1 unsigned int sensor_real_to_register_gain(float real_gain);

2 float sensor_register_to_real_gain(unsigned int reg_gain);

3 unsigned int sensor_digital_gain_calc(float real_gain, float sensor_real_gain);

舉個例子, 上層設置下來 96 倍gain, real_gain = 96, 計算方法是怎樣的呢

設定analog gain 最大 16 倍 ,寄存器 960

設定digital gain 最大 8 倍

analog_reg_gain = sensor_real_to_register_gain(96) = 960; // 已經超過最大了

digital_reg_gain = real_gain / sensor_register_to_real_gain(analog_reg_gain) = 96 / 16 = 6

一般平台的 isp 還有 digital gain ,如果做超級大的gain 還可以使用 平台gain,比如 華為手機在專業模式下

有 102400 倍數的gain。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM