Browse Source

removed projection3DTo3D (not working + not needed)

Alexander Hendrich 10 years ago
parent
commit
bcf3f4f471

+ 11 - 15
bbiwarg/Output/GlassesOutput/GlassesWindow.cs

@@ -26,8 +26,7 @@ namespace bbiwarg.Output.GlassesOutput
         private ImageSize inputSize;
         private ImageSize outputSize;
         private OutputImage image;
-        private Projection2DTo2D projection1;
-        private Projection3DTo3D projection2;
+        private Projection2DTo2D projection;
         private Vector2D currentCalibrationPoint;
         private bool calibrationImageUpToDate;
         private Random rand;
@@ -45,8 +44,7 @@ namespace bbiwarg.Output.GlassesOutput
 
             rand = new Random();
             currentCalibrationPoint = getRandomOutputPoint();
-            projection1 = new Projection2DTo2D(inputSize, outputSize, Parameters.GlassesWindowNumCalibrationPoints);
-            projection2 = new Projection3DTo3D(inputSize, outputSize, Parameters.GlassesWindowNumCalibrationPoints);
+            projection = new Projection2DTo2D(inputSize, outputSize, Parameters.GlassesWindowNumCalibrationPoints);
 
             Name = name;
             Text = name;
@@ -77,7 +75,7 @@ namespace bbiwarg.Output.GlassesOutput
             if (!inputProvider.IsActive)
                 Close();
 
-            if (projection1.IsCalibrated)
+            if (projection.IsCalibrated)
             {
                 FrameData frameData = inputHandler.FrameData;
                 if (frameData != null)
@@ -121,17 +119,17 @@ namespace bbiwarg.Output.GlassesOutput
             foreach (Palm palm in frameData.TrackedPalms)
             {
                 Quadrangle quadInput = palm.Quad;
-                Vector2D a = projection1.projectPoint(quadInput.TopLeft);
-                Vector2D b = projection1.projectPoint(quadInput.TopRight);
-                Vector2D c = projection1.projectPoint(quadInput.BottomRight);
-                Vector2D d = projection1.projectPoint(quadInput.BottomLeft);
+                Vector2D a = projection.projectPoint(quadInput.TopLeft);
+                Vector2D b = projection.projectPoint(quadInput.TopRight);
+                Vector2D c = projection.projectPoint(quadInput.BottomRight);
+                Vector2D d = projection.projectPoint(quadInput.BottomLeft);
                 Quadrangle quadOutput = new Quadrangle(a, b, c, d);
                 image.drawQuadrangleGrid(quadOutput, Color.Yellow, Color.Orange, 3, 4);
             }
 
             foreach (Finger finger in frameData.TrackedFingers)
             {
-                Vector2D tipProjected = projection1.projectPoint(finger.TipPoint);
+                Vector2D tipProjected = projection.projectPoint(finger.TipPoint);
                 image.fillCircle(tipProjected, 10, Color.Yellow);
             }
 
@@ -169,10 +167,8 @@ namespace bbiwarg.Output.GlassesOutput
                         {
                             Vector2D pointOutput = currentCalibrationPoint;
                             Vector2D pointInput = frameData.TrackedFingers[0].TipPoint;
-                            Vector3D point3D = inputHandler.CoordinateConverter.convertCoordinate2Dto3D(pointInput, frameData.DepthImage.getDepthAt(pointInput));
-
-                            projection1.addCalibrationPoints(pointInput, pointOutput);
-                            projection2.addCalibrationPoints(point3D, pointInput, pointOutput);
+                            
+                            projection.addCalibrationPoints(pointInput, pointOutput);
 
                             currentCalibrationPoint = getRandomOutputPoint();
                         }
@@ -181,7 +177,7 @@ namespace bbiwarg.Output.GlassesOutput
             }
             else if (e.KeyCode == Keys.R)
             {
-                projection1.reset();
+                projection.reset();
                 currentCalibrationPoint = getRandomOutputPoint();
             }
         }

+ 1 - 1
bbiwarg/Parameters.cs

@@ -23,7 +23,7 @@ namespace bbiwarg
         public static readonly int ConsoleHeight = 30;
 
         // input
-        public static readonly InputType InputSource = InputType.Movie;
+        public static readonly InputType InputSource = InputType.Camera;
         public static readonly String InputMoviePath = "..\\..\\videos\\touch\\4.skv";
 
         // Logger

+ 0 - 82
bbiwarg/Utility/Projection3DTo3D.cs

@@ -1,82 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Drawing;
-using System.Threading.Tasks;
-using Emgu.CV;
-using Emgu.CV.Structure;
-
-namespace bbiwarg.Utility
-{
-    class Projection3DTo3D
-    {
-        private ImageSize sizeA;
-        private ImageSize sizeB;
-        private List<Vector3D> calibrationPoints3D;
-        private List<Vector2D> calibrationPointsA;
-        private List<Vector2D> calibrationPointsB;
-        private int numPointsForCalibration;
-
-        private IntrinsicCameraParameters intrinsicParam1;
-        private IntrinsicCameraParameters intrinsicParam2;
-        private ExtrinsicCameraParameters[] extrinsicParams;
-        private Matrix<double> foundamentalMatrix;
-        private Matrix<double> essentialMatrix;
-
-        public bool IsCalibrated { get; private set; }
-
-        public Projection3DTo3D(ImageSize sizeA, ImageSize sizeB, int numPointsForCalibration = 8)
-        {
-            this.sizeA = sizeA;
-            this.sizeB = sizeB;
-            this.numPointsForCalibration = numPointsForCalibration;
-
-            reset();
-        }
-
-        public void reset()
-        {
-            IsCalibrated = false;
-            calibrationPoints3D = new List<Vector3D>();
-            calibrationPointsA = new List<Vector2D>();
-            calibrationPointsB = new List<Vector2D>();
-
-            intrinsicParam1 = new IntrinsicCameraParameters();
-            intrinsicParam2 = new IntrinsicCameraParameters();
-        }
-
-        public void addCalibrationPoints(Vector3D p3D, Vector2D pA, Vector2D pB)
-        {
-            calibrationPoints3D.Add(p3D);
-            calibrationPointsA.Add(pA);
-            calibrationPointsB.Add(sizeA.getAbsolutePoint(sizeB.getRelativePoint(pB)));
-
-            if (calibrationPointsA.Count == numPointsForCalibration)
-                calibrate();
-        }
-
-        private void calibrate()
-        {
-            MCvPoint3D32f[][] points3D = new MCvPoint3D32f[numPointsForCalibration][];
-            PointF[][] pointsA = new PointF[numPointsForCalibration][];
-            PointF[][] pointsB = new PointF[numPointsForCalibration][];
-
-            for (int i = 0; i < numPointsForCalibration; i++)
-            {
-                points3D[i] = new MCvPoint3D32f[1] { new MCvPoint3D32f(calibrationPoints3D[i].X, calibrationPoints3D[i].Y, calibrationPoints3D[i].Z) };
-                pointsA[i] = new PointF[1] { calibrationPointsA[i] };
-                pointsB[i] = new PointF[1] { calibrationPointsB[i] };
-            }
-            /*
-            CameraCalibration.StereoCalibrate(points3D, pointsA, pointsB, intrinsicParam1, intrinsicParam2, new Size(sizeA.Width, sizeB.Width), Emgu.CV.CvEnum.CALIB_TYPE.DEFAULT, new MCvTermCriteria(0.1e5), out extrinsicParams, out foundamentalMatrix, out essentialMatrix);
-
-            Console.WriteLine("EXTRINSICS:");
-            Console.WriteLine(extrinsicParams.RotationVector.ToString());
-            Console.WriteLine(extrinsicParams.TranslationVector.ToString());*/
-
-            
-            //CameraCalibration.CalibrateCamera(points3D, pointsB, new Size(sizeA.Width, sizeB.Width), intrinsicParam2, Emgu.CV.CvEnum.CALIB_TYPE.DEFAULT, new MCvTermCriteria(0.1e5), out extrinsicParams);
-        }
-    }
-}

+ 0 - 1
bbiwarg/bbiwarg.csproj

@@ -151,7 +151,6 @@
     <Compile Include="Utility\Line2D.cs" />
     <Compile Include="Utility\LineSegment2D.cs" />
     <Compile Include="Utility\Logger.cs" />
-    <Compile Include="Utility\Projection3DTo3D.cs" />
     <Compile Include="Utility\Quadrangle.cs" />
     <Compile Include="Utility\Timer.cs" />
     <Compile Include="Utility\Vector2D.cs" />