代码之家  ›  专栏  ›  技术社区  ›  Mark Iliffe

图像像素间欧氏距离的测量算法

  •  4
  • Mark Iliffe  · 技术社区  · 14 年前

    我有很多图像,我知道焦距,像素数,尺寸和位置(从GPS)。它们都是以高度倾斜的方式在地面上用商用摄像机拍摄的。

    alt text http://desmond.yfrog.com/himg411/scalled.php?tn=0&server=411&filename=mjbm.jpg&xsize=640&ysize=640

    计算图像中某些像素之间欧几里得距离的最佳方法是什么?如果可能的话。

    计算图像中某些像素之间欧几里得距离的最佳方法是什么?如果可能的话。

    1 回复  |  直到 12 年前
        1
  •  2
  •   Cruachan    14 年前

    假设你不是在寻找完整的景观模型,而是一个简单的近似值,那么这就不太难了。基本上,你的图像的第一个近似值会减少到一个已知焦距的沿着平面看的相机。所以我们可以很容易地在3D中创建一个系统模型——它离查看棋盘演示的经典观察者不远。

    通常我们的图形问题是将三维模型投影到二维中,这样我们就可以渲染图像。尽管现在大多数程序都使用API(如OpenGL)来实现这一点,但方程式并不特别复杂,也不难理解。我使用的示例编写了我的第一个代码 3D Graphics In Pascal 这是一个很好的明确的论著,但将有许多其他类似的来源(虽然可能不太像现在的硬件API总是被使用)。

    有用的是投影方程是可交换的,如果你在图像和模型上有一个点,你可以通过投影返回数据来获取原始的三维坐标,这就是你想要做的。

    因此,有两种方法建议:要么直接编写代码来完成上述任务,要么更简单地使用OpenGL(我建议 GLUT toolkit 为此)。如果您的数学很好,并且操作矩阵不会引起任何问题,那么我建议使用前者,因为解决方案会更紧凑,而且很有趣——否则采用OpenGL方法。您可能也会很早就想将相机/平面近似转换为相机/球体。

    如果这不足以满足你的需求,那么理论上来说,进行实际的景观建模是可行的。这个 SRTM 数据是免费提供的(尽管不是最友好的形式),因此结合您的GPS位置,应该可以创建一个网格模型,在其中应用与上面相同的算法。