1 什么是相机内参
相机内参是联系相机坐标系与图像坐标系的桥梁。通过相机内参,可以将相机坐标系中的三维点投影到图像坐标系中的二维点。
设相机内参矩阵IM = [[fx, 0, cx], [0, fy, cy], [0, 0, 1]],
其中fx, fy为相机焦距。
cx, cy为主点的坐标,主点表示相机光轴与成像平面的交点,这是一个确定的点,表示物理世界中的一个特定位置,比如一张人脸照片中,主点为处于中间位置的人脸的鼻尖。不管图片怎么变化,主点都是鼻尖的那个像素。
2 resize对相机内参的影响
在网上能查到的资料一般都是说:相机内参与图片同缩放。
当时需要注意的是,图片两轴的缩放比例不一致时,相机内参对应参数缩放比例也不同。
假设相机内参矩阵IM = [[fx, 0, cx], [0, fy, cy], [0, 0, 1]], h的缩放率为a,w的缩放率为b。
对相机内参进行重计算,对应轴的参数要乘以对应的缩放率,即:
IM[0] = IM[0] * b
IM[1] = IM[1] * a
也即:
IM_new = [[bfx, 0, bcx], [0, afy, acy], [0, 0, 1]]
3 Crop对相机内参的影响
设未裁剪的图片为图A,裁剪后的图片为图B。
首先,裁剪不会改变焦距。
而对于主点,在1中已经说到,主点是物理世界中一个固定点投影到图片中的像素点的坐标值,裁剪后的图片与裁剪前的图片有不同的图片坐标系,设裁剪前图片的图片坐标系为axis0,裁剪后的图片坐标系为axis1,图中蓝点就为主点。
已知裁剪前的主点坐标(cx, cy),只需要知道axis1相对与axis0在两个方向上的距离(w_*crop, h_*crop),就可以求得裁剪后的主点坐标(cx_*new, cy_*new),也既:
cx_*new = cx - w_*crop, cy_*new = cy - h_*crop
**那么如何求w_\crop, h_\crop?
裁剪主要分为中心裁剪,随机裁剪。
对于中心裁剪,h_crop = (h - hnew)/2, wcrop = (w - w_new)/2
其中h,h_new, w, w_new表示裁剪前后的图片高与宽。
对于随机裁剪,则需要知道裁剪的起点(h01, w01),也就是axis1的原点在axis0中的坐标, 则有:
h_crop = h01, w_crop = w01
但是对于随机裁剪,如何求得随机裁剪的起点呢?
参考文章
https://zhuanlan.zhihu.com/p/361717695
标签:缩放,裁剪,crop,内参,相机,new From: https://blog.51cto.com/u_12074581/6173766