Czasami w trakcie błyskawicznych gier planszowych lub w zeitnot bardzo trudno jest je zanotować.
Widziałem kilka programów / sprzętu, które pomagają w pisaniu notacji, nawet takie, które są zatwierdzone przez FIDE ; wymagają one powtórzenia ruchów na urządzeniu. Nie szybsze niż papier i długopis, tak samo podatne na błędy, a dodatkowo ryzykujesz wpisanie niewłaściwego ruchu i marnowanie jeszcze więcej czasu.
DGT tworzy planszę , która zrobi to automatycznie, ale będzie działać tylko z jej pionkami i zaczyna od 400 €, dwukrotnie więcej niż w przypadku plansz turniejowych . Niektóre niezależne projekty są dostępne, takie jak USB szachownicy 101 lub głosowych kontrolowane szachowych robotów , Chess kroku deska sekwencera . Dodatkowo dostępne są niektóre otwarte projekty, które nawet przenoszą pionki (lub gigantyczne pionki ).
Dzisiaj wieczorem mam play-off, a zasady turnieju określają coraz krótsze mecze, dopóki nie zostanie zwycięzca. Dlatego pomyślałem o kręceniu filmu z planszy, gdybyśmy stracili trop. Ale potem zaczęło się moje programowanie i pomyślałem: „musi być jakieś oprogramowanie, które może przetworzyć film i napisać PGN”.
Szukałem wszędzie i nic nie znalazłem.
- Czy istnieje coś takiego (konwerter kamery / wideo na PNG)? Może prototyp?
- Czy ktoś próbował takiego wyczynu i podzielił się swoimi badaniami?
- Czy istnieją oczywiste ograniczenia, które uniemożliwiają powodzenie tego projektu?
- Czy kupiłbyś go, gdyby istniał?
źródło
Odpowiedzi:
Wyraźnie interesujące i istotne jest automatyczne zapisywanie szachów (tablice na żywo w mniejszym lub większym stopniu rozwiązują ten sam problem). O ile mi wiadomo, obecnie nie istnieje oprogramowanie do tego celu. Aby rozwiązać ten problem, uważam, że „prosty” przypadek powinien wyglądać następująco.
Szybkie wyszukiwanie w Google za pomocą ciągu wyszukiwania
zwrócił ten interesujący artykuł
Reasumując, oprogramowanie tego typu powinno być realistyczne. Jednak wykonywanie tej samej pracy przez człowieka może być tańsze (przenoszenie ruchów z klipu wideo do komputera).
źródło
W celu,
1) Nie według mojej wiedzy
2) Nie według mojej wiedzy
3) Jest kilka rzeczy, które sprawiają, że tego rodzaju projekt nie jest trywialny, a nawet trudny. Nie mniej ważne jest śledzenie utworu, na przykład odróżnienie go od gestu ręki. Określenie, kiedy ruch został zatrzymany, byłoby ciekawym pytaniem do rozwiązania dla wizji komputerowej. Tego rodzaju problemy zostały rozwiązane w innych sytuacjach, ale nie ze 100% dokładnością, a na pewno nie po cenach, które są nawet bliskie konkurowania z zarządem DGT.
Następnie pojawia się pytanie, gdzie można ustawić kamerę. Bezpośrednio nad głową byłby najlepszy widok planszy, ułatwiając precyzyjne określenie kwadratu. Ale gdziekolwiek kamera zostanie umieszczona, istnieje wyraźne prawdopodobieństwo, że jej widok zostanie zasłonięty przez jednego z graczy, albo pochylając się nad tablicą, sięgając po zegar, albo po prostu gestykulując.
4) Nie, chyba że było naprawdę tanie. I nie oczekuję, że tak będzie. Moje rozumowanie jest proste. W miarę skracania się czasu jakość gry spada do tego stopnia, że nie jest już dla mnie interesująca
źródło
To byłoby dość złożone zadanie. Być może rozsądnym pierwszym krokiem jest przyjrzenie się rozpoznaniu pozycji FEN na podstawie jednego obrazu - dla którego istnieje więcej zasobów, na przykład:
źródło
Jest teraz 2019-12 i 5 lat po pierwotnym pytaniu.
Czy istnieje coś takiego (konwerter kamery / wideo na PNG)? Może prototyp?
widzieć
Czy ktoś próbował takiego wyczynu i podzielił się swoimi badaniami?
Tak - do tej pory znalazłem około 35 prac naukowych i 10 rozwiązań typu open source oraz jedną ofertę komercyjną
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 to kolejny projekt mający na celu osiągnięcie określonych przez ciebie celów. Projekt rozpoczął się 15.10.2019 i za kilka godzin znalazłem już wiele zasobów, np. To pytanie. Dwa miesiące później zaktualizowałem swoją odpowiedź (patrz linki powyżej)
Czy istnieją oczywiste ograniczenia, które uniemożliwiają powodzenie tego projektu? Mogę tylko odpowiedzieć z własnego doświadczenia z podobnym projektem, który zrobiłem 31 lat temu, patrz http://wiki.bitplan.com/index.php/MagneticSensorChessBoard1987 . W tym czasie próbowałem stworzyć szachownicę, która wykrywa ruchy. Użyłem magnesów w drewnianych elementach i kontaktronach. Kluczem do sukcesu było zastosowanie silnika szachowego, który wprowadził nowe „zasady”, aby móc skoncentrować się na samych ruchach i nie musieć wykrywać poszczególnych elementów. Jak wskazano w odpowiedzi powyżej, promocje na elementy inne niż królowa mogą być trudnymi przypadkami użycia krawędzi. Wykrywanie ruchu elementów za pomocą różnic obrazu jest dobrze zrozumiałym problemem.
Silniki szachowe i interfejsy GUI kompatybilne z UCI są obecnie dostępne. Problem jest więc bardziej problemem związanym z integracją niż rozwiązywaniem poszczególnych problemów szczegółowych.
Główną przeszkodą jest różnica między „prototypem” a produktem. Patrz np. Http://www.nandanbanerjee.com/files/ICCVR-08AUG12-011%20paper.pdf
papier, który jest nawet starszy od tego pytania, ale daleki od produktu, który można kupić za rozsądną cenę.
Czy kupiłbyś go, gdyby istniał?
Tak. Kiedy kilka dni temu kupiłem nową szachownicę, szukałem takiej, która mogłaby rejestrować ruchy i nadal wynosiła około 500 EUR. Wygląda na to, że koszt sprzętu wyniesie obecnie znacznie poniżej 150 EUR, w tym przyzwoitą szachownicę i elementy.
Oprogramowanie może wkrótce zostać otwarte i bezpłatne (jak w darmowym piwie). Zaktualizuję odpowiednio tę odpowiedź.
źródło
Napisałem to oprogramowanie. Zawiera AI kamery internetowej do rozpoznawania ruchów, podłączone do GUI Arena.
https://www.youtube.com/watch?v=APkoE1UDKj0
źródło
Pracowałem nad projektem śledzenia szachów 8x8cam w ramach kursu przetwarzania obrazu w 2013 roku w FING UdelaR.
Następnie w 2014 roku inni studenci stworzyli lepszą wersję dla Androida o nazwie chesstrack . W jego sieci można znaleźć filmy i link do kodu, którego używali.
Bardzo chciałbym zobaczyć sfinalizowaną aplikację tego pomysłu na projekt, który miałem od lat. Więc jeśli są jakieś wiadomości na ten temat, proszę zostawić komentarz.
Odpowiedzi na wskazane pytania:
Czy istnieje coś takiego (konwerter kamery / wideo na PNG? Może prototyp?
Oprócz mojego projektu 8x8cam i chesstrack , niedawno znalazłem projekt o nazwie ChessCam . Wszystkie te projekty są typu Open Source i należy je nazwać jako zasób, jeśli utworzysz z nich nowy projekt.
Czy ktoś próbował takiego wyczynu i podzielił się swoimi badaniami?
Tak. Możesz to zobaczyć na odpowiedzi na poprzednie pytanie.
Czy istnieją oczywiste ograniczenia, które uniemożliwiają powodzenie tego projektu?
Moim zdaniem najtrudniejsze jest sprawienie, by oprogramowanie działało bez względu na położenie aparatu i niezależnie od oświetlenia. A także do pracy w szybkich grach i pracy z okluzjami rąk podczas gry, aby poprawnie wykryć wykonany ruch.
Czy kupiłbyś go, gdyby istniał?
Zdecydowanie tak.
źródło
Nie będę odpowiadać na pytanie, ponieważ nie wiem, czy jest tam jakieś oprogramowanie. Mówię tylko, jak myślę, jak to zrobić, nie wiem na pewno, więc ...
Dobrze, najpierw upewnij się, że wideo jest nagrywane z oprogramowania szachowego, a nie z turnieju na żywo, tylko po to, aby ułatwić ci pracę.
Musisz przekonwertować film na obrazy
ffmpeg -i foo.avi -vsync 0 -vf select="eq(pict_type\,PICT_TYPE_I)" -s WxH -f image2 foo-%03d.jpeg
To było łatwe, teraz najtrudniejsza część, musisz zacząć przetwarzać obrazy, ponieważ najmocniejszy jest OpenCV.
W tym celu istnieje kilka technik, podam ci linki, abyś mógł je przeczytać.
Jest to skomplikowane, ale prostsze niż myślisz, ponieważ musisz tylko wiedzieć, jaka jest pozycja początkowa, przejrzeć wszystkie obrazy i zobaczyć różnicę. Spójrz na dokumenty OpenCV, znajdziesz mnóstwo materiałów na ten temat.
A tak przy okazji, to, o co prosisz, zostało już zrobione, ale o ile wiem, nie używam oprogramowania, jest stary projekt, który został zakodowany za pomocą Pascala, kamery umieszczone na płycie, roboty przetwarzają obraz i wykonują ruch. Obecnie wiele robotów gra w szachy.
Możesz kupić Arduino uno, a jego lekki cenzor wykryje białe i czarne kawałki, trochę kodowania i zagra w szachy. :)
źródło
Edycja: awans na coś innego niż królowa sprawi, że wszystko wybuchnie. Bardzo trudno będzie to wesprzeć (mój program dla części 2 obsługuje niedostateczną promocję, ale przechowywanie informacji o części 1 wyłącznie przez odczytywanie pikseli jest koszmarem).
Edycja2: Właśnie zauważyłem, że masz na myśli prawdziwe szachy planszowe dla PGN, więc to wszystko jest bezużyteczne i najprawdopodobniej usunę moją odpowiedź.
Część 1: przechowywanie kwadratów za pomocą czytników pikseli
Jest to całkowicie możliwe, potrzebne kroki to:
["h1-h8", "e4-e5", ...]
tylko kwadratów początkowych i końcowych (kolejność nieważna )Uwaga: stąd naprawdę nie wiemy, z którego kwadratu była pozycja początkowa / końcowa, ale są tylko 2 możliwości i tylko 1 z nich jest legalna.
Napisałem proste makra / boty oparte na pikselach do gier RPG w C #, mogę zagwarantować, że nie jest to takie trudne, biorąc pod uwagę, że:
Zasadniczo najlepiej jest, jeśli gra jest rozgrywana online i nagrywasz bezpośrednio z ekranu.
Część 2: eksport tej listy do PGN
Aby przekształcić tę listę w prawdziwy PGN, możesz użyć programu, który napisałem w JavaScript, który rejestruje ruchy, i jedną z funkcji,
moveCaller()
które przekazujesz o dwa kwadraty i przeszukujefinal_pos
legalne ruchy,initial_pos
a jeśli jest dopasowanie, to wywołujemakeMove()
. Możemy więc zadzwonić dwa razye5 to e4
ie4 to e5
gwarantuję, że zignoruje to nielegalne..zip
index.html
pliku za pomocą:„
.4. skopiuj listę przenoszenia i dodaj nad nią nagłówki PGN, takie jak
[WhiteElo "2400"]
itp.źródło
Używam Monroi Chess Notation Device do wszystkich moich szachów i jest to w zasadzie elektroniczna tablica.
źródło