Я работаю над проблемой обработки изображений. У меня есть проектор, который проецирует изображение на экран, и камера, которая его фотографирует. Я могу установить соответствие 1:1 между подмножеством координат проектора и подмножеством пикселей камеры, проецируя точки на экран и находя центры масс результирующих областей на камере. таким образом у меня есть карта
proj_x, proj_y ‹--> cam_x, cam_y для разбросанных пар точек
Мой первоначальный план состоял в том, чтобы упорядочить эту карту, используя функцию griddata Mathscript. Это будет хорошо работать в MATLAB, как показано ниже.
[pgridx, pgridy] = meshgrid(allprojxpts, allprojypts)
fitcx = griddata (proj_x, proj_y, cam_x, pgridx, pgridy);
fitcy = griddata (proj_x, proj_y, cam_y, pgridx, pgridy);
и обратное для сопоставления камеры с проектором
К сожалению, этот код приводит к тому, что Labview исчерпывает память на шаге meshgrid (камера имеет разрешение 5 мегапикселей, что, по-видимому, слишком много для обработки labview).
Затем я начал просматривать openCV и нашел функцию cvRemap. К сожалению, эта функция использует в качестве отправной точки регуляризованную пиксельную карту, подобную той, которую я пытался сгенерировать выше. Однако это заставило меня надеяться, что функции для создания такой карты могут быть доступны в openCV. Я не смог найти его в API openCV 1.0 (я застрял с 1.0 по устаревшим причинам), но я надеялся, что он там или у кого-то есть простой трюк.
Итак, мой вопрос является одним из следующих
1) Как я могу интерполировать из разбросанных точек в сетку в openCV; (т.е., учитывая z = f(x,y) для разбросанных значений x и y, как заполнить изображение f(im_x, im_y)?
2) Как я могу выполнить преобразование изображения, которое сопоставляет изображение 1 с изображением 2, учитывая, что я знаю рассеянное отображение точек в системе координат 1 в системе координат 2. Это может быть реализовано либо в Labview, либо в OpenCV.
Примечание. Я помечаю этот пост как delaunay, потому что это один из методов выполнения рассеянной интерполяции, но лучшим тегом будет «рассеянная интерполяция».