OpenCV Как применить искажение камеры к изображению - PullRequest
1 голос
/ 27 сентября 2019

У меня есть изображение.Я хочу применить коэффициенты радиального и тангенциального искажения к моему изображению, полученному из opencv.Даже при том, что есть функция неискажения, нет функции искажения.Как я могу исказить мои изображения с коэффициентами искажения?

enter image description here

1 Ответ

0 голосов
/ 27 сентября 2019

Я также искал функциональность того же типа.Я не мог найти это, поэтому я реализовал это сам.Вот код C ++.

Сначала необходимо нормализовать точку изображения, используя фокусное расстояние и центры

rpt (0) = (pt_x - cx) / fx

rpt (1) = (pt_y - cy) / fy

, затем исказите точку нормализованного изображения

double x = rpt(0), y = rpt(1);

//determining the radial distortion
double r2 = x*x + y*y;
double icdist = 1 / (1 - ((D.at<double>(4) * r2 + D.at<double>(1))*r2 + D.at<double>(0))*r2);

//determining the tangential distortion
double deltaX = 2 * D.at<double>(2) * x*y + D.at<double>(3) * (r2 + 2 * x*x);
double deltaY = D.at<double>(2) * (r2 + 2 * y*y) + 2 * D.at<double>(3) * x*y;
x = (x + deltaX)*icdist;
y = (y + deltaY)*icdist;

, затем вы можете перевести и масштабировать точку, используя центр проекции и фокусное расстояние

...