動(dòng)的實(shí)戰(zhàn)標(biāo)題——Flicker Detection的“頻閃獵手“——50Hz/60Hz/日光燈/PWM調(diào)光LED的頻閃檢測(cè)與補(bǔ)償,以及如何用曝光時(shí)間微調(diào)消除條紋)
147、洞察驅(qū)動(dòng)的實(shí)戰(zhàn)標(biāo)題——Flicker Detection的"頻閃獵手"——50Hz/60Hz/日光燈/PWM調(diào)光LED的頻閃檢測(cè)與補(bǔ)償,以及如何用曝光時(shí)間微調(diào)消除條紋凌晨?jī)牲c(diǎn),實(shí)驗(yàn)室的燈還亮著。客戶反饋說新出的安防攝像頭在停車場(chǎng)夜間模式下,畫面里總有一道道若隱若現(xiàn)的橫紋,像老式CRT顯示器的刷新線。我盯著示波器上的波形,又看了看手里的熱成像儀——那臺(tái)IPC的傳感器溫度正常,電源紋波也在規(guī)格內(nèi),但畫面里的條紋就是賴著不走。直到我把鏡頭對(duì)準(zhǔn)頭頂?shù)腖ED工礦燈,才恍然大悟:這根本不是硬件問題,是光在作祟。那盞燈用的是PWM調(diào)光,頻率恰好落在攝像頭的曝光積分窗口里。50Hz的市電頻率,加上LED驅(qū)動(dòng)器的開關(guān)頻率,兩者混疊后產(chǎn)生了一個(gè)約8.3ms的拍頻周期。而我們的曝光時(shí)間默認(rèn)設(shè)置在10ms左右,正好把這個(gè)拍頻周期完整地“吞”了進(jìn)去——每一幀的積分起點(diǎn)不同,落在光強(qiáng)波動(dòng)的不同相位上,于是相鄰幀之間出現(xiàn)了明暗交替的橫帶。這就是Flicker Detection的經(jīng)典場(chǎng)景。但真正讓我頭疼的不是檢測(cè)本身,而是“如何在不犧牲畫質(zhì)的前提下消除它”。市面上很多方案直接粗暴地把曝光時(shí)間鎖死在10ms或20ms的整數(shù)倍,結(jié)果在低照度環(huán)境下畫面暗得沒法看。我們需要的是“智能獵手”——既能識(shí)別頻閃源,又能動(dòng)態(tài)調(diào)整曝光策略。頻閃檢測(cè)的三種“嗅覺”先說檢測(cè)。我試過三種方法,各有各的坑。第一種是時(shí)域分析法。連續(xù)抓取N幀,對(duì)每一幀的同一行像素做均值,然后看這個(gè)均值序列的FFT頻譜。如果某個(gè)頻率分量顯著高于噪聲基底,就判定存在頻閃。這個(gè)方法在實(shí)驗(yàn)室里跑得很歡,