插值扭曲

时间:2014-06-26 09:39:35

标签: c++ opencv interpolation

我使用opencv和cpp。

std::vector<std::pair<cv::Point2d, cv::Point2d> >代表经线。 对于图像A的每个点,我关联图像B的点。 我不知道图像A的点与图像B的点之间的所有关联。图像A的点在稀疏矩阵上。这些数据也可能是epsilon错误。 所以我想插入。 在opencv中我没有找到简单插值的函数。 这是怎么回事?

我找到了函数cv::warpPoint,但我不知道cv::Mat相机内部参数,也不知道cv::Mat相机旋转矩阵。 如何根据我的数据计算这些矩阵?

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是分段仿射器:

https://code.google.com/p/imgwarp-opencv/

我有自己的快速实施,但评论是俄语,你可以找到它here

答案 1 :(得分:0)

所以有两个问题:

  1. 如何将点从一个图像变形到另一个图像。 一旦您拥有密集(插值)描述,请尝试cv::remap执行此操作。例如,请参阅http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/remap/remap.html

  2. 如何通过插值计算非给定点对。 我没有解决方案,但有些想法:

    • 不使用点对,而是使用位移矢量。位移可能更容易插值。
    • 使用反向公式来获得第二张图像的密集描述(否则可能存在根本没有触及的像素
  3. 但我想这样做的“真实”方法是某种样条插值。