雙目標定算法

坐標系基礎知識:

=> 1.1. 從像素坐標系(u,v) 到 世界坐標系(Xw,Yw,Yw)

這里直接拿上篇博文的結果,中間省去了其它坐標系直接的關系,直接給出,如下所示:

這里寫圖片描述

公式如下:

這里寫圖片描述

=> 1.2. 符號規定( Notation )

為了和?張正友教授?的論文相統一,現在把公式符號統一一下。

這里寫圖片描述

=> 1.3. 推導中的數學基礎

第一點?: 旋轉向量?R?為正交矩陣,所以又以下的性質:

這里寫圖片描述

第二點?: 就是?S?。它是尺度因子,它的出現只是為了方便運算,而且對于齊次坐標,尺度因子不會改變坐標值?。


=> 2. 正戲

=> 2.1. Step.1 標定平面到圖像平面的單應性(Homography)

剛開始不知道論文中?Homography?不知道是何方神圣,搜索到了最后這番解釋:

因為張氏標定是一種基于平面棋盤格的標定,所以想要搞懂張氏標定,首先應該從兩個平面的單應性(Homography)映射開始著手。

單應性(Homography)?: 在計算機視覺中被定義為一個平面到另一個平面的投影映射。首先看一下,圖像平面與標定物棋盤格平面的單應性。

因為標定物是平面,所以我們可以把世界坐標系構造在?Z = 0?的平面上。然后進行單應性計算。令?Z = 0?可以將上式轉換為如下形式 ( 直接截取論文中的推導 ) :

這里寫圖片描述

分析:

H 是一個3x3的矩陣,并且有一個元素作為齊次坐標。因此,H有8個未知量待解 ( 可以分析一下,?A?有5個未知量,后面的?[r1,r2,t]?有三個未知量,一共8個) 。

(X,Y)?作為標定物的坐標,可以由設計者人為控制,是已知量?。?(u,v)?是像素坐標,我們可以直接通過攝像機獲得。一組對應的?(X,Y) => (u,v)?我們可以獲得兩組方程。

現在有?8個未知量?待求,所以至少要8個方程。所以至少需要4組對應的點。所以有?4組 (X,Y) => (u,v)就可以算出,圖像平面到世界平面的?單應性矩陣H?,這也是張正友標定采用四個角點的棋盤作為標定物的一個原因 (?不知道是否正確) 。

=> 2.2. Step.2 利用約束條件求解內參矩陣A

從Step1可知,應用4個點我們可以獲得單應性矩陣H。但是H是內參陣和外參陣的合體。我們想要最終分別獲得內參和外參。所以需要想個辦法,先把內參求出來。然后外參也就隨之解出了。

這里寫圖片描述

上式中的?h1,h2?是通過求解單應性矩陣?H?求出來的,所以未知量只剩下?內參矩陣A?。?A中含有5個參數,如果需要完全解出來這5個未知量,則需要?3個不同的單應性矩陣H?( 因為?3個不同的單應性矩陣H在2個約束條件下可以產生6個方程?) , 那么如何得到?3個不同的單應性矩陣H?呢? 那就是 3張不同的標定平面的照片, 我們大多是通過改變攝像機與標定板間的相對位置來獲得不同的標定照片。( 如果用2張照片進行標定,就要舍去一個內參?r=0)

當然這只是張正友標定法不斷變換標定板方位的?第一個原因?。第二個原因?是張正友提到的?最大似然估計?( Maximum-Likelihood Estimation )?( 這個我還得學習 ) 。

現在開始數學課了:

首先令

這里寫圖片描述

可以看出?矩陣B?是一個對稱矩陣,有效的元素只有?6個?,所以令一個?6維的向量b?,然后簡化公式?( 就是那兩個約束條件 )

這里寫圖片描述

將運算的結果帶入到兩個約束條件中,可得到方程組:

這里寫圖片描述

英文部分也提出了3張圖片的作用 ( 不懂的可以再看看前面的分析 )

應用上述公式解出b后,就得到了B,在進行?cholesky分解?就可以得到?攝像機內參矩陣A?。

=> 2.3. Step.3 利用內參矩陣A求解外參矩陣

已經有了內參矩陣A,通過下面的公式,就可以解出來,外參矩陣了。

這里寫圖片描述


=> 3. 總結

以上就是張正友標定法的數學原理和推導,但是張正友自己也說這沒有啥實際的物理意義,只是為后面的極大似然參數估計提供初值。而張正友標定中用于提高標定精度的極大似然算法,我也在研究當中,希望以后可以發一篇博客。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256909.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256909.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring bean三種創建方式

spring共提供了三種實例化bean的方式:構造器實例化(全類名,反射)、工廠方法(靜態工廠實例化 動態工廠實例化)和FactoryBean ,下面一一詳解: 1、構造器實例化 City.java 1 package com.proc.bean;2 3 publ…

Excel使用控件創建動態地圖圖表

[本文軟件Excel 2010] 效果圖: 首先我們看一下數據源 數據源中第二列是對應圖形的名稱。首先創建圖形,我們可能在網絡中找到各個地圖的矢量圖形。不過不是每個地圖圖形都適合我們,或許企業劃分非按照行政區劃分。因此可以嘗試自己繪制&#x…

Windows 10 常用的快捷鍵及常用指令

系統快捷鍵 快捷鍵功能說明備注CtrlShiftEsc打開任務管理器macbook: fnshiftF11普通鍵盤: PrintScreen截屏幕圖macbook: fnshiftoptionF11普通鍵盤: altPrintScreen截取當前窗口圖片macbook: WinfnEsc普通鍵盤: WinPause/Break打開系統屬性WinctrlD新建虛擬桌面Windows 10Winct…

學習筆記(35續):Python網絡編程并發編程-基于gevent及線程池實現的并發套接字通訊

1.基于線程池實現并發套接字通訊:因為套接字涉及地是I/O密集模型,因此使用多線程會有高效率 服務器 #基于線程池完成并發的套接字通訊 from socket import * from threading import Thread from concurrent.futures import ThreadPoolExecutordef commun…

使用Configuration Manager部署及管理軟件更新(2)

承接上一篇文章:http://ericxuting.blog.51cto.com/8995534/1543835 一、 確定軟件更新符合性 1. 打開Configuration Manager管理控制臺,點擊軟件庫,展開軟件更新,點擊所有軟件更新 2. 點擊主頁中的運行摘要,等待對話框…

NULL、nil、Nil、NSNull的區別

標志值含義NULL(void *)0C指針的字面零值nil(id)0Objecve-C對象的字面零值Nil(Class)0Objecve-C類的字面零值NSNull[NSNull null]用來表示零值的單獨的對象轉載于:https://www.cnblogs.com/wlsxmhz/p/56250…

Fiddler 域名過濾

原來一直沒意識到Fiddler過濾,導致每次抓包都要自己判斷、搜索好多東西,真是呵呵! 過濾設置很簡單,看懂一張圖就解決問題了。 箭頭 那兩處設置下,圓圈處保存再進行抓包即可 轉載于:https://www.cnblogs.com/eejron/p/4…

windows中VS卸載opencv配置,重新安裝其他版本

1、找到工程的屬性管理器,電機Debug64和Release64下面的 包含目錄和庫目錄,刪掉其原由配置的oepncv路徑; 找到鏈接器中的附加依賴項,刪掉原有的配置;

學習筆記(36):Python網絡編程并發編程-IO模型介紹

立即學習:https://edu.csdn.net/course/play/24458/296460?utm_sourceblogtoedu I/O模型介紹:I/O模型表示處于等待狀態的模型,如套接字通訊的accept和recv函數一樣 1.同步I/O 2.異步I/O 3.阻塞I/O 4.非阻塞I/O

AD9 如何畫4層pcb板

新建的PCB文件默認的是2層板,教你怎么設置4層甚至更多層板。在工具欄點擊Design-->Layer Stack Manager.進入之后顯示的是兩層板,添加為4層板,一般是先點top layer, 再點Add Layer,再點Add Layer,這樣就成了4層板。見下圖。 有…

gulp 流處理

包含的內容: 穿插流流合并流隊列流篩選1. 穿插流// passthrough stream 把流傳遞給其他的// usegulp.src(glob,{passthrough:true})// function 進行流的合并處理,避免多余配置以及冗余代碼 2. 合并流// 使用merge2// install yarn add merge2 or …

windows上使用cmake 編譯yaml-cpp源碼,生成yam-cpp.lib

1、打開cmake-gui 2、添加CmakeList 3、建立build 4、進入工程中生成debug和release版本的lib

BZOJ 3039: 玉蟾宮( 懸線法 )

最大子矩陣...懸線法..時間復雜度O(nm)懸線法就是記錄一個H向上延伸的最大長度(懸線), L, R向左向右延伸的最大長度, 然后通過遞推來得到. ------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define ok(c) …

學習筆記(37):Python實戰編程-yield實現生成器

立即學習:https://edu.csdn.net/course/play/19711/255579?utm_sourceblogtoedu1.yield return generator yield是一個返回的是一個生成器對象&#xff0c;是通過next函數一次一次地進行函數地迭代來獲取結果的&#xff0c;而return函數則是將結果返回后&#xff0c;不再與…

ie6、7 下input的邊框問題 ?

input的border設置為none,ie8及以上border都兼容&#xff0c;ie6和7的border還繼續存在&#xff0c;將border設為0時所有瀏覽器上都不存在了&#xff0c;但是border為0時還是會繼續的渲染。 將input的border設為"0 none",ie7及以上都正常了&#xff0c;但是ie6上inpu…

Mocha BSM產品亮點——關聯事件分析

業務需求與挑戰企業經常會遇到下列場景&#xff1a;? 企業某應用&#xff0c;例如&#xff0c;WebSphere Portal Server&#xff0c;已經不可用&#xff0c;是由于應用自身已不可用&#xff1f;還是應用所連接的數據庫出了問題&#xff1f;還是應用的LDAP服務不可用&#xff1…

輕量級文本編輯器,Notepad最佳替代品:Notepad++

目錄 正文之前1. 目的2. 原帖3. 為何推薦Notepad3.1. Notepad的一些基本特點3.2. notepad&#xff0c;notepad2&#xff0c;notepad&#xff0c;ultraEdit比較4. 使用Notepad前要了解的知識4.1. Notepad的名稱和縮寫4.2. Notepad修改設置后&#xff0c;立即生效4.3. Notepad的版…

學習筆記(38):Python實戰編程-窗體顯示

立即學習:https://edu.csdn.net/course/play/19711/343100?utm_sourceblogtoedu GUI&#xff1a;圖形用戶接口——GUI組件&#xff0c;組件定義&#xff0c;組件布局管理 主體窗口的設置&#xff1a; import tkinter#導入創建窗體的相關模塊class Mainwindow():#創建窗口類de…

Tomcat 配置和spring-framework MVC配置簡介

Tomcat啟動時&#xff0c;先找系統變量CATALINA_BASE&#xff0c;如果沒有&#xff0c;則找CATALINA_HOME。然后找這個變量所指的目錄下的conf文件夾&#xff0c;從中讀取配置文件。最重要的配置文件&#xff1a;server.xml 。要配置tomcat&#xff0c;基本上了解server.xml&am…

SDL 庫 無法解析的外部符號 __imp__fprintf

VS2015 在鏈接器-》命令行 里加入legacy_stdio_definitions.lib 另外一個常見錯誤關于stderr的用 extern "C" { FILE __iob_func[3] { *stdin,*stdout,*stderr }; }轉載于:https://www.cnblogs.com/zhaogaojian/p/5646885.html