2017-05-04 3 views
0

OpenCVを使用して魚眼画像を歪ませようとしています。 Photo from wikipedia enter image description hereOpenCVを使用して切り取った魚眼画像を歪ませる方法

:私はこのような魚眼画像をトリミングする必要が今

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() 

:私はすでにカメラを校正し、また次のコードを使用してまともな歪みのない画像を取得(私は、関連する部分を掲載しました)

これらの写真はデモンストレーション用です。 私は魚眼レンズの写像関数を使って、右側で作った点を決めました。しかし、上記と同じコード(と同じカメラマトリックス)を使用すると、出力は本当に奇妙な歪んだ画像になります。

私はまた、最初にゆがんでいないことを考えていますが、私はこのように切り抜かなければならない点を正確に計算することはできません。だから私はまず画像を切り抜かなければならない。

どのように対称的にトリミングされた魚眼画像を正しく歪ませないのですか?

答えて

0

画像を移動してトリミングすると、魚カメラの較正パラメータが新しいカメラに適合しません。

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/

+0

ので、あなたは、私は画像をトリミングする必要があり意味が、一種の黒画素で切り出された領域であることを「記入」? – sybilcut

+0

それは私が試してみたいことです。 –

+0

それは私のために働いていませんでした:(私はちょうどいくつかの他のパラメータを調整しようとします.... – sybilcut

関連する問題