何志豪 陶青川
(四川大學(xué)電子信息學(xué)院 四川 成都 610065)
隨著智能電表、用電信息采集終端等計(jì)量設(shè)備的大量推廣應(yīng)用,計(jì)量設(shè)備的質(zhì)量一致性問(wèn)題逐漸成為電力相關(guān)部門(mén)關(guān)注的熱點(diǎn)問(wèn)題。質(zhì)量一致性即要求被檢設(shè)備與標(biāo)準(zhǔn)設(shè)備的質(zhì)量狀況保持一致,主要包括外觀標(biāo)識(shí)、型號(hào)尺寸、印刷電路板元器件及性能指標(biāo)的一致性[1]。其中,尺寸檢測(cè)是近年來(lái)研究的熱點(diǎn)問(wèn)題之一[2],而在目前已知檢測(cè)方式中,智能電表現(xiàn)場(chǎng)尺寸檢測(cè)以人工方式為主,要求工作人員使用尺子測(cè)量智能電表的尺寸,然后將測(cè)量尺寸與標(biāo)準(zhǔn)尺寸進(jìn)行比對(duì),最后記錄檢測(cè)結(jié)果。這種人工檢測(cè)方式存在許多不足,比如檢測(cè)易受人工影響、效率低、自動(dòng)化程度差、檢測(cè)時(shí)間長(zhǎng)等。為了避免人工檢測(cè)工作中存在的弊端,不少專家學(xué)者進(jìn)行了一系列的基于機(jī)器視覺(jué)的計(jì)量設(shè)備一致性檢測(cè)相關(guān)研究。如鄧桂平等[3]設(shè)計(jì)了智能電能表質(zhì)量一致性檢測(cè)系統(tǒng),雖然該系統(tǒng)在一定程度上實(shí)現(xiàn)了對(duì)不同型號(hào)智能表的外觀型式、硬件PCB板和軟件通信規(guī)約三方面的一體化一致性檢測(cè),且解決了人工檢測(cè)所存在的一些問(wèn)題。但是由于相關(guān)檢測(cè)系統(tǒng)均需要復(fù)雜且昂貴的機(jī)械自動(dòng)化裝置,且系統(tǒng)多應(yīng)用于生產(chǎn)線上,暫無(wú)法滿足在現(xiàn)場(chǎng)工作環(huán)境中使用的需求。
本文針對(duì)上述智能電表現(xiàn)場(chǎng)一致性檢測(cè)工作中存在的問(wèn)題,結(jié)合電力部門(mén)現(xiàn)場(chǎng)工作的特點(diǎn)和尺寸測(cè)量的需求,提出一種基于安卓平臺(tái)的智能電表尺寸測(cè)量技術(shù)。該技術(shù)通過(guò)攝像機(jī)標(biāo)定、智能電表特征點(diǎn)提取及匹配、三維重建和尺寸計(jì)算,實(shí)現(xiàn)了在現(xiàn)場(chǎng)工作環(huán)境下智能電表的尺寸檢測(cè)。該系統(tǒng)不需要復(fù)雜又昂貴的機(jī)械自動(dòng)化裝置,測(cè)量準(zhǔn)確率和效率高,降低了檢測(cè)的人力成本,縮短了檢測(cè)時(shí)間,提升了檢測(cè)的自動(dòng)化水平,適用于現(xiàn)場(chǎng)測(cè)量。
在安卓平臺(tái)下實(shí)現(xiàn)智能電表尺寸測(cè)量,需要通過(guò)Android NDK將利用JNI編寫(xiě)實(shí)現(xiàn)尺寸測(cè)量算法的C/C++代碼嵌入到Android應(yīng)用程序中[4],然后在Android手持終端上進(jìn)行尺寸檢測(cè)工作。該系統(tǒng)實(shí)現(xiàn)過(guò)程如下:首先,利用JNI作為接口編寫(xiě)實(shí)現(xiàn)尺寸測(cè)量算法的C/C++代碼;其次,通過(guò)Android NDK進(jìn)行編譯,生成Java可調(diào)用的共享動(dòng)態(tài)庫(kù);然后編寫(xiě)Java端代碼,利用JNI接口調(diào)用動(dòng)態(tài)庫(kù);最后通過(guò)Android SDK生成安卓平臺(tái)下的應(yīng)用程序。系統(tǒng)框架設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)框架設(shè)計(jì)圖
文中利用安卓手持終端進(jìn)行圖像采集,在Java端調(diào)用尺寸測(cè)量算法完成測(cè)量工作,測(cè)量結(jié)果顯示在手持終端上。基于安卓平臺(tái)的智能電表尺寸測(cè)量,其核心是尺寸測(cè)量算法,算法主要包括攝像機(jī)標(biāo)定、特征點(diǎn)提取及匹配、三維重建和尺寸計(jì)算四個(gè)部分,算法流程如圖2所示。
圖2 尺寸測(cè)量算法流程圖
智能電表尺寸測(cè)量算法具體流程如下:首先,使用安卓手持終端進(jìn)行圖像采集,利用張正友標(biāo)定法完成攝像機(jī)標(biāo)定;其次,融合智能電表輪廓特征和Hu矩,從采集的圖像中識(shí)別智能電表,完成智能電表特征點(diǎn)提取和匹配;然后,根據(jù)攝像機(jī)標(biāo)定中二維圖像坐標(biāo)到三維世界坐標(biāo)的對(duì)應(yīng)關(guān)系,每個(gè)特征點(diǎn)匹配對(duì)都可以建立超定線性方程組,采用最小二乘法求取方程組解完成三維重建;最后,計(jì)算智能電表特征點(diǎn)間三維世界坐標(biāo)的歐式距離,完成尺寸測(cè)量。
2.1.1攝像機(jī)模型
攝像機(jī)標(biāo)定需要選取適當(dāng)?shù)臄z像機(jī)模型,之后通過(guò)相應(yīng)實(shí)驗(yàn)與計(jì)算來(lái)確定攝像機(jī)內(nèi)外部參數(shù)[5]。真實(shí)世界物體表面某特征點(diǎn)的三維幾何位置與其在二維圖像中對(duì)應(yīng)點(diǎn)之間的相互關(guān)系是由攝像機(jī)成像的幾何模型決定的,這些幾何模型的參數(shù)就是攝像機(jī)內(nèi)外部參數(shù)[6]。本文攝像機(jī)標(biāo)定算法中選取的攝像機(jī)模型是針孔攝像機(jī)模型[7],如圖3所示。
圖3 針孔攝像機(jī)模型
圖3的針孔模型中,有以下四個(gè)坐標(biāo)系:世界坐標(biāo)系OwXwYwZw、攝像機(jī)坐標(biāo)系OcXcYcZc、像面坐標(biāo)系O1xy和像素坐標(biāo)系O0uv,其中像面坐標(biāo)系與像素坐標(biāo)系統(tǒng)稱為圖像坐標(biāo)系。在本文針孔模型中,取空間點(diǎn)P,P點(diǎn)在上述四個(gè)坐標(biāo)系中的坐標(biāo)對(duì)應(yīng)為:(Xwp,Ywp,Zwp)、(Xcp,Ycp,Zcp)、(xp,yp)和(u,v)??臻g點(diǎn)P在像素坐標(biāo)系中坐標(biāo)值(u,v)變換到世界坐標(biāo)系中坐標(biāo)值(Xwp,Ywp,Zwp)需要經(jīng)過(guò)如下步驟:
步驟1像素坐標(biāo)系到像面坐標(biāo)系的變換,變換關(guān)系如下:
(1)
式中:(u0,v0)為O1點(diǎn)在像素坐標(biāo)系O0uv中的坐標(biāo);dx、dy為每個(gè)像素在x軸、y軸上對(duì)應(yīng)的真實(shí)物理尺寸。
步驟2像面坐標(biāo)系到攝像機(jī)坐標(biāo)系的變換,變換關(guān)系如下:
(2)
式中:c為攝像機(jī)的有效焦距;ρ為系數(shù)。
步驟3攝像機(jī)坐標(biāo)系到世界坐標(biāo)系的變換,變換關(guān)系如下:
(3)
式中:R為3×3階旋轉(zhuǎn)矩陣;T為3×1階平移矩陣。
步驟4像面坐標(biāo)系到世界坐標(biāo)系的變換,將式(1)和式(3)代入式(2)即可得到如下變換關(guān)系:
(4)
式中:ax=c/dx,為u軸上的等效焦距;ay=c/dy,為v軸上的等效焦距;M為3×4矩陣,稱為投影矩陣;M1由攝像機(jī)內(nèi)參數(shù)ax、ay、u0、v0決定,因其只與攝像機(jī)內(nèi)部結(jié)構(gòu)有關(guān),故稱為內(nèi)參數(shù)矩陣;M2由攝像機(jī)相對(duì)于世界坐標(biāo)系的外參數(shù)決定,稱為外參數(shù)矩陣[8]。
2.1.2標(biāo)定流程
攝像機(jī)模型中的攝像機(jī)內(nèi)外參數(shù)是通過(guò)相應(yīng)實(shí)驗(yàn)和計(jì)算才能得到,而實(shí)驗(yàn)和計(jì)算的過(guò)程被稱為攝像機(jī)標(biāo)定[9-10]。文中根據(jù)張正友標(biāo)定法,提出一種基于Opencv的攝像機(jī)標(biāo)定方法[11]。具體標(biāo)定流程如圖4所示。
圖4 攝像機(jī)標(biāo)定流程圖
這種方法首先需要在智能電表旁放置一個(gè)平面棋盤(pán)格標(biāo)定模板[12],利用安卓手持終端從不同角度采集3幅圖像;其次分別從采集的圖像中提取棋盤(pán)格角點(diǎn)信息,若角點(diǎn)信息提取成功則繼續(xù)提取亞像素角點(diǎn)信息,否則重新采集圖像進(jìn)行標(biāo)定;然后利用所有角點(diǎn)信息計(jì)算出攝像機(jī)內(nèi)外參數(shù)和畸變參數(shù);最后利用前述得到的攝像機(jī)內(nèi)外參數(shù)和畸變系數(shù)計(jì)算空間三維點(diǎn)反投影坐標(biāo),再根據(jù)反投影坐標(biāo)與亞像素角點(diǎn)坐標(biāo)之間的偏差評(píng)價(jià)標(biāo)定結(jié)果,完成攝像機(jī)標(biāo)定。
2.2.1Hu矩
矩是描述圖像特征的算子,Hu提出了不變矩的概念,Hu矩對(duì)圖像具有旋轉(zhuǎn)、平移和比例變化的不變性[13-14]。文中在灰度化、濾波和邊緣提取等圖像預(yù)處理的基礎(chǔ)上,提取圖像的Hu矩。
假設(shè)圖像f(x,y)大小為M×N,其(p+q)階幾何矩定義如下:
(5)
其(p+q)階幾何中心矩定義如下:
(6)
當(dāng)圖像發(fā)生旋轉(zhuǎn)和平移時(shí),mpq會(huì)隨之改變,upq雖具有平移不變性,但會(huì)因旋轉(zhuǎn)而發(fā)生改變,歸一化中心矩可以使幾何中心矩具有旋轉(zhuǎn)不變性和比例不變性,其定義如下[15]:
(7)
Hu利用二階和三階歸一化中心矩的線性組合構(gòu)成了7個(gè)具有旋轉(zhuǎn)、平移和比例不變性的不變矩,其定義如下:
φ1=η20+η02
(8)
(9)
φ3=(η30-3η12)2+(3η21-η03)2
(10)
φ4=(η30+η12)2+(η21+η03)2
(11)
φ5=(η30-3η12)(η30+η12)[(η30+η12)2-
3(η21+η03)2]+(3η21-η03)(η21+
η03)[3(η30+η12)2-(η21+η03)2]
(12)
φ6=(η20-η02)[(η30+η12)2-(η21+η03)2]+
4η11(η30+η12)(η21+η03)
(13)
φ7=(3η21-η03)(η30+η12)[(η30+η12)2-
3(η21+η03)2]+(3η12-η30)(η21+
η03)[3(η30+η12)2-(η21+η03)2]
(14)
令testhu={testhu[k]|k=1,2,…,7}表示待測(cè)圖像的Hu矩集合,temphu={temphu[k]|k=1,2,…,7}表示模板圖像的Hu矩集合。本文中,采用hudis來(lái)度量?jī)煞鶊D像的Hu矩相似度。
(15)
2.2.2特征點(diǎn)提取及匹配算法
智能電表特征點(diǎn)的提取及匹配也是進(jìn)行尺寸測(cè)量的關(guān)鍵步驟,特征點(diǎn)提取及匹配好壞直接影響尺寸測(cè)量準(zhǔn)確率??紤]到文中的尺寸測(cè)量技術(shù)是在現(xiàn)場(chǎng)工作環(huán)境下實(shí)現(xiàn),因此提出了一種融合智能電表輪廓特征和Hu矩進(jìn)行特征點(diǎn)提取及匹配的方法,算法具體步驟如下:
步驟1設(shè)模板圖像為temp和待測(cè)圖像為test,檢測(cè)test中的輪廓,形成候選輪廓集F。
步驟2設(shè)標(biāo)準(zhǔn)智能電表的寬為W,高為H,根據(jù)智能電表的矩形外觀特征和W/H比值刪選合適輪廓并更新候選輪廓集F。
步驟3計(jì)算temp的Hu矩,記為temphu;分別計(jì)算F中每個(gè)輪廓對(duì)應(yīng)區(qū)域的Hu矩,記為testhu,并建立索引。
步驟4利用式(15),將F中每個(gè)輪廓對(duì)應(yīng)的testhu與temphu進(jìn)行相似性度量,形成相似度度量集S。
步驟5將S中度量值按從小到大進(jìn)行排序,選取S的最小值來(lái)索引對(duì)應(yīng)輪廓,完成test中智能電表區(qū)域定位。
步驟6再選取一幅測(cè)試圖像,分別進(jìn)行步驟1-步驟5。
步驟7分別從兩幅測(cè)試圖像的智能電表區(qū)域中取最小外接矩形,并提取矩形的四個(gè)頂點(diǎn),形成頂點(diǎn)集D1和D2。
步驟8按照智能電表頂點(diǎn)對(duì)應(yīng)關(guān)系將D1、D2進(jìn)行排序,排序后D1中的點(diǎn)與D2中的點(diǎn)一一匹配,依次返回匹配結(jié)果,完成特征點(diǎn)提取及匹配。
空間任意一點(diǎn)在像素坐標(biāo)系中二維坐標(biāo)值變換到世界坐標(biāo)系中三維坐標(biāo)值的過(guò)程,稱為三維重建[16]。經(jīng)過(guò)上述攝像機(jī)標(biāo)定和特征點(diǎn)提取及匹配,可以得到智能電表目標(biāo)匹配點(diǎn)的二維像素坐標(biāo)值,再進(jìn)行三維重建便可求取三維空間坐標(biāo)值。假設(shè)一空間點(diǎn)P在世界坐標(biāo)系下的三維坐標(biāo)為(Xwp,Ywp,Zwp),經(jīng)過(guò)安卓手持終端在不同位置的拍攝,空間點(diǎn)P在位置1和位置2拍攝圖像中的像素坐標(biāo)分別取為p1(u1,v1)、p2(u2,v2),并由前述攝像機(jī)模型中投影矩陣給出如下定義:
(16)
假設(shè)位置1和位置2拍攝圖像對(duì)應(yīng)的投影矩陣分別為Mf、Ms,對(duì)于p1(u1,v1)和p2(u2,v2),可由式(4)分別得到:
(17)
(18)
式中:系數(shù)Zc1、Zc2分別為p1和p2在對(duì)應(yīng)攝像機(jī)坐標(biāo)系下的坐標(biāo)值。
式(17)和式(18)分別經(jīng)過(guò)變換和分解移項(xiàng)處理可消除系數(shù)Zc1、Zc2,得到位置1平面投影方程和位置2平面投影方程如下:
(19)
(20)
聯(lián)立式(19)和式(20)得到超定線性方程組,表示為:
(21)
為了便于表示,式(21)可記為下式:
AX=B
(22)
經(jīng)過(guò)攝像機(jī)標(biāo)定和特征點(diǎn)提取及匹配過(guò)程后,Mf、Ms、(u1,v1)、(u2,v2)都是已知量,式(21)中只有三個(gè)未知量,通過(guò)式(22)的求解可以得到空間點(diǎn)P的三維坐標(biāo)值。本文采用最小二乘法求取式(22)的一個(gè)近似解作為三維空間坐標(biāo)的一個(gè)估計(jì),近似解求解表達(dá)式如下[17]:
X=(ATA)-1ATB
(23)
經(jīng)過(guò)三維重建后,可以得到智能電表特征點(diǎn)的三維空間坐標(biāo),這些坐標(biāo)包含了特征點(diǎn)間真實(shí)物理尺寸信息,任意兩特征點(diǎn)的距離可以用歐式距離度量。假設(shè)用于標(biāo)示智能電表尺寸信息的特征點(diǎn)為P1(X1,Y1,Z1)、P2(X2,Y2,Z2)、P3(X3,Y3,Z3),P1P2和P1P3分別代表智能電表的寬、高,利用式(24)便可計(jì)算出智能電表尺寸。
(24)
文中技術(shù)實(shí)驗(yàn)的操作界面使用Java語(yǔ)言編寫(xiě),尺寸測(cè)量算法使用C++語(yǔ)言實(shí)現(xiàn),利用Android NDK、JNI實(shí)現(xiàn)Java端與算法的交互。實(shí)驗(yàn)開(kāi)發(fā)平臺(tái)是Android Studio 2.3.3,其中涉及到的NDK版本號(hào)為androidndkr16b,SDK版本號(hào)為26.0.2,OPENCV版本號(hào)為3.0.0。為了驗(yàn)證文中安卓平臺(tái)下尺寸測(cè)量技術(shù)的有效性,采用具有拍照功能的安卓終端作為實(shí)驗(yàn)設(shè)備,實(shí)驗(yàn)設(shè)備的配置信息如表1所示。采用國(guó)網(wǎng)上海市電力公司電力科學(xué)研究院提供的單相費(fèi)控智能電表(標(biāo)準(zhǔn)尺寸為157mm×111mm)作為實(shí)驗(yàn)待測(cè)物。
表1 實(shí)驗(yàn)設(shè)備配置信息表
利用前文所述實(shí)驗(yàn)設(shè)備和待測(cè)物進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)運(yùn)行界面和實(shí)驗(yàn)結(jié)果界面如圖5所示。
(a) 實(shí)驗(yàn)運(yùn)行界面圖 (b) 實(shí)驗(yàn)結(jié)果界面圖圖5 實(shí)驗(yàn)界面圖
此外,利用iPhone測(cè)距儀測(cè)量待測(cè)物作為對(duì)比實(shí)驗(yàn)。iPhone測(cè)距儀測(cè)量步驟如下:(1) 打開(kāi)iPhone的“測(cè)距儀”,此時(shí)攝像頭也會(huì)被打開(kāi);(2) 界面中會(huì)出現(xiàn)一個(gè)圓圈,圓圈中有一個(gè)小圓點(diǎn),將這個(gè)圓點(diǎn)對(duì)準(zhǔn)待測(cè)尺寸的一端,點(diǎn)擊按鈕選定起點(diǎn);(3) 沿著待測(cè)尺寸方向移動(dòng),當(dāng)小圓點(diǎn)對(duì)準(zhǔn)待測(cè)尺寸的末端時(shí),再點(diǎn)擊按鈕選定終點(diǎn),隨后測(cè)量結(jié)果就會(huì)顯示在屏幕中。按照上述步驟使用iPhone測(cè)距儀測(cè)量待測(cè)物尺寸,實(shí)驗(yàn)效果圖如圖6所示。
(a) 測(cè)量高實(shí)驗(yàn)圖 (b) 測(cè)量寬實(shí)驗(yàn)圖圖6 iPhone測(cè)距儀實(shí)驗(yàn)圖
利用本文方法和iPhone測(cè)距儀進(jìn)行多組實(shí)驗(yàn),分別隨機(jī)選取其中10組實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)結(jié)果如表2所示??梢钥闯?,本文方法測(cè)量值在標(biāo)準(zhǔn)值附近波動(dòng),誤差較小且測(cè)量精度為毫米級(jí),而iPhone測(cè)距儀僅能粗略測(cè)量智能電表的厘米級(jí)尺寸,測(cè)量值在標(biāo)準(zhǔn)值上下波動(dòng)較大,難以應(yīng)用于智能電表的實(shí)際尺寸測(cè)量工作中。相比之下,本文方法的技術(shù)測(cè)量精度、準(zhǔn)確率更高,滿足實(shí)際工作需求。
表2 實(shí)驗(yàn)結(jié)果對(duì)比表
根據(jù)表2數(shù)據(jù)通過(guò)計(jì)算得到兩種方法的測(cè)量高和寬的準(zhǔn)確率,如圖7、圖8所示??梢钥闯觯疚姆椒y(cè)量準(zhǔn)確率相對(duì)穩(wěn)定,最低值也保持在95%以上,而iPhone測(cè)距儀測(cè)量準(zhǔn)確率波動(dòng)較大,且準(zhǔn)確率大都略低于本文方法的測(cè)量準(zhǔn)確率。
圖7 測(cè)量高準(zhǔn)確率對(duì)比圖
圖8 測(cè)量寬準(zhǔn)確率對(duì)比圖
通過(guò)統(tǒng)計(jì)本文方法和iPhone測(cè)距儀實(shí)驗(yàn)時(shí)的平均測(cè)量準(zhǔn)確率和平均耗時(shí)來(lái)衡量?jī)煞N方法的測(cè)量性能,性能對(duì)比如表3所示。可以看出,iPhone測(cè)距儀的測(cè)量準(zhǔn)確率稍低且耗時(shí)長(zhǎng),這是因?yàn)樗臏y(cè)量精度為厘米級(jí)以及它的測(cè)量步驟更復(fù)雜。而本文方法的測(cè)量精度高至毫米級(jí),操作步驟較簡(jiǎn)易,故本文方法測(cè)量性能更佳,更能滿足智能電表的尺寸測(cè)量工作需求。
表3 測(cè)量性能對(duì)比表
針對(duì)當(dāng)前智能電表一致性檢測(cè)工作中存在的諸多問(wèn)題,同時(shí)結(jié)合電力部門(mén)現(xiàn)場(chǎng)工作的特點(diǎn)和尺寸測(cè)量的需求,本文提出了基于安卓平臺(tái)的智能電表尺寸測(cè)量技術(shù)。該技術(shù)通過(guò)攝像機(jī)標(biāo)定、智能電表特征點(diǎn)提取及匹配、三維重建和尺寸計(jì)算,實(shí)現(xiàn)了在現(xiàn)場(chǎng)工作環(huán)境下智能電表的尺寸檢測(cè)。系統(tǒng)不需要復(fù)雜又昂貴的機(jī)械自動(dòng)化固定裝置,操作簡(jiǎn)易,人機(jī)交互界面友好,測(cè)量精度可至毫米級(jí),測(cè)量準(zhǔn)確率高達(dá)95%以上,測(cè)量耗時(shí)短,提升了檢測(cè)的自動(dòng)化水平,適用于現(xiàn)場(chǎng)測(cè)量工作。與iPhone測(cè)距儀進(jìn)行實(shí)驗(yàn)對(duì)比,結(jié)果表明iPhone測(cè)距儀只能粗略測(cè)量尺寸且耗時(shí)長(zhǎng),而本文方法應(yīng)用于現(xiàn)場(chǎng)智能電表尺寸測(cè)量工作時(shí),測(cè)量性能更佳,能夠最大程度滿足現(xiàn)場(chǎng)工作的需求,具有很高的實(shí)用價(jià)值。