Нерассортировать одну точку после калибровки - PullRequest
0 голосов
/ 12 марта 2020

У меня есть вопрос исправления искажения одной точки, используя либо Scaramuzza, либо OpenCV Мей. Я выполнил калибровку набора данных и извлек матрицу камеры и коэффициент искажения (для mei) и необходимые параметры для Scaramuzza после получения mapx (map1) и mapy (map2) Я хочу применить искажение к одной точке.

для mei:

у нас есть позиция для точки (пересечение в шахматной доске) на изображении «рыбий глаз» , Я смог найти его положение с помощью findchessboardcoreners (я знаю, что это можно использовать для калибровки, но я хочу знать положение для известной точки на изображении), теперь у меня есть неискаженное изображение, и я хочу знать положение этой точки после исправления искажения, я прочитал много ссылок, предлагая использовать метод неискаженных точек или с помощью метода remap, и я прочитал ссылки, описывающие, что dst (x, y) = sr c (mapx (x, y) , mapy (x, y)) и я применил их все, но когда я рисую полученную точку, она не совпадает На шахматной доске она была даже вне доски, ближе к ее позиции в «рыбьем глазе»

для Scaramuzza:

Я пытался понять методы world2cam и cam2world, но все еще не могу понять это правильно

так

есть ли способ узнать положение одной точки после коррекции искажения, если у нас есть ее положение до искажения? также кто-то может объяснить подробно mapx и mapy. Я читал примеры о них и как их можно использовать, но всякий раз, когда я хотел реализовать отображение между искаженной точкой и неискаженной, я запутался, например: mapx и mapy должен иметь размер sr c (в моем случае это точка), так как я могу использовать здесь метод remap? или я должен получить их из матрицы камеры и коэффициента искажения и использовать dst (x, y) = sr c (map1 (x, y), map2 (x, y)?

примечание, которое я применил valuNewCameraMatrixForUndistortRectify, initUndistortRectifyMap и переназначение успешно на изображениях (для mei), и я также применил метод недискажений, который был реализован Scaramuzza на изображениях с очень удовлетворительным результатом (лучше, чем mei)

1 Ответ

0 голосов
/ 12 марта 2020

Мне удалось решить эту проблему с помощью функции unistortpoints openCV, проблема была в том, что я не использовал fisheye :: undistortPoints, но использовал исходную, все еще окруженные точки не находятся в правильном положении, но результат был своего рода приемлемо

...