国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于雙目視覺的不規(guī)則堆料體積測量研究

2020-04-29 13:02丁嗣禹苗紅霞齊本勝
計算機測量與控制 2020年4期
關(guān)鍵詞:視差雙目像素點

丁嗣禹,苗紅霞,齊本勝,張 衡

(河海大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 常州 213022)

0 引言

在工業(yè)生產(chǎn)過程中經(jīng)常遇到需要快速測量堆狀物料(如煤堆、沙堆、垃圾堆等)體積的情況[1],對于各種規(guī)則物體,體積計算有明確的計算公式,計算過程簡單方便,但是對于不規(guī)則堆體的體積測算就比較困難了。而且此類堆料一般體積較大且較重,直接測量體積難度較大。傳統(tǒng)的人工稱重等體積測量方法耗費人力、速度慢、誤差大,不能滿足實際的工業(yè)需求。近年來雙目視覺技術(shù)因其具有非接觸、高精度、快速、自動化等特點受到越來越廣泛的關(guān)注[2],同時雙目視覺技術(shù)的測距原理可以借鑒到物體的體積測量領(lǐng)域,因此本文擬采用雙目視覺技術(shù)測量不規(guī)則堆料的體積。大部分的雙目視覺測體積的方法都需要借助結(jié)構(gòu)光[3-4],但是這種基于結(jié)構(gòu)光的體積測量方法在測量靜態(tài)堆料時需要保證激光掃描儀以固定的速率平穩(wěn)地滑動,直至完全掃描堆料才能獲得堆料表面所有點的信息,對電機等配套驅(qū)動設(shè)施有較高要求,系統(tǒng)操作復(fù)雜并且成本較高[5-6]。目前,也有不借助結(jié)構(gòu)光的雙目視覺測體積文獻[7],該文獻采用特征匹配的方法完成立體匹配,接著對堆積體進行三維重建,最后利用基于角點的方法進行堆積體的體積計算,該方法在三維重建的基礎(chǔ)上計算堆積體的體積,算法實現(xiàn)難度較大。為了降低算法難度,本文采用半全局塊匹配的算法對堆料圖像進行立體匹配求出視差圖,并采用中值濾波和最鄰近插值法對視差圖中的空洞進行填充;在計算出堆料表面點的深度信息及三維坐標信息后,采用改進的OTSU閾值分割算法提取目標區(qū)域,接著計算出堆體的底面積、平均高度,最后求出堆體的體積。本文提出的方案硬件方面只需要在堆料上方架設(shè)兩個攝像頭,盡可能保證攝像頭垂直地面拍攝即可,軟件方面無需對堆體進行三維重建,直接通過對相機采集到的堆料圖像進行處理即可得出堆料的體積,本方案具有成本低、編程簡單,操作方便的優(yōu)點。

1 方案流程

雙目視覺測距原理如圖1所示,兩個相機從不同方向同時獲取物體的圖像,提取物點在兩幅圖像上的像素坐標,找到兩幅圖像上的對應(yīng)點,計算出對應(yīng)點之間的視差。只要得到了對應(yīng)像素點之間的視差d(d=xl-xr,其中xl、xr是兩個成像點在左右兩個像面上距離圖像左邊緣的距離)就可以根據(jù)相似三角形定理求出物點在實際世界坐標系下的坐標[8]。當獲取物體表面點的三維坐標以后,可以通過數(shù)據(jù)處理計算出物體的體積。

圖1 雙目視覺測量原理

本文提出的基于雙目視覺的不規(guī)則堆料體積測量方案的流程如圖2所示。在開始測量前要先對兩個相機進行雙目標定,獲取相機的內(nèi)外參數(shù)便于后續(xù)的圖像處理。將兩個CCD相機垂直置于待測物料的正上方,保證堆料全部置于兩個相機的公共視場中。啟動相機采集堆料的俯視圖像,并將采集到的左右圖像對發(fā)送到計算機上,進行后續(xù)的處理。首先,采用opencv中的半全局塊匹配算法(SGBM算法)對校正后的圖像對進行立體匹配計算出視差圖,并對視差圖進行空洞填充;接著根據(jù)視差信息計算出物體表面三維點云坐標;然后采用改進的OTSU閾值分割算法提取目標區(qū)域;最后結(jié)合三維點云信息和堆料區(qū)域信息計算出堆料的平均高度和面積,進而計算出堆料的體積。

圖2 系統(tǒng)流程圖

2 視差圖和三維點云坐標的獲取

2.1 視差圖的獲取

本文先對兩個CCD相機進行雙目標定,以建立圖像像素坐標系和世界坐標系之間的關(guān)系,這是三維信息獲取的一個重要環(huán)節(jié)[9]。本文采用7*8(30 mm*30 mm)的標定板,從不同的角度拍攝標定板得到30對標定板圖像。接著采用張正友標定法[10]對采集到的標定板圖像進行雙目標定,獲取相機的內(nèi)外參數(shù)。其中,內(nèi)參數(shù)包括4個內(nèi)參數(shù)、5個畸變系數(shù)(3個徑向畸變和2個切向畸變),外參數(shù)包括1個旋轉(zhuǎn)矩陣和1個平移向量。由于實際操作中兩個相機的放置無法達到絕對平行,導(dǎo)致偏離理想的雙目系統(tǒng)。因此本文采用Bouguet算法對采集到的圖像進行立體校正,建立理想雙目系統(tǒng),即兩個攝像機圖像平面平行,光軸和圖像平面平行。同時,對相機的徑向畸變和切向畸變進行修正。完成立體匹配和畸變修正后得到的堆料圖像就是標準雙目測距系統(tǒng)中的圖像。對立體校正后的圖像進行立體匹配就可以計算出左右兩幅圖像中堆料表面點對應(yīng)的視差值。

視差是指左右雙目圖像中,兩個匹配塊中心像素的水平距離,而視差圖是以左圖像為基準,儲存左右圖像對視差值的圖像。對立體校正后的圖像對進行立體匹配求取視差圖像。本文采用opencv庫中改進的半全局匹配算法semi-global block matching(SGBM)算法計算堆料圖像的視差圖。SGBM算法是在經(jīng)典的半全局匹配算法semi-global block matching (SGM)算法的基礎(chǔ)上改進而來的。SGBM算法將SGM算法中每一個代價值進行塊運算后用于SGM算法進行視差優(yōu)化,接著進行后處理。該算法通過選取每個像素點的視差disparity,組成一個disparity map,設(shè)置一個和disparity map相關(guān)的全局能量函數(shù),使這個能量函數(shù)最小化,以達到求解每個像素最優(yōu)disparity的目的。SGBM算法主要分為4個步驟:預(yù)處理、代價計算、動態(tài)規(guī)劃和后處理,調(diào)整這4個步驟的相關(guān)參數(shù)以獲得較好的視差圖。本文計算出的視差圖如圖3所示,其中圖3(c)為原始視差圖轉(zhuǎn)換為CV_8UC1格式的圖像。

圖3 計算視差圖

2.2 視差圖空洞填充

采用SGBM算法進行立體匹配后計算出的視差圖中不可避免地會存在很多空洞,即誤匹配的點,如圖3(c)所示。因此需要用合適的視差值將視差圖中的空洞填充上。本文預(yù)先設(shè)定了一個最小視差閾值minDisparity,將所有值小于最小視差閾值的像素點視為空洞點。為了填充視差圖中的空洞點,本文先對視差圖進行一次中值濾波,將小連通域的空洞用鄰域窗內(nèi)所有像素值的灰度值的中值填充上,過濾掉視差圖中的離散點,也增強視差圖深度信息的連續(xù)性。采用小窗口的中值濾波不僅可以將小鄰域的空洞填充上,而且還可以保證圖像不會被過度平滑。接著采用最鄰近插值算法將剩余的較大鄰域的空洞填充上,用空洞點的周圍像素點的值來近似填充該空洞點。最鄰近插值算法空洞填充的核心思想是將空洞點的值與其附近的4個鄰近點的值進行比較,用距離空洞點最近的點的像素灰度值填充空洞點的像素值。本文的視差圖中,堆料表面的點視差變化較緩,可以用空洞點周圍的像素點對空洞點進行近似填充。同時,中值濾波算法和最鄰近插值算法運算量小,實現(xiàn)速度快??斩刺畛浜蟮囊暡顖D如圖4所示。

圖4 空洞填充后的視差圖

2.3 三維點云坐標的獲取

在獲得物體表面點的視差信息之后就可利用視差和深度之間的數(shù)學(xué)關(guān)系求出物體表面點在世界坐標系下的三維坐標值,完成空間定位。由雙目相機的測量原理可知,視差d和物點的深度Z存在如下關(guān)系:

(1)

其中:B相機的基線距離,f為相機焦距。

根據(jù)視差與物點深度之間存在的反比例關(guān)系,得到了Z軸坐標信息之后,由此可以推導(dǎo)出X和Y的坐標:

(2)

其中:fx=f/dx、fy=f/dy,1/dx和1/dy分別表示x方向和y方向上1毫米長度代表的像素值,(u0,v0)為左相機光軸與圖像平面的交點Ol在像素坐標系下的坐標,(u,v)表示像素坐標系中的坐標。

本文采用重投影映射的方法實現(xiàn)像素坐標系與世界坐標系之間的轉(zhuǎn)換,計算出物體表面點在世界坐標系下的三維坐標。將所有三維點云數(shù)據(jù)的Z軸的數(shù)據(jù)提取出來映射成圖像即為深度圖像。本系統(tǒng)中的Z軸坐標為攝像頭距離物體表面物點的垂直距離,單位是毫米(mm),表1為根據(jù)系統(tǒng)三維坐標求出來的X,Y,Z軸三個方向的距離和實際距離之間的比較。

表1 3個坐標軸方向上的測量距離與實際距離比較 mm

3 目標提取

3.1 視差圖像預(yù)處理

由于本文得到的視差圖灰度變化較緩,灰度值較為集中,為了方便后續(xù)的圖像處理,本文先對視差圖像和深度圖像進行相同的裁剪去除黑邊,接著找出視差圖的最大灰度值和最小灰度值,將灰度值的變化范圍擴大的0~255的范圍中,便于更直觀地觀察圖像處理的中間結(jié)果。

3.2 基于傳統(tǒng)OTSU算法的閾值分割

OTSU閾值分割算法(又稱為大津閾值分割法)是一種使用最大類間方差的自動確定閾值的方法,是一種基于全局的二值化算法[11]。OTSU閾值分割算法根據(jù)圖像的灰度特性,將圖像分為前景和背景兩個部分。當選取最佳閾值時,前景部分和背景部分之間的差別應(yīng)該是最大的,即類間方差最大。相應(yīng)地,前景和背景之間的類間方差如果越大,就說明構(gòu)成圖像的兩個部分之間的差別越大,如果部分目標被錯分為背景或部分背景被錯分為目標,都會導(dǎo)致兩部分類間方差變小。所以,當所取閾值的分割使類間方差最大時就意味著錯分概率最小。

3.3 基于改進的OTSU算法提取目標區(qū)域

采用傳統(tǒng)的OTSU分割算法對本文的視差圖進行閾值分割,得到的結(jié)果都不夠理想,接近背景的目標區(qū)域總是無法被正確地提取出來。因為傳統(tǒng)的OTSU算法對于灰度直方圖具有明顯的雙峰特點的圖像分割的效果比較好,但是本文中的堆料的視差圖像的灰度直方圖只有一個明顯的峰值,背景部分同一灰度級的像素點占比較大因而具有明顯的峰值,而對于目標部分只有若干個小的波峰。為了將接近背景區(qū)域的顆粒有效地提取出來,本文對OTSU算法進行了改進。

對于像素點數(shù)為N的灰度圖像,其存在L種灰度,灰度值為i(0≤i≤L)的像素點占整幅圖的比例為pi。設(shè)t(0≤t≤L)為前景和背景之間的分割閾值,則灰度值為[0,t]范圍內(nèi)的點為背景部分,背景像素點占整幅圖像的比例為p0, 其平均灰度值為μ0;灰度值為[t+1,L]范圍內(nèi)的點為前景部分,前景像素點占整幅圖像的比例為p1,其平均灰度值為μ1;記整幅圖像的平均灰度值為μ,背景和前景的類間方差為g,則有:

μ=p0×μ0+p1×μ1

(3)

g=p0×(μ0-μ)2+p1×(μ1-μ)2=

p0×p1×(μ0-μ1)2

(4)

傳統(tǒng)的OTSU閾值分割的方法為找到一個t使得類間方差g最大,即:

(5)

本文在傳統(tǒng)的OTSU算法的基礎(chǔ)上,將灰度直方圖中分割閾值附近的灰度值考慮進來,突出背景與目標之間較小差異。具體做法是:計算出灰度直方圖中分割閾值鄰域內(nèi)所有像素點的概率總和Pt作為類間方差的權(quán)重,構(gòu)建新的目標函數(shù)g′,那么新的分割閾值t′使得g′最大。

(6)

g′=Pt×g=

Pt[p0×(u0-u)2+p1×(u1-u)2]

(7)

(8)

這樣強化了波谷處的鄰域信息,加重了波谷處的閾值的類間方差的結(jié)果,將與背景相近的目標區(qū)域區(qū)分出來。分別采用傳統(tǒng)的OTSU算法和改進后的OTSU算法對視差圖像進行二值化閾值分割,分割的結(jié)果如圖5(b)和圖5(c)所示,分割圖中白色部分為目標區(qū)域,黑色部分為背景區(qū)域。從結(jié)果圖中可以很直觀地看出,改進的OTSU閾值分割算法可以將接近背景的目標區(qū)域有效地提取出來。

圖5 分割結(jié)果示意圖

4 體積測量

4.1 堆料體積計算原理

本文的體積測量目標是堆狀物料,由于此類堆體的俯視圖可以完整地表述堆體的信息,所以由堆料俯視圖求出的深度圖可以較為全面地反應(yīng)出堆料表面點的深度信息。圖6為堆體體積測量的示意圖,堆料深度圖中的點均勻分布,基于每個像素點求出的平均深度即可近似等價于整個堆體的平均深度,這樣就可以將堆體的體積計算轉(zhuǎn)換為底面積相同的柱狀物體來計算。

圖6 堆料體積測量示意圖

如公式(9)所示,不規(guī)則堆料的體積為3個方向上的三重積分來求解,可以將整個堆體用若干個底面積相同的立方體來近似求解,其中每個立方體的底面積Δs為圖像中每個像素點對應(yīng)的實際面積,高度為該像素點對應(yīng)的物點距離背景平面的距離??梢韵惹蟪鲞@些高度不等的小立方體的平均高度,那么堆體的體積就可以轉(zhuǎn)換為這些小立方體的平均高度、立方體的個數(shù)和立方體的底面積的乘積,繼而轉(zhuǎn)換為堆料的平均高度和堆料底面積的乘積,如公式(10)所示:

(9)

(10)

4.2 堆料平均高度計算

如果把堆料表面點當作離散的采樣點,而每個物點距離地面的高度為采樣點的值,那么這些采樣點的平均值就是堆料的區(qū)域的平均高度。根據(jù)目標提取階段閾值分割的結(jié)果,將前景區(qū)域和背景區(qū)域的深度信息分別保存下來,并結(jié)合兩個區(qū)域的像素點的個數(shù)分別求出兩個區(qū)域點的平均深度值Z0和Z1。由于深度圖像中儲存的像素值為物點到攝像頭的距離,所以堆料區(qū)域的平均高度為背景區(qū)域的平均深度值與前景區(qū)域平均深度值之差,即堆料的平均高度近似為h=Z0-Z1。

4.3 面積計算

由于堆料區(qū)域形狀不規(guī)則,直接求取面積很困難,但是在深度圖像對應(yīng)的實際區(qū)域為較標準的矩形,而且這個矩形各個頂點在世界坐標系下的X坐標和Y坐標很容易獲取。同時由于本文拍攝的堆料圖像為堆料的俯視圖像,所以深度圖像對應(yīng)的實際矩形區(qū)域的面積可直接用矩形的長度與寬度的乘積來表示。接著計算出堆料區(qū)域占整個矩形區(qū)域的比例,就可以很容易地計算出堆料區(qū)域的實際面積。要計算深度圖像對應(yīng)的矩形區(qū)域的面積,先分別提取出深度圖像的左上角和右下角頂點的三維坐標A(XA,YA,ZA)、B(XB,YB,ZB),則整幅圖像對應(yīng)的實際平面面積S為A、B兩點之間的實際X方向距離和Y方向距離的乘積。

S=ΔX*ΔY=(XBXA)*(YBYA)

(11)

堆料區(qū)域的面積為堆料區(qū)域的像素點在整幅深度圖中的占比與整幅深度圖對應(yīng)的實際面積的乘積。在目標提取的過程中已經(jīng)計算出目標區(qū)域像素點占整幅深度圖像像素點的比值p0。所以直接用p0乘以深度圖像對應(yīng)的實際面積S就可以求出目標區(qū)域的實際面積S0,即:

S0=S×p0

(12)

4.4 堆料體積計算及實驗結(jié)果

通過上文求出的堆料面積和平均高度,可以直接利用體積計算公式V=h*S0求出被測堆料的體積。

本文以沙堆為例進行堆料體積測量實驗,采用雙目相機對體積形狀不同的沙堆進行體積測量實驗。實驗中,兩個CCD相機盡可能地垂直地面架設(shè),目的是盡可能獲得沙堆的標準俯視圖,但是即便有所誤差也不會影響最終的結(jié)果。在采集沙堆原始圖像之前先對雙目相機進行雙目標定,獲取雙目相機的內(nèi)外參數(shù)。采集沙堆圖像的過程中要保證沙堆放置在兩個相機的共同視場中,采集的原始堆料的圖像直接送到計算機中進行后續(xù)的處理,包括立體校正、立體匹配、視差圖處理、目標提取和體積計算,輸出體積計算的最終結(jié)果。表2中的6組數(shù)據(jù)為形狀大小不同的6個沙堆的實際體積和測量體積,實驗結(jié)果顯示這6個沙堆的體積測量誤差均低于5%,可以滿足實際工業(yè)需求。

表2 體積測量結(jié)果及誤差分析

5 結(jié)論

本文基于VS2017+Opencv3.4.1環(huán)境和兩個分辨率為1280*720的CCD相機提出一個基于雙目視差圖的不規(guī)則堆料體積測量系統(tǒng),實驗證明本文提出的堆料體積測量方案可以較為準確地計算出不規(guī)則堆料的體積,并保證誤差低于5%。本文采用雙目視覺立體匹配獲得視差圖,對視差圖進行處理,測量出堆料的體積,算法實現(xiàn)簡單。本方案實現(xiàn)非接觸式測量,無需增加其他的硬件設(shè)施操作簡單,經(jīng)濟實用。

猜你喜歡
視差雙目像素點
采用雙目視覺和自適應(yīng)Kalman濾波的作物行識別與跟蹤
霜 降 蘇美玲
基于雙目視覺的機器人定位與導(dǎo)航算法
基于歸一化互相關(guān)的半透明遮擋視差估計
基于自適應(yīng)窗的立體相機視差圖優(yōu)化方法研究
基于局部相似性的特征匹配篩選算法
視差邊緣優(yōu)化的SGM 密集深度估計算法?
機械手的雙目視覺定位抓取研究
一種X射線圖像白點噪聲去除算法
基于canvas的前端數(shù)據(jù)加密