0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

檢測三維物體?一篇文章認識《雙目立體視覺》

新機器視覺 ? 來源:CSDN ? 2023-06-01 14:54 ? 次閱讀

前言

雙目立體視覺,由兩個攝像頭組成,像人的眼睛能看到三維的物體,獲取物體長度、寬度信息,和深度的信息;單目視覺獲取二維的物體信息,即長度、寬度。

1)雙目攝像頭

雙目攝像頭示意圖(ORBBEC Gemini 3D傳感攝像頭是一款基于雙目結(jié)構(gòu)光3D成像技術(shù)的近距離高精度嵌入式模組):

e0e66e46-0016-11ee-90ce-dac502259ad0.png

2)雙目相機基線

基線越大,測量范圍越遠;基線越小,測量范圍越近。

e0fede9a-0016-11ee-90ce-dac502259ad0.png

建議:

(1)基線距離是工作距離的08-2.2倍時測量誤差比較?。?/p>

(2)雙目立體視覺的結(jié)構(gòu)對稱時,測量系統(tǒng)的誤差比較小,精度也比較高。

(3)兩臺相機的有效焦距∫越大,視場越小,視覺測量系統(tǒng)的測量精度越高(即采用長焦距鏡頭容易獲得較高的測量精度)

3)打開雙目攝像頭

在OpenCV用使用雙目攝像頭,包括:打開單目攝像頭、設(shè)置攝像頭參數(shù)、拍照、錄制視頻。

環(huán)境編程語言:Python3        主要依賴庫:OpenCV3.x 或 OpenCV4.x

雙目同步攝像頭,兩個鏡頭共用一個設(shè)備ID,左右攝像機同一頻率。這款攝像頭分辨率支持2560*960或以上。

思路流程:

1、由于兩個鏡頭共用一個設(shè)備ID,打開攝像頭時使用cv2.VideoCapture()函數(shù),只需打開一次。區(qū)別有的雙目攝像頭是左右鏡頭各用一個設(shè)備ID,需要打開兩次cv2.VideoCapture(0),cv2.VideoCapture(1)。

2、雙目攝像頭的總分辨率是由左右鏡頭組成的,比如:左右攝像機總分辨率1280x480;分割為左相機640x480、右相機640x480

e10e4baa-0016-11ee-90ce-dac502259ad0.png

為了方便理解畫了張草圖;圖中的“原點”是圖像像素坐標(biāo)系的原點。

3、分割后,左相機的分辨率:高度 0:480、寬度 0:640

右相機的分辨率:高度 0:480、寬度 640:1280

4、轉(zhuǎn)換為代碼后

    #讀取攝像頭數(shù)據(jù)
    ret, frame = camera.read()
    #裁剪坐標(biāo)為[y0:y1, x0:x1]  HEIGHT * WIDTH
    left_frame = frame[0:480, 0:640]
    right_frame = frame[0:480, 640:1280]


    cv2.imshow("left", left_frame)
    cv2.imshow("right", right_frame)

源代碼:

舉個栗子:打開分辨率1280x480的雙目攝像頭

#-*-coding:utf-8-*-
import cv2
import time




AUTO = False  # 自動拍照,或手動按s鍵拍照
INTERVAL = 2 # 自動拍照間隔


cv2.namedWindow("left")
cv2.namedWindow("right")
camera = cv2.VideoCapture(0)


# 設(shè)置分辨率 左右攝像機同一頻率,同一設(shè)備ID;左右攝像機總分辨率1280x480;分割為兩個640x480、640x480
camera.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT,480)


counter = 0
utc = time.time()
folder = "./SaveImage/" # 拍照文件目錄


def shot(pos, frame):
    global counter
    path = folder + pos + "_" + str(counter) + ".jpg"


    cv2.imwrite(path, frame)
    print("snapshot saved into: " + path)


while True:
    ret, frame = camera.read()
    # 裁剪坐標(biāo)為[y0:y1, x0:x1] HEIGHT*WIDTH
    left_frame = frame[0:480, 0:640]
    right_frame = frame[0:480, 640:1280]


    cv2.imshow("left", left_frame)
    cv2.imshow("right", right_frame)


    now = time.time()
    if AUTO and now - utc >= INTERVAL:
        shot("left", left_frame)
        shot("right", right_frame)
        counter += 1
        utc = now


    key = cv2.waitKey(1)
    if key == ord("q"):
        break
    elif key == ord("s"):
        shot("left", left_frame)
        shot("right", right_frame)
        counter += 1
camera.release()
cv2.destroyWindow("left")
cv2.destroyWindow("right")

補充理解:

OpenCV有VideoCapture()函數(shù),能用來定義“攝像頭”對象,0表示第一個攝像頭(一般是電腦內(nèi)置的攝像頭);如果有兩個攝像頭,第二個攝像頭則對應(yīng)VideoCapture(1)。

在while循環(huán)中使用“攝像頭對象”的read()函數(shù)一幀一幀地讀取攝像頭畫面數(shù)據(jù)。

imshow函數(shù)是顯示攝像頭的某幀畫面;cv2.waitKey(1)是等待1ms,如果期間檢測到了鍵盤輸入q,則退出while循環(huán)。

效果:

e142af1c-0016-11ee-90ce-dac502259ad0.png

4)雙目測距

原理:

通過對兩幅圖像視差的計算,直接對圖像所拍攝到的范圍進行距離測量,無需判斷前方出現(xiàn)的是什么類型的障礙物。

e162347c-0016-11ee-90ce-dac502259ad0.png

視差disparity:

首先看一組視覺圖:左相機圖和右相機圖不是完全一致的,通過計算兩者的差值,形成視差,生成視差圖(也叫:深度圖)

e1761154-0016-11ee-90ce-dac502259ad0.png

視差是同一個空間點在兩個相機成像中對應(yīng)的x坐標(biāo)的差值;

它可以通過編碼成灰度圖來反映出距離的遠近,離鏡頭越近的灰度越亮;

e1810370-0016-11ee-90ce-dac502259ad0.png

我們觀察一下,看到臺燈在前面,離雙目相機比較近,在灰度圖呈現(xiàn)比較亮;攝影機及支架在后方,離雙目相機比較遠,在灰度圖呈現(xiàn)比較暗。

補充理解:

由立體視覺系統(tǒng)測量的深度被離散成平行平面 (每個視差值一個對應(yīng)一個平面)

e198bc86-0016-11ee-90ce-dac502259ad0.png

給定具有基線 b 和焦距 f 的立體裝備, 系統(tǒng)的距離場受視差范圍[dmin ,dmax]的約束。

極線約束:

極線約束(Epipolar Constraint)是指當(dāng)空間點在兩幅圖像上分別成像時,已知左圖投影點p1,那么對應(yīng)右圖投影點p2一定在相對于p1的極線上,這樣可以極大的縮小匹配范圍。

e1afa1ee-0016-11ee-90ce-dac502259ad0.png

標(biāo)準(zhǔn)形式的雙目攝像頭,左右相機對齊,焦距相同。

e1c41f20-0016-11ee-90ce-dac502259ad0.png

如果不是標(biāo)準(zhǔn)形式的雙目攝像頭呢?哦,它是是這樣的:(需要極線校正/立體校正)

e1daa22c-0016-11ee-90ce-dac502259ad0.png

極線校正/立體校正

e1ff23f4-0016-11ee-90ce-dac502259ad0.png

雙目測距流程:

a.雙目標(biāo)定

主要是獲取內(nèi)參(左攝像頭內(nèi)參+右攝像頭內(nèi)參)、外參(左右攝像頭之間平移向量+旋轉(zhuǎn)矩陣)

標(biāo)定過程:

e21bbf46-0016-11ee-90ce-dac502259ad0.png

b.雙目矯正

消除鏡頭變形,將立體相機對轉(zhuǎn)換為標(biāo)準(zhǔn)形式

e29330f8-0016-11ee-90ce-dac502259ad0.png

c.立體匹配

尋找左右相機對應(yīng)的點(同源點)

e2b73e58-0016-11ee-90ce-dac502259ad0.png

d.雙目測距(三角測量)

給定視差圖、基線和焦距,通過三角計算在3D中對應(yīng)的位置

e2cdd668-0016-11ee-90ce-dac502259ad0.png

雙目測距原理

e2e4a5e6-0016-11ee-90ce-dac502259ad0.png

e.測距效果

e2fd8502-0016-11ee-90ce-dac502259ad0.png

彩蛋:雙目立體匹配(重點)

立體匹配是雙目立體視覺中比較重要的一環(huán),往往這里做研究和優(yōu)化。

e314ed32-0016-11ee-90ce-dac502259ad0.png

a.立體匹配流程

e33dc388-0016-11ee-90ce-dac502259ad0.png

b.匹配代價計算

代價函數(shù)用于計算左、右圖中兩個像素之間的匹配代價(cost)。cost越大,表示這兩個像素為對應(yīng)點的可能性越低。

e345b070-0016-11ee-90ce-dac502259ad0.png

常用代價函數(shù)

AD/BT

AD+Gradient

Census transform

SAD/SSD

NCC

AD+Census

CNN

c.立體匹配

e370a122-0016-11ee-90ce-dac502259ad0.png

端到端視差計算網(wǎng)絡(luò)

? Disp-Net (2016)

? GC-Net (2017)

? iRestNet (2018)

? PSM-Net (2018)

? Stereo-Net (2018)

? GA-Net (2019)

? EdgeStereo (2020)

e382dc66-0016-11ee-90ce-dac502259ad0.png

立體視覺方法評測網(wǎng)站

ETH3Dhttps://www.eth3d.net/

Kitti Stereohttp://www.cvlibs.net/datasets/kitti/eval_scene_flow.php?benchmark=stereo

Middlebury Stereo 3.0https://vision.middlebury.edu/stereo/eval3/

e3a132a6-0016-11ee-90ce-dac502259ad0.png

雙目測距總結(jié)

優(yōu)勢:

(1)成本比單目系統(tǒng)要高,但尚處于可接受范圍內(nèi),并且與激光雷達等方案相比成本較低;

(2)沒有識別率的限制,因為從原理上無需先進行識別再進行測算,而是對所有障礙物直接進行測量;

(3)直接利用視差計算距離,精度比單目高;

(4)無需維護樣本數(shù)據(jù)庫,因為對于雙目沒有樣本的概念。

難點:

(1)計算量大,對計算單元的性能要求高,這使得雙目系統(tǒng)的產(chǎn)品化、小型化的難度較;(芯片FPGA

(2)雙目的配準(zhǔn)效果,直接影響到測距的準(zhǔn)確性;

(3)對環(huán)境光照非常敏感;(光照角度、光照強度)

(4)不適用于單調(diào)缺乏紋理的場景;(天空、白墻、沙漠)

(5)相機基線限制了測量范圍。(基線越大,測量范圍越遠;基線越小,測量范圍越近)

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 成像技術(shù)
    +關(guān)注

    關(guān)注

    4

    文章

    279

    瀏覽量

    31394
  • 攝像頭
    +關(guān)注

    關(guān)注

    59

    文章

    4752

    瀏覽量

    94387
  • 結(jié)構(gòu)光
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    13180

原文標(biāo)題:檢測三維物體?一篇文章認識《雙目立體視覺》

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    雙目立體視覺原理大揭秘(

    雙目視覺的應(yīng)用來說,主要分為四大部分: 雙目視覺導(dǎo)航、定位;二 三維重構(gòu); 雙目
    發(fā)表于 11-21 16:20

    雙目立體視覺原理大揭秘(二)

    `雙目立體視覺原理大揭秘(二)——三維重構(gòu)雙目立體視覺門有著廣闊應(yīng)用前景的學(xué)科,根據(jù)
    發(fā)表于 11-21 16:22

    基于立體視覺的變形測量

    ,快速、精確的獲得被測對象的全場位移應(yīng)變信息,在各個研究領(lǐng)域得到了廣泛應(yīng)用。 立體視覺是由多幅圖像獲取物體三維幾何信息的方法。雙目立體視覺
    發(fā)表于 09-21 10:11

    雙目產(chǎn)品在高??蒲袘?yīng)用中的實例及優(yōu)點分析

    中,應(yīng)用雙目立體視覺來進行的熱點方向很多,采用視圖像專門針對雙目立體視覺優(yōu)化定制的系列雙目工業(yè)
    發(fā)表于 01-19 16:59

    雙目立體視覺的運用

    四種:1、雙目視覺導(dǎo)航、定位;2、三維重構(gòu);3、雙目立體測量;4、空間三維立體跟蹤。這些運用需求
    發(fā)表于 03-03 09:36

    雙目立體視覺在嵌入式中有何應(yīng)用

    雙目立體視覺(BinocularStereoVision)是機器視覺種重要形式,因其可簡單地利用左右攝像機中的圖像信息計算得到相機視野中物體
    發(fā)表于 12-23 07:19

    雙目立體視覺中靶標(biāo)的設(shè)計與識別

    0 引言    雙目立體視覺測量是基于視差原理,由多幅圖像獲取物體三維幾何信息的方法。在計算機視覺系統(tǒng)中,
    發(fā)表于 09-26 17:07 ?1262次閱讀
    <b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>中靶標(biāo)的設(shè)計與識別

    基于HALCON的雙目立體視覺系統(tǒng)實現(xiàn)

    雙目立體視覺的研究直是機器視覺中的熱點和難點。使用雙目立體視覺系統(tǒng)可以確定任意
    發(fā)表于 04-08 17:51 ?130次下載
    基于HALCON的<b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>系統(tǒng)實現(xiàn)

    三維立體視覺技術(shù)的應(yīng)用及其三維恢復(fù)方法介紹

    感知與建模、機器人導(dǎo)航、雙目物體跟蹤與檢測以及圖像分割等領(lǐng)域。 三維立體視覺就是研究由2D圖像恢復(fù)場景目標(biāo)即3D信息的
    發(fā)表于 10-20 11:51 ?5次下載

    雙目立體視覺三維測量原理

    雙目立體視覺是基于視差,由角法原理進行三維信息的獲取,即由兩個攝像機的圖像平面和北側(cè)物體之間構(gòu)成
    的頭像 發(fā)表于 04-11 14:32 ?2.4w次閱讀
    <b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b><b class='flag-5'>三維</b>測量原理

    雙目主動立體視覺監(jiān)測平臺靶標(biāo)編碼標(biāo)志點的設(shè)計與識別分析

    雙目立體視覺測量是基于視差原理,由多幅圖像獲取物體三維幾何信息的方法。在計算機視覺系統(tǒng)中,雙目
    的頭像 發(fā)表于 12-29 08:50 ?4588次閱讀

    重慶鉅芯視覺科技發(fā)布國內(nèi)首款智能雙目立體視覺芯片

    智能雙目立體視覺芯片模擬人的“雙眼”,給車輛加上雙“眼睛”,將二成像變?yōu)?b class='flag-5'>三維成像。
    的頭像 發(fā)表于 10-08 15:31 ?7373次閱讀

    使用雙目立體視覺實現(xiàn)CCD測距系統(tǒng)設(shè)計的資料說明

    的CCD測距技術(shù)。雙目立體視覺的基本原理是模仿人眼與人類視覺立體感知過程,從兩個視點觀察同景物,以獲取不同視角下的感知圖像,通過
    發(fā)表于 11-26 12:05 ?6次下載
    使用<b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>實現(xiàn)CCD測距系統(tǒng)設(shè)計的資料說明

    文章帶你認識雙目立體視覺

    前言 雙目立體視覺,由兩個攝像頭組成,像人的眼睛能看到三維物體,獲取物體長度、寬度信息,和深度的信息;單目
    的頭像 發(fā)表于 04-26 14:19 ?9722次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>篇</b>文章帶你<b class='flag-5'>認識</b>《<b class='flag-5'>雙目</b><b class='flag-5'>立體視覺</b>》

    三維立體視覺三維恢復(fù)方法

    電子發(fā)燒友網(wǎng)站提供《三維立體視覺三維恢復(fù)方法.doc》資料免費下載
    發(fā)表于 11-03 09:31 ?0次下載
    <b class='flag-5'>三維</b><b class='flag-5'>立體視覺</b>之<b class='flag-5'>三維</b>恢復(fù)方法