Ejemplo n.º 1
0
        private void Run()
        {
            if (_doorDetector != null && _doorDetector.IsRunning)
            {
                _doorDetector.CancelAsync();
            }

            ColorBasedDoorDetector cDetector = _doorDetector as ColorBasedDoorDetector;

            if (cDetector != null)
            {
                _imageStream = VideoStream.Instance;
            }
            else
            {
                DepthBasedDoorDetector dDetector = _doorDetector as DepthBasedDoorDetector;
                if (dDetector != null)
                {
                    _imageStream = DepthStream.Instance;
                }
                else
                {
                    InfraredBasedDoorDetector iDetector = _doorDetector as InfraredBasedDoorDetector;
                    if (iDetector != null)
                    {
                        _imageStream = InfraredStream.Instance;
                    }
                }
            }

            if (_imageStream != null && this.DoorDetector != null)
            {
                _doorDetector.RunAsync(_imageStream);
            }
        }
Ejemplo n.º 2
0
        public void TestNegativeImageDoesNotDetectDoor()
        {
            ColorBasedDoorDetector doorDetector = CreateBasicDoorDetector();
            Image <Bgr, Byte>      image        = new Image <Bgr, byte>(new Size(500, 500));
            List <DetectedDoor>    doors        = doorDetector.GetDoors(image);

            List <DetectedDoor> expectedDoors = new List <DetectedDoor>();

            Assert.AreEqual <List <DetectedDoor> >(doors, expectedDoors);
        }
Ejemplo n.º 3
0
        public void MinAndMaxColorMatchInitialTest()
        {
            Hsv minColor = new Hsv(0, 150, 255);
            Hsv maxColor = new Hsv(33, 66, 99);

            ColorBasedDoorDetector doorDetector = new ColorBasedDoorDetector(minColor, maxColor);

            Assert.AreEqual <Hsv>(minColor, doorDetector.MinColor);
            Assert.AreEqual <Hsv>(maxColor, doorDetector.MaxColor);
        }
Ejemplo n.º 4
0
        public void TestSimplifyImageReturnsCorrectImage()
        {
            ColorBasedDoorDetector detector        = CreateBasicDoorDetector();
            PrivateObject          privateAccessor = new PrivateObject(detector);
            Image <Gray, Byte>     inputImage      = LoadImage <Gray, byte>("door3_filtered.JPG");
            Image <Gray, Byte>     expectedImage   = LoadImage <Gray, byte>("door3_simplified.JPG");

            Image <Gray, Byte> filtered = (Image <Gray, Byte>)privateAccessor.Invoke("SimplifyImage", inputImage, 10);

            Assert.AreEqual <Image <Gray, Byte> >(expectedImage, filtered);
        }
Ejemplo n.º 5
0
        public void TestWellLitPositiveImageDetectsDoor()
        {
            ColorBasedDoorDetector doorDetector = CreateBasicDoorDetector();
            Image <Bgr, Byte>      image        = LoadImage <Bgr, byte>("door3.JPG");
            List <DetectedDoor>    doors        = doorDetector.GetDoors(image);

            List <DetectedDoor> expectedDoors = new List <DetectedDoor>();

            expectedDoors.Add(new DetectedDoor(new Rectangle(), DetectedDoor.DetectionConfidence.HIGH, 0.323, 5.433));

            Assert.AreEqual <List <DetectedDoor> >(doors, expectedDoors);
        }
Ejemplo n.º 6
0
        public void TestExtractDoorsReturnsCorrectDoors()
        {
            ColorBasedDoorDetector detector        = CreateBasicDoorDetector();
            PrivateObject          privateAccessor = new PrivateObject(detector);
            Image <Gray, Byte>     inputImage      = LoadImage <Gray, Byte>("box.JPG");

            List <DetectedDoor> doors         = (List <DetectedDoor>)privateAccessor.Invoke("ExtractDoors", inputImage);
            List <DetectedDoor> expectedDoors = new List <DetectedDoor>();

            expectedDoors.Add(new DetectedDoor(new Rectangle(), DetectedDoor.DetectionConfidence.HIGH, 0, 10));

            Assert.AreEqual <List <DetectedDoor> >(doors, expectedDoors);
        }
Ejemplo n.º 7
0
        //Render the background
        private void UpdateBackground()
        {
            //const DispatcherPriority priority = DispatcherPriority.Render;
            while (true)
            {
                BaseFrame       frame       = null;
                WriteableBitmap frameBitmap = null;

                ColorBasedDoorDetector cDetector = _doorDetector as ColorBasedDoorDetector;
                if (cDetector != null)
                {
                    frame = VideoStream.Instance.GetFrame();
                    if (frame != null)
                    {
                        frameBitmap = frame.GetBitmap();
                    }
                }
                else
                {
                    DepthBasedDoorDetector dDetector = _doorDetector as DepthBasedDoorDetector;
                    if (dDetector != null)
                    {
                        frame = DepthStream.Instance.GetFrame();
                        if (frame != null)
                        {
                            frameBitmap = frame.GetWriteableBitmapForDoorNavi();
                        }
                    }
                    else
                    {
                        InfraredBasedDoorDetector iDetector = _doorDetector as InfraredBasedDoorDetector;
                        if (iDetector != null)
                        {
                            frame = InfraredStream.Instance.GetFrame();
                            if (frame != null)
                            {
                                frameBitmap = frame.GetBitmap();
                            }
                        }
                    }
                }

                if (frameBitmap != null)
                {
                    RenderImage(frameBitmap, ImageView1);
                }
                Thread.Sleep(1000 / FRAMERATE);
            }
        }
Ejemplo n.º 8
0
        public void TestDoorFromContourReturnsCorrectContour()
        {
            ColorBasedDoorDetector detector        = CreateBasicDoorDetector();
            PrivateObject          privateAccessor = new PrivateObject(detector);
            Size            imageSize    = new Size(100, 100);
            Rectangle       boundingRect = new Rectangle(10, 10, 80, 80);
            Contour <Point> inputContour = new MockContour <Point>(boundingRect);

            List <DetectedDoor> doors         = (List <DetectedDoor>)privateAccessor.Invoke("DoorFromContour", inputContour);
            List <DetectedDoor> expectedDoors = new List <DetectedDoor>();

            expectedDoors.Add(new DetectedDoor(new Rectangle(), DetectedDoor.DetectionConfidence.HIGH, 0, 10));

            Assert.AreEqual <List <DetectedDoor> >(doors, expectedDoors);
        }
Ejemplo n.º 9
0
        private void RadioButton_CheckedChanged(object sender, RoutedEventArgs e)
        {
            // ... Get RadioButton reference.
            var    button             = sender as RadioButton;
            string detectionMethodStr = button.Content.ToString();

            if (detectionMethodStr == "ColorBased")
            {
                DoorDetector = new ColorBasedDoorDetector();
            }
            else if (detectionMethodStr == "DepthBased")
            {
                DoorDetector = new DepthBasedDoorDetector();
            }
            else if (detectionMethodStr == "InfraredBased")
            {
                DoorDetector = new InfraredBasedDoorDetector();
            }
            this.Run();
        }
        public void TestDoorNavigatorNavigatesTowardsDoor()
        {
            Bitmap          image  = new Bitmap("ObjectDetection\\Images\\door3.JPG");
            MockFrame       frame  = new MockFrame(image);
            MockImageStream stream = new MockImageStream(frame);

            ColorBasedDoorDetector            doorDetector = new ColorBasedDoorDetector();
            DoorOrientationNavigationStrategy navigator    = new DoorOrientationNavigationStrategy(doorDetector);

            doorDetector.RunAsync(stream);

            // Sleep for 1 second to ensure that the door detector has time to recognize the door
            Thread.Sleep(1000);

            Vector navigatorDirection = navigator.GetDirection();
            Vector expectedDirection  = new Vector(0.23776, 0.7623);

            Assert.AreEqual <Vector>(expectedDirection, navigatorDirection);

            doorDetector.CancelAsync();
        }