單德強(qiáng) 胡超
摘 要:提出一種檢測鏡片屈光度等光學(xué)參數(shù)的方法,點光源穿過準(zhǔn)直物鏡形成的垂直光線再依次穿過眼鏡鏡片和哈特曼柵格會得到哈特曼光闌圖,利用樹莓派原裝鏡頭拍攝得到光線形成的哈特曼光闌圖。在樹莓派上對得到的哈特曼光闌圖進(jìn)行數(shù)據(jù)處理,并進(jìn)行一系列的公式的計算最終得到球鏡度等鏡片參數(shù)。
關(guān)鍵詞:眼鏡屈光度;樹莓派;哈特曼光闌;圖像處理
中圖分類號:TH741 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2018)27-0013-03
Abstract: A method of measuring optical parameters such as diopter of lens is presented. The vertical ray formed by point light source passing through collimating objective lens will get Hartmann diaphragm map when it passes through lens and Hartmann grid in turn. The Hartmann diaphragm of light is captured using the original Raspberry Pi lens. On the Raspberry Pi, the data of the Hartmann diaphragm are processed, and a series of formulas are used to calculate the lens parameters, such as the spherical degree of mirror.
Keywords: diopter of lens; Raspberry Pi; Hartmann diaphragm; image processing
眼鏡是矯正眼球屈光、保護(hù)眼睛健康,改善視力功能的一種特殊專用的醫(yī)療儀器,是驗光中主要的光學(xué)矯正方法。焦度計[1]是眼鏡鏡片檢測必不可少的國家強(qiáng)制性測量和檢測儀器,是確定眼鏡鏡片的中心點,檢測鏡片的頂點屈光度、柱面度數(shù)、柱面透鏡軸位角度和棱鏡度等透鏡參數(shù)的測量儀器?,F(xiàn)在的自動焦度計都帶有一個微型電腦,可以進(jìn)行處理數(shù)據(jù)等操作,獲得的主要參數(shù)有球面透鏡光焦度,柱面透鏡光焦度,柱面透鏡軸位和棱鏡光焦度。通過自動焦度計檢測和分析鏡片的過程實現(xiàn)了快速化和自動化,節(jié)約了大量的時間和精力,而且還減少了一些人為的測量讀數(shù)錯誤或者計算錯誤。
眼鏡屈光度的檢測主要包括四個步驟,即光斑圖像的獲取、圖像閾值分割及二值化[2]、光斑質(zhì)心的提取、光學(xué)參數(shù)的計算。目前,對于眼鏡屈光度檢測有許多不同的方法,但是均有其各自的優(yōu)點與缺點。利用莫爾偏折技術(shù)實現(xiàn)鏡片屈光度的測量能夠達(dá)到很高的測量精度,基本原理是根據(jù)被測物體所引起的莫爾條紋的偏移量來測量物體的特性,但莫爾條紋的處理比較復(fù)雜,而且處理時間較長,無法滿足工業(yè)測量的需求。而基于PSD等位置探測器的鏡片檢測方法雖然相對簡單,但是對于位置探測器的精度要求很高,并且難以保證測量誤差。另外還有其他使用以ARM和CCD為核心的嵌入式測量系統(tǒng),都可以實現(xiàn)鏡片測量的功能。而本文提出的鏡片測量方法,只需要將拍到的光斑圖像進(jìn)行特征點提取處理后,對光斑特征點之間的距離進(jìn)行計算從而得到相對精確的屈光度參數(shù),而不需要使用位置探測器等進(jìn)行鏡片中心點的定位和尋找,從而能夠大大節(jié)省圖像處理的時間,并且測量實驗所需的硬件價格低廉,比較適合于工業(yè)上的應(yīng)用。
1 儀器結(jié)構(gòu)
自動焦度計通常是由光學(xué)系統(tǒng)、精密機(jī)械、光電檢測裝置及電氣控制裝置等部分組成,涉及到光、電機(jī)和電力等方面的技術(shù)。圖1為自動焦度計的簡單的結(jié)構(gòu)示意圖,包括光源、準(zhǔn)直物鏡、待測鏡片的支座、哈特曼光闌板、成像板、圖像拍攝攝像頭、電子控制處理系統(tǒng)(樹莓派)以及LCD顯示屏幕(圖中未畫出)等。選擇了高亮度發(fā)光二極管作為點光源,通過準(zhǔn)直物鏡的光線能夠得到比較理想的平行光[3]。被測鏡片可能是遠(yuǎn)視鏡,近視鏡或漸進(jìn)多焦點鏡片。哈特曼光闌板柵格上有五個大孔和若干個小孔,每個小孔和打孔都是等間隔的,在光線穿過后會形成等間隔的光斑圖。
2 測量原理
自動焦度計的測量主要是測量光線穿過哈特曼光闌板上的柵格后落在成像板上的五個大光斑點以及其他一些小光斑點的位置和距離的變化[4]。測量原理如圖2所示,當(dāng)沒有被測鏡片或者鏡片是度數(shù)為0的透鏡時,光源穿過Hartmann光闌板的柵格投影到成像板上,形成的光斑點的位置是在位置1;而當(dāng)要測量的鏡片是為負(fù)透鏡(近視透鏡)時,平行光通過要測量的透鏡鏡片且會發(fā)生偏折現(xiàn)象,并且光斑的位置會被投影到位置2;待測鏡片為正透鏡(遠(yuǎn)視透鏡)時,平行光線經(jīng)過偏折光斑點位置會向中心點偏移[5]。控制攝像頭捕捉哈特曼光斑點圖像,對光斑圖像進(jìn)行去噪聲、區(qū)域分割、二值化等預(yù)處理,計算出光斑特征點的幾何坐標(biāo)參數(shù)和光斑中心的移動,然后用先前獲得的標(biāo)準(zhǔn)透鏡鏡片圖像坐標(biāo)數(shù)據(jù)執(zhí)行插值和誤差計算處理[6]。最后,計算被測透鏡鏡片的相關(guān)光學(xué)參數(shù)。
2.1 球鏡度(SPH)的測量計算
當(dāng)要測量的透鏡鏡片是球面鏡時,點光源穿過哈特曼光柵形成的光斑圖像的四個大孔的中心是圖3中的A、B、C和D四個點。已知哈特曼光柵十字準(zhǔn)線上兩個大孔中心之間的距離為d,待檢測透鏡鏡片會發(fā)生平行光線會聚或發(fā)散的情況,會使光斑圖像上的標(biāo)線上的兩光斑點的中心距離是d0,則待檢測透鏡鏡片的球鏡面頂焦度即為:
2.2 柱鏡度(CYL)的測量計算
3 實驗分析
3.1 實驗環(huán)境
Raspberry Pi[7]也可以作為一個嵌入式微型計算機(jī)進(jìn)行圖像處理,通過OpenCV就可以使用Raspberry Pi上的幀差異方法來檢測Raspberry Pi攝像頭捕獲的圖像,通過控制程序,可以直接控制執(zhí)行器。因此,將OpenCV與Raspberry Pi相結(jié)合來處理圖像,可以獲得一個簡潔高效的自動運(yùn)動檢測控制中心。
Raspberry Pi作為微型計算機(jī),只需打開顯示器和接通鼠標(biāo)、鍵盤等即可實現(xiàn)傳統(tǒng)計算機(jī)上實現(xiàn)的大部分功能,如文字處理,圖像處理等。所以使用Raspberry Pi進(jìn)行圖像處理有很多優(yōu)點。Raspberry Pi的運(yùn)算速度也非??欤⑶揖哂蠫PIO接口,能夠通過編寫程序?qū)崿F(xiàn)對GPIO接口的控制來實現(xiàn)對執(zhí)行器的控制。Raspberry Pi也相對比較便宜,所以使用Raspberry Pi作為圖像處理的核心平臺,與傳統(tǒng)的計算機(jī)相比較不管是在性價比還是在處理圖像功能的完整性上都有著獨(dú)特的優(yōu)勢。對于Raspberry Pi上的圖像處理,OpenCV是首選工具。OpenCV的全稱是(Open Source Computer Vision Library),它是一個基于開源發(fā)行的跨平臺計算機(jī)視覺庫,可以運(yùn)行在Linux、Windows、Mac OS等操作系統(tǒng)上。其特點是較高的移植性和多功能通用性,開源,跨平臺,兼容多種操作系統(tǒng)等。使用的編程語言是基于C函數(shù)以及少量的C++類語言構(gòu)成,還提供了與其他編程軟件語言的接口:例如,Python、Ruby、Matlab等編程語言,大大增強(qiáng)了其通用性和多功能性。
OpenCV的優(yōu)勢總結(jié)下來就是開源;代碼規(guī)范;具備了良好的可以后續(xù)的開發(fā)和改進(jìn)的能力。但是同樣的缺點也更加明顯,對于圖像分析研究的代碼運(yùn)行、分析圖像信息的運(yùn)行速度比較慢,并且運(yùn)行分析過程中的穩(wěn)定程度還不夠,程序相對也是更獨(dú)立,因此與其他相關(guān)函數(shù)庫不兼容;對于一些更具體的視覺問題的解決方案需要依靠硬件,有著相對較高的硬件要求[8]。OpenCV的主要目標(biāo)是構(gòu)建一個易于使用的計算機(jī)視覺框架,并將Raspberry Pi當(dāng)作嵌入式的微型計算機(jī)與之相結(jié)合起來,用于解決許多計算機(jī)視覺相關(guān)應(yīng)用的復(fù)雜問題。
3.2 實驗誤差分析
球鏡度測量誤差:球鏡度誤差可以分為內(nèi)部誤差和外部誤差,當(dāng)光線穿過鏡片時在鏡片內(nèi)部發(fā)生偏折時產(chǎn)生的誤差可當(dāng)作內(nèi)部誤差,而外部的誤差則指在成像板上得到的光斑圖像處理過程中測量計算光斑特征點距離時所產(chǎn)生的誤差。因此當(dāng)鏡片是度數(shù)很大的正透鏡(遠(yuǎn)視鏡)時,鏡片中心的厚度很大,需要對測得的球鏡度重新校正,已達(dá)到盡可能的消除誤差的目的。
棱鏡度測量誤差:通過分析可以知道棱鏡度的大小是由棱鏡頂角、折射率和入射光的入射角決定的。假如光線沒有垂直平面入射,也有可能會造成一定的誤差。
3.3 實驗結(jié)果分析
圖4是實驗采集的圖像,由于拍攝所使用的攝像頭的分辨率不夠高,同時也存在光的衍射、噪聲等問題,使得拍攝采集到的圖像有些模糊不清楚,質(zhì)量并不是很高,對于圖像的分析處理比較不利,對收集的圖像進(jìn)行去噪和二值化等預(yù)處理是非常必要的。在預(yù)處理過程中,使用OpenCV自帶的一些圖像處理模塊用于簡單的圖像處理,然后使用Python編程查找預(yù)處理后的光斑圖像上的五個大孔的中心坐標(biāo)點的位置。同時,計算從四個大孔中心到鏡片中心的距離。該算法的第一步是找到透鏡鏡片的中心,然后左右搜索另外同一個水平方向的三個大孔;接著上下搜索縱向的三個大孔。最后通過計算公式編程計算得到鏡片的球面透鏡焦度數(shù)、柱面透鏡焦度數(shù)、棱鏡度數(shù)等參數(shù)的值。不過通過對實驗整體過程的分析,攝像頭的分辨率不夠高,導(dǎo)致圖像的精準(zhǔn)度不夠,也對最終得到的實驗計算結(jié)果產(chǎn)生一些誤差;另一方面,使用Python編程計算速度還是不夠快,如果圖像的分辨率更高可能程序運(yùn)行時長。
4 結(jié)束語
本文提出了一種基于樹莓派微型計算機(jī)檢測鏡片屈光度的方法,利用樹莓派作為電子處理單元,通過對哈特曼光闌圖的分析和計算等能夠快速實現(xiàn)球鏡度、柱鏡度和散光度等鏡片參數(shù)的測量。相對比于簡單的單點測量法,解決了檢測鏡片的局限性;而莫爾偏折法以及朗奇光柵法對于圖像的處理又太過于復(fù)雜,同時測量的時間也長,并且非常依賴采樣點的準(zhǔn)確性,難以真正地在工業(yè)中使用。而根據(jù)本文提出的方法可以采用發(fā)光二極管、準(zhǔn)直物鏡、哈特曼光闌板、樹莓派微型計算機(jī)、LCD顯示屏、拍攝攝像頭等構(gòu)成一個自動的鏡片屈光度檢測的測量系統(tǒng),有較強(qiáng)的現(xiàn)實意義。整個系統(tǒng)能夠比較準(zhǔn)確的測量計算鏡片屈光度的光學(xué)參數(shù),而且整個系統(tǒng)所使用的設(shè)備價格均比較合理。
參考文獻(xiàn):
[1]馬玉瑩.自動焦度計的應(yīng)用[J].中國計量,2015,8:77-78.
[2]劉晨,張輝,柯玉軍.自動焦度計的研制[J].光學(xué)儀器,2003,12(25):40-44.
[3]何小群.基于圖像處理技術(shù)的自動焦度測量方法[D].重慶大學(xué),2009,6.
[4]劉國成,翟超.基于FPGA的哈特曼光斑圖像處理算法設(shè)計[D].中國科學(xué)技術(shù)大學(xué),2016,5.
[5]劉晨.焦度計綜述[J].應(yīng)用光學(xué),2004,25(1):55-57.
[6]吳澤楷,李恭強(qiáng),王文濤,等.基于改進(jìn)圓擬合算法的激光光斑中心檢測[J].激光與紅外,2016,46(3):347-350.
[7]柯博文.樹莓派(Raspberry Pi)實戰(zhàn)指南[M].北京:清華大學(xué)出版社,2015:142-175.
[8]毛星云,冷雪飛.OpenCV3編程入門[M].北京:電子工業(yè)出版社,2015:10-20.