C++ opencv неискаженное изображение по пикселям

У меня искаженное изображение и данные калибровки, необходимые для его искажения. Я использую openCv, но не могу использовать функцию неискажения, так как данные, которые у меня есть для коэффициентов искажения, находятся в двухпараметрической модели. Разговаривая с производителем камеры, у меня есть математика, необходимая для расчета искажения. Это выглядит так:

//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 и создать новое изображение из продукта?

Должен ли я взять мат, циклически создавая Point2d из каждой записи строки / столбца, а затем преобразовать полученные точки обратно в мат? Или есть лучший способ?

Спасибо всем.

0 ответов

Другие вопросы по тегам