Exemplo n.º 1
0
        public override ResultadoDeAnalisisDeFragmento Ejecutar()
        {
            if (this.TamañoDeContenedorDeBusquedaEnImagen().Width == 0)
            {
                Rectangle limites = new Rectangle(this.PosicionDelContenedorDeBusquedaEnImagen(), this.TamañoDeContenedorDeBusquedaEnImagen());
            }

            // find all matchings with specified above similarity
            TemplateMatch[] matchings = null;
            this.Procesador.SimilarityThreshold = 0.99f;

            while (matchings == null || matchings.Count() == 0)
            {
                matchings = this.Procesador.ProcessImage(this.Fragmento.ImagenContenedoraWrapper.Imagen, this.Fragmento.ImagenWrapper.Imagen, this.ContenedorDeBusquedaEnImagen);
                if (matchings.Count() > 0 || this.Procesador.SimilarityThreshold < this.CoeficienteDeSimilitudMimimo())
                {
                    break;
                }

                this.Procesador.SimilarityThreshold -= 0.02f;
            }

            ResultadoDeAnalisisDeFragmento resultado = new ResultadoDeAnalisisDeFragmento();

            resultado.Coincidencias = matchings.ToList();
            resultado.Fragmento     = this.Fragmento;
            resultado.ContenedorDeBusquedaEnImagen = this.ContenedorDeBusquedaEnImagen;

            return(resultado);
        }
Exemplo n.º 2
0
        public void TodosLosResultadosDebenSerNegativosPorCompleto()
        {
            Mock <IAnalizador>             mockAnalizador           = new Mock <IAnalizador>();
            Mock <IFragmento>              mockFragmentoAnalisis    = new Mock <IFragmento>();
            Mock <IFragmentoPrincipal>     mockFragmentoPrincipal   = new Mock <IFragmentoPrincipal>();
            Mock <IFragmentoRelacionado>   mockFragmentoRelacionado = new Mock <IFragmentoRelacionado>();
            Mock <IBitmapWrapper>          mockImagenContenedora    = new Mock <IBitmapWrapper>();
            Mock <IBitmapWrapper>          mockImagen = new Mock <IBitmapWrapper>();
            ResultadoDeAnalisisDeFragmento resultado  = new ResultadoDeAnalisisDeFragmento();

            resultado.Coincidencias = new List <TemplateMatch>();
            resultado.Fragmento     = mockFragmentoAnalisis.Object;

            mockFragmentoPrincipal.SetupGet(x => x.ReferenciasAFragmentosDeContexto).Returns(new List <IFragmentoRelacionado>()
            {
                mockFragmentoRelacionado.Object
            });
            mockFragmentoPrincipal.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoPrincipal.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);

            mockAnalizador.Setup(x => x.Configurar(It.IsAny <IFragmento>()));
            mockAnalizador.Setup(x => x.Ejecutar()).Returns(resultado);

            var busqueda = new Mock <BusquedaBase <IAnalizador, ResultadoDeBusquedaExactaOriginal> >(mockAnalizador.Object)
            {
                CallBase = true
            }.Object;
            var resultadoEjecutar = busqueda.Ejecutar(mockFragmentoPrincipal.Object);

            Assert.IsNotNull(resultadoEjecutar);
            Assert.IsFalse(resultadoEjecutar.Positivo);
            Assert.IsFalse(resultadoEjecutar.PositivoFragmentoPrincipal);
            Assert.IsTrue(resultadoEjecutar.PositivosPorNivelDeCercania.All(x => x.Value == false));
            Assert.IsTrue(resultadoEjecutar.PositivosPorZona.All(x => x.Value == false));
        }
Exemplo n.º 3
0
        public void PositivoFragmentoPrincipal_CercaniaNivel_Zona_TodosTrue()
        {
            Mock <IAnalizador>           mockAnalizador                = new Mock <IAnalizador>();
            Mock <IFragmento>            mockFragmentoAnalisis         = new Mock <IFragmento>();
            Mock <IFragmentoPrincipal>   mockFragmentoPrincipal        = new Mock <IFragmentoPrincipal>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado0     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado1     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado2     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado3     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado4     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado5     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado6     = new Mock <IFragmentoRelacionado>();
            Mock <IFragmentoRelacionado> mockFragmentoRelacionado7     = new Mock <IFragmentoRelacionado>();
            List <IFragmentoRelacionado> listaDeFragmentosRelacionados = new List <IFragmentoRelacionado>();

            Mock <IBitmapWrapper> mockImagenContenedora = new Mock <IBitmapWrapper>();
            Mock <IBitmapWrapper> mockImagen            = new Mock <IBitmapWrapper>();

            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado0.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado1.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado2.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado3.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado4.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado5.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado6.Object);
            listaDeFragmentosRelacionados.Add(mockFragmentoRelacionado7.Object);

            mockFragmentoPrincipal.SetupGet(x => x.ReferenciasAFragmentosDeContexto).Returns(listaDeFragmentosRelacionados);
            mockFragmentoPrincipal.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoPrincipal.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);

            mockFragmentoRelacionado0.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado0.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado0.SetupGet(x => x.NivelDeCercania).Returns(0);
            mockFragmentoRelacionado0.SetupGet(x => x.Zona).Returns(TipoDeZona.CuadranteInferiorDerecho);

            mockFragmentoRelacionado1.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado1.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado1.SetupGet(x => x.NivelDeCercania).Returns(1);
            mockFragmentoRelacionado1.SetupGet(x => x.Zona).Returns(TipoDeZona.CuadranteInferiorIzquierdo);

            mockFragmentoRelacionado2.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado2.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado2.SetupGet(x => x.NivelDeCercania).Returns(2);
            mockFragmentoRelacionado2.SetupGet(x => x.Zona).Returns(TipoDeZona.CuadranteSuperiorDerecho);

            mockFragmentoRelacionado3.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado3.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado3.SetupGet(x => x.NivelDeCercania).Returns(3);
            mockFragmentoRelacionado3.SetupGet(x => x.Zona).Returns(TipoDeZona.CuadranteSuperiorIzquierdo);

            mockFragmentoRelacionado4.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado4.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado4.SetupGet(x => x.NivelDeCercania).Returns(4);
            mockFragmentoRelacionado4.SetupGet(x => x.Zona).Returns(TipoDeZona.FranjaXNegativa);

            mockFragmentoRelacionado5.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado5.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado5.SetupGet(x => x.NivelDeCercania).Returns(0);
            mockFragmentoRelacionado5.SetupGet(x => x.Zona).Returns(TipoDeZona.FranjaXPositiva);

            mockFragmentoRelacionado6.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado6.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado6.SetupGet(x => x.NivelDeCercania).Returns(1);
            mockFragmentoRelacionado6.SetupGet(x => x.Zona).Returns(TipoDeZona.FranjaYNegativa);

            mockFragmentoRelacionado7.SetupGet(x => x.ImagenContenedoraWrapper).Returns(mockImagenContenedora.Object);
            mockFragmentoRelacionado7.SetupGet(x => x.ImagenWrapper).Returns(mockImagen.Object);
            mockFragmentoRelacionado7.SetupGet(x => x.NivelDeCercania).Returns(2);
            mockFragmentoRelacionado7.SetupGet(x => x.Zona).Returns(TipoDeZona.FranjaYPositiva);


            mockAnalizador.Setup(x => x.Configurar(It.IsAny <IFragmento>())).Callback <IFragmento>((fragmento) =>
            {
                ResultadoDeAnalisisDeFragmento resultado = new ResultadoDeAnalisisDeFragmento();
                resultado.Coincidencias = new List <TemplateMatch>()
                {
                    new TemplateMatch(new Rectangle(), 0.99f)
                };
                resultado.Fragmento = fragmento;
                mockAnalizador.Setup(x => x.Ejecutar()).Returns(resultado);
            });

            var busqueda = new Mock <BusquedaBase <IAnalizador, ResultadoDeBusquedaExactaOriginal> >(mockAnalizador.Object)
            {
                CallBase = true
            }.Object;
            var resultadoEjecutar = busqueda.Ejecutar(mockFragmentoPrincipal.Object);

            Assert.IsNotNull(resultadoEjecutar);
            Assert.IsTrue(resultadoEjecutar.PositivoFragmentoPrincipal);
            Assert.IsTrue(resultadoEjecutar.PositivosPorNivelDeCercania.All(x => x.Value));
            Assert.IsTrue(resultadoEjecutar.PositivosPorZona.All(x => x.Value));
        }
Exemplo n.º 4
0
 protected override List <ResultadoDeAnalisisDeFragmento> BuscarFragmentosRelacionados(IFragmentoPrincipal fragmentoPrincipal, ResultadoDeAnalisisDeFragmento resultadoFragmentoPrincipal)
 {
     return(base.BuscarFragmentosRelacionados(fragmentoPrincipal, resultadoFragmentoPrincipal));
 }
Exemplo n.º 5
0
        protected virtual List <ResultadoDeAnalisisDeFragmento> BuscarFragmentosRelacionados(IFragmentoPrincipal fragmentoPrincipal, ResultadoDeAnalisisDeFragmento resultadoFragmentoPrincipal)
        {
            List <ResultadoDeAnalisisDeFragmento> listaResultados = new List <ResultadoDeAnalisisDeFragmento>();

            fragmentoPrincipal.ReferenciasAFragmentosDeContexto.ForEach(fragmentoDeContexto =>
            {
                this.Analizador.Configurar(fragmentoDeContexto);
                listaResultados.Add(this.Analizador.Ejecutar());
            });

            return(listaResultados);
        }