我有一张从飞机上拍摄的照片。我知道拍摄照片时的飞机位置(纬度高度,航向俯仰偏航和摄像机fov)。 假设我希望Cesium能够像拍摄图像一样向地球展示。我可以通过以下方式实现:
它的注册数据不准确,因此图像有准确的registrator产生的额外数据( Edit3:注意我没有询问这样的registrator,我已经有registrator输出) 。数据是应该应用于图像的固定公式。该公式表示为应该应用于图像的仿射矩阵(2d,3x3矩阵,其中最后一行为0 0 1)。
要在Cesium上获得此修复,我应该在Cesium相机上应用类似于仿射变换的东西。最好的方法是什么?
编辑2:我在下面建议的方式不起作用。我需要找到一种方法来应用仿真转换 之后的任何世界到屏幕的计算和之前任何屏幕到世界的计算。这是Cesium核心中的纯粹技术问题。我该怎么办?我担心这样的转换是在代码中的很多地方进行的......
[ 对于它可能关心的人,有一些原因,我在下面的方式不起作用。以下是一些直观的解释,数学解释如下:
更多的数学直觉是:应用于帧的一般仿射2x2变换等效(我认为)对摄像机的4x4矩阵变换应用一些变换,但是一般矩阵不能转换为相机参数。相机模型有8个自由度(3个位置坐标,3个欧拉角和1个或2个fov,取决于是否存在纵横比自由度),但3d到2d透视变换有12个分量(11个自由度因为w可以归一化)。 ]
我首先考虑将矩阵分解为4个矩阵:平移,旋转,缩放和另一个旋转。假设我知道如何做到这一点,我应该在相机上应用四个矩阵。
最后,如果我成功完成上述所有工作,我想处理水平刻度和垂直刻度不相等的情况。在Cesium中有可能吗?
老实说,我宁愿将仿射变换与内部摄像机矩阵相乘,但我在API中找不到这样的功能。无论如何,我也考虑改变Cesium源代码,但这是现在最不喜欢的选项。
答案 0 :(得分:0)
似乎你在问什么是正射校正,因此在Cesium中不能轻易完成。这是一项复杂的任务,这里是关于姐妹网站的讨论,您可以在这里了解更多信息。也试着在那里问这个问题。
https://gis.stackexchange.com/questions/9334/free-gis-software-that-can-orthorectify