Spørgsmål:
Værktøjer til automatiseret notation: webcam-film til PGN
Riccardo Zorn
2014-02-09 23:40:22 UTC
view on stackexchange narkive permalink

Nogle gange under blitz-spil over brættet, eller når det er i zeitnot, bliver det meget vanskeligt at kommentere dem.

Jeg har set flere software / hardware til at hjælpe med at skrive notationen, endda en der er FIDE godkendt; disse kræver, at du gentager bevægelserne på enheden. Næppe hurtigere end pen og papir, lige så tilbøjelige til fejl, plus at du risikerer at skrive det forkerte træk og spilde endnu mere tid.

DGT laver et bord, der gør dette automatisk, men det fungerer kun med sine brikker og starter ved 400 €, dobbelt så stort for turneringsbrætter. Nogle uafhængige projekter er tilgængelige såsom usb skakbræt 101 eller stemmestyrede skakrobotter, Skakbræt trin sequencer. Derudover findes der åbne projekter, der endda flytter brikker (eller gigantiske brikker).

Jeg har en playoff i aften, og turneringsreglerne dikterer kortere og kortere spil, indtil der er en vinder. Derfor tænkte jeg på at skyde en film af tavlen, hvis vi skulle miste sporet. Men så startede min programmeringsbaggrund og jeg tænkte "der må være noget software, der kan behandle en film og skrive PGN".

Jeg søgte overalt og fandt intet.

  1. Findes der sådan noget (webcam / video til pgn-konverter)? En prototype måske?
  2. Har nogen forsøgt en sådan bedrift og delt deres forskning?
  3. Er der åbenlyse begrænsninger, der gør det usandsynligt, at dette projekt vil lykkes?
  4. Vil du købe det, hvis det eksisterede?
det ville være et interessant computer vision / machine learning projekt!
Jeg tror, ​​at bestyrelsen skal filmes ovenfra og ned for at producere et "2D" -billede. Ellers er der et yderligere problem med at transponere en 3D-visning til en 2D-visning, og forskellige 3D-vinkler skal behandles separat.
faktisk er det simpelthen en lineær transformation til at "strække" tavlen ud og gøre alle dens firkanter firkantede. hovedproblemet er at genkende den firkant, stykket flyttes fra, hvis vinklen er sådan, at stykkerne kan stille sig op bag hinanden.
Måske kunne vi lave en slags Crowdsourcing til dette projekt. Jeg synes det er meget interessant. Jeg vedder på, at nogle universitetsstuderende kunne gøre dette til seniorprojekter. Vi er nødt til at finde en måde at kommunikere ideen til professorer. Måske med to kameraer placeret på to forskellige steder kan dette gøres pålideligt. Jeg ville være interesseret i 3D-tilgangen, ikke 2D fra overhead. Montering af et overheadkamera er for upraktisk. Jeg vil også være interesseret i software, der tager input fra et par forskellige kameraer, der skyder adskillige spil, der spilles samtidigt på et langt bord og producerer notation - for
I betragtning af at https://www.kickstarter.com/projects/infivention/square-off-worlds-smartest-chess-board-relaunched allerede var vellykket, synes et crowdfunding-projekt faktisk muligt. Især da omkostningerne for slutbrugere ville være meget lave.
Ni svar:
Arlen
2014-02-10 06:11:37 UTC
view on stackexchange narkive permalink

I rækkefølge,

1) Ikke til min viden

2) Ikke til min viden

3) Der er flere ting, der gør denne form for projekt ikke-trivielt, endda vanskeligt. Ikke mindst det, der følger stykket, adskiller det for eksempel fra en håndbevægelse. At bestemme, hvornår flytningen stoppede, ville også være et interessant spørgsmål til computersyn at løse. Denne slags problemer er løst i andre situationer, men ikke med 100% nøjagtighed og bestemt ikke til priser, der endda er tæt på at være konkurrencedygtige med DGT-kortet.

Så er der spørgsmålet om, hvor kameraet er kunne placeres. Direkte overhead ville give den bedste udsigt over tavlen, hvilket gør det lettere at bestemme firkanten med præcision. Men uanset hvor kameraet placeres, er der en klar sandsynlighed for, at dets syn bliver blokeret af en af ​​spillerne, enten bøjet over brættet, når ud til uret eller blot gestikulerer.

4) Ikke medmindre det var rigtig billigt. Og jeg forventer ikke, at det ville være. Min ræsonnement er enkel. Efterhånden som tidskontrollerne forkorter, mindskes kvaliteten af ​​spillet til det punkt, hvor det ikke længere er interessant for mig

Du gør et godt punkt ved 4: kvaliteten er virkelig dårlig. Ikke besværet værd at opsætte et kamera, meget mindre at bruge en måned på at skrive softwaren. Jeg vandt lige slutspillet, men jeg er flov over, hvor dårligt jeg spillede.
Tihomir Georgiev
2014-02-10 02:27:47 UTC
view on stackexchange narkive permalink

Det ville være en ret kompleks opgave. Måske er et fornuftigt første skridt at se på at genkende FEN-position fra et enkelt billede - for hvilket der findes flere ressourcer, for eksempel:

Fremragende tak. Jeg læste begge dele, og de er virkelig interessante. Chessgrabber er et nyligt projekt og er bestemt mere egnet, jeg kontaktede udvikleren.
Jeg ville tro, at det fra dette første trin ikke ville være for svært at konvertere en video til PGN - tag billeder hvert par millisekunder, analyser dem, og hvis positionen er ændret på en lovlig måde, tilføj den nye position til filen.
Opdatering: udvikleren svarede, det vil aldrig fungere for 3-d skæve billeder med overlappende stykker. Alt for dårlig, uden det som en base, starter projektet aldrig.
at genkende et stillbillede er faktisk sværere end at have videoen, der fører op til det, da sidstnævnte eliminerer problemet med at skulle kunne identificere brikkerne.
Wolfgang Fahl
2019-10-16 00:11:13 UTC
view on stackexchange narkive permalink

Det er 2019-12 nu og 5 år efter det originale spørgsmål.

  1. Findes der sådan noget (webcam / video til pgn-konverter)? Aprototype måske?

    se

  2. Har nogen forsøgt sådan en bedrift og delte deres forskning?

    Ja - indtil videre fandt jeg omkring 35 forskningsopgaver og nogle 10 open source-løsninger og et kommercielt tilbud

    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 er et andet projekt, der følger de mål, du har angivet. Projektet blev startet 2019-10-15 og om få timer fandt jeg allerede mange ressourcer, f.eks. dette spørgsmål Nogle to måneder senere har jeg opdateret mit svar (se linkene ovenfor)

  3. Er der åbenlyse begrænsninger, der gør dette projekt usandsynligt at få succes? Jeg kan kun svare på baggrund af min egen erfaring med et lignende projekt, jeg gjorde for 31 år siden, så http://wiki.bitplan.com/index.php/MagneticSensorChessBoard1987. På det tidspunkt forsøgte jeg at oprette et skakbræt, der kunne registrere træk. Jeg brugte magneter i træstykkerne og rørkontakterne. Nøglen til succes var at bruge en skakmotor, der nye "reglerne" kunne koncentrere sig om bevægelser alene og ikke behøver at opdage individuelle brikker. Som beskrevet i et svar ovenfor kan forfremmelser til ikke-dronningstykker være en af ​​kanten, der er vanskelige. At detektere bevægelsen af ​​stykker via billedforskelle er et velkendt problem.

    Skakmotorer og UCI-kompatible GUI'er er også tilgængelige i disse dage. Så problemet er mere et integrationsproblem i disse dage og derefter løser de individuelle detaljeringsproblemer.

    En stor hindring er forskellen mellem en "prototype" og et produkt. Se f.eks. http://www.nandanbanerjee.com/files/ICCVR-08AUG12-011%20paper.pdf

    et papir, der er endnu ældre end dette spørgsmål, men langt fra et produkt, der du kan købe til en rimelig pris.

  4. Vil du købe den, hvis den eksisterede?

    Ja. Da jeg købte et nyt skakbræt for et par dage siden, ledte jeg efter et, der kunne optage bevægelser, og det var stadig omkring 500 EUR. Da det ser ud, vil hardwareomkostningerne være langt under 150 EUR i disse dage inklusive et anstændigt skakbræt og brikker.

    Softwaren kan meget vel snart være open source og gratis (som i gratis øl). Jeg opdaterer dette svar i overensstemmelse hermed.

Tak, jeg ser frem til at se dine fremskridt
Rauan Sagit
2014-02-15 21:19:22 UTC
view on stackexchange narkive permalink

Det er tydeligt interessant og relevant automatisk at optage skakspil (live boards tackler mere eller mindre det samme problem). Så vidt jeg ved, findes der ingen software til dette formål i dag. For at løse dette problem synes jeg, at den "enkle" sag skal være som følger.

  1. Skakbrættet skal filmes ovenfra og ned for at få et todimensionelt billede. (Motivation: filmning i et tredimensionelt billede ville give problemer på grund af en skæv visning og stykker, der blokerer udsigten for andre stykker bag dem. Desuden er forskellige 3D-visninger mulige, som modvirker en ren procedure.)
  2. Filmen skal redigeres manuelt for at fange "rene kort" -momenter og fjerne øjeblikke, hvor de to spilleres hænder eller hoveder blokerer for visningen.
  3. Billedbehandlingsalgoritmen på softwaresiden skal registrere ændringer på tavlen og registrere dem som træk. Det skal også automatisk rotere og transformere billedet for at registrere kortretningen og derved koordinaterne.
  4. Softwaren skal bruge startpositionen til at "huske" hver stykketype og derefter bruge disse til billedgenkendelse under spillet. Sandsynligvis kan der skrives nogle smarte tricks til at løse problemet med stykkegenkendelse på en smart måde.

En hurtig Google-søgning med søgestrengen

skak billedbehandling af spil

returnerede denne interessante artikel

Alt i alt skal det være realistisk at implementere denne type software. Alligevel kan det være billigere for et menneske at udføre det samme arbejde (overførsel flytter fra et videoklip til en computer).

Det tog mig et stykke tid at gennemgå studiet af G.D. Illeperuma, du linkede, det er mest interessant. Men det udelukker _a priori_ muligheden for at udarbejde 3D-skæve billeder. Tak, en meget interessant artikel.
@RiccardoZorn du er velkommen! Jeg må indrømme, at jeg ikke kan se meningen med at håndtere 3D skæve billeder. Situationen er, at hvis et menneske har problemer med at dokumentere bevægelserne fra en videooptagelse, så vil en billedbehandlingssoftware have endnu mere vanskeligheder.
Opsætning af et lodret kamera kræver meget plads, er invasivt, og du har brug for en brugerdefineret support / stativ. Dette gør det upraktisk :-(
En mere enkel og billig "live board" -teknologi kan være en bedre vej at gå i så fald. Eventuelt kan du filme fra en rimelig 3D-vinkel og lade et menneske udtrække skaknotationen fra videooptagelsen.
filen http://www.researchgate.net/publication/234491319_Using_Image_Processing_Techniques_to_Automate_Chess_Game_Recording/file/79e4150fe3be5bef54.pdf ser ikke ud til at eksistere mere. har nogen en kopi?
Marius
2015-06-15 16:55:38 UTC
view on stackexchange narkive permalink

Jeg skrev denne software. Det indeholder webcam AI til bevægelsesgenkendelse, forbundet til Arena GUI.

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

Meget imponerende Marius, tillykke! Er alfa'en tilgængelig til testning allerede? Kan du udsætte bevægelserne gennem en tjeneste til brug af anden software?
Cedric Zoppolo
2016-09-09 09:32:15 UTC
view on stackexchange narkive permalink

Jeg arbejdede på skaksporingsprojektet 8x8cam inden for billedbehandlingsforløb i 2013 på FING UdelaR.

Så i 2014 skabte andre studerende en bedre version til Android med navnet chesstrack . Under dets internet kan du finde videoer og linke til den kode, de brugte.

Jeg ville meget gerne se en afsluttet app til denne projektide, jeg havde i årevis. Så hvis der er nogle nyheder om dette, bedes du efterlade en kommentar.

Besvare dine spidse spørgsmål:

  1. Findes der sådan noget (webcam / video til pgn-konverter ? En prototype måske?


    Bortset fra mit projekt 8x8cam og chesstrack, har jeg for nylig fundet et projekt ved navn ChessCam. Alle disse projekter er Open Source og behøver kun at blive navngivet som ressource, hvis du opretter et nyt projekt ud fra dem.

  2. Har nogen forsøgt en sådan bedrift og delt deres research?


    Ja. Du kan se sådan på svaret fra det foregående spørgsmål.

  3. Er der åbenlyse begrænsninger, der gør det usandsynligt, at dette projekt vil lykkes?


    Det sværeste ved jeg tror er at få softwaren til at fungere uanset hvordan kameraet er placeret og uafhængigt af belysningen. Og også at arbejde på hurtige spil og arbejde med håndtilslutninger når spillet afspilles for korrekt at registrere det udførte træk.

  4. Vil du købe det, hvis det eksisterede?


    Absolut ja.

Lynob
2014-02-18 01:05:12 UTC
view on stackexchange narkive permalink

Jeg vil ikke besvare spørgsmålet, fordi jeg ikke ved, om der er en software derude. Jeg siger bare, hvordan jeg tror, ​​det er sådan, jeg ved det ikke med sikkerhed, så ...


Okay først skal du sørge for, at videoen er optaget fra en skaksoftware, ikke en live turnering, bare for at gøre dit job lettere.

Du skal konvertere filmen til billeder

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

Det var let, nu den svære del, du skal begynde at lave billedbehandling, for det er den mest magtfulde OpenCV.

Til det er der flere teknikker, jeg giver dig linkene, så du kan læse dem.

Det er kompliceret, men enklere end du tror, ​​fordi du kun behøver at vide hvad er startpositionen, løb gennem alle billederne og se forskellen. Se på OpenCV-dokumenter, du finder masser af materialer om dette emne.


Åh, forresten, det, du beder om, er allerede gjort, men bruger ikke software som så vidt jeg ved, er der et gammelt projekt, der blev kodet ved hjælp af Pascal, kameraer placeret over tavlen, robotter udfører billedbehandling og foretager et skridt. I dag spiller mange robotter skak.

Du kan købe en Arduino-uno, og dens lette censur, den vil opdage de hvide brikker og de sorte stykker, noget kodende, og det spiller skak . :)

ajax333221
2014-03-19 02:18:05 UTC
view on stackexchange narkive permalink

Rediger: At promovere til noget andet end dronning får alt til at eksplodere. Det vil også være meget svært at støtte dette (mit program til del 2 understøtter underpromotion, men det er et mareridt at gemme informationen i del 1 udelukkende ved at læse pixels).

Edit2: Jeg har lige bemærket, at du mener rigtigt bordskak til PGN, så dette er alt nytteløst, og jeg vil sandsynligvis slette mit svar.

Del 1: lagring af firkanter ved hjælp af pixelæsere

Det er fuldstændigt muligt, ville de nødvendige trin være:

  1. ændre opsætningen af ​​tavlen, så det fremhæver det sidste træk (helst ikke kun grænsen)
  2. skriv et program, der læser pixels på en given (x, y)
  3. får det til at læse omkring 5+ pixels på hver firkant (så det er umuligt for markøren / stykket at dække alle de pixels, der skal være læs)
  4. konverter HEX til RBG, og giv derefter et interval af accepterede værdier af det, som vi anser for at være tæt på farven "sidste træk"
  5. gem bevægelserne på en matrix med et format ["h1-h8", "e4-e5", ...] bare start- og slutruterne (orde r uvigtigt )

Bemærk: herfra kan vi ikke rigtig vide fra hvilken firkant der var start- / slutpositionen, men der er kun 2 muligheder, og kun 1 af dem er lovlige.

Jeg har skrevet enkle pixelbaserede makroer / bots til RPG-spil i C #, jeg kan garantere, at dette ikke er det vanskeligt , i betragtning af at:

  1. cam er statisk (så x-, y-værdierne bliver ikke rodet)
  2. du kender tidligere baggrundsfarven, eller du kan indstille den op før afspilning

Dybest set er det bedst, hvis spillet spilles online, og du optager direkte fra skærmen.

Beklager, intet program er tilgængeligt for del nr. 1


Del 2: eksport af denne liste til PGN

For at gøre denne liste til en ægte PGN kan du bruge et program, som jeg skrev i JavaScript, der registrerer bevægelser, og en af ​​funktionerne moveCaller () passerer du to kvadrerer positioner, og den søger i final_pos i de juridiske træk af initial_pos , og hvis der er en match, kalder den makeMove () . Så vi kan kalde det to gange e5 til e4 og e4 til e5 og jeg garanterer, at det vil ignorere den ulovlige.

  1. download projektet (direkte link .zip)
  2. komprimér .zip
  3. skift JavaScript for index.html fil med denne:

'

  $ (funktion () {var i, len, arr, temp, m_board; m_board = IsepicChess. initBoard ({name: "main"}); arr = ["e4-e2", "e7-e5", "f3-g1"]; // er ok for de første og sidste firkanter, der skal byttes mod (i = 0, len = arr.længde; i<len; i ++) {temp = arr [i] .split ("-"); // en af ​​de to følgende linjer vil ikke lydsvigt m_board.moveCaller (temp [0], temp [1 ]); m_board.moveCaller (temp [1], temp [0]);} m_board.refreshBoard ();});  

.4. kopier flytelisten og tilføj nogle PGN-overskrifter over den som [WhiteElo "2400"] osv.

Cferrel
2014-02-22 11:45:22 UTC
view on stackexchange narkive permalink

Jeg bruger Monroi Chess Notation Device til alle mine skakspil, og det er grundlæggende et elektronisk bræt.

Det svarer dog ikke på OP's spørgsmål.
du kan bruge en digital præsentator til at optage et spil, det er et kamera lige over bordet. så kunne du bare skrive en applikation, der sporer objekterne i et gitter.


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...