当前位置:网站首页>相機標定(標定目的、原理)
相機標定(標定目的、原理)
2022-06-24 07:27:00 【沒李不邢】
1.相機標定的目的:
(1)一個就是矯正由於鏡頭畸變造成的圖片的變形,例如,現實中的直線,拍攝成圖像後會外凸或內凹,進行相機標定後可以對這種情况進行校正;
(2)另一個是根據拍攝獲得的二維圖像來重構三維場景,因為標定的過程就是通過一系列的三維點和它對應的二維圖像點進行數學變換,求出相機的內參數和外參數。
標定之後的相機,可以進行測距、三維場景的重建等。
2.四個坐標系
相機標定的目的之一是為了建立物體從三維世界到成像平面上各坐標點的對應關系,所以首先要了解以下四個坐標系:
世界坐標系:用戶定義的三維世界的坐標系,為了描述目標物在真實世界裏的比特置以及相機所在的比特置而被引入。
相機坐標系:在相機上建立的坐標系,為了從相機的角度描述物體比特置而定義,作為溝通世界坐標系和圖像/像素坐標系的中間一環。
圖像坐標系:為了描述成像過程中物體從相機坐標系到圖像坐標系的投影透射關系而引入,方便進一步得到像素坐標系下的坐標。
像素坐標系:為了描述物體成像後的像點在數字圖像上(相片)的坐標而引入,是我們真正從相機內讀取到的信息所在的坐標系,單比特為個(像素數目)。
3.坐標之間的轉換

世界坐標系:Xw、Yw、Zw。
相機坐標系: Xc、Yc、Zc。
圖像坐標系:x、y。
像素坐標系:u、v。
其中,相機坐標系的Z軸與光軸重合,且垂直於圖像坐標系平面並通過圖像坐標系的原點,相機坐標系與圖像坐標系之間的距離為焦距f。像素坐標系平面u-v和圖像坐標系平面x-y重合,但像素坐標系原點比特於圖中左上角。
3.1世界坐標系到相機坐標系
假設繞x軸旋轉(逆時針)


以此類推,繞其它軸旋轉(順時針)


世界坐標系到相機坐標系要6個自由度,除了旋轉還要進行平移

3.2相機坐標系轉圖像坐標系


3.3圖像坐標系轉像素坐標系

圖像坐標系的原點在圖像的中央,單比特mm。
像素坐標系的原點在圖像的左上角,單比特是像素Pixel(個)。
dx,dy:是傳感器固有的參數,代錶每個像素的毫米數。
u0,v0:代錶圖像坐標系原點相對於像素坐標系的偏移量,單比特是像素。


3.4 世界坐標系到像素坐標系轉換的全過程
至此,要想通過拍攝到的二維圖像重建三維場景,那麼就要求得內參M1和外參M2。
3.5張正友標定法




單應性(Homography)變換。可以簡單的理解為它用來描述物體在世界坐標系和像素坐標系之間的比特置映射關系。對應的變換矩陣稱為單應性矩陣。




![]()
如何根據標定圖得到單應矩陣?
經過前面一系列的介紹,我們應該大致明白如何根據打印的棋盤標定圖和拍攝的照片來計算單應矩陣H。我們來總結一下大致過程。
1. 打印一張棋盤格標定圖紙,將其貼在平面物體的錶面。
2. 拍攝一組不同方向棋盤格的圖片,可以通過移動相機來實現,也可以移動標定圖片來實現。
3. 對於每張拍攝的棋盤圖片,檢測圖片中所有棋盤格的特征點(角點,也就是下圖中黑白棋盤交叉點,中間品紅色的圓圈內就是一個角點,四個對角(紅黃藍綠)是最特別的角點)。我們定義打印的棋盤圖紙比特於世界坐標系Zw=0的平面上,世界坐標系的原點比特於左圖棋盤圖紙的固定一角(比如下圖中黃色點)。像素坐標系原點比特於右圖圖片左上角。

因為棋盤標定圖紙中所有角點的空間坐標是已知的,這些角點對應在拍攝的標定圖片中的角點的像素坐標也是已知的,如果我們得到這樣的N>=4個匹配點對(越多計算結果越魯棒),就可以根據LM等優化方法得到這個視角下的單應矩陣H。當然計算單應矩陣一般不需要自己寫函數實現,OpenCV中就有現成的函數可以調用。
但是,以上只是理論推導,在真實的應用場景中,我們計算的點對中都會包含噪聲。比如點的比特置偏差幾個像素,甚至出現特征點對誤匹配的現象,如果只使用4個點對來計算單應矩陣,那會出現很大的誤差。因此,為了使得計算更精確,一般都會使用遠大於4個點對來計算單應矩陣。另外上述方程組采用直接線性解法通常很難得到最優解,所以實際使用中一般會用其他優化方法,如奇异值分解、Levenberg-Marquarat(LM)算法
通過以上方法求得的單應性矩陣H後,以下是通過H反推相機的內外參



通過上面2.28與2.29得:

可以自行計算B為對角矩陣,所以B只有6個未知數,所以向量b設置6個參數即可



部分圖片來自B站視頻截圖,歡迎交流學習。
强烈建議看這個文章:相機標定之張正友標定法數學原理詳解(含python源碼) - 知乎
边栏推荐
- 二分专题训练
- [机缘参悟-29]:鬼谷子-内揵篇-与上司交往的五种层次
- The fund management of London gold is more important than others
- Big factories are not the only way to measure ability. The three years' experience of Shangcai's graduation
- 在终端pip install xxx但在pycharm却no module named xxx
- [WordPress website] 6 Article content copy prevention
- [mrctf2020] thousand layer routine
- Clickhouse source code note 6: exploring the sorting of columnar storage systems
- 软件性能测试分析与调优实践之路-JMeter对RPC服务的性能压测分析与调优-手稿节选
- Research on redis High Availability Mechanism
猜你喜欢

【图像融合】基于伪 Wigner 分布 (PWD) 实现图像融合附matlab代码

Huawei cloud image engine service

get_ started_ 3dsctf_ two thousand and sixteen

bjdctf_2020_babystack

学会使用楼宇控制系统BACnet网关没那么难

Big factories are not the only way to measure ability. The three years' experience of Shangcai's graduation

Analog display of the module taking software verifies the correctness of the module taking data, and reversely converts the bin file of the lattice array to display
![[image fusion] image fusion based on pseudo Wigner distribution (PWD) with matlab code](/img/e0/14cd7982fb3059fed235470d91126e.png)
[image fusion] image fusion based on pseudo Wigner distribution (PWD) with matlab code
![buuctf misc [UTCTF2020]docx](/img/e4/e160f704d6aa754e85056840e14bd2.png)
buuctf misc [UTCTF2020]docx

PIP install XXX on the terminal but no module named XXX on pycharm
随机推荐
Cisco router configuration notes: static routing, rip, OSPF, principles combined with experiments, worth a visit!
[Proteus] Arduino uno + ds1307+lcd1602 time display
What is an intrusion detection system?
[image fusion] multi focus and multi spectral image fusion based on pixel saliency and wavelet transform with matlab code
How can genetic testing help patients fight disease?
Huawei cloud image engine service
Clickhouse source code note 6: exploring the sorting of columnar storage systems
【均衡器】LS均衡器,DEF均衡器以及LMMSE均衡器的误码率性能对比仿真
[MRCTF2020]千层套路
在js中正则表达式验证小时分钟,将输入的字符串转换为对应的小时和分钟
The first common node of two linked lists_ The entry of the link in the linked list (Sword finger offer)
现货黄金有哪些值得借鉴的心态
In JS, the regular expression verifies the hour and minute, and converts the input string to the corresponding hour and minute
【信号识别】基于深度学习CNN实现信号调制分类附matlab代码
buuctf misc [UTCTF2020]docx
Canal installation configuration
Implementation and usage analysis of static pod
前缀和专题训练
Win11怎么设置让CPU性能全开?Win11CPU怎么设置高性能模式?
PIP install XXX on the terminal but no module named XXX on pycharm