张氏相机标定,像素坐标<---->世界坐标 学习笔记

张氏相机标定,像素坐标<---->世界坐标 学习笔记

下面这些文章比较详细,便于我这样的初学者理解…

一共有三篇,分前,中,后(主要是matlab,opencv实现)

https://blog.csdn.net/qq_37059483/article/details/79482541

本人按照第三篇实现时出了好多问题😭(也许太菜了~),后借鉴另外一篇完成相机内外参数的计算

https://blog.csdn.net/weixin_43837871/article/details/89296462?spm=1001.2014.3001.5501

关于单目相机标定还有一些比较有趣的文章参考

  • 这个测量项目很有趣,不过要事先获得相机的高度,跟我没关系/(ㄒoㄒ)/~~

https://blog.csdn.net/mao_hui_fei/article/details/80822339

  • 这个测量相机高度的(通过相似三角形啥的)也好有趣,不过误差有点大啊😅

https://blog.csdn.net/weixin_41695564/article/details/80454055?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.no_search_link&spm=1001.2101.3001.424

  • 如果需要更多的,这个公众号也发过许多讲解的文章…

https://mp.weixin.qq.com/s/-hbnarTK_DvuLiBSKsfy6A

对了,拿到内外参数后还会有对应的旋转矩阵R和平移矩阵T,分别对应每一张图片相对于相机中心线的变换,然后如果计算的话,R是一个33的矩阵,而程序跑出的结果是一个13的旋转向量。
这个问题困扰了我快一天,后面才知道这个是旋转平面所对应的欧拉角,只需要写一个具体的程序转换一下就好了(opencv的)

import os
import cv2
import numpy as np
T = np.zeros((1,3), np.float32)
a = (0.2,0.4,0.8)
print (a)
R = cv2.Rodrigues(a)
print (R[0])
v3 = (R[0][2,1],R[0][0,2],R[0][1,0])
print (v3)
c = cv2.Rodrigues(v3)
print (c[0])
b = cv2.Rodrigues(R[0])
print (b[0])
p = (-2.100418,-2.167796,0.27330)
print(cv2.Rodrigues(p)[0])

但是最关键的地方,得到了所需的所有参数后,如何通过相机坐标系下的像素点反推世界坐标系下的像素点,这个公式我不会反解啊(会的大佬麻烦提供下资料QAQ)

P中参数都可求得
在这里插入图片描述
如何求W(世界坐标),X像素坐标(暂未验证)
在这里插入图片描述

更新中…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值