网上有很多关于matlab相机标定的资料,但找了很久没有相应的参数说明:怎样利用获得参数从世界坐标系变换到图像坐标系,所以这里为了记录一下,也方便新人理解。
首先由图像到参数的获取部分在网上有很多资料,也很容易,在这就不再赘述,我利用的标定板的格子大小为0.3mm×0.3mm,其示意图如下:
得到的相机参数如下:
这里关注的几个参数如划线所示,分别为:世界坐标(0.3mm),平移矩阵,相机内参,图像坐标,旋转矩阵。
其中相机内参只有一个,平移矩阵和旋转矩阵针对每幅图像各有一个。
由坐标变换原理可得(参考网址:https://zhuanlan.zhihu.com/p/94244568)
这里将文章中感光板的横边和纵边之间的角度认为为90°。
这里有一个需要注意的地方,matlab中得到的相机内参需要进行一次转置
取第一幅图像的平移、旋转矩阵为例,得到变换矩阵参数如下:
然后取世界坐标系中两个点:(0,0),(0,0.3mm).
然后对获取参数进行计算图像坐标系中位置:
得到结果为:
这里有第二个注意点:图像坐标前面有个尺度因子s,所以需要三个元素同时除以s,使所得结果的第三个元素为1,得到实际图像坐标
matlab中通过角点检测获取的对应点坐标为:
可以看出相差不大。
最后可以由上计算出,一个像素点代表的实际尺寸为4.2811μm
若有错误,谢谢指出。