Título: [APORTE] (ImageMatching) buscar una imagen en la pantalla y devolver coordenadas Publicado por: Eleкtro en 28 Junio 2014, 08:36 am Hace un tiempo estuve indagando acerca de como narices implementar un (decente) algoritmo de ImageMatching, esto significa, identificar la existencia de una imagen en la pantalla, y de paso obtener las coordenadas para futuros usos.
Pues bien, despues de mucho investigar y mucha documentación leida, está claro que un algoritmo casero no puede llegar a compararse en eficacia y rendimiento a un producto (una librería) de renombre que tenga la suficiente experiencia en el ámbito, pues esto no es un simple PixelSearch, es algo mucho más laborioso. Después de probar en profundidad distintos productos/librerías, encontré Aforge.NET (http://www.aforgenet.com/), el cual es muy bueno tanto en su capacidad efectiva como en su velocidad de procesamiento de imagen, aunque no resulta tan rápido como a mi me gustaria y como he visto en algún que otro Software. Nota: Si alguien conoce alguna librería eficiente y más rápida que Aforge, le agradecería que lo comentase. Este código necesita la utilización de dicha librería, AForge, y sirve para identificar una imagen en la pantalla y obtener sus coordenadas, algo imprescindible si tienes pensado desarrollar un Bot por reconocimiento de imagen... así que espero que le sirva a alguien de ayuda. Unos consejos antes de utilizar: 1. Si la imagen es demasiado grande, redimensionala al 40-60% (cuidado, cuando más difuso estén los pixeles puede ser menos efectivo). 2. Si la velocidad no es la esperada, prueba también a convertir la imagen a una escala de grises. Código
Título: Re: [APORTE] (ImageMatching) buscar una imagen en la pantalla y devolver coordenadas Publicado por: El Benjo en 28 Junio 2014, 20:55 pm Elektro, se me ocurre (pensando en lo que dijiste sobre el pixel search) que quizá utilizando CUDA u OpenCL su pudiera realizar una librería decente (en eficiencia) con métodos tradicionales de búsqueda. No sé si lo habías considerado, aunque creo que sí.
Título: Re: [APORTE] (ImageMatching) buscar una imagen en la pantalla y devolver coordenadas Publicado por: engel lex en 28 Junio 2014, 21:09 pm justamente viendo este tema pensé en opencl... ahora... que es cuda?
Título: Re: [APORTE] (ImageMatching) buscar una imagen en la pantalla y devolver coordenadas Publicado por: Eleкtro en 28 Junio 2014, 21:14 pm No se me habia pasado por la cabeza usar CUDA, y porsupuesto debe resultar mucho más veloz que los otros métodos, me pondré a documentarme sobre ello y a ver si encuentro algo interesante para compartir :).
que es cuda? CUDA es el motor GPU de nVidia, ATI tiene otro, pero no recuerdo su nombre. las aplicaciones pueden aprovechar la aceleración GPU para aumentar el rendimiento de una forma bastante increible. Cita de: http://www.geforce.com/hardware/technology/cuda CUDA is a parallel computing platform and programming model invented by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU). Saludos! Título: Re: [APORTE] (ImageMatching) buscar una imagen en la pantalla y devolver coordenadas Publicado por: El Benjo en 28 Junio 2014, 21:19 pm Ah, mi estimado Lex, CUDA es el lenguaje desarrollado por nVidia para sus chips gráficos. Se supone (no me consta nada) que CUDA se programa a un nivel más bajo y más cercano al chip y que es más eficiente que el código equivalente en OpenCL. el único inconveniente es que sólo corre sobre los chips de nVidia. Me parece que ATI tenía un lenguaje similar pero no prosperó y a la larga terminaron adoptando OpenCL.
EDITADO: Quizá si se hiciera de esta manera, incluso los algoritmos de búsqueda más exhaustiva podrían hacer el trabajo en poco tiempo. |