コード例 #1
0
        /// <summary>
        /// Copy Constructor (shallow). On Windows UWP, values of the original camera intrinsics are used.
        /// </summary>
        public CameraIntrinsic([NotNull] CameraIntrinsic intrinsic)
        {
            if (intrinsic == null)
            {
                throw new ArgumentNullException(nameof(intrinsic));
            }
#if ENABLE_WINMD_SUPPORT
            WindowsCameraIntrinsics = intrinsic.WindowsCameraIntrinsics;
            if (WindowsCameraIntrinsics == null)
            {
                throw new NullReferenceException(nameof(WindowsCameraIntrinsics));
            }
            FocalLength                    = new Vector2(WindowsCameraIntrinsics.FocalLength.X, WindowsCameraIntrinsics.FocalLength.Y);
            ImageWidth                     = WindowsCameraIntrinsics.ImageWidth;
            ImageHeight                    = WindowsCameraIntrinsics.ImageHeight;
            PrincipalPoint                 = new Vector2(WindowsCameraIntrinsics.PrincipalPoint.X, WindowsCameraIntrinsics.PrincipalPoint.Y);
            RadialDistortion               = new Vector3(WindowsCameraIntrinsics.RadialDistortion.X, WindowsCameraIntrinsics.RadialDistortion.Y, WindowsCameraIntrinsics.RadialDistortion.Z);
            TangentialDistortion           = new Vector2(WindowsCameraIntrinsics.TangentialDistortion.X, WindowsCameraIntrinsics.TangentialDistortion.Y);
            UndistortedProjectionTransform = WindowsCameraIntrinsics.UndistortedProjectionTransform.ToUnity();
#else
            FocalLength                    = intrinsic.FocalLength;
            ImageWidth                     = intrinsic.ImageWidth;
            ImageHeight                    = intrinsic.ImageHeight;
            PrincipalPoint                 = intrinsic.PrincipalPoint;
            RadialDistortion               = intrinsic.RadialDistortion;
            TangentialDistortion           = intrinsic.TangentialDistortion;
            UndistortedProjectionTransform = intrinsic.UndistortedProjectionTransform;
#endif
        }
コード例 #2
0
 public CameraIntrinsic([NotNull] Windows.Media.Devices.Core.CameraIntrinsics cameraIntrinsics)
 {
     if (cameraIntrinsics == null)
     {
         throw new ArgumentNullException(nameof(cameraIntrinsics));
     }
     FocalLength                    = new Vector2(cameraIntrinsics.FocalLength.X, cameraIntrinsics.FocalLength.Y);
     ImageWidth                     = cameraIntrinsics.ImageWidth;
     ImageHeight                    = cameraIntrinsics.ImageHeight;
     PrincipalPoint                 = new Vector2(cameraIntrinsics.PrincipalPoint.X, cameraIntrinsics.PrincipalPoint.Y);
     RadialDistortion               = new Vector3(cameraIntrinsics.RadialDistortion.X, cameraIntrinsics.RadialDistortion.Y, cameraIntrinsics.RadialDistortion.Z);
     TangentialDistortion           = new Vector2(cameraIntrinsics.TangentialDistortion.X, cameraIntrinsics.TangentialDistortion.Y);
     UndistortedProjectionTransform = cameraIntrinsics.UndistortedProjectionTransform.ToUnity();
     WindowsCameraIntrinsics        = cameraIntrinsics;
 }
コード例 #3
0
        internal CameraIntrinsics(Windows.Media.Devices.Core.CameraIntrinsics rtCi)
        {
            OriginalIntrinsics = rtCi;

            FrameWidth  = rtCi.ImageWidth;
            FrameHeight = rtCi.ImageHeight;

            FocalLengthX    = rtCi.FocalLength.X;
            FocalLengthY    = rtCi.FocalLength.Y;
            PrincipalPointX = rtCi.PrincipalPoint.X;

            // TODO: validate - 'inverted' principal point to fit all existing kinect algorithms & Kinect SDK: SDK_Cy = frame_height - RT_Cy
            // (who had a great idea to break formulas used for a decade in 'CV using kinect' papers?)
            PrincipalPointY             = FrameHeight - rtCi.PrincipalPoint.Y;
            RadialDistortionSecondOrder = rtCi.RadialDistortion.X;
            RadialDistortionFourthOrder = rtCi.RadialDistortion.Y;
            RadialDistortionSixthOrder  = rtCi.RadialDistortion.Z;
        }
コード例 #4
0
        private CameraIntrinsics ConvertIntrinsics(Windows.Media.Devices.Core.CameraIntrinsics mediaFrameIntrinsics)
        {
            CameraIntrinsics intrinsics = null;

            if (mediaFrameIntrinsics != null)
            {
                Vector2   focalLength                    = new Vector2(mediaFrameIntrinsics.FocalLength.X, mediaFrameIntrinsics.FocalLength.Y);
                uint      imageWidth                     = mediaFrameIntrinsics.ImageWidth;
                uint      imageHeight                    = mediaFrameIntrinsics.ImageHeight;
                Vector2   principalPoint                 = new Vector2(mediaFrameIntrinsics.PrincipalPoint.X, mediaFrameIntrinsics.PrincipalPoint.Y);
                Vector3   radialDistortion               = new Vector3(mediaFrameIntrinsics.RadialDistortion.X, mediaFrameIntrinsics.RadialDistortion.Y, mediaFrameIntrinsics.RadialDistortion.Z);
                Vector2   tangentialDistortion           = new Vector2(mediaFrameIntrinsics.TangentialDistortion.X, mediaFrameIntrinsics.TangentialDistortion.Y);
                Matrix4x4 undistortedProjectionTransform = ConvertMatrix(mediaFrameIntrinsics.UndistortedProjectionTransform);

                intrinsics = new CameraIntrinsics(focalLength, imageWidth, imageHeight, principalPoint, radialDistortion, tangentialDistortion, undistortedProjectionTransform);
            }

            return(intrinsics);
        }