鄭曉昱, 周惠興,2*, 王舜, 呂燕楠, 趙亢, 李昂
(1.北京建筑大學機電與車輛工程學院, 北京 100044; 2.北京市建筑安全監(jiān)測工程技術(shù)研究中心, 北京 100044; 3.北京建筑大學土木與交通工程學院, 北京 100044; 4. 北京六建集團有限責任公司, 北京 100143)
建筑行業(yè)的尺寸測量是依據(jù)行業(yè)內(nèi)的驗收標準,借助測量工具對施工現(xiàn)場進行測量,從而得到真實測量數(shù)據(jù)的一個過程[1]。在房屋的實際驗收中,門窗洞尺寸的測量是整體室內(nèi)測量非常重要的一個環(huán)節(jié),超過允許范圍的誤差都會影響門窗的正常安裝,影響門窗的正常使用。在實際工程應用中,測量房屋的尺寸都是采用人工測量的方式進行,采用卷尺或激光傳感器作為工具進行測量。
近些年機器視覺不斷發(fā)展,應用的場景已經(jīng)從工業(yè)生產(chǎn)線擴張到建筑行業(yè)的施工測量中,與傳統(tǒng)人工測量相比,視覺測量技術(shù)精度更高,受各種因素干擾影響小。楊桂華[2]等提出了一種算法將基于形狀的模板匹配和金字塔搜索算法相結(jié)合,實現(xiàn)了對芯片引腳尺寸和缺陷的測量。劉斌等[3]針對絲網(wǎng)印刷樣板種類和樣式多,采用了一種由粗到細的測量測量策略,通過統(tǒng)計每一類待測目標模板的信息,按照統(tǒng)計出來的信息設置不同的閾值,提高了測量精度。丁凌等[4]提出了一種采用機器視覺技術(shù)的電池尺寸測量系統(tǒng),通過電機控制工業(yè)攝像頭沿著電池的邊緣進行尺寸測量。涂偉等[5]提出了一種橋梁撓度動態(tài)測量方法,采用相機拍照測量基準靶標來搭建橋梁撓度實時測量系統(tǒng)。周俊杰等[6]提出了基于Zernike矩的磨損邊緣檢測算法,從亞像素的視角出發(fā)提高了加工刀具磨損量系統(tǒng)的測量精度。孫亮等[7]建立了一種基于機器視覺的大型球墨鑄鐵管直徑測量系統(tǒng),提出了一種基于領域灰度值差異的邊緣檢測方法。曹鵬勇等[8]建立了標準齒輪模型得到了齒輪得參考點云,再將齒輪目標點云和參考點云配準后獲得齒廓偏差。
綜上所述,機器視覺技術(shù)已經(jīng)廣泛地運用在測量領域,從原來在工業(yè)生產(chǎn)線上對工件進行缺陷檢測和尺寸測量,擴展到日常生活中對不同物體的尺寸測量。針對實際場景中對于門窗洞的尺寸測量,提出一種基于激光點標定的視覺測量方法,通過計算兩個激光點間的圖上距離和實際距離之比,得到圖上每個像素點對應的物理世界的尺寸,通過圖像處理算法求出門窗洞的圖上尺寸,便可測量得到門窗洞在物理世界中的實際尺寸,并且該方法能夠?qū)崿F(xiàn)在不同視距下對門窗洞的尺寸進行測量。在測量算法上,針對拍攝到的實際照片,先采用模板匹配的方法找出激光點和門窗洞的兩個頂點的位置,再采用結(jié)合了大津算法的Canny算子檢測出門窗洞的邊緣,之后采用霍夫直線檢測計算得到邊緣直線表達式,通過四條直線表達式便可求出門窗洞四條邊的圖上距離,根據(jù)兩個激光點標定得到的圖像世界與物理世界的標尺,便可求出門窗洞的實際尺寸。最后通過在不同視距下的多組實驗驗證測量方法的誤差和穩(wěn)定性。
在實際的工程應用中,測量門窗洞的尺寸都是用卷尺或激光測距器作為工具,測量時對門窗洞高度和長度的測量采用三次測量取平均值的方法。這種測量方法簡單,快速,但這種方法也存在用局部測量數(shù)據(jù)表示整體測量結(jié)果、測量精度不高、位置高的地方測量不方便等問題。
為了提高測量門窗洞尺寸的速度和精度,本文提出了一種結(jié)合激光點標定和機器視覺的方法來測量門窗洞的尺寸。首先將兩個激光傳感器放置在攝像頭的兩側(cè),攝像頭正對墻面進行拍攝。打在墻面上兩個激光點間的實際距離就是兩個激光測距塊間的實際距離,通過圖像處理算法可以計算出兩個激光點間和門窗洞四條邊的圖上距離,通過已知的兩個激光點間的實際距離和圖上距離的比值,就可以計算出圖上每個像素點在物理世界的實際尺寸,之后就能測量出門窗洞四條邊的實際尺寸。本文采用雙激光點標定圖像世界與物理世界關系的原理如圖1所示。
矩形DEFG代表的是進行測量的基準墻面,矩形NOPQ代表的是基準墻面上需要進行尺寸測量的門窗洞,矩形HJKI代表的是攝像頭B的視場范圍也就是攝像頭在圖1中所示視距下能夠拍攝到照片的視野范圍。
圖1 測量原理Fig.1 Measurement principle
激光測距塊A和C分別放置在攝像頭B的兩側(cè),打到基準墻面上的激光點位置分別是L和M,當攝像頭和激光測距塊系統(tǒng)正對基準墻面進行測量時,有關系式
LAC=LLM
(1)
式(1)中:LAC為激光測距塊A和C之間的實際距離;LLM為激光測距塊打在墻面上點L和M之間的實際距離。
圖像的最小單位是像素點,激光點L和M在圖像上是多個像素點組成的圓形像素塊,通過數(shù)學方法計算找出激光點L和M在圖上的像素塊中心,之后就能檢測出兩個激光點之間的圖上距離DLM。
通過兩個激光點間的圖上距離和實際距離,便可以計算出圖上每個像素點的實際物理尺寸,再通過圖像處理算法計算得到待測門窗洞NOPQ四條邊的圖上距離,就可以通過激光標定得到的標尺計算得到待測門窗洞NOPQ四條邊的實際距離。計算公式為
(2)
式(2)中:比例系數(shù)I為實際距離與圖上距離的比值,也就是圖上每個像素點在物理世界中的實際尺寸;DLM為兩個激光點間的圖上距離;LLM為兩個激光點間的實際距離。DNO、DOP、DPQ、DQN為門窗洞NOPQ四條邊的圖上距離;LNO、LOP、LPQ、LQN為的是門窗洞NOPQ四條邊緣待測的實際距離。
檢測兩個激光點間距離和待測門窗洞四條邊的長度,采用的測量算法如圖2所示。
圖2 測量算法程序框圖Fig.2 Block diagram of measurement algorithm
攝像頭在拍攝照片的時候會存在畸變,導致物理世界中的直線在圖像中出現(xiàn)偏移。為了不使測量精度受畸變影響,采用張氏算法來矯正攝像頭的畸變。張氏算法不同于以往的方法需要復雜且精度高的相機標定模塊,只需要以打印出來的棋盤格紙為標定物,在不同視角不同視距下拍攝各種帶有棋盤格照片,以這些照片為基準便可矯正攝像頭的畸變[9]。
張氏算法矯正攝像頭畸變的過程如下:
(1)從不同的角度和視距拍攝一組已經(jīng)尺寸的棋盤格圖像。
(2)檢測圖像中棋盤格交叉處的點,得到這些點的像素坐標作為標定的基準點,而且棋盤格紙中黑白格的大小已知,全部交叉點的物理坐標也就已知。
(3)根據(jù)標定角點物理坐標值和像素坐標值的關系,求解出內(nèi)參矩陣、外參矩陣和畸變參數(shù)。
(4)通過求出的內(nèi)參矩陣、外參矩陣和畸變參數(shù)便可矯正攝像頭的畸變,矯正過畸變的攝像頭拍攝的實驗照片如圖3所示。
圖3 矯正畸變后拍攝的照片F(xiàn)ig.3 Photos taken after correction of distortion
本文研究對象是圖3中的門洞,不同于窗洞,門洞的上下部分的特征不一致,在算法上需要針對不同特征分別處理,優(yōu)先設計測量門洞尺寸的算法,所設計的整體算法簡化之后便可應用在窗洞的尺寸測量上。
圖像分割的目的是將圖像中待識別或者測量物體的邊緣特征從整體圖像中提取出來[10]。圖像分割最簡單直接的方式就是圖像二值處理,先將拍攝到的圖像轉(zhuǎn)換為灰度圖,再通過計算設定一個灰度值限,高于該值的灰度設為黑色,低于該值的灰度設為白色,最終顯示的圖像就只有黑白兩種特征,便于后續(xù)檢測邊緣特征。
本文中拍攝的圖像存在光照不均勻的問題,若采用傳統(tǒng)的全局閾值算法,無法找出一個合適的全局閾值來分割整體圖像。故從圖像的局部區(qū)域出發(fā),依據(jù)每個像素點領域范圍內(nèi)的不同像素塊的亮度值來確定該點上的閾值,將該閾值作為圖像分割的參考閾值。
先對像素點(x,y)周圍3×3區(qū)域內(nèi)九個像素點根據(jù)高斯函數(shù)按照他們離中心點(x,y)的距離采用亮度加權(quán)運算,得到像素點(x,y)局部領域塊亮度的高斯加權(quán)和,該值便可作為像素點(x,y)二值化的閾值限。
計算出像素點(x,y)分割的閾值限后再用處理圖像,公式為
(3)
式(3)中:dst(x,y)為二值分割后的亮度值;src(x,y)為原圖中的亮度值;T(x,y)為像素點(x,y)領域亮度的高斯加權(quán)和,并作為二值化處理的閾值限。二值分割處理后如圖4所示。
圖4 自適應閾值Fig.4 Adaptive threshold
模板匹配是一項定位模板圖片在待匹配圖片中位置的技術(shù)[11]。為了消除實際拍攝照片中門洞以外的物體干擾后續(xù)的測量,采用模板匹配可以定位激光點和門窗洞上方兩個頂點的圖上坐標,便于后續(xù)檢測門洞的邊緣特征和邊緣直線表達式,激光點的模板匹配過程如圖5所示。
首先將帶有激光點的圖像作為模板圖像,隨后從待匹配圖像的左上方開始切割出一塊與模板圖像相同大小的圖像,計算該區(qū)域兩個圖像之間的標準平方差,公式為
圖5 模板匹配Fig.5 Template matching
(4)
式(4)中:T(x,y)為該點模板圖像的亮度值;I(x,y)為該點待匹配圖像的亮度值;R(x,y)為該點兩個圖像的標準平方差。
之后再將模板圖像從左上方到右下方每次移動一個像素單位的距離,計算每個位置的標準平方差,計算得到的標準平方差越趨近0,則表示該位置的匹配度更好,標準平方差最小的位置就是模板圖片在待匹配圖像中的位置。
模板匹配只是找出模板圖像在待匹配圖像中的匹配區(qū)域,之后還需要進一步檢測出激光點的位置。抓住激光點的顏色和亮度特征,便可檢測出激光點中心的坐標。門洞左上角和右上角的模板匹配過程與激光點一致,最后抓住二值化圖像中門洞角邊緣黑白分割的特征,檢測出門洞左上方和右上方交點的像素坐標。
在實際測量應用中,門洞的底部情況總是比較復雜,會存在雜物的干擾,直接采用模板匹配的方法很難找到門洞底部的角點。在模板匹配找到門洞上部的兩個頂點之后,便以這兩個頂點為基準,對圖像進行邊緣處理,檢測出邊緣直線表達式。檢測直線的算法必須在已識別出邊緣的圖像上使用,基于大津算法的Canny邊緣算法過程如下:
(1)應用高斯模糊去除噪聲,平滑圖像。像素點(x,y)的亮度值為f(x,y),那么模糊處理后的亮度值將變?yōu)?/p>
(5)
式(5)中:σ2表示亮度的平均值。
(2)計算每個像素點水平、垂直和對角線方向的梯度值,梯度表示灰度值的變化程度和方向,計算公式為
(6)
(7)
式(6)中:Gx(x,y)為水平方向上的梯度值;Gy(x,y)為豎直方向上的梯度值;G(x,y)為梯度值的大?。沪葹樘荻戎档姆较?。
(3)非最大值抑制的目的是將較寬的邊緣篩選成一個像素點寬,它通過比較局部梯度從而保留局部最大梯度,同時去除其他較小的梯度值。
(4)傳統(tǒng)的Canny算法需要人工輸入高低閾值限來識別邊緣,為了提高邊緣檢測的準確率和速度,本文中采用大津算法來計算高低閾值限。
大津法又被稱為最大類間方差法,通過計算得到的閾值限將圖像轉(zhuǎn)化成前景和背景,計算兩個部分間灰度值對應的最大類間方差值,類間方差值最大時的閾值就是確定高低閾值限的閾值[12],類間方差的計算公式為
w0+w1=1
(8)
u=w0u0+w1u1
(9)
g=w0(u0-u)2+w1(u1-u)2
(10)
式中:w0表示前景像素點個數(shù)占總像素點個數(shù)的比例;w1表示背景像素點個數(shù)占總像素點個數(shù)的比例;u0表示前景像素平均灰度值;u1表示背景像素平均灰度值;u表示圖像總平均灰度值;g表示最終得到的類間方差。
(5)高低閾值限計算確定后,Canny算法的邊緣識別是通過與高低閾值限進行比較來確定的。高于高閾值限的像素點就是邊緣,低于低閾值限的就不是邊緣,處于高低閾值限間的,若與邊緣像素點鄰接,也可以被認定為是邊緣。
邊緣檢測出來的圖像如圖6所示。
圖6 基于大津算法的Canny邊緣檢測算法Fig.6 Canny edge detection algorithm based on Otsu algorithm
霍夫變換的原理是將直線從圖像空間中的表達式變換到參數(shù)空間中的表達式,之后在參數(shù)空間中統(tǒng)計最大值,從而檢測出邊緣直線[13]。
在圖像空間中直線的表達式為
y=kx+b
(11)
式(11)中:k表示直線的斜率;b表示截距。
在以k為橫坐標、b為縱坐標的坐標系中,圖像空間中的直線就變成了一個點,點就變成了一條直線,就把檢測直線的問題轉(zhuǎn)化為在參數(shù)空間中尋找交點。
霍夫直線檢測就是先從邊緣圖像中提取識別出來的邊緣上的眾多點,再將這些點轉(zhuǎn)化為參數(shù)空間中的多條直線,多條直線必定會相交于多個交點,統(tǒng)計每個交點經(jīng)過的直線數(shù)量,最多直線經(jīng)過的交點坐標即為圖像空間中霍夫變換檢測出來的直線參數(shù),從而可以檢測出邊緣直線的表達式。
采用上述的算法計算出門洞四條邊的直線表達式,最終求出門洞四個頂點的圖上坐標。兩個激光點的圖上坐標通過模板匹配方式求得,最終效果如圖7所示。
圖7 尺寸測量Fig.7 Size measurement
采用1 300萬像素的攝像頭,拍攝分辨率為3 840×2 880的照片,在3 m視距以內(nèi),拍攝的圖像中每個像素的尺寸都小于1 mm。攝像頭的兩端分別固定兩個激光測距傳感器作為實際測量的標定物。攝像頭和兩個激光傳感器的控制都是通過樹莓派來實現(xiàn)的,相比于電腦,樹莓派體積小,重量輕,便于在實際的環(huán)境中應用。
所拍攝照片的門洞長為1 470 mm,高為2 413 mm,在1 500、2 000、2 500、3 000 mm視距下對其進行測量,1 500 mm視距下的測量結(jié)果如表1所示。
表1 1 500 mm視距測量結(jié)果Table 1 1 500 mm line-of-sight measurement results
分析上表數(shù)據(jù)可得在1 500 mm視距下門洞尺寸測量的平均誤差為2.34 mm,最大誤差小于4 mm。不同視距下測量結(jié)果的誤差如表2所示。
上述實驗結(jié)果表明,本文所提出的激光點標定的測量方法測量的平均誤差為2.62 mm,最大誤差小于5 mm。
表2 多個視距下的測量誤差Table 2 Measurement error at multiple viewing distances
提出了一種結(jié)合激光點標定和機器視覺的測量方法,克服了傳統(tǒng)標定方法測量時需要在不同視距下重復標定的缺點,利用兩個激光點間實際距離不變的特性,實現(xiàn)在不同的視距下實現(xiàn)對門窗洞進行測量。
針對實際拍攝的照片中雜物較多,光照不均勻的問題,提出了一種結(jié)合了模板匹配和自適應邊緣檢測的算法,在復雜的圖像中檢測出待測的門洞尺寸。通過實驗驗證,整體測量系統(tǒng)的測量平均誤差為2.62 mm,最大誤差小于5 mm,可以應用在實際的測量之中。