程大騫 付文智 陳東杰 王慕冰 陳 彥 李朝榮
(北京航空航天大學(xué) 1物理科學(xué)與核能工程學(xué)院, 2物理科學(xué)與核能工程學(xué)院物理實驗中心,北京 100191)
在薄透鏡焦距測量實驗中,需要判斷透鏡成像的清晰位置。然而由于人眼評估清晰度的靈敏度低,在一定范圍內(nèi)均認(rèn)為清晰,因此實驗中常通過測讀法(從左至右與從右至左各尋找一個清晰點,重復(fù)至少5次或以上)來減小誤差。即便如此,仍然存在一定誤差,同時多次重復(fù)測讀耗費大量時間。本文基于計算機(jī)視覺,搭建由低成本攝像頭、計算機(jī)組成的系統(tǒng),實時評估成像的清晰度。實驗結(jié)果表明,本系統(tǒng)可以減小誤差,并且節(jié)省80%的測讀時間,同時使用的攝像頭成本約為200元,且不改變實驗的其他步驟,可以在實驗課程中推廣使用。
透鏡焦距測量的常用方法有自準(zhǔn)直法、物距像距法、共軛法和平行光管法等。在近軸光線條件下,薄透鏡的成像規(guī)律可用公式(1)表示為
(1)
以共軛法為例[1],設(shè)凸透鏡的焦距為f,使物與屏的距離L>4f并保持不變,見圖1。移動透鏡至x1處,在屏上成放大實像(A1B1),再移至x2處,成縮小實像(A2B2)。令x1和x2間的距離為a,物到像屏的距離為b,由式(1)和圖1中所給出的幾何關(guān)系,可導(dǎo)出式(2),進(jìn)而可求出焦距:
圖1 共軛法測凸透鏡的焦距
(2)
本系統(tǒng)使用攝像頭對屏幕拍攝,輸出實時清晰度評估,可用于任何測量焦距的實驗方法。
圖5 原圖(a)、原圖直方圖分布(b)與對象提取結(jié)果(c)
本文使用計算機(jī)視覺代替人眼,完成對透鏡成像清晰度的評估。
硬件方面,本系統(tǒng)僅需電腦與低成本攝像頭。本文使用1/3英寸CMOS感光元件的USB免驅(qū)動攝像頭,售價約200元,方便在實驗課程中推廣。程序控制攝像頭捕獲一幀圖像之后,首先進(jìn)行預(yù)處理,包括去除椒鹽噪聲,并分割出成像區(qū)域;其次進(jìn)行Sobel算子卷積,求得梯度圖,再求梯度圖的直方圖統(tǒng)計;最后基于直方圖,根據(jù)高梯度像素的數(shù)量和相對梯度的分布來評估成像清晰度。系統(tǒng)以20Hz運行,基于OpenCV實現(xiàn)[2]。系統(tǒng)運行框圖見圖2。
為了提高系統(tǒng)的易用性與魯棒性,本文借鑒測讀法,實驗中從左至右、從右至左各獲取一個成像清晰的起始位置,取算術(shù)平均值作為成像清晰的位置。系統(tǒng)實物圖如圖3所示。
圖3 系統(tǒng)實物圖
由于在弱光下使用低成本攝像頭,圖像有明顯的椒鹽噪聲,本文使用中值濾波過濾。相對于高斯濾波等降噪手段,中值濾波可更多地保留梯度。由圖4可見,原圖具有較明顯的噪聲,使用3×3卷積核可以濾除一部分,使用5×5卷積核可以基本濾除,因此使用后者。
圖4 原圖(左)、3×3卷積核中值濾波(中)、5×5卷積核中值濾波(右)
當(dāng)成像較小時,由于透鏡較小,屏幕周邊會有光照影響,干擾之后的處理,需要濾除。
由于中心部位亮度顯著大于周邊光,統(tǒng)計直方圖如圖5所示(直方圖略去低亮度部分),因此根據(jù)直方圖,用二值化將高亮度部分濾出作為掩膜,再進(jìn)行開運算消除暗噪聲并放大掩膜,最后將得到的掩膜疊加在原圖像上,得到提取之后的圖像。
對焦清晰度評估算法非常成熟[3],但在本實驗中,場景單一、形狀固定,而光照對比度大、亮度低、噪聲較大,因此需要特殊設(shè)計算法,以克服以上約束。
本文提出的方法首先計算Sobel梯度圖,并且對梯度圖統(tǒng)計直方圖分布。然后基于梯度圖的直方圖分布,評估成像清晰度。
首先使用Sobel算子,得到預(yù)處理之后圖像的梯度圖。同樣,使用不同大小的Sobel卷積核可以得到不同結(jié)果,對比之后選用3×3的卷積核,并求得其直方圖,如圖6所示。
由圖6可看到,對焦清晰時邊緣銳利,在梯度圖中亮度高,亦即梯度圖直方圖中靠右的部分。圖7為兩張圖像的梯度圖局部與兩梯度圖的直方圖,直觀可見左圖比右圖更加銳利。
由圖7兩直方圖可見,清晰圖像的梯度分布更加靠右,也就是極高梯度的像素數(shù)更多。因此,我們同時考慮高梯度像素的數(shù)量與分布,設(shè)計算法。我們對梯度從高到低進(jìn)行統(tǒng)計(即直方圖從右到左),將某梯度值對應(yīng)的像素個數(shù)與本梯度對應(yīng)的權(quán)重相乘,再按梯度從高到低,以此把值相加,當(dāng)和到達(dá)一定閾值時,以對應(yīng)的梯度值為判斷依據(jù),稱截止梯度noff。當(dāng)截止梯度值高于一定值時,認(rèn)為這幅圖像是清晰的。權(quán)重的形式為指數(shù),即滿足式(3)。
圖6 Sobel梯度圖與對應(yīng)的直方圖(a) 3×3卷積核; (b) 5×5卷積核; (c) 對應(yīng)的直方圖
圖7 兩幅圖的梯度圖局部與對應(yīng)的直方圖
本算法有3個參數(shù),即分布權(quán)重底數(shù)a、分布閾值u及總和閾值Sumth。實驗中發(fā)現(xiàn),本算法對參數(shù)選擇并不敏感,本系統(tǒng)中選擇a=1.95,u=242,Sumth=4000。最終將算法編寫成應(yīng)用程序。若評估清晰,則顯示白色方框,如圖8所示。
圖8 軟件運行截圖
使用者需要使用測讀法,即將透鏡(或其他光具)從左至右、從右至左各移動一次,記下來兩次開始出現(xiàn)白框的位置,取算術(shù)平均值,即為清晰成像的位置。最終程序在Python下實現(xiàn)[4],單幀圖像的處理用時約為5ms,可以實現(xiàn)20Hz的圖像評估,滿足實時性需求。
(3)
本文使用計算機(jī)代替人眼評估清晰度,目的是減小誤差并節(jié)省時間,實驗圍繞目的設(shè)計。
由于本文的評估對象是成像清晰度,亦即光具座的位置,難以獲得真值,于是使用多人多次測讀的方式獲得一個誤差很小的值來代替真值。具體方法是:4人在同一實驗條件下,分別測讀5次,得到針對一個清晰成像點的40個數(shù)據(jù)(即20組),算術(shù)平均之后,可以得到方差僅為單次測量方差的5%的測量值,作為真值。同時由本系統(tǒng)對同一條件下的清晰成像位置進(jìn)行單次測量,與真值對比。
本文使用共軛法進(jìn)行測量,即有一大一小兩個清晰成像點,進(jìn)而計算平均值,與計算機(jī)對比,結(jié)果如表1所列。
表1 人與計算機(jī)測量結(jié)果對比
結(jié)果表明,本系統(tǒng)可以輸出較為精確的結(jié)果。同時,由于只需要單次往返測量,比實驗中使用的5次測讀法,可節(jié)省80%的時間。
本系統(tǒng)使用計算機(jī)和低成本攝像頭,實現(xiàn)了對透鏡成像清晰度的評估,可以減小誤差,并且節(jié)省該實驗的大量時間。系統(tǒng)基于圖像梯度,利用高梯度像素的數(shù)量和分布,對成像清晰程度評估。本系統(tǒng)成本低廉,并且實現(xiàn)實時評估,可以應(yīng)用在實驗課程中。