c ++ opencv undistort逐像素

时间:2015-11-18 14:12:20

标签: c++ opencv distortion

我有一个扭曲的图像,并且需要校准数据来解决它。我正在使用openCv,但不能使用undistort函数,因为我对失真系数的数据是2参数模型。 与相机制造商交谈,我有计算失真所需的数学。它看起来像这样:

//calculate the radius
    Point2d pr; //distorted point/pixel
    double dx = (pr.x - ppx);
    double dy = (a * pr.y - a * ppy);

    //calculate the scale factor

    double s = 1 + (pow(vrx, 2) + pow(vry, 4));

    //correct the distortion per point

    Point2d pc; //undistorted point/pixel
    pc.x = ((s * dx) + ppx);
    pc.y= ((s * dy) + ppy) / a;

一切都很好。现在,如何通过openCv Mat图像运行它并从产品中创建新图像?

我是否应该使用Mat,循环创建每个行/列条目的Point2d,然后将结果点转换回Mat?或者有更好的方法吗?

谢谢大家。

0 个答案:

没有答案