王 葉,謝 雷
(1. 上海大學(xué) 理學(xué)院 物理系,上海 200444;2. 上海大學(xué) 通信與信息工程學(xué)院 通信工程系,上海 200444)
機(jī)器視覺(jué)(Robot Vision)顧名思義就是視覺(jué)感知機(jī)器的意思,現(xiàn)在屬于人工智能的一大技術(shù)發(fā)展方向,而某些計(jì)算機(jī)圖像分析系統(tǒng)定義為計(jì)算機(jī)視覺(jué)(Computer Vision).霍恩[1]描述的機(jī)器視覺(jué)系統(tǒng)架構(gòu)如圖1所示.
圖1 機(jī)器視覺(jué)系統(tǒng)架構(gòu)
圖1中的場(chǎng)景位于圓形光照區(qū)域內(nèi),成像儀器完成對(duì)場(chǎng)景的成像,機(jī)器視覺(jué)(軟件部分)對(duì)圖像進(jìn)行理解和解釋,這種理解和解釋都是基于符號(hào)和算法程序的.
機(jī)器視覺(jué)的核心問(wèn)題是:從一張或多張圖像中生成一個(gè)符號(hào)描述,該描述顯然和場(chǎng)景有關(guān),并且包含完成指定任務(wù)所需的全部信息.
機(jī)器視覺(jué)的基本任務(wù)是:1)建立起對(duì)成像過(guò)程的基本理解;2)探討對(duì)成像過(guò)程求逆的方法.具體實(shí)現(xiàn)時(shí),機(jī)器視覺(jué)系統(tǒng)有專用和通用的(指提供一般化的二次開發(fā)環(huán)境)之分,當(dāng)然還沒(méi)有一個(gè)能夠處理所有機(jī)器視覺(jué)問(wèn)題的通用系統(tǒng).
OpenMV是一種機(jī)器視覺(jué)系統(tǒng),開發(fā)者的目標(biāo)是要構(gòu)建機(jī)器視覺(jué)的類似“Arduino”的開發(fā)環(huán)境,這種系統(tǒng)為用戶和開發(fā)者提供友好簡(jiǎn)便的界面和封裝對(duì)一般用戶而言難度較大的算法.該系統(tǒng)自定義MicroPython語(yǔ)言并成為標(biāo)準(zhǔn)CPython實(shí)現(xiàn)的子集;硬件方面,系統(tǒng)基于STM32的嵌入式系統(tǒng)設(shè)計(jì)以及可擴(kuò)充的外圍和相應(yīng)底層封裝,最大限度內(nèi)嵌軟硬件一體化解決方案,這樣就為用戶提供了一個(gè)十分緊湊且通用的機(jī)器視覺(jué)開發(fā)平臺(tái)或環(huán)境.
本文采用的實(shí)際系統(tǒng)為OpenMV4(STM32H7),主頻達(dá)480 MHz,板載的光學(xué)傳感器(CMOS Camera VGA)型號(hào)是OV7725,最高幀速60 fps.
干涉條紋的成像不同于一般光照條件下的成像,尤其對(duì)于單純的邁克耳孫干涉儀的干涉條紋成像,本文把這種成像稱為“光源性”成像,原因在于成像過(guò)程及圖像特征主要由光源特性(光波),且為相干性決定,而將主要由非相干性的光強(qiáng)(照度)和場(chǎng)景變換決定的成像稱為“光場(chǎng)性”成像.這里的干涉條紋“場(chǎng)景”可以理解為在光源性的“相干場(chǎng)”的作用下形成的“景”.機(jī)器視覺(jué)的任務(wù)就如下面的過(guò)程描述:基于光源的成像過(guò)程的基本理解→光學(xué)圖像特性→圖像形態(tài)特征→符號(hào)描述,圖2給出了本文設(shè)計(jì)的干涉條紋機(jī)器視覺(jué)實(shí)現(xiàn)路線圖.
圖2 機(jī)器視覺(jué)實(shí)現(xiàn)路線圖
干涉是光波動(dòng)性的結(jié)果,時(shí)間相干性告訴我們,某一時(shí)刻兩束光的疊加是兩個(gè)有限長(zhǎng)波列(或一個(gè)有限長(zhǎng)波列的分振幅波列)的疊加,不同時(shí)刻的光波波列是隨機(jī)的,即空間某個(gè)位置的疊加光波的相位差可以認(rèn)為是恒定的,但是疊加幅度會(huì)有起伏,邁克耳孫干涉儀干涉條紋圖像具有如下特點(diǎn):
1) 在激光(如He-Ne激光)邁克耳孫干涉儀中,假設(shè)雙點(diǎn)源球面波干涉的理想情況下(虛光源都位于中心軸上),圖像的形狀特征為同心圓[2],在一些情況下偏離為橢圓或其它形狀[2,3],以灰度圖描述,指圖像中的等灰度軌跡為圓或橢圓;
2) 由于干涉儀的“點(diǎn)源”成像特性,光源中心(源點(diǎn))容易在干涉圖像中心形成灰度飽和,干涉圖像視場(chǎng)的中心坐標(biāo)難以測(cè)定;
3) 由于共軸性偏離,在光程差變化時(shí),干涉圖像中心會(huì)發(fā)生漂移,即干涉條紋會(huì)發(fā)生整體漂移[4](或偏心);
4) 條紋可見(jiàn)度存在起伏,主要原因?yàn)?擴(kuò)展光束形成的光斑強(qiáng)度不均勻和不對(duì)稱;光源的量子和相干特性增加了全局和局域性灰度噪聲.
如果認(rèn)為隨機(jī)變量是遍歷的,則對(duì)某處干涉強(qiáng)度采取統(tǒng)計(jì)平均是可行的(它們的強(qiáng)度是相關(guān)的,會(huì)影響相位精度),相當(dāng)于作低通濾波,然而可能最好的辦法是使用中值濾波,它既能衰減隨機(jī)噪聲又不會(huì)使邊界模糊,故這里采用3×3格子的中值濾波作為圖像預(yù)處理,下面給出進(jìn)一步的算法.
如圖3,設(shè)視場(chǎng)坐標(biāo)系xOy,c代表以中心O為圓心的圓環(huán)(并不代表實(shí)際的干涉環(huán)),在c上取P1、P2、P3和P44個(gè)坐標(biāo)點(diǎn),分別位于坐標(biāo)軸上對(duì)稱位置,設(shè)它們的圖像灰度值為g1、g2、g3和g4,從P1、P2、P3和P4出發(fā)沿各自徑向存在長(zhǎng)度為ld的線段,命名為灰度采樣線L.
圖3 視場(chǎng)坐標(biāo)系
定義與圓環(huán)c相關(guān)的灰度統(tǒng)計(jì)量為
[g1(x0+d,0)-g3(-x0-d,0)]2+
[g1(x0+d,0)-g4(0,-y0-d)]2+
[g2(0,y0+d)-g3(-x0-d,0)]2+
[g2(0,y0+d)-g4(0,-y0-d)]2+
[g3(-x0-d,0)-g4(0,-y0-d)]2}
(1)
(ld>0的偶數(shù)),為4個(gè)方向的灰度采樣線中任意兩條之間所有對(duì)應(yīng)點(diǎn)之間的灰度差的平方和,在理想條件下,干涉條紋中心必和圓環(huán)c的中心重合,即位于視場(chǎng)原點(diǎn)上.若圓環(huán)c存在整體漂移,則c(i=0,j=0的情況)變?yōu)槟硞€(gè)漂移位置cij(i、j不同時(shí)為零的情況)時(shí)的灰度統(tǒng)計(jì)量為
(2)
(Δg)ij=[g1(x0+i+d,j)-g2(i,y0+j+d)]2+
[g1(x0+i+d,j)-g3(-x0+i-d,j)]2+
[g1(x0+i+d,j)-g4(i,-y0+j-d)]2+
[g2(i,y0+j+d)-g3(-x0+i-d,j)]2+
[g2(i,y0+j+d)-g4(i,-y0+j-d)]2+
[g3(-x0+i-d,j)-g4(i,-y0+j-d)]2
(3)
在規(guī)定的漂移范圍內(nèi)的相似性判據(jù)為:(∑Δg)ij取最小值時(shí)所對(duì)應(yīng)的圓環(huán)cij,此圓環(huán)可能已偏離視場(chǎng)中心.
又當(dāng)存在縱向縮放時(shí)的表達(dá)式(干涉環(huán)發(fā)生橢圓化形變)為
(4)
(Δg)ijv=[g1(x0+i+d,j)-
g2(i,y0+j+d+v)]2+[g1(x0+i+d,j)-
g3(-x0+i-d,j)]2+[g1(x0+i+d,j)-
g4(i,-y0+j-d-v)]2+[g2(i,y0+j+d+v)-
g3(-x0+i-d,j)]2+[g2(i,y0+j+d+v)-
g4(i,-y0+j-d-v)]2+[g3(-x0+i-d,j)-
g4(i,-y0+j-d-v)]2
(5)
上述算法可以稱為干涉條紋同心形態(tài)搜索算法,依據(jù)是基于灰度采樣線的灰度統(tǒng)計(jì)量所給出的干涉條紋的形態(tài)相似性,此算法又是建立在“光源性”成像的干涉條紋特征及其動(dòng)態(tài)變化基礎(chǔ)之上的.為了計(jì)算方便,實(shí)際輸出結(jié)果的描述為cij或cijv的外接矩形及其參數(shù).
定義4個(gè)灰度采樣線形態(tài)特征模板T1—T4(用含有l(wèi)d個(gè)元素的行向量表示),分別表示灰度最大,灰度最小,灰度從大到小和灰度從小到大,后兩者也稱為等差向量,模板的大小可變,但是元素總數(shù)為大于1的奇數(shù),模板定義如表1所示.灰度形態(tài)特征模板表示為
表1 灰度形態(tài)特征模板
Ti=[tij],i=1,2,3,4;j=1,2,…,ld
(6)
T1、T2灰度模板由每幀圖像或有效區(qū)域的灰度最大值和灰度最小值構(gòu)成其元素,T3、T4灰度模板由對(duì)灰度采樣線進(jìn)行灰度值重整得到,在灰度最大值和最小值之間進(jìn)行均勻分割,模板T3線性減小,模板T4線性增加.
定義距離
(7)
lj是灰度采樣線L的第j個(gè)元素,tij是Ti模板的第j個(gè)元素.匹配判據(jù)為(Dist.)i中最小的那個(gè),即取最相似的模板Ti作為輸出
To=Ti→minmun of(Dist.)i
(8)
由于存在4個(gè)方向的灰度采樣線,實(shí)際計(jì)算時(shí)應(yīng)對(duì)4條采樣線上對(duì)應(yīng)元素求平均值后再計(jì)算模板和距離.經(jīng)連續(xù)采集兩幀圖像,根據(jù)兩個(gè)輸出模板的前后相互關(guān)系可以得到精度取決于幀速和條紋移動(dòng)速度的冒出陷入的條紋合計(jì)總數(shù)(為正時(shí)表示冒出,為負(fù)時(shí)表示陷入,可以有小數(shù),即條紋細(xì)分?jǐn)?shù)).
當(dāng)幀速vf和條紋移動(dòng)速率vfr大約滿足
(9)
可以用圖4的模板變換關(guān)系確定干涉條紋的冒出和陷入的計(jì)數(shù)規(guī)則,精度為0.5個(gè)條紋,冒出加0.5,陷入減0.5.
圖4 過(guò)極值點(diǎn)的條紋計(jì)數(shù)規(guī)則
基于OpenMV4(STM32H7),實(shí)驗(yàn)采用兩種方案進(jìn)行,首先是對(duì)仿真干涉條紋進(jìn)行檢測(cè),圖5為用Matlab 編制的一段仿真干涉條紋陷入的視頻中的11幀畫面(每隔20幀取一幅),放映速度為每秒25幀,將攝像頭對(duì)準(zhǔn)電腦顯示屏上播放的仿真干涉條紋并使部分中心級(jí)條紋位于視場(chǎng)區(qū)域,仿真干涉條紋存在可辨中心并易于和視場(chǎng)中心重合,而且仿真干涉條紋的視場(chǎng)亮度比較穩(wěn)定且條紋不會(huì)發(fā)生漂移或抖動(dòng),本系統(tǒng)通過(guò)手機(jī)發(fā)送字符命令啟動(dòng)測(cè)量,測(cè)量所得環(huán)數(shù)和仿真條紋的陷入環(huán)數(shù)嚴(yán)格相符.接著進(jìn)行真實(shí)的邁克爾遜干涉實(shí)驗(yàn),OpenMV機(jī)器視覺(jué)集成開發(fā)環(huán)境和干涉條紋檢測(cè)系統(tǒng)軟件界面如圖6所示(與仿真干涉條紋檢測(cè)實(shí)驗(yàn)所用系統(tǒng)相同),在抓圖之前,程序關(guān)閉了自動(dòng)增益和白平衡,并將對(duì)比度、亮度和飽和度設(shè)為合適值.從界面視頻窗口觀察到的干涉條紋中心確實(shí)處于飽和狀態(tài),但并不影響本算法的執(zhí)行,實(shí)驗(yàn)方法和步驟如下:
圖5 仿真干涉條紋
1) 按一般的激光邁克爾遜干涉儀調(diào)整步驟調(diào)整干涉條紋至圓環(huán)狀態(tài)并大致位于毛玻璃屏中央;
2) 打開OpenMV機(jī)器視覺(jué)系統(tǒng)應(yīng)用程序(圖6),連接設(shè)備(OpenMV4)后啟動(dòng)執(zhí)行主程序,程序進(jìn)入主循環(huán)后循環(huán)執(zhí)行干涉條紋同心形態(tài)搜索算法.將攝像頭對(duì)準(zhǔn)干涉條紋所處毛玻璃顯示屏,調(diào)整攝像頭位置(也可以細(xì)微調(diào)整干涉條紋整體平移)使視場(chǎng)中的方框所代表的區(qū)域取在中心區(qū)域外可辨的第一個(gè)干涉環(huán)和第二個(gè)干涉環(huán)之間,方框的大小可以預(yù)先設(shè)置,攝像頭和毛玻璃屏之間的距離和干涉條紋聚焦成像及大小也可以調(diào)整;
圖6 OpenMV機(jī)器視覺(jué)集成開發(fā)環(huán)境及干涉條紋檢測(cè)系統(tǒng)
3) 觀察干涉條紋同心形態(tài)搜索算法的計(jì)算結(jié)果,即步驟2的調(diào)整過(guò)程可以將式(1)給出的(∑Δg)c值變?yōu)樽钚r(shí)作為調(diào)整到位的判據(jù)(灰度采樣的相似性判據(jù));
4) 發(fā)送干涉條紋測(cè)量命令,程序進(jìn)入環(huán)數(shù)測(cè)量子循環(huán),此后有三種干涉條紋同心形態(tài)搜索算法可供選擇運(yùn)用,即式(1)的搜索算法對(duì)應(yīng)于干涉條紋始終為圓且不發(fā)生漂移的情況,式(2)、(3)的搜索算法對(duì)應(yīng)于干涉條紋始終為圓且發(fā)生微小漂移的情況,式(4)、(5)的搜索算法對(duì)應(yīng)于干涉條紋發(fā)生微小漂移且存在縱向橢圓化的情況,如果干涉儀及機(jī)器視覺(jué)系統(tǒng)處于比較理想的狀態(tài),則干涉條紋整體在測(cè)量過(guò)程中始終保持圓環(huán)形狀并且沒(méi)有漂移,灰度采樣線所在的圓環(huán)c(方框)固定不變,如果灰度采樣線所在的圓環(huán)(方框)既發(fā)生漂移或又存在橢圓化(變成矩形框),則圖像的cij或cijv參數(shù)發(fā)生變化.每幀圖像的基于灰度采樣線的干涉條紋形態(tài)用形態(tài)特征模板Ti描述,比較相鄰兩幀圖像的干涉條紋形態(tài)特征模板的變化即可得到干涉條紋動(dòng)態(tài)變化情況.由于測(cè)量是自動(dòng)進(jìn)行的,只要干涉條紋發(fā)生冒出或陷入(相位差發(fā)生變化),被檢區(qū)域(方框附近)的干涉條紋形態(tài)就將發(fā)生變化,體現(xiàn)在極值處,冒出陷入的半環(huán)數(shù)以及總的環(huán)數(shù)將被檢出.
軟件界面視頻窗口左上角的數(shù)據(jù)表示程序處理當(dāng)前幀的用時(shí)為66 ms,右下角顯示的FPS為幀速,當(dāng)前為每秒15幀,它是處理時(shí)間的倒數(shù).在式(9)的條件下實(shí)驗(yàn)測(cè)得陷入的干涉條紋總數(shù)為18.5個(gè),和仿真干涉條紋檢測(cè)相比,實(shí)際干涉條紋檢測(cè)實(shí)驗(yàn)的整體光場(chǎng)強(qiáng)度和干涉條紋對(duì)比度隨時(shí)間可能發(fā)生變化,由于程序采用連續(xù)幀的兩個(gè)模板比較算法以及全域?qū)ΨQ多采樣線灰度統(tǒng)計(jì)算法,緩慢的光場(chǎng)強(qiáng)度變化以及對(duì)比度漲落就被上述算法抑制或平均掉了,另外手動(dòng)測(cè)量會(huì)因?yàn)榇嬖趤?lái)回抖動(dòng)等原因而產(chǎn)生計(jì)數(shù)誤差,如果這種抖動(dòng)發(fā)生在峰頂或谷底附近且速率低于幀速,則可能的過(guò)峰或過(guò)谷過(guò)程將被正常檢測(cè)而不會(huì)遺漏,其它地方發(fā)生的抖動(dòng)對(duì)當(dāng)前精度下(0.5個(gè)條紋)的測(cè)量結(jié)果沒(méi)有影響.
下面通過(guò)實(shí)驗(yàn)數(shù)據(jù)進(jìn)一步說(shuō)明測(cè)量的有效性以及進(jìn)行誤差分析.表2為實(shí)際手動(dòng)測(cè)得的冒出和陷入50個(gè)條紋的數(shù)據(jù),每隔5個(gè)條紋記錄一次數(shù)據(jù),為保證標(biāo)稱環(huán)數(shù)差Δk的準(zhǔn)確性,采用錄制視頻后復(fù)播查數(shù)據(jù)的方式記錄數(shù)據(jù).
表2 干涉條紋測(cè)量數(shù)據(jù)
實(shí)驗(yàn)過(guò)程符合或作如下假設(shè):各次測(cè)量Oi或Ii互不相關(guān);Oi或Ii符合正態(tài)分布,方差相同;過(guò)極值點(diǎn)的條紋計(jì)數(shù)規(guī)則(圖4)有效可靠或失效概率較低(如由極值點(diǎn)附近發(fā)生快速抖動(dòng)導(dǎo)致漏檢的概率較低,而過(guò)極值點(diǎn)來(lái)回抖動(dòng)一次如果雙向都漏檢則不會(huì)產(chǎn)生影響).
從表2數(shù)據(jù)看出,條紋冒出過(guò)程的檢測(cè)非常準(zhǔn)確,條紋陷入過(guò)程的第2個(gè)記錄和第1個(gè)記錄之間出現(xiàn)漏檢,接著記錄數(shù)據(jù)保持準(zhǔn)確,直到第9個(gè)記錄和第8個(gè)記錄之間又出現(xiàn)漏檢,說(shuō)明偶然出現(xiàn)的漏檢將可能使數(shù)據(jù)發(fā)生整體偏移(數(shù)據(jù)2-8),如果運(yùn)用逐差法處理數(shù)據(jù),將可能使這種整體偏移得到某種程度的校準(zhǔn),如設(shè):
x1i=Oi+5-Oi,
x2i=Ii+5-Ii,i=1,…,5
(10)
采用所謂的簡(jiǎn)易算法計(jì)算A類不確定度,即將逐差后的結(jié)果x1i和x2i視為等精度測(cè)量值,則A類不確定度計(jì)算公式為
t0.95≈2.78
和
(11)
表3 數(shù)據(jù)處理
冒出25個(gè)條紋的檢測(cè)結(jié)果:
x1=25.0±0.5(個(gè))
(12)
陷入25個(gè)條紋的檢測(cè)結(jié)果:
x2=-24.7±0.6(個(gè))
(13)
顯然,適當(dāng)增加測(cè)量次數(shù)(環(huán)數(shù))及選擇合適的逐差間隔將提高測(cè)量可靠性和減小相對(duì)誤差,對(duì)于干涉條紋相移型檢測(cè)方法來(lái)說(shuō)其實(shí)際的條紋檢測(cè)精度(條紋細(xì)分度)一般不高(裸眼檢測(cè)原則上有1個(gè)環(huán)的視覺(jué)誤差),因此產(chǎn)生的B類不確定度相對(duì)于A類數(shù)值上可能較大.
本文就干涉條紋檢測(cè)技術(shù)提出了一種基于機(jī)器視覺(jué)的解決方案,發(fā)現(xiàn)研究過(guò)程對(duì)于光干涉及其干涉條紋有了更深的理解,技術(shù)上需要指出的是,本文只是基于OpenMV的軟硬件一體化架構(gòu),運(yùn)用其內(nèi)嵌的一些基本的圖像采集和處理函數(shù)結(jié)合MicroPython或Python語(yǔ)言來(lái)對(duì)自己提出的核心算法進(jìn)行編程,主要考慮的是效率、魯棒和實(shí)時(shí)性,從實(shí)現(xiàn)路線圖來(lái)看,也可以采用其他方法,比如基于開源的OpenCV圖像處理以及計(jì)算機(jī)視覺(jué)算法,組件自己的攝像頭和嵌入式系統(tǒng)等,最后形成的都是某種意義上專用的干涉條紋檢測(cè)系統(tǒng).另一方面,從干涉條
紋檢測(cè)技術(shù)的歷史來(lái)看,此類干涉條紋的檢測(cè)經(jīng)歷了從模擬方式(包括裸眼)到數(shù)字化[5-8],從一維光電信號(hào)到二維圖像處理的過(guò)程[9],并且和現(xiàn)代光電子及通信技術(shù)進(jìn)行了融合[10,11],隨著人工智能時(shí)代的到來(lái),干涉條紋的檢測(cè)技術(shù)會(huì)得到很大發(fā)展.