Change intrinsic camera matrix initialization
authorKevin <asandweech@gmail.com>
Sat, 19 Oct 2013 06:30:03 +0000 (01:30 -0500)
committerKevin <asandweech@gmail.com>
Sat, 19 Oct 2013 07:10:20 +0000 (02:10 -0500)
In the function cvInitIntrinsicParams2D the principal point for
normalized image coordinates is set to 0/0. This updates the function
to initialize the principal point at 0.5/0.5.

modules/calib3d/src/calibration.cpp

index e483935..d9e821d 100644 (file)
@@ -1391,8 +1391,8 @@ CV_IMPL void cvInitIntrinsicParams2D( const CvMat* objectPoints,
 
     matA = cvCreateMat( 2*nimages, 2, CV_64F );
     _b = cvCreateMat( 2*nimages, 1, CV_64F );
-    a[2] = (imageSize.width - 1)*0.5;
-    a[5] = (imageSize.height - 1)*0.5;
+    a[2] = (!imageSize.width) ? 0.5 : (imageSize.width - 1)*0.5;
+    a[5] = (!imageSize.height) ? 0.5 : (imageSize.height - 1)*0.5;
     _allH = cvCreateMat( nimages, 9, CV_64F );
 
     // extract vanishing points in order to obtain initial value for the focal length