機器視覺 單目視覺測距

2021-07-25 08:37:43 字數 1921 閱讀 8098

視覺(6)

1、引言

在這裡,我們主要用乙個攝像頭通過建立一定的模型來解決測距的問題。

2、攝相機模型:

單目攝像頭的模型可以近似考慮為針孔模型,如圖所示:

圖1. 攝相機針孔成像模型     來自forsyth

f為攝像頭的焦距

c為鏡頭光心

物體發出的光經過相機的光心,然後成像於影象感測器或者也可以說是像平面上,如果設物體所在平面與相機平面的距離為d,物體實際高度為h,在感測器上的高度為h,那麼有這樣的關係:

我們接下依據的也主要是這條公式,那麼根據這個思路,我們主要的難點是物體在感測器上的高度 h 怎麼測量,一旦 h 是足夠精確的,那麼所測的距離 d 的精確度也能夠得到保證。

下面來主要推導h應該怎麼來求。

3、單目視覺測距原理

接下來就是本文的主要部分,主要介紹物體投影在感測器上的高度 h 怎麼獲得。

由公式①可知,這裡的關鍵點在於怎麼確定物體在影象上的高度,在這之前,我們唯一能夠做到的就是識別出某個具體的物體,但前提是已知其實際高度h,先談談我們怎樣簡單地識別出乙個物體的:物體的識別必須圍繞其特徵做文章,實驗時,我們暫時挑乙個簡單易識別的東西來,如圖所示,我們識別物件是一張粉紅色的凳子:

圖2. 被測量的實際物件

圖3. 識別後的圖形

現在我們基於如下假設,一步步完善我們的測距模型:

假設一:物體中心在主光軸上,且鏡頭平面與物體所在平面平行,可以用下圖表示:

圖4. 假設一模型圖

由我們前面所述的攝像頭模型中,可以清楚地知道,影象感測器是接受光線的關鍵器件,如果我們想要求出物像實際高度,從感測器尺寸出發,舉個例子,我們用到的攝像頭感測器尺寸是1/2.7英呎,換算成公尺製單位之後,感測器的寬度為sensor_width= 5.31mm,高度為sensor_height = 3.98mm,設物體的畫素高度為taget_h,則:

結合①②兩條公式,就能計算假設一模型的距離了。

假設二:物體偏離光軸夾角 α ,鏡頭平面仍與物體平面平行,如圖:

圖5. 假設二模型圖

同樣跟據假設一的解決方法,因為光心穿過影象的中心(圖中的(cx,cy)就是影象中心),那麼物體與影象中心的距離為:

則角度α 為:

在假設二的情況下,結合①②③④,可以求出具體的距離。

4、攝相機畸變及其解決

上面的q稱為重投影矩陣,它由攝像頭的內引數矩陣和外引數矩陣所決定,(x,y)是影象上的點的座標,而(x,y,z)是實際物理空間座標。

也就是說假如我們知道足夠多的三維空間與影象二維平面上的一一對應關係,那麼通過上面的約束關係,就可以將未知的引數求出來。具體的方法分為兩步,求攝像機內引數和外引數,這裡直接用matlab的calibrate toolbox很容易就可以得到內引數和外引數,這裡就不再贅述了。 

參考資料:gary bradski&adrian kaebler. learning opencv

OpenCV 雙目視覺 定標 校正 測距

在 opencv 機器視覺庫中,有許多有趣實用的應用,目標識別,顏色識別,物體檢查和測量等。這裡和大家分享機器視覺中重要的乙個點 雙目機器視覺測距。本場 chat 首先會帶領大家對雙目攝像頭定標,然後校正攝像,再通過程式設計實現三維重建,最後和大家進行雙目測距,測出物體到攝像頭的實際距離,正常誤差小...

單目視覺定位測距的兩種方式

單目定位和雙目定位的選擇,我覺得主要還是成本和時間的考慮。之前也嘗試過雙目定位,感覺要更精準些,但雙目測距需要對兩幅影象進行影象變換和極線匹配,稍微耗時了一些。這幾天嘗試了一下單攝像頭進行測距定位,主要有兩個思路 1.定位測量插值得到每個畫素的實際座標 該方法總覺得有很大的問題 乙個是攝像頭安裝後就...

雙目視覺簡介

雙目視覺廣泛應用在機械人導航,精密工業測量 物體識別 虛擬實境 場景重建,勘測領域。什麼是雙目視覺?雙目視覺是模擬人類視覺原理,使用計算機被動感知距離的方法。從兩個或者多個點觀察乙個物體,獲取在不同視角下的影象,根據影象之間畫素的匹配關係,通過三角測量原理計算出畫素之間的偏移來獲取物體的三維資訊。得...