Пример #1
0
        public PlaneTrackingCompleteData Track(InputData inputData)
        {
            var planeData = new PlaneTrackingCompleteData(inputData);

            if (planeData.UserParameters.VisualisationType == VisualisationType.RawRGB)
            {
                planeData.ResultData.VisualisationBitmap = ReturnColorBitmap(planeData.KinectData.ColorFrameData);
            }

            planeData.PlaneData.CannyDepthData = CannyAppliedToDepthData(planeData.KinectData.CameraSpacePointsFromDepthData);
            planeData.PlaneData.MaskOfTable    = LocalizedTableMask;
            planeData.PlaneData.ColorBitmap    = ReturnColorBitmap(planeData.KinectData.ColorFrameData);

            var colorImg = ReturnColorImageOfTable(LocalizedTableMask, planeData.KinectData.ColorFrameData, planeData.KinectData.PointsFromColorToDepth);

            planeData.PlaneData.MaskedColorImageOfTable = colorImg;
            //planeData.MaskedColorImageOfTable._EqualizeHist(); // TODO zjisitit jestli to pomáhá při stabilizaci osvětlení

            if (planeData.UserParameters.VisualisationType == VisualisationType.MaskedColorImageOfTable)
            {
                planeData.ResultData.VisualisationBitmap = colorImg.Bitmap;
            }

            return(planeData);
        }
Пример #2
0
        public ChessboardTrackingCompleteData Calibrate(PlaneTrackingCompleteData planeData, BlockingCollection <Message> outputQueue)
        {
            var chessboardData = new ChessboardTrackingCompleteData(planeData);

            SceneCalibrationSnapshot snapshot;

            (BoardReprezentation, snapshot) = ChessboardAlgorithm.LocateChessboard(chessboardData);
            outputQueue.Add(new SceneCalibrationSnapshotMessage(snapshot));

            RotationAlgorithm.Rotate(BoardReprezentation, chessboardData.KinectData.CameraSpacePointsFromDepthData);

            return(chessboardData);
        }
Пример #3
0
        public ChessboardTrackingCompleteData Track(PlaneTrackingCompleteData planeData)
        {
            var chessboardData = new ChessboardTrackingCompleteData(planeData);

            RotationAlgorithm.Rotate(BoardReprezentation, chessboardData.KinectData.CameraSpacePointsFromDepthData);

            chessboardData.ChessboardData.FieldSize = BoardReprezentation.FieldVector1.Magnitude();

            if (chessboardData.UserParameters.VisualisationType == VisualisationType.HighlightedChessboard)
            {
                chessboardData.ResultData.VisualisationBitmap =
                    Renderer.ReturnLocalizedChessboardWithTable(
                        chessboardData.PlaneData.MaskedColorImageOfTable.Bitmap,
                        chessboardData.PlaneData.MaskOfTable,
                        chessboardData.KinectData.PointsFromColorToDepth,
                        chessboardData.KinectData.CameraSpacePointsFromDepthData,
                        BoardReprezentation.FieldVector1.Magnitude());
            }

            return(chessboardData);
        }
Пример #4
0
        public PlaneTrackingCompleteData Calibrate(InputData inputData)
        {
            var planeData = new PlaneTrackingCompleteData(inputData);

            Data data = new Data(planeData.KinectData.CameraSpacePointsFromDepthData);

            data.CutOffMinMaxDepth(PlaneLocalizationConfig.MinDepth, PlaneLocalizationConfig.MaxDepth);
            data.Ransac();
            data.LargestTableArea();
            data.LinearRegression();
            data.LargestTableArea();
            data.LinearRegression();
            data.LargestTableArea();
            data.LinearRegression();
            data.LargestTableArea();
            data.RotationTo2DModified();
            LocalizedTableMask = data.ConvexHullAlgorithm();

            var colorImg = ReturnColorImageOfTable(LocalizedTableMask, planeData.KinectData.ColorFrameData, planeData.KinectData.PointsFromColorToDepth);

            planeData.PlaneData.MaskedColorImageOfTable = colorImg;
            return(planeData);
        }