繁体   English   中英

如何使用OpenCV使扭曲的鱼眼图像失真

[英]How to undistort a cropped fisheye image using OpenCV

我正在尝试使用OpenCV使鱼眼图像失真。 我已经校准了相机,并使用以下代码获得了不错的未失真图像(我刚刚发布了相关部分):

img = cv2.imread('img.jpeg') #image path of pic to distort
h,w = img.shape[:2]

Knew = cv2.fisheye.estimateNewCameraMatrixForUndistortRectify(K,D,(w,h),None)
Knew[(0,1), (0,1)] = .3* Knew[(0,1), (0,1)]

mapx, mapy = cv2.fisheye.initUndistortRectifyMap(K,D,None,Knew,(w,h),5)
img_undistorted = cv2.remap(img, mapx, mapy, cv2.INTER_LINEAR)

cv2.imshow('undistorted', img_undistorted)
cv2.waitKey(0)
cv2.destroyAllWindows()

现在,我必须像这样裁剪鱼眼图像: 维基百科的照片 在此处输入图片说明

这些照片仅用于演示目的。 我使用了鱼眼镜头的映射功能来确定我在右侧裁剪的点。 但是,如果我使用与上面相同的代码(和相同的相机矩阵),则输出的图像确实很奇怪。

我也考虑过先不失真然后进行裁剪,但是我无法以这种方式准确计算出必须裁剪的点。 所以我必须先裁剪图像。

那么,如何正确地使不对称裁剪的鱼眼镜头图像失真呢?

当您移动和裁剪图像时,鱼相机的校准参数不适用于新相机。

可能是您可以尝试通过填充零值来使iamge对称。 要点是使两个图像的中心点在同一位置。

参考:

http://docs.opencv.org/3.0-beta/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#fisheye-estimatenewcameramatrixforundistortrectify

http://answers.opencv.org/question/64614/fisheyeundistortimage-doesnt-work-what-wrong-with-my-code/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM