计算机视觉(五)图像处理基础之相机标定

计算机视觉(五)图像处理基础之相机标定


在这章节的开始,首先我们得知道什么是相机标定,随着科技和经济的蓬勃发展,机器人作业、汽车自动导航等技术已经得到广泛应用,在很大程度上推动了社会生产力的发展。不论是主动光学视觉传感或者是被动光学视觉传感,要从图像推知物空间的三维信息,或反之,从空间三维信息推知二维图像坐标,都必须确定相机在参考坐标系中的空间位置和取向,以及相机本身的几何和光学参数为解决这个问题所需用到相机标定技术

相机标定的作用在于消除由于相机产生的图像畸变,从而校正图像,为处理计算出精确数值提供可能。
由此,相机标定成了系统准确的先决条件。

从真实的三维世界坐标,可以得到二维的相机坐标,
但是我们从二维的相机坐标,能否准确的推算出真实的三维世界的坐标呢?这就是相机标定的意义。

1.相机标定的原理是什么?

相机标定指建立相机图像像素位置与场景点位置之间的关系,根据相机成像模型,由特征点在图像中坐标与世界坐标的对应关系,求解相机模型的参数。相机需要标定的模型参数包括内部参数和外部参数。
针孔相机成像原理其实就是利用投影将真实的三维世界坐标转换到二维的相机坐标上去,其模型示意图如下图所示:
在这里插入图片描述
从图中我们可以看出,在世界坐标中的一条直线上的点在相机上只呈现出了一个点,其中发生了非常大的变化,同时也损失和很多重要的信息,这正是我们3D重建、目标检测与识别领域的重点和难点。实际中,镜头并非理想的透视成像,带有不同程度的畸变。理论上镜头的畸变包括径向畸变和切向畸变,切向畸变影响较小,通常只考虑径向畸变。

径向畸变:
径向畸变主要由镜头径向曲率产生(光线在远离透镜中心的地方比靠近中心的地方更加弯曲)。导致真实成像点向内或向外偏离理想成像点。其中畸变像点相对于理想像点沿径向向外偏移,远离中心的,称为枕形畸变;径向畸点相对于理想点沿径向向中心靠拢,称为桶状畸变。
在这里插入图片描述
在这里插入图片描述

相机标定方法:

1. 打印一张棋盘方格图并贴在一个平面上
2. 从不同角度拍摄若干张模板图像
3. 检测出图像中的特征点
4. 由检测到的特征点计算出每幅图像中的平面投影矩阵H
5. 确定出摄像机的参数

张正友标定方法的主要思想是:

利用一个棋盘格标定板,在得到一张标定板的图像之后,可以利用相应的图像检测算法得到每一个角点的像素坐标(u,v)。张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标 W=0,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到每一个角点在世界坐标系下的物理坐标(U,V,W=0)。我们将利用这些信息:每一个角点的像素坐标(u,v)、每一个角点在世界坐标系下的物理坐标(U,V,W=0),来进行相机的标定,获得相机的内外参矩阵、畸变参数。
在这里插入图片描述

2. 代码

代码:


import cv2
import numpy as np
import glob

# 找棋盘格角点
# 阈值
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# 棋盘格模板规格
w = 11  # 内角点个数,内角点是和其他格子连着的点
h = 7

# 世界坐标系中的棋盘格点,例如(0,0,0), (1,0,0), (2,0,0) ....,(8,5,0),去掉Z坐标,记为二维矩阵
objp = np.zeros((w * h, 3), np.float32)
objp[:, :2] = np.mgrid[0:w, 0:h].T.reshape(-1, 2)
# 储存棋盘格角点的世界坐标和图像坐标对
objpoints = []  # 在世界坐标系中的三维点
imgpoints = []  # 在图像平面的二维点

images = glob
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值