1. 程式人生 > >雙目標定---非常重要的基礎

雙目標定---非常重要的基礎

雙目攝像機標定最主要的目的:是要得求出每個攝像機的相機內參數矩陣K和畸變係數矩陣D,左右兩個攝像機的相對位置關係(即右攝像頭相對於左攝像頭的平移向量 t和旋轉矩陣R)

由於OpenCV中StereoCalibrate標定的結果極其不穩定,甚至會得到很誇張的結果,所以決定Matlab標定工具箱立體標定,再將標定的結果讀入OpenCV,來進行後續影象校準和匹配。

[1]首先對左右攝像頭分別進行標定,得到兩個攝像頭各自的內參矩陣和畸變引數向量

注意事項: 
1. 採集棋盤圖的時候要注意,儘量讓棋盤佔據儘可能多的畫面,這樣可以得到更多有關攝像頭畸變方面的資訊。 
2. 在Matlab標定工具箱中,可以通過reproject on images,得到根據當前標定結果得到的反投影誤差,從點雲的聚集情況和分散的最大範圍可以看出反投影誤差的大小。Recomp. corners選項,主要完成根據反向投影得到的角點座標重作為對角點的估計,重新計算角點的功能。針對第一次標定結果誤差太大的情況,可以通過此方法重新計算角點。計算完成後,點選Calibration根據新的角點進行標定。此時,得到的標定資訊,比第一次得到的反投影誤差分佈更集中,直徑也小。(該步驟在標定過程中需謹慎使用,因為往往首次得到的三維座標精確度並不高,如果參考誤差較大的話,有可能使結果與正解偏差更大。) 
3. 兩個攝像頭的焦距應該保持一致,因為在後續的視差圖轉換為三維圖時的Q矩陣只有一個f值。所以必須要求至少焦距相近。而且立體成像的三角測量(Learning OpenCV書中提到)的前提假設就是fl=fr。(調整兩個攝像頭的焦距相同的方法:離兩個相機相同遠處放置標定板,分別調節兩個相機的焦距,使得兩個畫面的清晰度相似。)

[2]經過雙目標定得到攝像頭的各項引數後,採用OpenCV中的stereoRectify(立體校正)得到校正旋轉矩陣R、投影矩陣P、重投影矩陣Q,再採用initUndistortRectifyMap函式得出校準對映引數,然後用remap來校準輸入的左右影象。

其中remap的影象剪裁係數alpha,取值範圍是-1、0~1。

(1)當取值為 0 時,OpenCV會對校正後的影象進行縮放和平移,使得remap影象只顯示有效畫素(即去除不規則的邊角區域),適用於機器人避障導航等應用;

(2)當alpha取值為1時,remap影象將顯示所有原影象中包含的畫素,該取值適用於畸變係數極少的高階攝像頭;

(3)alpha取值在0-1之間時,OpenCV按對應比例保留原影象的邊角區域畫素。

(4)alpha取值為-1時,OpenCV自動進行縮放和平移。

雙目校正過程中要使用極線約束 
計算目標點在左右兩個檢視上形成的視差,首先要把該點在左右檢視上兩個對應的像點匹配起來。然而,在二維空間上匹配對應點是非常耗時的,為了減少匹配搜尋範圍,我們可以利用極線約束使得對應點的匹配由二維搜尋降為一維搜尋。

而雙目校正的作用:把消除畸變後的兩幅影象嚴格地行對應,使得兩幅影象的對極線恰好在同一水平線上,這樣一幅影象上任意一點與其在另一幅影象上的對應點就必然具有相同的行號,只需在該行進行一維搜尋即可匹配到對應點。 
這裡寫圖片描述


這裡寫圖片描述

相關推薦

雙目標定---非常重要基礎

雙目攝像機標定最主要的目的:是要得求出每個攝像機的相機內參數矩陣K和畸變係數矩陣D,左右兩個攝像機的相對位置關係(即右攝像頭相對於左攝像頭的平移向量 t和旋轉矩陣R)。 由於OpenCV中StereoCalibrate標定的結果極其不穩定,甚至會得到很誇張的結果,所以決定Matlab標定工具箱立體標定,再將

一些非常重要的數學基礎

截圖 image com 參考 HR clas 基礎 求導 TP 0. 暫時就截圖了,後期再花點時間用latex把公式打出來 1. 矩陣求導 參考:http://cs.nju.edu.cn/wujx/teaching/PR_02.pdf 一些非常重要的數學基礎

Java基礎之—反射(非常重要

package fanshe; import java.lang.reflect.Constructor; /* * 通過Class物件可以獲取某個類中的:構造方法、成員變數、成員方法;並訪問成員; * * 1.獲取構造方法: * 1).批量的方法: * public Constr

Java基礎之反射(非常重要

點選上方“Java團長”,選擇“置頂公眾號”技術文章第一時間送達!反射是框架設計的靈魂(使用的前

【java基礎:JDBC】基於DBUtils工具類查詢資料庫的8種方式!非常重要

package cn.itcast.demo2; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import java.util.Map; import

提高代碼編碼的效率,習慣非常重要

到你 打印 代碼調試 功能點 文件 程序實現 幹凈 4.2 等等 提高代碼編碼的效率,習慣非常重要。經驗分享一下: 1、寫代碼前,先把需求弄清晰(這個非常關鍵):把業務轉化成功能點,有多少個功能點? 2、設計 把業務對象弄清晰,從大到細設計,看看使用什麽設計模

關於flex,好像有12個屬性非常重要

splay 情況 改變 什麽 use pre 最大的 log 最大 關於Flex,有12個屬性非常重要 這幾天在學習Flex布局,發現Flex真的好厲害! Flex是Flexible Box的縮寫,意為“彈性布局”,用來為盒模型提供最大的靈活性。

2.4 梯度下降算法(非常重要,重點理解)

eve 最快 style 梯度下降 更新 叠代 img 平均值 圖片 已經知道了logistic回歸模型,也知道了損失函數 損失函數是衡量單一訓練樣例的效果,還知道了成本函數 成本函數用於衡量參數w和b的效果在全部訓練集上面的衡量下面開始討論如何使用梯度下降法來訓練或學習訓

2.2 logistic回歸損失函數(非常重要,深入理解)

問題 好的 為知 得出 cnblogs 回歸算法 很多 將他 深入 上一節當中,為了能夠訓練logistic回歸模型的參數w和b,需要定義一個成本函數 使用logistic回歸訓練的成本函數 為了讓模型通過學習來調整參數,要給出一個含有m和訓練樣本的訓練集很自然的,希望通過

3星|《高情商談判》:談判中控制情緒非常重要

的人 三種 我們 get 救護車 歸屬感 utf8 表達 溫度 高情商談判 全書強調談判中控制情緒非常重要,並給出一些控制情緒的技巧,給出一些作者編的故事和不多的幾個實例。 用故事說理有點低於我的預期,我以為作者會用數據說理,畢竟作者是哈佛大學的專家。 個人感覺作

IDEA學習系列之IDEA裏項目的任意目錄進行類型標註(五種)(自定義)(這個知識點非常非常重要,必須會) (圖文詳解)

找到 關註 軟件 多說 微信公眾 提示 log 反饋 問題   不多說,直接上幹貨! 前言   對項目的任意目錄進行這五種目錄類型標註,這個知識點非常非常重要,必須會。   1、File ->

java重要基礎知識彙總

Table of Contents 抽象類與介面的區別 問題:什麼時候用介面什麼時候用抽象類? java為什麼不支援多繼承 單根繼承的優點1:相容性 單根繼承的優點2: 便利性 單根繼承的優點3: 垃圾回收 continue關鍵字和break關鍵字 continu

2.0 解析系列 | OceanBase的重要基礎設施——DBReplay

OB君:9月21日,OceanBase 2.0 在雲棲大會上重磅釋出。我們將在接下來的時間裡為大家持續推出 “ OceanBase 2.0 技術解析系列” 文章,分別從 可運維性、分散式架構、資料可用性、價效比及相容性 五個方面對OceanBase 2.0的產品新特性及其背後的技術原理進行深入的解析。

利用opencv自帶的example進行雙目標定

利用opencv自帶的example進行雙目標定 #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #incl

matlab calibration toolbox-Matlab標定工具箱使用(單目標定和雙目標定

轉載自:https://blog.csdn.net/kaspar1992/article/details/54344965 英文網址: http://www.vision.caltech.edu/bouguetj/calib_doc/index.html#examples http://

QML ListView幾個常用且非常重要的屬性

前言 用 QML 開發介面的好處想必就不用多說了吧,可以總結為一個字:爽。 的確如此,用 QML 可以快速的開發出一些非常酷炫和複雜的介面,並且程式碼還非常簡潔,可讀性很強,容易理解。 今天要總結的是關於 ListView 中的一些常用的屬性,非常實用,不過如果是剛接觸 ListVi

014—(非常重要!)Mysql日誌管理

mysql日誌主要有以下幾種: l     錯誤日誌:log_error l     通用查詢日誌:general_log l     二進位制日誌:

zookeeper-非常重要的zab協議-《每日五分鐘搞定大資料》

上篇文章paxos與一致性說到zab是在paxos的基礎上做了重要的改造,解決了一系列的問題,這一篇我們就來說下這個zab。 zab協議的全稱是ZooKeeper Atomic Broadcast即zookeeper“原子”“廣播”協議。它規定了兩種模式:崩潰恢復和訊息廣播 恢復模式 什麼時候進入? 當整

作業系統之非常重要的記憶體對映

前言 記憶體對映 在 Linux作業系統中非常重要,因為其涉及到高效的跨程序通訊 & 檔案操作 今天,我將詳細講解作業系統中核心概念:記憶體對映 目錄 示意圖 1. 定義 關聯 程序中的1個虛擬記憶體區域 & 1個磁碟上的物件,使得二者存在對映關

新網站上線要做好這六大工作非常重要

首先,網站的位置必須精確。 在建設車站的早期階段,有必要從各個方面準確定位站點。一旦網站形成,就不容易改變它,特別是重要的資訊,如標題、描述、模板、主頁佈局等。 二,網站處理必須到位。 網站管理需要