我正在使用鱼眼相机,在进一步计算之前需要反转失真,在这个问题中,这正在发生纠正鱼眼失真
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 更省时的其他方法。
谢谢