Инструменты для автоматического обозначения: веб-камера фильма в PGN

14

Иногда во время блиц-игр за доской или в Zeitnot их очень сложно комментировать.

Я видел несколько программных / аппаратных средств, помогающих написать нотацию, даже ту, которая одобрена ФИДЕ ; это требует, чтобы вы повторили ходы на устройстве. Чуть быстрее, чем ручка и бумага, так же, как и склонны к ошибкам, плюс вы рискуете набрать неправильный ход и тратить еще больше времени.

DGT создает доску, которая будет делать это автоматически, но она будет работать только со своими фигурами, и начинается с 400 €, вдвое больше, чем для турнирных досок . Доступны некоторые независимые проекты, такие как USB-шахматная доска 101 или голосовые шахматные роботы , секвенсор для шахматной доски . Кроме того , доступны некоторые открытые проекты, которые даже перемещают фигуры (или гигантские фигуры ).

Сегодня вечером у меня будет плей-офф, и правила турнира диктуют все более короткие игры, пока не будет победителя. Поэтому я подумал о съемке фильма на доске, если мы потеряем след. Но затем начался мой опыт программирования, и я подумал: «Должно быть какое-то программное обеспечение, которое может обработать фильм и написать PGN».

Я искал везде и ничего не нашел.

  1. Есть ли такая вещь (веб-камера / видео в pgn конвертер)? Прототип может быть?
  2. Кто-нибудь пробовал такой подвиг и поделился своими исследованиями?
  3. Существуют ли очевидные ограничения, которые делают этот проект маловероятным для успеха?
  4. Вы бы купили его, если бы он существовал?
Риккардо Цорн
источник
2
это был бы интересный проект в области компьютерного зрения / машинного обучения!
Memming
Я думаю, что доска должна быть снята сверху вниз, чтобы произвести "2D" -изображение. В противном случае возникает дополнительная проблема переноса 3D-вида в 2D-вид, и различные 3D-углы необходимо обрабатывать отдельно.
Рауан Сагит
на самом деле это просто линейное преобразование, чтобы «растянуть» доску и сделать все ее квадраты квадратными. главная проблема состоит в том, чтобы распознать квадрат, с которого перемещается деталь, если угол таков, что фигуры могут располагаться друг за другом.
Питер
Может быть, мы могли бы сделать какой-то краудсорсинг для этого проекта. Я думаю, что это очень интересно. Могу поспорить, что некоторые студенты могут сделать это для старших проектов. Нам нужно найти способ донести эту идею до профессоров. Может быть, с двумя камерами, расположенными в двух разных местах, это можно сделать надежно. Я был бы заинтересован в подходе 3D, а не 2D из-за накладных расходов. Установка воздушной камеры слишком непрактична. Я хотел бы также быть заинтересованы в программном обеспечении , которые будут принимать сигналы от нескольких различных камер съемки несколько игр одновременно играл на длинном столе и производят записи - для
Учитывая, что kickstarter.com/projects/infivention/… уже был успешным, краудфандинговый проект кажется действительно возможным. Тем более что стоимость для конечных пользователей будет очень низкой.
Вольфганг Фал

Ответы:

4

Это явно интересно и актуально для автоматической записи шахматных игр (живые доски более или менее решают ту же проблему). Насколько я знаю, для этой цели сегодня не существует программного обеспечения. Чтобы решить эту проблему, я считаю, что «простой» случай должен быть следующим.

  1. Шахматная доска должна быть снята сверху вниз, чтобы получить двухмерный вид. (Мотивация: съемка в трехмерном виде может вызвать проблемы из-за перекоса и фрагментов, которые будут блокировать вид для других фрагментов позади них. Также возможны разные 3D-виды, которые будут противодействовать чистой процедуре.)
  2. Фильм должен быть отредактирован вручную, чтобы запечатлеть моменты «чистой доски» и удалить моменты, когда руки или головы двух игроков блокируют вид.
  3. Алгоритм обработки изображений на стороне программного обеспечения должен обнаруживать изменения на плате и записывать их как движения. Следует также автоматически поворачивать и преобразовывать изображение, чтобы определить ориентацию доски и, следовательно, координаты.
  4. Программное обеспечение должно использовать начальную позицию, чтобы «запомнить» каждый тип фигуры, а затем использовать их для распознавания изображений во время игры. Вероятно, можно написать несколько хитрых трюков, чтобы решить проблему распознавания фигур умным способом.

Быстрый поиск в Google с помощью строки поиска

обработка изображений в шахматы

вернул эту интересную статью

В общем, это должно быть реалистично для реализации этого типа программного обеспечения. Тем не менее, для человека может быть дешевле выполнить ту же работу (перенести перемещение с видеоклипа на компьютер).

Рауан Сагит
источник
Мне потребовалось некоторое время, чтобы пройти исследование GDIlleperuma, которое вы связали, это самое интересное. Но это априори исключает возможность создания искаженных трехмерных изображений. Спасибо, очень интересная статья.
Риккардо Цорн
@RiccardoZorn пожалуйста! Я должен признать, что не вижу смысла обрабатывать перекос 3D-изображений. Ситуация такова, что если у человека возникнут проблемы с документированием ходов видеозаписи, тогда у программного обеспечения для обработки изображений возникнут еще большие трудности.
Рауан Сагит
Установка вертикальной камеры требует много места, инвазивна и требует специальной поддержки / подставки. Это делает его непрактичным :-(
Риккардо Цорн
В этом случае лучше использовать более простую и дешевую технологию «живого борда». По желанию, снимайте под разумным углом 3D и позвольте человеку извлечь шахматную запись из видеозаписи.
Рауан Сагит
файл researchgate.net/publication/… кажется больше не существует. у кого-нибудь есть копия?
Питер
6

Чтобы,

1) Насколько мне известно

2) Насколько мне известно

3) Есть несколько вещей, которые делают этот проект нетривиальным, даже трудным. Не последнее, что следует за произведением, например, отличает его от жеста руки. Также определение, когда движение остановилось, было бы интересным вопросом для компьютерного зрения. Подобные проблемы были решены в других ситуациях, но не со 100% точностью и, конечно, не по ценам, которые даже близки к конкурентоспособности с платой DGT.

Тогда возникает вопрос, где можно расположить камеру. Непосредственные накладные расходы обеспечат лучший обзор доски, упрощая определение площади. Но где бы ни находилась камера, есть определенная вероятность того, что ее вид будет затруднен одним из игроков, либо наклонившись над доской, потянувшись к часам, либо просто жестикулируя.

4) Нет, если это не было действительно дешево. И я не ожидаю, что это будет. Мои рассуждения просты. С уменьшением контроля времени качество игры снижается до такой степени, что мне это уже не интересно

Арлен
источник
Вы делаете большое замечание в 4: качество действительно плохое. Не стоит тратить время на настройку камеры, тем более тратить месяц на написание программного обеспечения. Я только что выиграл плей-офф, но меня смущает то, как плохо я играл.
Риккардо Цорн
5

Это было бы довольно сложной задачей. Возможно, разумным первым шагом будет изучение распознавания позиции FEN по одному изображению, для которого существует больше ресурсов, например:

Тихомир Георгиев
источник
Отлично, спасибо. Я прочитал оба, и они действительно интересны. Chessgrabber - недавний проект, и он определенно больше подходит, я связался с разработчиком.
Риккардо Цорн
Я думаю, что с этого первого шага не составит труда преобразовать видео в PGN - снимайте изображения каждые несколько миллисекунд, анализируйте их и, если позиция изменилась законным способом, добавьте новую позицию в файл.
РМЭЗ
Обновление: разработчик ответил, что он никогда не будет работать для 3-х мерных изображений с пересекающимися частями. Жаль, что без этого проект никогда не начнется.
Риккардо Цорн
распознать неподвижное изображение на самом деле сложнее, чем видео, ведущее к нему, поскольку последнее устраняет проблему необходимости идентифицировать фрагменты.
Питер
4

Сейчас 2019-12 и через 5 лет после первоначального вопроса.

  1. Есть ли такая вещь (веб-камера / видео в pgn конвертер)? Прототип может быть?

    видеть

  2. Кто-нибудь пробовал такой подвиг и поделился своими исследованиями?

    Да, на данный момент я нашел около 35 научных работ и около 10 решений с открытым исходным кодом и одно коммерческое предложение

    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 - это еще один проект, направленный на достижение поставленных вами целей. Проект был начат 2019-10-15, и через несколько часов я уже нашел много ресурсов, например, этот Вопрос. Спустя два месяца я обновил свой ответ (см. Ссылки выше).

  3. Существуют ли очевидные ограничения, которые делают этот проект маловероятным для успеха? Я могу ответить только из собственного опыта с аналогичным проектом, который я сделал 31 год назад, см. Http://wiki.bitplan.com/index.php/MagneticSensorChessBoard1987 . В то время я пытался создать шахматную доску, которая бы распознавала ходы. Я использовал магниты в деревянных предметах и ​​тростниковых контактах. Ключом к успеху было использование шахматного движка, который использовал новые «правила», чтобы можно было сосредоточиться только на движениях и не обнаруживать отдельные фигуры. Как указано в ответе выше, продвижение к не королевским произведениям может быть одним из сложных случаев использования. Обнаружение движения фрагментов с помощью различий в изображениях является хорошо понятной проблемой.

    Шахматные движки и UCI-совместимые графические интерфейсы также доступны в эти дни. Таким образом, в наши дни проблема является скорее проблемой интеграции, чем решением отдельных деталей.

    Основным препятствием является различие между «прототипом» и продуктом. Смотрите, например, http://www.nandanbanerjee.com/files/ICCVR-08AUG12-011%20paper.pdf

    бумага, которая еще старше этого вопроса, но далека от продукта, который можно купить по разумной цене.

  4. Вы бы купили его, если бы он существовал?

    Да. Когда я купил новую шахматную доску несколько дней назад, я искал ту, которая могла бы записывать ходы, и она все еще была около 500 евро. Похоже, что стоимость аппаратного обеспечения в эти дни будет значительно ниже 150 евро, включая приличную шахматную доску и фигуры.

    Программное обеспечение вполне может быть открытым и бесплатным (как в бесплатном пиве) в ближайшее время. Я обновлю этот ответ соответственно.

Вольфганг Фаль
источник
1
Спасибо, я с нетерпением жду ваших успехов
Риккардо Цорн
3

Я написал это программное обеспечение. Он содержит веб-камеру AI для распознавания движений, подключенную к графическому интерфейсу Arena.

https://www.youtube.com/watch?v=APkoE1UDKj0

Marius
источник
Очень впечатляет Мариус, поздравляю! Альфа уже доступна для тестирования? Можете ли вы раскрыть ходы через службу для использования другим программным обеспечением?
Риккардо Цорн
3

Я работал над проектом шахматного слежения 8x8cam в рамках курса обработки изображений в 2013 году в FING UdelaR.

Затем в 2014 году другие студенты создали лучшую версию для Android под названием chesstrack . В его сети вы можете найти видео и ссылку на код, который они использовали.

Я хотел бы видеть законченное приложение этой идеи проекта, которую я имел в течение многих лет. Так что если есть какие-то новости об этом, пожалуйста, оставьте комментарий.

Отвечая на ваши вопросы:

  1. Существует ли такая вещь (веб-камера / видео в pgn конвертер? Возможно, прототип?


    Помимо моего проекта 8x8cam и chesstrack , я недавно нашел проект под названием ChessCam . Все эти проекты с открытым исходным кодом и должны быть названы в качестве ресурса, только если вы создаете новый проект из них.

  2. Кто-нибудь пробовал такой подвиг и поделился своими исследованиями?


    Да. Вы можете увидеть это в ответе на предыдущий вопрос.

  3. Существуют ли очевидные ограничения, которые делают этот проект маловероятным для успеха?


    Самым сложным, на мой взгляд, является заставить программное обеспечение работать независимо от того, как размещена камера и независимо от освещения. А также для работы в быстро меняющихся играх и работы с окклюзиями рук во время игры, чтобы правильно определять сделанный ход.

  4. Вы бы купили его, если бы он существовал?


    Определенно да.

Седрик Зопполо
источник
1

Я не буду отвечать на вопрос, потому что я не знаю, есть ли программное обеспечение там. Я просто говорю, как я думаю, это то, как это сделать, я не знаю точно, так что ...


Хорошо, сначала вам нужно убедиться, что видео записано с помощью шахматной программы, а не живого турнира, просто чтобы облегчить вашу работу.

Вам нужно конвертировать фильм в изображения

ffmpeg -i foo.avi -vsync 0 -vf select="eq(pict_type\,PICT_TYPE_I)" -s WxH -f image2 foo-%03d.jpeg

Это было легко, теперь сложная часть, вам нужно начать обработку изображений, для этого самым мощным является OpenCV.

Для этого есть несколько методов, я дам вам ссылки, чтобы вы могли их прочитать.

Это сложно, но проще, чем вы думаете, потому что вам нужно только знать, какова начальная позиция, пройтись по всем изображениям и увидеть разницу. Взгляните на документы OpenCV, вы найдете тонны материалов на эту тему.


О, кстати, то, что вы просите, уже сделано, но, насколько я знаю, не используется программное обеспечение, есть старый проект, который был закодирован с использованием Pascal, камеры установлены над платой, роботы выполняют обработку изображений и делают ход. В наши дни многие роботы играют в шахматы.

Вы можете купить Arduino Uno и его световой цензор, он обнаружит белые и черные фигуры, немного кодирования и будет играть в шахматы. :)

Lynob
источник
1

Редактировать: повышение до чего-то отличного от королевы заставит все взорваться. Это также будет очень трудно поддерживать (моя программа для части 2 поддерживает недоказанность, но хранение информации части 1 исключительно путем чтения пикселей - это кошмар).

Edit2: Я только что заметил, что вы имеете в виду настоящие шахматные доски для PGN, так что все это бесполезно, и я, скорее всего, удалю свой ответ.

Часть 1: хранение квадратов с использованием считывателей пикселей

Это вполне возможно, необходимые шаги будут:

  1. изменить настройку доски так, чтобы она выделяла последний ход (желательно не только границу)
  2. написать программу, которая читает пиксели по заданному (x, y)
  3. сделать так, чтобы он читал около 5+ пикселей на каждом квадрате (поэтому курсор / фрагмент не может охватить все пиксели, которые должны быть прочитаны)
  4. преобразовать HEX в RBG, затем дать диапазон допустимых значений того, что мы считаем близким к цвету «последнего хода»
  5. сохранить ходы в массиве в формате ["h1-h8", "e4-e5", ...] только начальные и конечные квадраты (порядок не важен )

Примечание: отсюда мы не можем точно знать, с какого квадрата была начальная / конечная позиция, но есть только 2 возможности, и только 1 из них является законной.

Я написал простые пиксельные макросы / боты для РПГА игр в C #, я могу гарантировать , что это не что трудно, учитывая , что:

  1. кулачок статичен (поэтому значения x, y не портятся)
  2. Вы ранее знали цвет фона или можете настроить его перед игрой

По сути, лучше всего, если в игру играют онлайн, а вы ведете запись прямо с экрана.

Извините, нет программы для части №1


Часть 2: экспорт этого списка в PGN

Чтобы превратить этот список в настоящий PGN, вы можете использовать программу, написанную мной на JavaScript, которая записывает движения, и одну из функций, которой moveCaller()вы передаете две позиции на квадраты, и она выполняет поиск final_posв допустимых шагах initial_posи, если есть совпадение, вызывает makeMove(), Таким образом, мы можем назвать это дважды, e5 to e4и e4 to e5я гарантирую, что он проигнорирует незаконный.

  1. скачать проект (прямая ссылка .zip )
  2. распаковать .zip
  3. измените JavaScript index.htmlфайла с этим:

'

$(function(){
    var i, len, arr, temp, m_board;

    m_board=IsepicChess.initBoard({name : "main"});

    arr=["e4-e2", "e7-e5", "f3-g1"]; //is ok for the initial and final squares to be swapped

    for(i=0, len=arr.length; i<len; i++){
        temp=arr[i].split("-");

        //one of the two following lines will silently fail
        m_board.moveCaller(temp[0], temp[1]);
        m_board.moveCaller(temp[1], temp[0]);
    }

    m_board.refreshBoard();
});

+0,4. скопируйте список перемещения и добавьте несколько заголовков PGN над ним, как [WhiteElo "2400"]и т. д.

ajax333221
источник
-1

Я использую шахматное устройство обозначений Монрои для всех своих шахматных игр, и это в основном электронная доска.

Cferrel
источник
4
Это не отвечает на вопрос ОП, однако.
Даг Оскар Мадсен
Вы можете использовать цифровой презентер, чтобы записать игру с помощью камеры прямо над столом. тогда вы можете просто написать приложение, отслеживающее объекты в сетке.
Cferrel