安霸pipeline簡述之YUV域的處理

我可是來學習的發表於2022-01-09

YUV域處理模組的詳細介紹:

  YUV域的處理主要是rgb_to_yuv_matrix,chroma_scale,ASF(空域降噪),MCTF(時域降噪),SharpenB(銳化模組)。

 

 

  RGB2YUV Matrix:此模組是設定RGB到YUV的矩陣。矩陣的格式為標準的3x3轉換矩陣加上YUV的偏移量。

    

 

 

  

  矩陣的設定要根據sensor input具體考慮,也可以根據顯示器型別或應用型別具體定製。如果是Mono sensor,該矩陣需要設定為單位矩陣。

  修改Y_offest可以修改畫面的整體亮度,U /V_offest可以修改畫面的色彩飽和度。這個矩陣一般不建議修改,使用預設的即可。

  

  Chroma Scale:經過轉換矩陣後,U、V分量經過Chroma Scale進行處理,本模組是對色彩訊號整體的控制量,相當於飽和度的設定。

    

  Chroma Scale成員是以亮度為索引,修改不同的亮度的色彩強度。當Chroma Scale成員全部設定為0時就是灰色影像。

 

 

  

  ASF(空域降噪):經過轉換矩陣後,Y分量也就是Luma訊號首先經過一個降噪/加銳模組。在絕大多數情況下,此時會選擇ASF模組進行降噪處理。

  首先該模組會檢測影像的邊緣區和平坦區通過不同的濾波器對不同頻率區域做相應處理。

    

  當畫素的邊緣分值低於direction_decide_t0時,做iso濾波;當畫素的邊緣分值高於direction_decide_t1時,做dir濾波。對於分值在direction_decide_t0與direction_decide_t1之間的,

  會用iso濾波與dir濾波融合來處理。

  fir_specify的取值範圍是2-4。當取2時,控制濾波強度引數是fir_strength_iso(iso濾波強度)和fir_strength_dir(dir濾波強度)。

  當取3時,則是使用fir_per_dir_fir_dir_amount(iso濾波與dir濾波融合強度),fir_per_dir_fir_dir_strength(dir濾波強度),fir_per_dir_fir_iso_strength(iso濾波強度)。

  當取4時,則是使用fir_coefs控制濾波強度。分別是一個平坦區和8個方向。

 

  為了保持影像的細節和邊緣,還提供了兩個level_control。如下:

    

  這是一組基於影像頻率的level Control ,T0T1_div_high和T0T1_div_high_delta限定了高頻率範圍。T0T1_div_low和T0T1_div_low_delta限定了低頻率範圍。剩下的頻率則屬於中等頻率  範圍。,T0T1_div_high/mid/low_strength則是對應頻率的降噪強度。值越大,降噪強度越小。

 

    

  這是一組基於亮度的level_Control ,level_str_adjust_high和level_str_adjust_high_delta限定了高亮度範圍。level_str_adjust_low和level_str_adjust_low_delta限定了低亮度範圍。剩下的亮度範圍則屬於中等亮度範圍。,level_str_adjust_high/mid/low_strength則是對應亮度的降噪強度。值越大,降噪強度越大。

 

    

  最後的這些引數的作用是對以上三種降噪方式(fir_iso/dir、level_str_adjust_*、T0T1_div_*)做一個幅值得限定。

 

  

  MCTF(時域降噪):MCTF模組是一個對影像的時域和空間域分別進行處理的模組。Y(亮度訊號)、U、V(色彩訊號)會一同進入這個模組做降噪處理。此模組主要分為一個時域降噪部分,一個空域降噪部分。

  空間域降噪部分:

 

    

 

 

   

  空域降噪有兩路濾波,分別是isotropic和directional兩路濾波,由邊緣門限y/cb/cr_spat_smth_directional_decide_t0/t1來確定。

  當影像分為iso區域和dir區域後, 分別用兩組level_control來對這些區域做降噪處理。Y/cb/cr_spat_smth_dir*是對dir區域進行降噪的level_control,Y/cb/cr_spat_smth_iso*是對iso區域進行降噪的level_control。

  y/cb/cr_advance_iso_noise_level和y/cb/cr_advance_iso_size是生效最快的的空域濾波器。noise_level、size越大,去噪越強。

    

  

  時域降噪部分:

     

 

 

         

  時域濾波器是通過一組基於motion的level_control去控制,如下:

    

  y/cb/cr_t0/t1/t2/t3是四個運動強度的閾值,0-1表示運動強度最低的範圍,這部分畫素的時域降噪強度採用的是y/cb/cr_temporal_alpha0控制;1-t1表示較強的運動範圍,這部分畫素的時域降噪強度是由y/cb/cr_temporal_alpha1控制;後續同上。 

  運動檢測部分:運動檢測的功能是劃分出畫面中的靜止區域,做時域降噪;另外的運動區域則做空域降噪。

 

 

     

  Noise_base是很重要的判斷運動的引數,值越大越容易被判定為靜止。Motion_response的值越大,越容易被判斷為運動區域。Slow_mo_sensitivity檢測慢速運動的靈敏度,值越大,對慢速運動的檢測越靈敏。

 

    

  SharpenB(銳化模組):YUV訊號在經過MCTF後就來到了此模組。此模組的作用有兩個作用,一個作用是對影像進行銳化操作;另一個作用就是對銳化後的影像再進行一次降噪處理。

      

 

    

 

  銳化從sharpening FIR開始,sharpening FIR中主要的引數如下:

     

  Fir_specify是銳化濾波器的選擇,取值範圍是0-4,不同的取值會使用不同的銳化濾波器,見下圖:

     

 

  取0時,只對平坦區進行銳化操作,使用fir_strength_iso控制其銳化強度;取1時使用fir_cofes中的第一個卷積核,即控制平坦區的卷積核做銳化操作,也是隻針對平坦區

  取2時,會將影像分為平坦區和邊緣區,兩個區域劃分的閾值由edge_thresh劃分的,大於edge_thresh的部分將劃為邊緣區;小於edge_thresh的部分將劃為平坦區。

  取3時,使用Fir_per_dir_fir_iso_strengths控制平坦區的銳化強度,Fir_per_dir_fir_dir_strengths控制邊緣區的銳化強度,介於平坦區和邊緣區之間的區域則使用Fir_per_dir_fir_dir_amounts決定銳化強度。

  取4時使用fir_coefs中的平坦區以及八個方向的卷積核去做銳化處理,八個方向分別為0°、90°、45°、135°、22.5°、67.5°、112.5°、157.5°。

 

  sharpening FIR之後是一個index_scale模組,是一個level_control的銳化處理模組。其引數如下:

     

  由於Non-Smooth Detec的引入,這個模組不建議除錯。

  index_scale之後是一個coring_table模組,是一個對上述兩個模組做一個銳化輸出的限幅模組。其引數如下:

    

  Coring_table是對銳化輸出的一個係數,銳化的輸出會乘以coring_table,所以coring_table內的數值越大,銳化的強度就越高。

  Fractional_bits也是一個控制銳化輸出分數的分母,取1時,銳化不變,當大於1時並且隨著其增大時,銳化的輸出會越小。

 

  coring_table之後是一個gain_scale模組

     

 

 

  gain_scale之後是一個Min/Max模組

    

 

 ·    

  這兩個level control常用method 14控制。分別控制弱邊緣、邊緣和強邊緣的銳化強度。其中對邊緣的劃分以high、low的值做劃分。

 

  銳化中的降噪是Spatial FIR模組,主要引數如下:

    

    

  這個子模組主要對輸入的訊號做一個降噪處理,用direction_decide_t0/t1判斷畫素屬於還是低頻區域。

  當fir_specify去不同的值時,會使用不同的引數控制對高頻區、低頻區的降噪強度。

  取0時,只對平坦區進行降噪操作,使用fir_strength_iso控制其降噪強度。

  取1時使用fir_cofes中的第一個卷積核,即控制平坦區的卷積核做降噪操作,也是隻針對平坦區。

  取2時,使用fir_strength_iso控制低頻區域的降噪強度,使用fir_strength_dir控制高頻區域的降噪強度。

  取3時,使用Fir_per_dir_fir_iso_strengths控制平坦區的降噪強度,Fir_per_dir_fir_dir_strengths控制邊緣區的降噪強度,介於平坦區和邊緣區之間的區域則使用Fir_per_dir_fir_dir_amounts決定降噪強度。

  取4時使用fir_coefs中的平坦區以及八個方向的卷積核去做降噪處理,八個方向分別為0°、90°、45°、135°、22.5°、67.5°、112.5°、157.5°。

 

  之後會對銳化和降噪做一個融合,通過Final Clamp判斷門限以及做一個整體限幅,主要引數如下:  

    

 

  Edge_thresh為sharpening FIR子模組中的平坦區,邊緣區的閾值。

 

  Max_change_up5x5\Max_change_down5x5則是分別控制影像的overshoot(銳化後的白邊白點)的強度和影像的undershoot(銳化後的黑邊黑點)的強度。

 

  Max_change_up\Max_change_down則是對銳化、降噪輸出做一個總的限幅。

 

相關文章