A veces, durante los juegos de blitz sobre el tablero, o cuando está en zeitnot, se hace muy difícil anotarlos.
He visto varios software / hardware para ayudar a escribir la notación, incluso uno aprobado por la FIDE ; estos requieren que repita los movimientos en el dispositivo. Apenas más rápido que el lápiz y el papel, igual de propenso a errores, además se arriesga a escribir el movimiento incorrecto y perder aún más tiempo.
DGT crea un tablero que hará esto automáticamente, pero solo funcionará con sus piezas, y comienza en 400 €, el doble que para los tableros de torneo . Algunos proyectos independientes están disponibles, como el tablero de ajedrez usb 101 , o los robots de ajedrez controlados por voz , el secuenciador por pasos del tablero de ajedrez . Además , están disponibles algunos proyectos abiertos que incluso mueven piezas (o piezas gigantescas ).
Tengo una eliminatoria esta noche, y las reglas del torneo dictan juegos cada vez más cortos hasta que haya un ganador. Por lo tanto, pensé en filmar una película del tablero si perdemos la noción. Pero luego entró mi experiencia en programación y pensé "debe haber algún software que pueda procesar una película y escribir la PGN".
Busqué en todas partes y no encontré nada.
- ¿Existe tal cosa (webcam / video a convertidor pgn)? ¿Un prototipo tal vez?
- ¿Alguien ha intentado tal hazaña y ha compartido su investigación?
- ¿Existen limitaciones obvias que hacen que este proyecto sea poco probable que tenga éxito?
- ¿Lo comprarías si existiera?
fuente
Respuestas:
Es claramente interesante y relevante grabar automáticamente juegos de ajedrez (los tableros en vivo abordan más o menos el mismo problema). Hasta donde yo sé, no existe ningún software para este propósito que exista hoy. Para resolver este problema, creo que el caso "simple" debería ser el siguiente.
Una búsqueda rápida en Google con la cadena de búsqueda
devolvió este interesante artículo
En general, debería ser realista implementar este tipo de software. Sin embargo, podría ser más barato para un humano hacer el mismo trabajo (transferir movimientos de un videoclip a una computadora).
fuente
En orden,
1) No que yo sepa
2) No que yo sepa
3) Hay varias cosas que hacen que este tipo de proyecto no sea trivial, incluso difícil. No menos importante es seguir la pieza, diferenciarla de un gesto con la mano, por ejemplo. También determinar cuándo se detuvo el movimiento sería una pregunta interesante para la visión por computadora. Este tipo de problemas se han resuelto en otras situaciones, pero no con una precisión del 100%, y ciertamente no a precios que están incluso cerca de ser competitivos con el tablero DGT.
Luego está la cuestión de dónde se podría colocar la cámara. Directamente desde arriba ofrecería la mejor vista del tablero, haciendo que sea más fácil determinar el cuadrado con precisión. Pero donde sea que se coloque la cámara, existe una clara probabilidad de que uno de los jugadores obstruya su visión, ya sea inclinándose sobre el tablero, alcanzando el reloj o simplemente gesticulando.
4) No, a menos que sea realmente barato. Y no espero que lo sea. Mi razonamiento es simple. A medida que los controles de tiempo se acortan, la calidad del juego disminuye, hasta el punto en que ya no me interesa.
fuente
Esa sería una tarea bastante compleja. Tal vez un primer paso razonable es buscar reconocer la posición de FEN a partir de una sola imagen, para la cual existen más recursos, por ejemplo:
fuente
Es 2019-12 ahora y 5 años después de la pregunta original.
¿Existe tal cosa (webcam / video a convertidor pgn)? ¿Un prototipo tal vez?
ver
¿Alguien ha intentado tal hazaña y ha compartido su investigación?
Sí, hasta ahora encontré unos 35 trabajos de investigación y unas 10 soluciones de código abierto y una oferta comercial
2.1 http://wiki.bitplan.com/index.php/PlayChessWithAWebCam/Papers
2.2. http://wiki.bitplan.com/index.php/PlayChessWithAWebCam#Open_Source_Projects
2.3. http://wiki.bitplan.com/index.php/PlayChessWithAWebCam#Commercial
http://wiki.bitplan.com/index.php/PlayChessWithAWebCam es otro proyecto que apunta a los objetivos establecidos por usted. El proyecto se inició el 15/10/2019 y en unas pocas horas ya encontré muchos recursos, por ejemplo, esta pregunta. Dos meses después, actualicé mi respuesta (ver enlaces más arriba)
¿Existen limitaciones obvias que hacen que este proyecto sea poco probable que tenga éxito? Solo puedo responder desde mi propia experiencia con un proyecto similar que hice hace 31 años, consulte http://wiki.bitplan.com/index.php/MagneticSensorChessBoard1987 . En ese momento intenté crear un tablero de ajedrez que detectara movimientos. Usé imanes en las piezas de madera y contactos de láminas. La clave del éxito fue usar un motor de ajedrez que creara "las reglas" para poder concentrarse solo en los movimientos y no tener que detectar piezas individuales. Como se describe en una respuesta anterior, las promociones para piezas que no son de la reina podrían ser uno de los casos de uso de borde que son difíciles. Detectar el movimiento de piezas a través de diferencias de imagen es un problema bien entendido.
Los motores de ajedrez y las GUI compatibles con UCI también están disponibles en estos días. Entonces, el problema es más un problema de integración en estos días que resolver los problemas de detalles individuales.
Un obstáculo importante es la diferencia entre un "prototipo" y un producto. Ver, por ejemplo, http://www.nandanbanerjee.com/files/ICCVR-08AUG12-011%20paper.pdf
un documento que es incluso más antiguo que esta pregunta pero que está lejos de ser un producto que puede comprar a un precio razonable.
¿Lo comprarías si existiera?
Si. Cuando compré un nuevo tablero de ajedrez hace unos días, estaba buscando uno que pudiera registrar movimientos y todavía costaba alrededor de 500 EUR. Según parece, el costo del hardware será muy inferior a 150 EUR en estos días, incluido un tablero de ajedrez y piezas decentes.
El software bien podría ser de código abierto y gratuito (como en cerveza gratis) pronto. Actualizaré esta respuesta en consecuencia.
fuente
Escribí este software. Contiene cámara web AI para reconocimiento de movimiento, conectado a Arena GUI.
https://www.youtube.com/watch?v=APkoE1UDKj0
fuente
Trabajé en el proyecto de seguimiento de ajedrez 8x8cam dentro del curso de procesamiento de imágenes en 2013 en FING UdelaR.
Luego, en 2014, otros estudiantes crearon una mejor versión para Android llamada chesstrack . Debajo de su web puedes encontrar videos y enlaces al código que usaron.
Me encantaría ver una aplicación finalizada de esta idea de proyecto que tuve durante años. Entonces, si hay alguna noticia sobre esto, deje un comentario.
Respondiendo sus preguntas puntiagudas:
¿Existe tal cosa (webcam / video a pgn convertidor? Un prototipo tal vez?
Además de mi proyecto 8x8cam y chesstrack , recientemente encontré un proyecto llamado ChessCam . Todos estos proyectos son de código abierto y solo deben nombrarse como recurso si crea un nuevo proyecto a partir de ellos.
¿Alguien ha intentado tal hazaña y ha compartido su investigación?
Si. Puedes verlo en la respuesta de la pregunta anterior.
¿Existen limitaciones obvias que hacen que este proyecto sea poco probable que tenga éxito?
Creo que la parte más difícil es hacer que el software funcione sin importar cómo se coloque la cámara e independientemente de la iluminación. Y también para trabajar en juegos de ritmo rápido y trabajar con las oclusiones de las manos cuando se juega el juego, para detectar correctamente el movimiento realizado.
¿Lo comprarías si existiera?
Definitivamente si.
fuente
No responderé la pregunta, porque no sé si hay un software por ahí. Solo digo cómo creo que es cómo hacerlo, no estoy seguro, así que ...
Bien, primero debes asegurarte de que el video se grabe desde un software de ajedrez, no un torneo en vivo, solo para facilitar tu trabajo.
Necesitas convertir la película a imágenes
ffmpeg -i foo.avi -vsync 0 -vf select="eq(pict_type\,PICT_TYPE_I)" -s WxH -f image2 foo-%03d.jpeg
Eso fue fácil, ahora es la parte difícil, debes comenzar a hacer procesiones de imágenes, para eso, lo más poderoso es OpenCV.
Para eso, hay varias técnicas, te daré los enlaces para que puedas leerlos.
Es complicado pero más simple de lo que piensas, porque solo necesitas saber cuál es la posición inicial, recorrer todas las imágenes y ver la diferencia. Eche un vistazo a los documentos de OpenCV, encontrará toneladas de materiales sobre ese tema.
Ah, por cierto, lo que estás pidiendo ya está hecho, pero hasta donde yo sé no hay software, hay un antiguo proyecto que fue codificado con Pascal, cámaras colocadas sobre el tablero, robots que procesan imágenes y hacen un movimiento. Hoy en día muchos robots juegan al ajedrez.
Podrías comprar un Arduino uno, y su censor de luz, detectará las piezas blancas y las piezas negras, algo de codificación y jugará al ajedrez. :)
fuente
Editar: promocionar a algo diferente a la reina hará que todo explote. También será muy difícil soportar esto (mi programa para la Parte 2 es compatible con la promoción deficiente, pero almacenar la información de la Parte 1 simplemente leyendo píxeles es una pesadilla).
Edit2: Acabo de notar que te refieres al ajedrez de tablero real para PGN, por lo que todo esto es inútil y lo más probable es que elimine mi respuesta.
Parte 1: almacenar los cuadrados usando lectores de píxeles
Es totalmente posible, los pasos necesarios serían:
["h1-h8", "e4-e5", ...]
solo los cuadrados iniciales y finales (el orden no es importante )Nota: desde aquí no podemos saber realmente desde qué cuadrado fue la posición inicial / final, pero solo hay 2 posibilidades y solo 1 de ellas es legal.
He escrito simples macros / bots basados en píxeles para los juegos de los juegos de rol en C #, puedo garantizar que esto no es que difícil, teniendo en cuenta que:
Básicamente, es mejor si el juego se juega en línea y está grabando directamente desde la pantalla.
Parte 2: exportando esa lista a PGN
Para convertir esta lista en un PGN real, puede usar un programa que escribí en JavaScript que registra movimientos, y una de las funciones
moveCaller()
pasa dos posiciones de cuadrados y buscafinal_pos
en los movimientos legales deinitial_pos
y si hay una coincidencia, entonces llamamakeMove()
. Entonces podemos llamarlo dos vecese5 to e4
ye4 to e5
les garantizo que ignorará el ilegal..zip
index.html
archivo con esto:'
.4. copie la lista de movimientos y agregue algunos encabezados PGN encima, como
[WhiteElo "2400"]
etc.fuente
Uso el dispositivo de notación de ajedrez Monroi para todos mis juegos de ajedrez y es básicamente un tablero electrónico.
fuente