/// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public MainWindow() { _iKinect = new Kinect(); InitializeComponent(); this._kinect = _iKinect.DiscoverKinectSensor(); Initialize(); KinectPoint[,] pic1 = _iKinect.GetColorImage(); // 1st Pic: strange area pic1 = _iKinect.GetColorImage(); //2nd Pic: too dark pic1 = _iKinect.GetColorImage(); //3rd Pic: not the same brightness as "real" image pic1 = _iKinect.GetColorImage(); //4th Pic: okay! MessageBox.Show("Please display the playground", "Display Playground", MessageBoxButton.OK, MessageBoxImage.Information); KinectPoint[,] pic2 = _iKinect.GetColorImage(); KinectPoint[,] newPic = _iKinect.GetDifferenceImage(pic2, pic1, 200); //0x64, 0x1E, 0x32 //newPic = CalculateKMeans(newPic); short[] depthPic = _iKinect.GetDepthImage(); KinectPoint[,] depthAndColorPic = _iKinect.CreateKinectPointArray(); this._colorImageBitmap.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(newPic, 640, 480), this._colorImageStride, 0); this._colorImageBitmap2.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(depthAndColorPic, 640, 480), this._colorImageStride, 0); this._colorImageBitmap3.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(pic1, 640, 480), this._colorImageStride,0); this._colorImageBitmap4.WritePixels(this._colorImageBitmapRect, PrintKinectPointArray(pic2, 640, 480), this._colorImageStride, 0); this._rawDepthImage.WritePixels(this._rawDepthImageRect, PrintKinectPointArray(depthAndColorPic, 640, 480), this._rawDepthImageStride,0); this._rawDepthImage2.WritePixels(this._rawDepthImageRect, depthPic, this._rawDepthImageStride, 0); }
public Dictionary<BeamerPoint, KinectPoint> CalibrateBeamerToKinect(IBeamerWindow beamerWindow, IKinect kinect) { var beamerToKinect = new Dictionary<BeamerPoint, KinectPoint>(); var kinectPoints = kinect.CreateKinectPointArray(); for (var i = 0; i < CALIBRATION_POINTS; i++) { var beamerPoint = beamerWindow.DisplayCalibrationImageEdge(true, i); Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP); var picture1 = kinect.GetColorImage(); Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP); beamerWindow.DisplayCalibrationImageEdge(false, i); Thread.Sleep(KinectBeamerCalibration.THREAD_SLEEP); var picture2 = kinect.GetColorImage(); var diffKinectPoints = kinect.GetDifferenceImage(picture1, picture2, KinectBeamerCalibration.THRESHOLD); //TODO Refactoring var initPoints = new List<Vector2D>() { new Vector2D { X = 0, Y = 0 } }; var centroids = KMeans.DoKMeans(KinectPointArrayHelper.ExtractBlackPointsAs2dVector(diffKinectPoints), initPoints); var kinectPoint = kinectPoints[(int)centroids[0].X, (int)centroids[0].Y]; beamerToKinect.Add(beamerPoint, kinectPoint); var name = ""; switch (i + 1) { case 1: name = "A"; break; case 2: name = "B"; break; case 3: name = "C"; break; case 4: name = "D"; break; } Calibration.Points.Add(new Point { Name = name, BeamerPoint = beamerPoint, KinectPoint = kinectPoint }); } return beamerToKinect; }