高通MSM8909 CAMERA TUNING 基礎

一. 重要概念:
1.色溫
所謂色溫,簡而言之,就是定量地以開爾文溫度(K)來表示色彩。英國著名物理學家開爾文認爲,假定某一黑體物質,可以將落在其上的全部熱量吸取,而沒有損失,同時又可以將熱量生成的能量所有以「光」的形式釋放出來的話,它便會因受到熱力的高低而變成不一樣的顏色,以下圖:git

 


2. 標準光源
是指模擬各類環境光線下的人造光源,讓生產工廠或實驗室非現場也能得到與這些特定環境下的光源基本一致的照明效果。標準光源一般安裝在標準光源箱內,主要用於檢測物品的顏色誤差。
人造的標準光源主要有以下10種類型:算法


在調試的過程當中,通常都是基於三種光源類型調試,所用到的光源爲D65,D50,TL84,CWF,A,H。
3. 白平衡
所謂白平衡(英文名稱爲White Balance),就是對白色物體的還原。當咱們用肉眼觀看這大千世界時,在不一樣的光線下,對相同的顏色的感受基本是相同的,好比在早晨旭日初昇時,咱們看一個白色的物體,感到它是白的;而咱們在夜晚昏暗的燈光下,看到的白色物體,感到它仍然是白的。這是因爲人類從出生之後的成長過程當中,人的大腦已經對不一樣光線下的物體的彩色還原有了適應性。可是,做爲拍攝設備,如數碼相機,可沒有人眼的適應性,在不一樣的光線下,因爲CCD輸出的不平衡性,形成數碼相機彩色還原失真。通常狀況下,咱們習慣性地認爲太陽光是白色的,已知直射日光的色溫是5200K左右,白熾燈的色溫是3000K左右。用傳統相機的日光片拍攝時,白熾燈光因爲色溫過低,因此偏黃偏紅。因此一般現場光線的色溫低於相機設定的色溫時,每每偏黃偏紅,現場光線的色溫高於相機設定時,就會偏藍。
爲了解決不一樣色溫下,引發的白色漂移現象。因爲白色對色溫變化的響應最大,一般用白色來做爲調整的基色。
4. 自動白平衡
自動白平衡是基於假設場景的色彩的平均值落在一個特定的範圍內,若是測量獲得結果偏離該範圍,則調整對應參數,校訂直到其均值落入指定範圍。該處理過程可能基於YUV空間,也可能基於RGB空間來進行。對於Sensor 來講,一般的處理方式是經過校訂R/B增益,使得UV值落在一個指定的範圍內。從而實現自動白平衡。
通常來說,在優化參數中,自動白平衡  (AWB) 調試模塊用於調整參考點、弱光查詢表、AWB Bayer 參數和色調校訂。
5. 曝光Gain值
曝光等級的強弱,通常由sensor 本省處理能力決定;也能夠經過ISP處理能力補強。
6. 光照強度Lux
勒克斯(lux,法定符號lx)照度單位,1 勒克斯等於 1流明(lumen,lm)的光通量均勻分佈於 1㎡ 面積上的光照度。
二. 效果參數頭文件構架
1. 效果參數文件列表
效果參數通常位於下面路徑:mm-camera\mm-camera2\media-controller\modules\sensors\chromatix\0301\libchromatix,在xxxx_sensor_lib.c 中被加載;文件列表以下:shell

 


2. 文件構架
全部的效果參數都是在.h頭文件中,而頭文件有分爲兩類,一類是common類,如chromatix_xxxx_common.h,一類是非common類,如chromatix_xxxx_preview.h。
任何一個複雜的東西,若是把他拆分的足夠小,總有你能理解的部分。效果參數也不例外,當你把他們構架細分了的時候,就不會被煩躁的數據所纏擾而不知所云。
1) Chromatix_xxx_common.h 文件構架 
主要包含模塊以下: 架構

 

Chromatix_xxx_common.h


0x0301,---------------------------------------------------版本
0, // Not compressed
1, // Revision 
{
/*Linearization*/  -------------------------------------線性化
}
{
/*Lens Rolloff */ ---------------------------------------- 鏡頭衰減
}
{
/*LA Secial Effects---場景特效---*/-----------------場景特效
}ide

 

線性化:
因爲圖像感光器所具備的特性,傳感器對場景亮度的輸出響應不必定是線性的,而且不一樣照明條件下可能有所不一樣。例如,傳感器光子響應曲線在強光飽和度條件下幾乎是平的。
在黑暗環境下,因爲暗電流的緣由,傳感器輸出將不會徹底爲零。該偏移值取決於使用的
具體傳感器,而且還取決於集成時間,曝光對應總體增益設置和溫度。即便是不飽和區域,
R/Gr/Gb/B 通道的響應曲線在線性度方面也可能不徹底匹配,從而致使輕微的色偏。必須爲不一樣照明條件下每一個像素的每一個通道校訂傳感器響應的線性度。
鏡頭衰減:
出於節約成本的考慮以及尺寸方面的緣由,手機相機鏡頭向小型化和低成本方向發展。因爲攝像頭尺寸小,製造材料品質低,拍攝的圖像在靠近邊緣處會出現亮度衰減的現象。因
此要對 Bayer raw 圖像進行鏡頭衰減校訂,以下降計算負荷。使用 LUT 分段線性近似法代替模擬曲線和多項式運算。每種顏色都有本身的 LUT,所以亮度衰減和色偏問題可同時獲得解決。
LA Special Effects
特效場景,如Whiteboard,Blackboard等,不解釋。
通常狀況下,Linearization不會去調試,若是非要調試,必需要經過工具優化
。Lens Rolloff則須要用工具調試,參見文檔:80_NK872_1SC_Chromatix_6_User_Guide___Simplified_Chinese.pdf。
整體而言,Chromatix_xxx_common.h 決定一個模組的基本效果,即便Chromatix_xxx_preview.h再怎麼優化,若是Chromatix_xxx_common.h沒有優化好,也優化不出最佳的效果。
2) Chromatix_xxx_preview.h 文件
因爲preview,video,snapshot等文件構架都同樣,此處只分析此類架構。
主要包含模塊以下:
chromatix_xxx_preview.h 文件:


0x0301,
0,
1,
{
 /*VFE Blocks*/
{
        /*Black-Level Subtraction*/
}
{
        /*Adaptive Bayer Filter 2 ---ABF2---*/
}
  {
/*Bad Pixel Correction*/
        /*Demosaic3*/
/*Chroma and Luma Filters*/
}
{
/*Color Correction*/
}
{
/*Gamma Tables*/
}
{
/*Color Conversion*/
}
{
/*5x5 ASF  */
    }
{
/*7x7 ASF */
}
{
/*Luma Adaptation   */
/*Chroma Suppression/Memory Color Enhancement  */
}
{
/*Wavelet Denoise*/
},
}
{
/*Manual Whitebalance*/
},
{
/*Auto Whitebalance*/
},
{
/*Bayer AWB Params*/
},
{
/*Exposure  Table*/
},
/*不經常使用模塊*/
{
/*Auto Flicker Detection*/
},
{
/*Auto Scene Detection*/
},函數

 

三.重點模塊調試
1. AEC 曝光表
經過傳感器曝光時間和傳感器模擬增益控制圖像亮度.
a.知識背景:
攝像頭sensor使用模擬放大器將像素信息放到來實現傳感器增益。也能夠將sensor曝光疆場一段時間,使得每一個像素均可以收集到更多的光線。以後,能夠經過曝光算法控制傳感器增益和像素曝光,從而實現與目標值相關的畫面、物體或是場景的亮度恆定。
b.chromatix6.0 調試,略去;
c. 手動調試:
代碼片斷:工具

 

 /* Exposure Table */
   {
      1, /* Use Digital Gain */
      367, /* Max Exposure Table Entries for EV0 */
      0, /* Enable Digital Gain for EV Lowlight */
      413, /* Max Exposure Table Entries for EV+2 with digital gain */
      {
         {256, 1}, /* Gain= 1.000 Exposure Index=0 */
         {264, 1}, /* Gain= 1.031 Exposure Index=1 */
         {272, 1}, /* Gain= 1.063 Exposure Index=2 */
         {280, 1}, /* Gain= 1.094 Exposure Index=3 */
         {288, 1}, /* Gain= 1.125 Exposure Index=4 */
         {297, 1}, /* Gain= 1.160 Exposure Index=5 */優化

 


曝光表不只僅是上面工具生成的表,還包括不少」target point」,用來作cover,代碼片斷以下:
/* Low-Light Trigger Points */
      {
         7.200000f, /* Gain Start */
         8.000000f, /* Gain End */
         330, /* Lux Index Start */
         367, /* Lux Index End */
      },
要調試的幾個參數:
Luma Target----默認亮度
Fix FPS AEC Table Index------最大幀率下的曝光,影響幀率和亮度
……
2. ABF(Adaptive Bayer Fliter)
a. 知識背景:
常規 2D 卷積濾波會使圖像質量劣化(要麼圖像模糊,噪點少;要麼圖像銳度高,噪點多),尤爲在應用於 Bayer 像素時。而ABF濾波在降噪的同時不鈍化邊緣,採用的濾波器可根據相鄰像素的值調整其內核。
b. 工具調試,略去;
c. 手動優化
不建議手動優化。
3.ASF(Adaptive Spatial Fliter)
a. 知識背景:
自適應空間濾波器 (ASF) 是一種根據邊緣檢測結果對圖像的不一樣部分執行平滑和銳化處理的自適應濾波器。ASF 針對圖像中的不一樣區域有兩種不一樣的處理方法。它可對細節較少的區域進行平滑處理以實現降噪,對邊緣進行銳化處理以提高圖像銳度。所以必須爲 ASF 濾波器指定兩個濾波器,即平滑濾波器和銳化濾波器。ui

 



b. 工具調試
略去,詳細參考:80_NV105_1SC_5x5_Adaptive_Spatial_Filter_Tuning_Guide__Simplified_Chinese_.pdf
80_NK872_1SC_Chromatix_6_User_Guide___Simplified_Chinese.pdf
c.手動調試:debug

 

代碼片斷:
/* Normal Light */
            {
               10, /* e1 */
               32, /* e2 */
               -32, /* e3 */
               32, /* e4 */
               -32, /* e5 */
               0.750000f, /* k1 */
               0.750000f, /* k2 */
               30, /* sp */
               0, /* sp 5x5 */

 

光照條件 
? 根據光照條件(例如,弱光、正常亮度和強光)肯定的ASF參數 

 


曝光指數表明着光照條件,不一樣光照條件下應使用不一樣的ASF參數。
注意在優化的時候,要兼顧到實際狀況,不能隨意調試,而各個參數之間也有有關聯的。
4. gamma校訂table
a.  背景知識
曝光的均值正確了,並不表明總體圖像的亮度分佈就和人眼所看到的保持一致了。事實上,人眼對亮度的響應並非一個線性的比例關係,而各類涉及到光電轉換的設備的輸入輸出特性曲線通常也是非線性的,對於sensor來講,其響應卻是接近爲線性關係,因此爲了在各類設備上正確輸出符合人眼對亮度的響應的圖像,就須要進行校訂。冪函數的指數的倒數就是一般所說的 gamma 值。

 


它能起到的做用不少,它幾乎能夠影響到圖像質量調整的各個方面。在圖像質量調整中,Gamma校訂的一個重要做用是體現細節,加強對比度。因爲人眼對於高亮度的差異感受不明顯,而對低亮度的細小差異感受較爲明顯,所以,Gamma校訂經過將低亮度部分的差距拉大,而形成低亮度部分的細節可以被人眼明顯的感受出來,而圖像的細節部分基本上都是純在於低亮度部分的。
b. 工具調試略去;
c. 這部分不可能手動優化,可是能夠借鑑別的項目的gamma,最好是問FAE要幾組他們實驗室優化過的gamma table。
5. Color Correction 
 a.  背景知識
因爲攝像頭系統中使用的光學元件(鏡頭、色彩濾鏡等)和傳感器所具備的特性,當圖像顯示在特定輸出介質上時,原始 RGB 數據可能不能真實地呈現給人眼。所以須要進行色彩校訂。
b. 工具優化略去。
C.手動優化:
代碼片斷:

/* TL84 Color Correction */
      {
         1.729600f,    -0.939000f,    0.209400f,
         -0.319300f,    1.277900f,    0.042600f,
         -0.115400f,    -0.994300f,    2.109700f,
         0,    0,    0,
         0
      },

 

如上代碼,加粗的對角線依次是R,G,B的飽和度,能夠手動調節,注意各個場景下參數。
 
6. Color Conversion 
a. 背景知識:
要拍攝 JPEG 快照圖像,必須將 RGB 色彩空間轉換爲 YCbCr 色彩空間。默認轉換矩陣能夠在不更改任何信息的狀況下將 RGB 值轉換爲 YCbCr 值。不過,因爲人眼和攝像頭傳感器對光譜響應不一樣,攝像頭捕捉的顏色也與人眼看到的顏色有所不一樣。要提高還原色彩與人眼感知間的顏色精確度,可對顏色處理管道中的 RGB 至 YCbCr 轉換矩陣進行優化,從而最大限度地下降平均色度誤差。高級色度加強 (ACE) 的目的是進一步下降還原色彩與人眼感知間的色差,同時加強指望顏色(例如記憶色)的效果。實際上,ACE 中的不少參數可用於提升轉換靈活性,加強空間色彩而儘可能不影響其餘顏色。
b.工具優化略去;
c.手動調試:

 

代碼片斷:
/* TL84 Color Conversion */
      /* Noise Weight: 0.000000 */
      /* Saturation: Red - 1.000000, Green - 1.000000, Blue - 1.000000 */
      {
         {
            /* a_m, a_p */
            0.510000f, 0.510000f,
            /* b_m, b_p */
            -0.338000f, -0.338000f,
            /* c_m, c_p */
            0.510000f, 0.5100000f,
            /* d_m, d_p */
            -0.162000f, -0.162000f,
            /* k_cb, k_cr */
            128, 128

 

}
各個量的含義:
a_m:黃色飽和度;
a_p:藍色飽和度;
b_m:綠色向量;
b_p:紅色向量;
c_m:綠色飽和度;
c_p:紅色飽和度;
d_m:黃色向量;
d_p:藍色向量;
經過手動調試片斷中加粗的參數,能夠到到色彩的微調,尤爲是膚色色彩。


7. 白平衡
a. 背景知識
見前重要概念章節所述。
b. 工具優化略去;
c. 手動優化:
   通常分爲手動白平衡和自動白平衡。
Manaual Whitebalance
代碼片斷以下:
/* TL84 Whitebalance - RGB */
   {1.074800f, 1.000000f, 1.717200f},
   /* D50 Whitebalance - RGB */
   {1.300800f, 1.000000f, 1.302100f},
   /* A Whitebalance - RGB */
   {1.000000f, 1.134000f, 2.230100f},
   /* D65 Whitebalance - RGB */
   {1.479100f, 1.000000f, 1.074600f},
   /* Strobe Flash Whitebalance - RGB */
   {1.679100f, 1.000000f, 1.274600f},
   /* LED Flash Whitebalance - RGB */
   {1.288600f, 1.000000f, 1.551900f},

 

每一項下面的三個參數表明RGB的比率,能夠按照實際效果手動優化,也能夠經過工具優化。
7. Bad Pixel Correction
a. 背景知識
因爲半導體工藝(CMOS 或 CCD)存在的缺陷,圖像傳感器會產生壞點。模塊製造過程當中也會引入其餘瑕疵。這些壞點會表現爲亮點(熱像素)或暗點(冷像素),有時會成簇出現。壞點/壞點簇多是: 
?  傳感器製造過程當中勢阱滲漏、像素靈敏度異常或電阻損耗形成的壞點/壞點簇安裝鏡頭時因傳感器頂部落有灰塵顆粒而形成的壞像素因老化形成的壞點/壞點簇在噪聲濾波和色彩濾鏡陣列(CFA) 插值處理前,必須找到並校訂壞點。缺陷像素和簇檢測的原理是將圖像傳感器的特定彩色像素值與同種顏色相鄰像素值進行比較。
b. 工具優化略去;
c. 手動優化:
此部分不作手動優化。

8. 小波降噪(Wavelet Denoise)
a.知識背景:
小波去噪是基於頻域去作的去噪,不一樣的頻率區間按照不一樣的力度和方式去處理;越是細節的地方頻率越高噪聲也越多,若是力度加的太強,清晰度也會損失比較多.根據目標芯片的小波功能,該模塊多是硬件小波降噪或者軟件小波降噪;MSM8909 是不支持硬件小波降噪功能的,可是支持軟件小波降噪,在capture環節有做用,打開後拍出的照片沒有紅綠噪點。
 /* Denoise Scale Y */
               {
                  10.000000f, 10.000000f, 10.000000f,10.000000f
               },
               /* Denoise Scale Chroma */
               {
                  15.000000f, 15.000000f, 13.000000f, 10.000000f
               },
               /* Denoise Edge Softness Y */
               {
                  10.000000f, 10.000000f, 10.000000f, 10.000000f
               },
               /* Denoise Edge Softness Chroma */
               {
                  15.000000f, 15.000000f, 15.000000f, 15.000000f
               },
               /* Denoise Weight Y */
               {
                  0.000000f, 0.000000f, 0.000000f, 0.000000f
               },
               /* Denoise Weight Chroma */
               {

 

b. 工具優化略去;
c. 手動優化:
     通常狀況下能夠嘗試增大denoise scale去降噪;每組四個值,對應lv0-lv4四個區間力度,值越大去噪力度越強;
Denoise Edge Softness:可直接影響邊緣/細節,所以在增大edge softness 值時要格外當心,特別是針對室外場景。
      Denoise Weight:越小去噪能力越強,denoise weight = 0 則是最大化降噪,細節與之關聯最大,配合銳度調試,以達到細節和噪聲之間的平衡.

 

四. 關於調試
  1. 調試信息
    調試參數的時候,每每要抓log用來跟蹤實時數據,通常步驟以下:
a) adb root ---打開root權限;
b) adb shell setprop persist.camera.stats.debug.mask <value> 設置屬性
<value> 是十進制:

 

STATS_DEBUG_MASK_AEC_LOG = (1 << 0)  >1 曝光
STATS_DEBUG_MASK_AWB_LOG = (1 << 1)  >2 白平衡
STATS_DEBUG_MASK_AF_LOG = (1 << 2)   >4 對焦
STATS_DEBUG_MASK_ASD_LOG = (1 << 3)  >8 自動場景選擇
STATS_DEBUG_MASK_AFD_LOG = (1 << 4)  >16 工頻干擾消除

 

c) adb logcat  在調試的適合,我習慣於用adb logcat –v time  | grep xxxx來抓取有用的信息;xxxx選擇你所要關注的有效log,如: previw size; banding; AWB; exp_index; indoor_index; FRAMES; lux_index; ...... 在debug的適合,關注log,看連續性和拐點,進而判斷問題; 2. 優化心得  a) 儘可能多的從FAE哪裏獲取幫助 FAE通常有專業的實驗室,有能夠討論的團隊,有別人不知道的特殊模塊參數列表,總之優點明顯。固然也有他們解決不了的問題,這個時候也要發揮咱們本身的主觀能動性,對問題不能置之不理。 b) 調試不能隨意 camera 的效果參數不少都是先後有聯繫的,不能顧此失彼,要綜合考慮,同時也要必定的妥協折中,以達到一個穩定和滿意的效果。 c) 多總結 不一樣IC的模組在效果參數上都有不少共性,在調試的時候本身多加總結,比較,總會出現意想不到的效果。

相關文章
相關標籤/搜索