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