1. 程式人生 > >關於海思HI3518+OV9712 ISP影象除錯

關於海思HI3518+OV9712 ISP影象除錯

夜視效果除錯

除錯需求:

因產品使用的補光燈是白色LED燈,設計需求是在黑夜裡還能看到彩色的畫面,實際情況該方案實現畫面不是很理想,燈光不夠亮,影象噪點大,因不能修改硬體的情況下只能儘量優化影象。

hiISP_AE_ATTR_EX_S引數說明:

enAEMode 自動曝光的優先模式,如幀率優先,噪聲優先。

u8ExpCompensation 自動曝光調整時對曝光補償量。

值越大,則自動曝光的目標亮度值越大,影象越亮

u32GainThreshold 自動降幀時的系統增益門限值。

取值範圍:[0x400, 0xFFFFFFFF]

自動降幀時增益門限值u32GainThreshold 表示在LowNoise

模式下,當增益達到所設定的門限值時,系統將自動進入LowNoise模式

因我們使用白色LED補光,所以在光線不足的環境下容易出現噪點過大問題,以下引數能調整在夜晚環境下,鏡頭達到優化噪點和曝光;

ISP_AE_ATTR_EX_S aeAttrEx;

aeAttrEx.enAEMode = AE_MODE_LOW_NOISE; 降噪模式,光線不足時降低幀率保證影象質量

aeAttrEx.u8ExpCompensation = 64;//自動曝光調整時對曝光補償量,因為機器使用的是白色led燈,所以這邊需要設定為64,如果設定太大會曝光。

aeAttrEx.u32GainThreshold = 45000;  這裡還是設定為預設好點

,越小越清晰,但是前提是以降幀換取效果,畫面卡!

這裡的話最小值為4096,該值下畫面最清晰也就最卡頓,如果設定65536的話影象會比較差,但是流暢度也最好;

影象穩定響應效果除錯

除錯需求:

因產品需求,在機器啟動鏡頭時,sensor需要在第一時間出影象,並且影象必須穩定清晰。

hiISP_AE_ATTR_EX_S引數說明:

u8ExpStep  自動曝光調整時的初始步長。

s16ExpTolerance  自動曝光調整時對曝光量的容忍偏差。

取值範圍:[0x0, 0xFFFF]

aeAttrEx.u8ExpStep = 255; //曝光調整步長,設定過小會使得曝光緩慢,影象從暗到亮變化時間長

aeAttrEx.s16ExpTolerance = 50;//自動曝光調整時對曝光量的容忍偏差

值越大則對外界環境亮度變化的敏感度越小。

注意:u8ExpStep是“自動曝光調整時的初始步長”,意思就是對光度自動調整影象亮度的時間長短,如果設定小的話,響應時間就長,如果設定大的話,響應時間就短;這裡如果需要開始啟動鏡頭時影象穩定響應時間短的話就需要設定大點,但是這裡有個缺點,就是當光線不穩定時(測試效果:畫面中存在一小部分燈源,但光線不穩定),這時畫面會不斷的一暗一亮的閃爍。

  經過我們測試,我是這樣處理的:啟動機器時,將u8ExpStep =255s16ExpTolerance =50,這是因為影象出現的快一點,如果設定小的話,影象會從暗到亮大概需要5秒左右(這裡看個人需求)。當機器執行到5秒左右,我們再將值設為u8ExpStep =16s16ExpTolerance =10u8ExpStep設為16是因為防止光源變化會引起影象快速效應(前面說的一閃一閃)。s16ExpTolerance設定為10是為白天曝光這一功能設定的,可以讓光源變化是ISP更加敏感的響應。

曝光除錯-寬動態

除錯需求:

3518的通病,攝像機正對“人面”(人面靠近IPC)和“環境背光”(IPC正對室外陽光充足環境)導致IPC對“人面”一片黑或者對“背光環境”曝光。

對於抗閃頻率屬性(AntiFlicker)和自動曝光屬性(SetAEAttr)引數設定:

當抗閃爍非使能時,陽光下是可以看得清畫面的,但與自動曝光時間設定有直接關係,當最小曝光時間增大時,畫面明顯曝光了。

ISP_INNER_STATE_INFO_S引數說明:

u8AveLum  影象平均亮度。 取值範圍:[0x0,0xFF]

hiISP_AE_ATTR_EX_S引數說明:

u32ExpTimeMin  自動曝光的最小曝光時間。

取值範圍:[0x2, 0xFFFF] ,具體範圍與sensor相關。

自動曝光的最大最小時間及增益

可根據不同的場景對曝光時間及增益進行限定,如有高速運動物體場景可限定最

大曝光時間值為較小值,這樣可減輕運動物體拖影現象。最小數字增益值的設定

目前暫不支援。

關於攝像機正對“人面”(人面靠近IPC)和“環境背光”(IPC正對室外陽光充足環境)導致IPC對“人面”一片黑或者對“背光環境”曝光問題。

AE自動曝光的最小曝光時間的增減對上述現象有直接影響,u16ExpTimeMin小了,背光環境清晰,當時人面一片黑,u16ExpTimeMin大了,人面清晰,環境曝光了;

這裡我們採用關閉抗閃爍功能、自動寬動態、階梯性設定曝光時間值方法解決該問題。

關於寬動態 AE曝光研究,可以通過對函式HI_MPI_ISP_QueryInnerStateInfo讀取ISP_INNER_STATE_INFO_S結構體引數:

背光和曝光亮度改變影響引數主要有三個:

u8AveLum  影象平均亮度,  取值範圍:[0x0,0xFF]

u32Exposure  Sensor 曝光量,取值範圍[0x0,0xFFFFFFFF]

u32ExposureTime  Sensor 曝光時間,取值範圍[0x0,0xFFFFFFFF]

背光亮度越高 u8AveLumu32ExposureTime  值越大,背光亮度越亮

當人面基本覆蓋鏡頭時,影象光線馬上變暗,u8AveLum也隨之變小,這時需要升高u16ExpTimeMin值到50009000左右(根據暗度效果);

正常情況下,u8AveLum值為4556;當u8AveLum小於45時,鏡頭明顯是黑暗的(人面或者區域性無光線背影),越暗值越小,當值接近一兩百時,背景明顯是曝光的,我們的解決方法是階梯式調整u16ExpTimeMin的值;

因為IPS剛剛開始時sensor不穩定導致影象光度不斷變化,這時候不需要設定曝光值。

根據我們這邊的實際情況,在光線足夠暗時,u8AveLum是低於20的,所以我們劃分了五個區限:

u8AveLum >= 20

u8AveLum >= 15  && u8AveLum < 20

u8AveLum >= 10  && u8AveLum < 15

u8AveLum >= 5  && u8AveLum < 10

u8AveLum >= 0  && u8AveLum < 5

對於設定u32ExpTimeMin值為:

u32ExpTimeMin = 2;

u32ExpTimeMin = 4000;

u32ExpTimeMin = 5000;

u32ExpTimeMin = 7000;

u32ExpTimeMin = 9000;

u8AveLum值越大(曝光時大於200),u32ExpTimeMin需要設定的值要越小(等於2),如果u8AveLum值接近0時,說明畫面區域性光線突然變暗(人面靠近),這是需要設定曝光值u32ExpTimeMin越大。

優化室外環境下(陽光下),環境曝光及人面看不清,優化寬動態曝光效果,效果為:當鏡頭對著環境時,顯示對焦環境色彩(不曝光),當鏡頭對著人面時,對焦人面使清晰看清人面但後面環境為曝光效果,當人面移開後,鏡頭重新對焦環境色彩(不曝光)。