Использование коэффициентов искажения на искаженном изображении для искажения - PullRequest
0 голосов
/ 08 февраля 2019

С учетом коэффициентов искажения D = k1, k2, p1, p2, k3 модели с точечным отверстием, которая определяется радиальным и тангенциальным искажением.Как исказить изображение с этими коэффициентами?Я знаю о функции cv2.undistort () .Может кто-нибудь объяснить мне, как реализовать функцию искажения для выполнения итеративной минимизации?

    # TODO: Iterative minimization required
    r2 = x_ * x_ + y_ * y_
    # Remove tangential distortion
    x_tangential = x_ - (2 * distort_coeffs[2] * x_ * y_ + distort_coeffs[3] * (r2 + 2 * x_ * x_))
    y_tangential = y_ - (distort_coeffs[2] * (r2 + 2 * y_ * y_) + 2 * distort_coeffs[3] * x_ * y_)
    # Remove radial distortion
    x = x_tangential / (1 + distort_coeffs[0] * r2 + distort_coeffs[1] * r2 * r2 + distort_coeffs[4] * r2 * r2 * r2)
    y = y_tangential / (1 + distort_coeffs[0] * r2 + distort_coeffs[1] * r2 * r2 + distort_coeffs[4] * r2 * r2 * r2)

    cam_coords_undistorted = torch.cat([x, y, ones], 1)

1 Ответ

0 голосов
/ 12 февраля 2019

Существует два случая:

  1. Искажение чисто радиальное (тангенциальные коэффициенты p1, p2 = 0).Проблема сводится к решению полиномиального уравнения нечетной степени, и вы хотите наименьшее решение, которое является положительным и реальным.Подойдет любой алгоритм решения уравнений, а сопряженный метод является обычным выбором.В частности, для чисто радиального однопараметрического искажения вы получаете уравнение третьей степени, которое может быть решено аналитически с помощью формулы Кардано.
  2. В общем случае уравнения искажения связаны, и вам необходимо решить фактическуюсистема двух связанных полиномиальных уравнений.Вы могли бы представить проблему как одну из минимизации остатка для данного пробного решения, но для этой конкретной системы уравнений есть доступное сокращение: решение является фиксированной точкой рекурсии, вызванной самой функцией искажения.См. Уравнение (8) в старой бумаге Хейккилы для объяснения.Код OpenCV свободно основан на нем.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...