Связать две картинки пикселей с помощью гомографии - PullRequest
0 голосов
/ 25 мая 2018

У меня есть две одинаковые картинки, но вторая искажена и имеет разные размеры.Я хочу иметь возможность выбрать точку на первом изображении и найти точно такую ​​же точку на втором изображении.Синхронизация изображений будет выполняться по 4 точкам на каждом изображении.

Пример:
Обычное изображение enter image description here

Искаженное изображение enter image description here

Результатом будет функция, получающая X, Y Point с первого изображения и возвращающая X ', Y', соответствующие точно такой же точке на втором изображении.

I foudФункция OpenHV findHomography (), которая возвращает матрицу гомографии, но во всех примерах эта матрица используется для искажения второго изображения с помощью warpPerspective (), а это не то, что мне нужно.Мне просто нужны соответствующие координаты / пиксели между двумя картинками.

Какие-нибудь советы о том, как это сделать в C #?(С OpenCV или нет)

РЕДАКТИРОВАТЬ:

Пример точек:

Обычное изображение: [250, 25], [250, 287],[399, 287], [400, 28]

Целевое изображение: [0, 0], [2098, 29538], [19127, 28164], [17097, -1200]

РЕДАКТИРОВАТЬ С ИСПОЛЬЗОВАНИЕМ ОТКРЫТОГО CV:

OpenCvSharp.Mat hCv = OpenCvSharp.Cv2.FindHomography(srcPoints, dstPoints);
OpenCvSharp.Point2d[] resultCv = OpenCvSharp.Cv2.PerspectiveTransform(targetCv, hCv);

1 Ответ

0 голосов
/ 24 сентября 2018

Благодаря комментарию Александра Рейнольдса я наконец-то использовал библиотеку OpenCvSharp 3 .Вы получаете матрицу гомографии, используя:

homographyMatrix = OpenCvSharp.Cv2.FindHomography(originalPicturePoints, targetPicturePoints);

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

targetPoint = OpenCvSharp.Cv2.PerspectiveTransform(orignalPoint, homographyMatrix);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...