Інструменти для автоматизованої нотації: фільм із веб-камери на PGN


14

Іноді під час бліц-ігор над дошкою, або коли в zeitnot, помітити їх стає дуже важко.

Я бачив кілька програмних засобів / апаратних засобів, які допомагають писати нотації, навіть таке, яке затверджено FIDE ; для цього потрібно повторити ходи на пристрої. Навряд чи швидше, ніж ручка та папір, так само схильні до помилок, плюс ви ризикуєте набрати неправильний хід і витратити ще більше часу.

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

У мене сьогодні плей-оф плей-офф, і правила турніру диктують все коротші та коротші ігри, поки не буде переможця. Отже, я думав про те, щоб зняти фільм із дошки, якщо ми втратимо слід. Але тоді почався мій програмування, і я подумав, що "повинно бути якесь програмне забезпечення, яке може обробити фільм і написати PGN".

Я шукав всюди, і нічого не знайшов.

  1. Чи існує така річ (веб-камера / відео в pgn converter)? Можливо, прототип?
  2. Хтось спробував такий подвиг і поділився своїми дослідженнями?
  3. Чи є очевидні обмеження, завдяки яким цей проект навряд чи вдасться досягти успіху?
  4. Ви б купили його, якби він існував?

2
це був би цікавий комп'ютерний зір / проект машинного навчання!
Пам'ять

Я думаю, що дошка повинна бути знята зверху вниз, щоб створити "2D" -образ. В іншому випадку існує додаткова проблема перенесення 3D-перегляду на 2D-вигляд, і різні 3D-кути доводиться розглядати окремо.
Рауан Сагіт

насправді це просто лінійне перетворення, щоб "розстебнути" дошку і зробити всі її квадрати квадратними. головна проблема полягає в тому, щоб розпізнати квадрат, з якого переміщений шматок, якщо кут такий, що шматочки можуть вишикуватися один за одним.
пітер

Можливо, ми могли б зробити якийсь краудсорсинг для цього проекту. Я думаю, що це дуже цікаво. Я думаю, що деякі студенти можуть зробити це для старших проектів. Нам потрібно знайти спосіб донести ідею до професорів. Можливо, за допомогою двох камер, розміщених у двох різних місцях, це можна зробити надійно. Мене зацікавив би 3D-підхід, а не 2D від накладних витрат. Монтувати накладну камеру занадто недоцільно. Мене також зацікавило б програмне забезпечення, яке б приймало матеріали з декількох різних камер, що знімали кілька ігор, одночасно грали на довгий стіл і створювали позначення - для

Зважаючи на те, що kickstarter.com/projects/infivention/… вже вдало здійснив проект краудфандингу. Тим більше, що вартість для кінцевих споживачів була б дуже низькою.
Вольфганг Фаль

Відповіді:


4

Однозначно цікаво і актуально автоматично записувати шахові ігри (живі дошки більш-менш вирішують ту саму проблему). Наскільки мені відомо, для цього не існує програмного забезпечення, яке існує сьогодні. Щоб вирішити цю проблему, я думаю, що "простий" випадок повинен бути таким.

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

Швидкий пошук Google за допомогою рядка пошуку

обробка зображень у шаховій грі

повернув цю цікаву статтю

Загалом, реалізувати цей тип програмного забезпечення повинно бути реалістичним. Однак людині може бути дешевше виконати ту саму роботу (перенесення рухається з відеокліпу на комп'ютер).


Мені знадобилося певний час, щоб пройти дослідження GDIlleperuma, яке ви пов’язали, це найцікавіше. Але це апріорі виключає можливість створення 3D-перекошених зображень. Дякую, дуже цікава стаття.
Ріккардо Зорн

@RiccardoZorn ласкаво просимо! Я мушу визнати, що я не бачу сенсу обробляти 3D перекошені зображення. Ситуація полягає в тому, що якщо у людини виникають проблеми з документуванням кроків від відеозапису, то програмне забезпечення для обробки зображень матиме ще більше труднощів.
Рауан Сагіт

Налаштування вертикальної камери вимагає багато місця, є інвазивним, і вам потрібна спеціальна підтримка / підставка. Це робить непрактичним :-(
Ріккардо Зорн

Більш проста і дешева технологія "живої дошки" може бути кращим способом в цьому випадку. За бажанням знімайте з розумного 3D-кута і дозволяйте людині витягнути шахові позначення з відеозапису.
Рауан Сагіт

Файл researchgate.net/publication/…, схоже, більше не існує. хтось має копію?
пітер

6

В порядку,

1) Не мені відомо

2) Не мені відомо

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

Тоді виникає питання, де можна розмістити камеру. Безпосередньо над головою пропонується найкращий вид дошки, що полегшує точне визначення площі. Але де б камера не розмістилася, є певна ймовірність, що її погляд буде перешкоджати одному з гравців, або нахиляючись над дошкою, тягнучись до годинника, або просто жестикулюючи.

4) Не тільки, якщо це було дійсно дешево. І я не сподіваюся, що це буде. Мої міркування прості. У міру того, як контроль часу скорочується, якість гри знижується до тієї міри, коли мені це вже не цікаво


Ви чудово зазначаєте 4: якість дійсно погана. Не варто турбуватися про налаштування камери, тим більше витрачаючи місяць на написання програмного забезпечення. Я щойно виграв плей-оф, але я збентежений, як погано грав.
Ріккардо Зорн

5

Це було б досить складним завданням. Можливо, розумним першим кроком є ​​пошук розпізнавання позиції FEN з одного зображення - для якого існує більше ресурсів, наприклад:


Відмінно дякую. Я читаю обоє, і вони дійсно цікаві. Chessgrabber - недавній проект, і він, безумовно, більше підходить, я зв’язався з розробником.
Ріккардо Зорн

Я думаю, що з цього першого кроку перетворити відео в PGN не буде дуже складно - робіть зображення кожні кілька мілісекунд, аналізуйте їх, і якщо позиція змінилася законним шляхом, додайте нове положення у файл.
rlms

Оновлення: розробник відповів, що ніколи не буде працювати для 3-денних перекошених зображень із частинами, що перекриваються. Шкода, без цього в якості основи проект ніколи не стартує.
Ріккардо Зорн

розпізнати нерухоме зображення насправді важче, ніж мати відео, що веде до нього, оскільки останнє усуває проблему необхідності ідентифікації фрагментів.
пітер

5

Зараз 2019-12 рік і через 5 років після початкового питання.

  1. Чи існує така річ (веб-камера / відео в pgn converter)? Можливо, прототип?

    побачити

  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#Com 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 EUR. Як виглядає, ціна апаратури в ці дні буде значно нижче 150 EUR, включаючи гідну шахівницю та шматки.

    Програмне забезпечення незабаром може бути відкритим та безкоштовним (як у безкоштовному пиві). Відповідно оновлю цю відповідь.


1
Дякую, я з нетерпінням чекаю на ваш прогрес
Ріккардо Зорн

3

Я написав це програмне забезпечення. Він містить AI веб-камери для розпізнавання ходу, підключений до Arena GUI.

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


Дуже вражаючий Маріус, вітаю! Альфа вже доступна для тестування? Чи можете ви відкрити ходи через службу, для використання іншим програмним забезпеченням?
Ріккардо Зорн

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, і його світловий цензор, він виявить білі шматки і чорні шматки, трохи кодування, і він буде грати в шахи. :)


1

Редагувати: просування до чогось іншого, ніж королева, змусить усе вибухнути. Підтримати це також буде дуже важко (моя програма для другої частини підтримує недооцінку, але зберігання інформації частини 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();
});

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


-1

Для всіх моїх шахових ігор я використовую пристрій нотації шахів Monroi, і це в основному електронна дошка.


4
Однак це не відповідає на питання ОП.
Даг Оскар Мадсен

ви можете використовувати цифровий ведучий, щоб записати гру своєї камери безпосередньо над столом. тоді ви можете просто написати програму, яка відстежує об’єкти в сітці.
Cferrel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.