鄭曉昱, 周惠興,2*, 王舜, 呂燕楠, 趙亢, 李昂
(1.北京建筑大學(xué)機(jī)電與車輛工程學(xué)院, 北京 100044; 2.北京市建筑安全監(jiān)測(cè)工程技術(shù)研究中心, 北京 100044; 3.北京建筑大學(xué)土木與交通工程學(xué)院, 北京 100044; 4. 北京六建集團(tuán)有限責(zé)任公司, 北京 100143)
建筑行業(yè)的尺寸測(cè)量是依據(jù)行業(yè)內(nèi)的驗(yàn)收標(biāo)準(zhǔn),借助測(cè)量工具對(duì)施工現(xiàn)場(chǎng)進(jìn)行測(cè)量,從而得到真實(shí)測(cè)量數(shù)據(jù)的一個(gè)過(guò)程[1]。在房屋的實(shí)際驗(yàn)收中,門(mén)窗洞尺寸的測(cè)量是整體室內(nèi)測(cè)量非常重要的一個(gè)環(huán)節(jié),超過(guò)允許范圍的誤差都會(huì)影響門(mén)窗的正常安裝,影響門(mén)窗的正常使用。在實(shí)際工程應(yīng)用中,測(cè)量房屋的尺寸都是采用人工測(cè)量的方式進(jìn)行,采用卷尺或激光傳感器作為工具進(jìn)行測(cè)量。
近些年機(jī)器視覺(jué)不斷發(fā)展,應(yīng)用的場(chǎng)景已經(jīng)從工業(yè)生產(chǎn)線擴(kuò)張到建筑行業(yè)的施工測(cè)量中,與傳統(tǒng)人工測(cè)量相比,視覺(jué)測(cè)量技術(shù)精度更高,受各種因素干擾影響小。楊桂華[2]等提出了一種算法將基于形狀的模板匹配和金字塔搜索算法相結(jié)合,實(shí)現(xiàn)了對(duì)芯片引腳尺寸和缺陷的測(cè)量。劉斌等[3]針對(duì)絲網(wǎng)印刷樣板種類和樣式多,采用了一種由粗到細(xì)的測(cè)量測(cè)量策略,通過(guò)統(tǒng)計(jì)每一類待測(cè)目標(biāo)模板的信息,按照統(tǒng)計(jì)出來(lái)的信息設(shè)置不同的閾值,提高了測(cè)量精度。丁凌等[4]提出了一種采用機(jī)器視覺(jué)技術(shù)的電池尺寸測(cè)量系統(tǒng),通過(guò)電機(jī)控制工業(yè)攝像頭沿著電池的邊緣進(jìn)行尺寸測(cè)量。涂偉等[5]提出了一種橋梁撓度動(dòng)態(tài)測(cè)量方法,采用相機(jī)拍照測(cè)量基準(zhǔn)靶標(biāo)來(lái)搭建橋梁撓度實(shí)時(shí)測(cè)量系統(tǒng)。周俊杰等[6]提出了基于Zernike矩的磨損邊緣檢測(cè)算法,從亞像素的視角出發(fā)提高了加工刀具磨損量系統(tǒng)的測(cè)量精度。孫亮等[7]建立了一種基于機(jī)器視覺(jué)的大型球墨鑄鐵管直徑測(cè)量系統(tǒng),提出了一種基于領(lǐng)域灰度值差異的邊緣檢測(cè)方法。曹鵬勇等[8]建立了標(biāo)準(zhǔn)齒輪模型得到了齒輪得參考點(diǎn)云,再將齒輪目標(biāo)點(diǎn)云和參考點(diǎn)云配準(zhǔn)后獲得齒廓偏差。
綜上所述,機(jī)器視覺(jué)技術(shù)已經(jīng)廣泛地運(yùn)用在測(cè)量領(lǐng)域,從原來(lái)在工業(yè)生產(chǎn)線上對(duì)工件進(jìn)行缺陷檢測(cè)和尺寸測(cè)量,擴(kuò)展到日常生活中對(duì)不同物體的尺寸測(cè)量。針對(duì)實(shí)際場(chǎng)景中對(duì)于門(mén)窗洞的尺寸測(cè)量,提出一種基于激光點(diǎn)標(biāo)定的視覺(jué)測(cè)量方法,通過(guò)計(jì)算兩個(gè)激光點(diǎn)間的圖上距離和實(shí)際距離之比,得到圖上每個(gè)像素點(diǎn)對(duì)應(yīng)的物理世界的尺寸,通過(guò)圖像處理算法求出門(mén)窗洞的圖上尺寸,便可測(cè)量得到門(mén)窗洞在物理世界中的實(shí)際尺寸,并且該方法能夠?qū)崿F(xiàn)在不同視距下對(duì)門(mén)窗洞的尺寸進(jìn)行測(cè)量。在測(cè)量算法上,針對(duì)拍攝到的實(shí)際照片,先采用模板匹配的方法找出激光點(diǎn)和門(mén)窗洞的兩個(gè)頂點(diǎn)的位置,再采用結(jié)合了大津算法的Canny算子檢測(cè)出門(mén)窗洞的邊緣,之后采用霍夫直線檢測(cè)計(jì)算得到邊緣直線表達(dá)式,通過(guò)四條直線表達(dá)式便可求出門(mén)窗洞四條邊的圖上距離,根據(jù)兩個(gè)激光點(diǎn)標(biāo)定得到的圖像世界與物理世界的標(biāo)尺,便可求出門(mén)窗洞的實(shí)際尺寸。最后通過(guò)在不同視距下的多組實(shí)驗(yàn)驗(yàn)證測(cè)量方法的誤差和穩(wěn)定性。
在實(shí)際的工程應(yīng)用中,測(cè)量門(mén)窗洞的尺寸都是用卷尺或激光測(cè)距器作為工具,測(cè)量時(shí)對(duì)門(mén)窗洞高度和長(zhǎng)度的測(cè)量采用三次測(cè)量取平均值的方法。這種測(cè)量方法簡(jiǎn)單,快速,但這種方法也存在用局部測(cè)量數(shù)據(jù)表示整體測(cè)量結(jié)果、測(cè)量精度不高、位置高的地方測(cè)量不方便等問(wèn)題。
為了提高測(cè)量門(mén)窗洞尺寸的速度和精度,本文提出了一種結(jié)合激光點(diǎn)標(biāo)定和機(jī)器視覺(jué)的方法來(lái)測(cè)量門(mén)窗洞的尺寸。首先將兩個(gè)激光傳感器放置在攝像頭的兩側(cè),攝像頭正對(duì)墻面進(jìn)行拍攝。打在墻面上兩個(gè)激光點(diǎn)間的實(shí)際距離就是兩個(gè)激光測(cè)距塊間的實(shí)際距離,通過(guò)圖像處理算法可以計(jì)算出兩個(gè)激光點(diǎn)間和門(mén)窗洞四條邊的圖上距離,通過(guò)已知的兩個(gè)激光點(diǎn)間的實(shí)際距離和圖上距離的比值,就可以計(jì)算出圖上每個(gè)像素點(diǎn)在物理世界的實(shí)際尺寸,之后就能測(cè)量出門(mén)窗洞四條邊的實(shí)際尺寸。本文采用雙激光點(diǎn)標(biāo)定圖像世界與物理世界關(guān)系的原理如圖1所示。
矩形DEFG代表的是進(jìn)行測(cè)量的基準(zhǔn)墻面,矩形NOPQ代表的是基準(zhǔn)墻面上需要進(jìn)行尺寸測(cè)量的門(mén)窗洞,矩形HJKI代表的是攝像頭B的視場(chǎng)范圍也就是攝像頭在圖1中所示視距下能夠拍攝到照片的視野范圍。

圖1 測(cè)量原理Fig.1 Measurement principle
激光測(cè)距塊A和C分別放置在攝像頭B的兩側(cè),打到基準(zhǔn)墻面上的激光點(diǎn)位置分別是L和M,當(dāng)攝像頭和激光測(cè)距塊系統(tǒng)正對(duì)基準(zhǔn)墻面進(jìn)行測(cè)量時(shí),有關(guān)系式
LAC=LLM
(1)
式(1)中:LAC為激光測(cè)距塊A和C之間的實(shí)際距離;LLM為激光測(cè)距塊打在墻面上點(diǎn)L和M之間的實(shí)際距離。
圖像的最小單位是像素點(diǎn),激光點(diǎn)L和M在圖像上是多個(gè)像素點(diǎn)組成的圓形像素塊,通過(guò)數(shù)學(xué)方法計(jì)算找出激光點(diǎn)L和M在圖上的像素塊中心,之后就能檢測(cè)出兩個(gè)激光點(diǎn)之間的圖上距離DLM。
通過(guò)兩個(gè)激光點(diǎn)間的圖上距離和實(shí)際距離,便可以計(jì)算出圖上每個(gè)像素點(diǎn)的實(shí)際物理尺寸,再通過(guò)圖像處理算法計(jì)算得到待測(cè)門(mén)窗洞NOPQ四條邊的圖上距離,就可以通過(guò)激光標(biāo)定得到的標(biāo)尺計(jì)算得到待測(cè)門(mén)窗洞NOPQ四條邊的實(shí)際距離。計(jì)算公式為
(2)
式(2)中:比例系數(shù)I為實(shí)際距離與圖上距離的比值,也就是圖上每個(gè)像素點(diǎn)在物理世界中的實(shí)際尺寸;DLM為兩個(gè)激光點(diǎn)間的圖上距離;LLM為兩個(gè)激光點(diǎn)間的實(shí)際距離。DNO、DOP、DPQ、DQN為門(mén)窗洞NOPQ四條邊的圖上距離;LNO、LOP、LPQ、LQN為的是門(mén)窗洞NOPQ四條邊緣待測(cè)的實(shí)際距離。
檢測(cè)兩個(gè)激光點(diǎn)間距離和待測(cè)門(mén)窗洞四條邊的長(zhǎng)度,采用的測(cè)量算法如圖2所示。

圖2 測(cè)量算法程序框圖Fig.2 Block diagram of measurement algorithm
攝像頭在拍攝照片的時(shí)候會(huì)存在畸變,導(dǎo)致物理世界中的直線在圖像中出現(xiàn)偏移。為了不使測(cè)量精度受畸變影響,采用張氏算法來(lái)矯正攝像頭的畸變。張氏算法不同于以往的方法需要復(fù)雜且精度高的相機(jī)標(biāo)定模塊,只需要以打印出來(lái)的棋盤(pán)格紙為標(biāo)定物,在不同視角不同視距下拍攝各種帶有棋盤(pán)格照片,以這些照片為基準(zhǔn)便可矯正攝像頭的畸變[9]。
張氏算法矯正攝像頭畸變的過(guò)程如下:
(1)從不同的角度和視距拍攝一組已經(jīng)尺寸的棋盤(pán)格圖像。
(2)檢測(cè)圖像中棋盤(pán)格交叉處的點(diǎn),得到這些點(diǎn)的像素坐標(biāo)作為標(biāo)定的基準(zhǔn)點(diǎn),而且棋盤(pán)格紙中黑白格的大小已知,全部交叉點(diǎn)的物理坐標(biāo)也就已知。
(3)根據(jù)標(biāo)定角點(diǎn)物理坐標(biāo)值和像素坐標(biāo)值的關(guān)系,求解出內(nèi)參矩陣、外參矩陣和畸變參數(shù)。
(4)通過(guò)求出的內(nèi)參矩陣、外參矩陣和畸變參數(shù)便可矯正攝像頭的畸變,矯正過(guò)畸變的攝像頭拍攝的實(shí)驗(yàn)照片如圖3所示。

圖3 矯正畸變后拍攝的照片F(xiàn)ig.3 Photos taken after correction of distortion
本文研究對(duì)象是圖3中的門(mén)洞,不同于窗洞,門(mén)洞的上下部分的特征不一致,在算法上需要針對(duì)不同特征分別處理,優(yōu)先設(shè)計(jì)測(cè)量門(mén)洞尺寸的算法,所設(shè)計(jì)的整體算法簡(jiǎn)化之后便可應(yīng)用在窗洞的尺寸測(cè)量上。
圖像分割的目的是將圖像中待識(shí)別或者測(cè)量物體的邊緣特征從整體圖像中提取出來(lái)[10]。圖像分割最簡(jiǎn)單直接的方式就是圖像二值處理,先將拍攝到的圖像轉(zhuǎn)換為灰度圖,再通過(guò)計(jì)算設(shè)定一個(gè)灰度值限,高于該值的灰度設(shè)為黑色,低于該值的灰度設(shè)為白色,最終顯示的圖像就只有黑白兩種特征,便于后續(xù)檢測(cè)邊緣特征。
本文中拍攝的圖像存在光照不均勻的問(wèn)題,若采用傳統(tǒng)的全局閾值算法,無(wú)法找出一個(gè)合適的全局閾值來(lái)分割整體圖像。故從圖像的局部區(qū)域出發(fā),依據(jù)每個(gè)像素點(diǎn)領(lǐng)域范圍內(nèi)的不同像素塊的亮度值來(lái)確定該點(diǎn)上的閾值,將該閾值作為圖像分割的參考閾值。
先對(duì)像素點(diǎn)(x,y)周圍3×3區(qū)域內(nèi)九個(gè)像素點(diǎn)根據(jù)高斯函數(shù)按照他們離中心點(diǎn)(x,y)的距離采用亮度加權(quán)運(yùn)算,得到像素點(diǎn)(x,y)局部領(lǐng)域塊亮度的高斯加權(quán)和,該值便可作為像素點(diǎn)(x,y)二值化的閾值限。
計(jì)算出像素點(diǎn)(x,y)分割的閾值限后再用處理圖像,公式為
(3)
式(3)中:dst(x,y)為二值分割后的亮度值;src(x,y)為原圖中的亮度值;T(x,y)為像素點(diǎn)(x,y)領(lǐng)域亮度的高斯加權(quán)和,并作為二值化處理的閾值限。二值分割處理后如圖4所示。

圖4 自適應(yīng)閾值Fig.4 Adaptive threshold
模板匹配是一項(xiàng)定位模板圖片在待匹配圖片中位置的技術(shù)[11]。為了消除實(shí)際拍攝照片中門(mén)洞以外的物體干擾后續(xù)的測(cè)量,采用模板匹配可以定位激光點(diǎn)和門(mén)窗洞上方兩個(gè)頂點(diǎn)的圖上坐標(biāo),便于后續(xù)檢測(cè)門(mén)洞的邊緣特征和邊緣直線表達(dá)式,激光點(diǎn)的模板匹配過(guò)程如圖5所示。
首先將帶有激光點(diǎn)的圖像作為模板圖像,隨后從待匹配圖像的左上方開(kāi)始切割出一塊與模板圖像相同大小的圖像,計(jì)算該區(qū)域兩個(gè)圖像之間的標(biāo)準(zhǔn)平方差,公式為

圖5 模板匹配Fig.5 Template matching

(4)
式(4)中:T(x,y)為該點(diǎn)模板圖像的亮度值;I(x,y)為該點(diǎn)待匹配圖像的亮度值;R(x,y)為該點(diǎn)兩個(gè)圖像的標(biāo)準(zhǔn)平方差。
之后再將模板圖像從左上方到右下方每次移動(dòng)一個(gè)像素單位的距離,計(jì)算每個(gè)位置的標(biāo)準(zhǔn)平方差,計(jì)算得到的標(biāo)準(zhǔn)平方差越趨近0,則表示該位置的匹配度更好,標(biāo)準(zhǔn)平方差最小的位置就是模板圖片在待匹配圖像中的位置。
模板匹配只是找出模板圖像在待匹配圖像中的匹配區(qū)域,之后還需要進(jìn)一步檢測(cè)出激光點(diǎn)的位置。抓住激光點(diǎn)的顏色和亮度特征,便可檢測(cè)出激光點(diǎn)中心的坐標(biāo)。門(mén)洞左上角和右上角的模板匹配過(guò)程與激光點(diǎn)一致,最后抓住二值化圖像中門(mén)洞角邊緣黑白分割的特征,檢測(cè)出門(mén)洞左上方和右上方交點(diǎn)的像素坐標(biāo)。
在實(shí)際測(cè)量應(yīng)用中,門(mén)洞的底部情況總是比較復(fù)雜,會(huì)存在雜物的干擾,直接采用模板匹配的方法很難找到門(mén)洞底部的角點(diǎn)。在模板匹配找到門(mén)洞上部的兩個(gè)頂點(diǎn)之后,便以這兩個(gè)頂點(diǎn)為基準(zhǔn),對(duì)圖像進(jìn)行邊緣處理,檢測(cè)出邊緣直線表達(dá)式。檢測(cè)直線的算法必須在已識(shí)別出邊緣的圖像上使用,基于大津算法的Canny邊緣算法過(guò)程如下:
(1)應(yīng)用高斯模糊去除噪聲,平滑圖像。像素點(diǎn)(x,y)的亮度值為f(x,y),那么模糊處理后的亮度值將變?yōu)?/p>
(5)
式(5)中:σ2表示亮度的平均值。
(2)計(jì)算每個(gè)像素點(diǎn)水平、垂直和對(duì)角線方向的梯度值,梯度表示灰度值的變化程度和方向,計(jì)算公式為
(6)
(7)
式(6)中:Gx(x,y)為水平方向上的梯度值;Gy(x,y)為豎直方向上的梯度值;G(x,y)為梯度值的大小;θ為梯度值的方向。
(3)非最大值抑制的目的是將較寬的邊緣篩選成一個(gè)像素點(diǎn)寬,它通過(guò)比較局部梯度從而保留局部最大梯度,同時(shí)去除其他較小的梯度值。
(4)傳統(tǒng)的Canny算法需要人工輸入高低閾值限來(lái)識(shí)別邊緣,為了提高邊緣檢測(cè)的準(zhǔn)確率和速度,本文中采用大津算法來(lái)計(jì)算高低閾值限。
大津法又被稱為最大類間方差法,通過(guò)計(jì)算得到的閾值限將圖像轉(zhuǎn)化成前景和背景,計(jì)算兩個(gè)部分間灰度值對(duì)應(yīng)的最大類間方差值,類間方差值最大時(shí)的閾值就是確定高低閾值限的閾值[12],類間方差的計(jì)算公式為
w0+w1=1
(8)
u=w0u0+w1u1
(9)
g=w0(u0-u)2+w1(u1-u)2
(10)
式中:w0表示前景像素點(diǎn)個(gè)數(shù)占總像素點(diǎn)個(gè)數(shù)的比例;w1表示背景像素點(diǎn)個(gè)數(shù)占總像素點(diǎn)個(gè)數(shù)的比例;u0表示前景像素平均灰度值;u1表示背景像素平均灰度值;u表示圖像總平均灰度值;g表示最終得到的類間方差。
(5)高低閾值限計(jì)算確定后,Canny算法的邊緣識(shí)別是通過(guò)與高低閾值限進(jìn)行比較來(lái)確定的。高于高閾值限的像素點(diǎn)就是邊緣,低于低閾值限的就不是邊緣,處于高低閾值限間的,若與邊緣像素點(diǎn)鄰接,也可以被認(rèn)定為是邊緣。
邊緣檢測(cè)出來(lái)的圖像如圖6所示。

圖6 基于大津算法的Canny邊緣檢測(cè)算法Fig.6 Canny edge detection algorithm based on Otsu algorithm
霍夫變換的原理是將直線從圖像空間中的表達(dá)式變換到參數(shù)空間中的表達(dá)式,之后在參數(shù)空間中統(tǒng)計(jì)最大值,從而檢測(cè)出邊緣直線[13]。
在圖像空間中直線的表達(dá)式為
y=kx+b
(11)
式(11)中:k表示直線的斜率;b表示截距。
在以k為橫坐標(biāo)、b為縱坐標(biāo)的坐標(biāo)系中,圖像空間中的直線就變成了一個(gè)點(diǎn),點(diǎn)就變成了一條直線,就把檢測(cè)直線的問(wèn)題轉(zhuǎn)化為在參數(shù)空間中尋找交點(diǎn)。
霍夫直線檢測(cè)就是先從邊緣圖像中提取識(shí)別出來(lái)的邊緣上的眾多點(diǎn),再將這些點(diǎn)轉(zhuǎn)化為參數(shù)空間中的多條直線,多條直線必定會(huì)相交于多個(gè)交點(diǎn),統(tǒng)計(jì)每個(gè)交點(diǎn)經(jīng)過(guò)的直線數(shù)量,最多直線經(jīng)過(guò)的交點(diǎn)坐標(biāo)即為圖像空間中霍夫變換檢測(cè)出來(lái)的直線參數(shù),從而可以檢測(cè)出邊緣直線的表達(dá)式。
采用上述的算法計(jì)算出門(mén)洞四條邊的直線表達(dá)式,最終求出門(mén)洞四個(gè)頂點(diǎn)的圖上坐標(biāo)。兩個(gè)激光點(diǎn)的圖上坐標(biāo)通過(guò)模板匹配方式求得,最終效果如圖7所示。

圖7 尺寸測(cè)量Fig.7 Size measurement
采用1 300萬(wàn)像素的攝像頭,拍攝分辨率為3 840×2 880的照片,在3 m視距以內(nèi),拍攝的圖像中每個(gè)像素的尺寸都小于1 mm。攝像頭的兩端分別固定兩個(gè)激光測(cè)距傳感器作為實(shí)際測(cè)量的標(biāo)定物。攝像頭和兩個(gè)激光傳感器的控制都是通過(guò)樹(shù)莓派來(lái)實(shí)現(xiàn)的,相比于電腦,樹(shù)莓派體積小,重量輕,便于在實(shí)際的環(huán)境中應(yīng)用。
所拍攝照片的門(mén)洞長(zhǎng)為1 470 mm,高為2 413 mm,在1 500、2 000、2 500、3 000 mm視距下對(duì)其進(jìn)行測(cè)量,1 500 mm視距下的測(cè)量結(jié)果如表1所示。

表1 1 500 mm視距測(cè)量結(jié)果Table 1 1 500 mm line-of-sight measurement results
分析上表數(shù)據(jù)可得在1 500 mm視距下門(mén)洞尺寸測(cè)量的平均誤差為2.34 mm,最大誤差小于4 mm。不同視距下測(cè)量結(jié)果的誤差如表2所示。
上述實(shí)驗(yàn)結(jié)果表明,本文所提出的激光點(diǎn)標(biāo)定的測(cè)量方法測(cè)量的平均誤差為2.62 mm,最大誤差小于5 mm。

表2 多個(gè)視距下的測(cè)量誤差Table 2 Measurement error at multiple viewing distances
提出了一種結(jié)合激光點(diǎn)標(biāo)定和機(jī)器視覺(jué)的測(cè)量方法,克服了傳統(tǒng)標(biāo)定方法測(cè)量時(shí)需要在不同視距下重復(fù)標(biāo)定的缺點(diǎn),利用兩個(gè)激光點(diǎn)間實(shí)際距離不變的特性,實(shí)現(xiàn)在不同的視距下實(shí)現(xiàn)對(duì)門(mén)窗洞進(jìn)行測(cè)量。
針對(duì)實(shí)際拍攝的照片中雜物較多,光照不均勻的問(wèn)題,提出了一種結(jié)合了模板匹配和自適應(yīng)邊緣檢測(cè)的算法,在復(fù)雜的圖像中檢測(cè)出待測(cè)的門(mén)洞尺寸。通過(guò)實(shí)驗(yàn)驗(yàn)證,整體測(cè)量系統(tǒng)的測(cè)量平均誤差為2.62 mm,最大誤差小于5 mm,可以應(yīng)用在實(shí)際的測(cè)量之中。