相机标定与透视变换记录

相机标定

相机标定的意义和作用

 为什么进行相机标定?主要原因有以下几点:

  • 精确测量:相机的内参和畸变参数直接影响图像中的尺度、形状和畸变程度等信息的测量和准确度。标定可以提供精确的相机内参和畸变参数,帮助你准确地测量图像中的物体尺寸和几何属性。

  • 畸变校正:相机镜头会引入畸变,导致图像中的直线变形或形状扭曲。标定提供的畸变参数可以用于畸变校正,将图像中的畸变还原到正常状态,使得后续处理更加准确。

  • 坐标转换:在透视变换中,我们通常需要将图像的像素坐标与世界坐标进行对应。相机标定可以提供相机坐标系与世界坐标系之间的转换关系,帮助我们将图像中的点转换到真实世界的坐标。

  • 三维重建:如果你希望从图像中重建三维场景,相机标定是必要的。它提供了相机的投影矩阵或外参参数,这些参数在三维重建过程中起到关键作用。

张正有标定法原理

1、相机标定原理_机器人涮火锅的博客-CSDN博客

    标定可获取  相机内参(焦距,光心等),畸变参数,旋转矩阵和平移矩阵

本文使用意义

  某摄像头相机拍摄图片,图片内含有一个固定的滑轨,需求得图片中任意一像素点对应滑轨起点到像素点与滑轨平行点的滑轨的实际长度。故需要标定相机清除畸变,保证精确测量,进行透视变换将相机矫正。

2.透视变换

 仿射变换是坐标二维到二维的映射,可以应用于图片平移,旋转等;透视变换是将图片投影到一个新的视平面,也称作投影映射,是坐标二维到三维,再到二维的映射,它可以将一个四边形区域映射到另一个四边形区域。个人理解:寻找透视变换中的变换矩阵M,也就是寻找世界坐标与像素坐标的对应关系。

透视变换效果相当于观察者的视角发生改变时所观察到画面产生的变化

2.1透视变换的实现

在应用中,需要用到OpenCV的两个函数getPerspectiveTransform()warpPerspective()两个函数。用法:从四对映射点计算获取变换矩阵,将变换矩阵用于原图,得到目标图片。

getPerspectiveTransform()

功能:计算透视变换的变换矩阵T

参数:四对映射点,源点和目标点

返回值:Mat型变换矩阵,可直接用于warpPerspective()函数

# 定义源点和目标点
src_points = np.array([[224, 109], [768, 48], [426, 720], [1270, 432]], dtype=np.float32)  # 输入源矩形的四个角点坐标
dst_points = np.array([[0, 0], [1280, 0], [0, 720], [1280, 720]], dtype=np.float32)  # 目标矩形的四个角点坐标
cv2.getPerspectiveTransform(src_points, dst_points)

warpPerspective()

功能: 将变换矩阵T应用于原图像,使其透视变换为目标图像

主要参数:输入图像,转换矩阵T,输出图片的大小。其余参数详见官方文档

返回值:目标图像(type:numpy.ndarray)

cv2.warpPerspective(image, T, (1280, 720))

 2.2本文应用

透视变换最经典的应用就是获得图像的鸟瞰图,将图像中的矩形物体矫正

我想要将图中的矩形区域进行矫正,先获取四个角点的像素坐标,代入函数,得到目标图像

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值