1. 程式人生 > >雙目視覺演算法學習(一):雙目定標

雙目視覺演算法學習(一):雙目定標

老闆新安排的任務,需要在FPGA上實現雙目演算法,所以最近開始學習這塊,雙目演算法主要分成3個部分:定標、校正、匹配。其實定標是最基礎的部分,為後面的程式提供初始資料,這一塊的資料主要參考了影象獲取與單目定標攝像機標定和立體標定,本文主要是我在雙目定標的步驟以及我對此的理解。

一、固定攝像頭

攝像頭這塊我使用的是兩個羅技的普通USB攝像頭,一般只要在opencv中使用cvCreateCameraCapture()函式能捕捉到影象就好。然後將兩個攝像頭平行固定好,我的攝像頭最後如下所示:


二、使用攝像頭捕捉不同方位下標定板影象

固定好攝像頭之後,開始獲取影象,這時候需要使用標定板(我的A4標定板

),作用是為了接下來使用Matlab標定工具箱(點選開啟連結)進行標定。獲取影象的時候一定要注意需要兩個攝像頭同步獲取,這樣標定出來的結果才會是正確的。這個演算法的思想可以參考:同時獲取影象


三、使用matlab標定工具箱測資料

經過上一個步驟,我們會獲得標定板在左右兩個攝像頭的很多不同位姿下的影象,把這些影象放到matlab工具箱資料夾下進行處理。處理方法可以參照:使用matlab工具箱進行標定。需要注意的是在提取第一幅圖的時候命令列視窗可能會提示你輸入方格大小,這個一定要根據你的標定紙上的大小來寫,如果這個錯誤的話,標定出來的資料是有問題的,我使用的標定紙方格大小是15mm。其他按照步驟來做就好了,立體標定後,最好檢視一下Show Extrinsics of stereo rig,看看是否兩個攝像頭是平行的,

最後得到下列結果:


上面得到的就是攝像頭的引數資訊,然後將這些資料進行打包成xml格式,方便在校正的時候使用。校正會用到的資料包括如下:內參資料(焦距和原點座標)、畸變、旋轉矩陣om和平移向量T。

例如:攝像頭內參資訊格式如下(左):

<?xml version="1.0"?>
<opencv_storage>
<Cam_M2 type_id="opencv-matrix">
  <rows>3</rows>
  <cols>3</cols>
  <dt>d</dt>
  <data>
   357.49543  0. 182.35795
   0.  365.72798  193.12148
   0.  0.  1.</data></Cam_M2>
</opencv_storage>


相關推薦

雙目視覺演算法學習雙目定標

老闆新安排的任務,需要在FPGA上實現雙目演算法,所以最近開始學習這塊,雙目演算法主要分成3個部分:定標、校正、匹配。其實定標是最基礎的部分,為後面的程式提供初始資料,這一塊的資料主要參考了影象獲取與單目定標和攝像機標定和立體標定,本文主要是我在雙目定標的步驟以及我對此的理

KF演算法學習演算法原理與推導

       學習過程中接觸到了卡爾曼濾波,因為自己的數學渣屬性,特地把自己的推導過程記錄下來以加深理解,雖然有重複造輪子的嫌疑。。        推導公式過多,圖方便自己用的office寫的文件,後來發現打算上傳到部落格上時很無能為力。。。沒辦法只能截圖上傳圖片了,文章末

資料結構學習高精度演算法

高精度演算法,屬於處理大數字的數學計算方法。在一般的科學計算中,會經常算到小數點後幾百位或者更多,當然也可能是幾千億幾百億的大數字。一般這類數字我們統稱為高精度數,高精度演算法是用計算機對於超大資料的一種模擬加,減,乘,除,乘方,階乘,開方等運算。對於非常龐大的數字無法在計算機中正常儲存

CSS3總結學習CSS3用戶界面

interface 繪制 如果 位置 nbsp 瀏覽器 none ble adding 在CSS3中,新的用戶界面屬性有很多,本文重點介紹resize,box-sizing,offset。 瀏覽器支持,如下圖,圖片源於W3school 1.CSS Resizing 在cs

[linux][MongoDB] mongodb學習MongoDB安裝、管理工具、

ole ont mon mkdir man 管理工具 tar end 認證 參考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安裝完美實現! 1. mongoDB安裝、啟動、關閉   1.1

Unity3D學習簡單梳理下Unity跨平臺的機制原理

12px get 一個 bsp 嵌入 ram 屬於 開源 runtime 前言 首先需要了解的是,Unity3D的C#基礎腳本模塊是通過Mono來實現的。 什麽是Mono? 參考下百度百科:Mono是一個由Novell公司(由Xamarin發起)主持的項目,並由Migu

tp5.0 學習虛擬環境安裝

安裝php admin cat code logs exe erro ron log 一、文件目錄: application: 應用目錄,開發文件存放地 extend:擴展 public:入口文件 thinkphp:核心代碼 vendor:第三方類庫 二、域名Apache配

canvas學習線條,圖像變換和狀態保存

itl height tar 默認 class limit 方法 星空 stop canvas學習(一):線條,圖像變換和狀態保存 一:繪制一條線段: var canvas = document.getElementById(‘canvas‘) var ctx = can

JavaAPI學習API && String類 && Stringbuffer && StringBuilder

vax 編碼 長度 split() 無敵 esp ogr charat() ble 一、API   1、API:英文 Aplication Progrmmer Iteface 的縮寫,即應用編程接口     由官方或第三方提供的能實現特點功能的程序封裝包,包含各功能類,接口

前端學習基本類型

關系 大小寫 變量 def 兩個 num eof 初始化 string類 ECMAScript中有5中基本數據類型:Undefined、Null、Boolean、Number、String。 Undefined類型:之所以會出現這個值,就是在當你聲明了一個變量時,並未對其賦

基本演算法學習—— 排序

排序 一、氣泡排序   演算法思想: 在每一次對比排序中將大的數放在後面,整個排下來後,就變成有序的數列了   演算法實現:       1.(範圍為整個陣列),從前向後兩兩比較,如果前面比後面大就交換位置。第一遍後就將大的放在了最後       2.(縮小範圍),從頭再次重

docker學習docker安裝和架構

本筆記根據51CTO的CloudMan博主的部落格而記錄的。 本節主要學習 docker安裝和解除安裝 docker的架構 一、Docker的安裝和解除安裝   Docker的安裝   1、安裝之前,要先把舊版的Docker給解除安裝了,以下是Docker官網上的安裝前解除安裝Dock

PE檔案格式學習概述

1.PE檔案簡介 PE檔案格式是Windows系統中應用最廣泛的檔案格式之一,我們常見的可執行檔案.exe、動態連結庫.dll以及驅動檔案.sys等都是PE檔案格式的。 可以通過十六進位制工具如010editor檢視PE檔案,可以看到PE檔案都有一個共同的特點,就是它們的最開頭都是4D5A,也就是ASCI

Java學習第一章 計算機、程式和Java概述

第一章 計算機、程式和Java概述   (1)匯流排--》    儲存裝置、記憶體、CPU、通訊裝置、輸入裝置、輸出裝置; (2)語言: 機器語言: 二進位制形式

pandas系列學習pandas入門

作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 介紹 pandas 是一套用於 Python 的快速,高效的資料分析工具。近年來它的受歡迎程度飆升,與資料科學和機器學習等領域的興起同步。 正如 Numpy 提供了基礎

深度強化學習 Deep Q Network(DQN)

原文:https://blog.csdn.net/LagrangeSK/article/details/80321265 一、背景 DeepMind2013年的論文《Playing Atari with Deep Reinforcement Learning》指

網頁開發學習製作份邀請函

網頁開發設計是在面試創新實驗室時面試官給的二面試題,讓自己設計實現一個簡單的網頁。所以我決定來做一個邀請函網頁,並將開發過程寫在部落格上供有需要的朋友們檢視。 網頁開發工具有很多,我使用的是對新手較為友好的Dreamweaver,其優點在於簡便、直觀、功能豐富,簡稱為“傻瓜化”。下載請

Redis學習01_redis安裝部署centos Redis學習CentOS下redis安裝和部署

原文: http://www.cnblogs.com/herblog/p/9305668.html Redis學習(一):CentOS下redis安裝和部署   1.基礎知識  redis是用C語言開發的一個開源的高效能鍵值對(key-value)資料庫。它通過提

用python來實現機器學習線性迴歸linear regression

需要下載一個data:auto-mpg.data 第一步:顯示資料集圖 import pandas as pd import matplotlib.pyplot as plt columns = ["mpg","cylinders","displacement","horsepowe

演算法學習揹包佇列和棧

揹包類bag public class My_Bag<T> { public My_Bag() { array = null; } private T[] array;