Я работаю с камерой «рыбий глаз» и мне нужно изменить искажение перед дальнейшими вычислениями. В этом вопросе это происходит Исправление искажения «рыбий глаз»
src = cv.LoadImage(src)
dst = cv.CreateImage(cv.GetSize(src), src.depth, src.nChannels)
mapx = cv.CreateImage(cv.GetSize(src), cv.IPL_DEPTH_32F, 1)
mapy = cv.CreateImage(cv.GetSize(src), cv.IPL_DEPTH_32F, 1)
cv.InitUndistortMap(intrinsics, dist_coeffs, mapx, mapy)
cv.Remap(src, dst, mapx, mapy, cv.CV_INTER_LINEAR + cv.CV_WARP_FILL_OUTLIERS, cv.ScalarAll(0))
Проблема в том, что таким образом функции переназначения проходят по всем точкам и создают из них новую картинку. это занимает много времени, чтобы делать это каждый кадр. То, что я ищу, - это точечный перевод изображения "рыбий глаз" в нормальные координаты изображения.
Подход, который мы используем, состоит в том, чтобы выполнять все вычисления на входном кадре и просто переводить координаты результата в мировые координаты, поэтому мы не хотим проходить через все точки изображения и создавать из него новое. (Время очень важно для нас)
В матрицах mapx и mapy есть какие-то поточечные переводы, но многие точки без полного перевода. Я попытался интерполировать эти матрицы, но результат был не тем, что я искал.
Любая помощь будет высоко оценена, даже другие подходы, которые более эффективны по времени, чем cv.Remap.
Спасибо