Alat untuk notasi otomatis: film webcam ke PGN

14

Kadang-kadang selama blitz game di papan, atau ketika di zeitnot, akan sangat sulit untuk membubuhi keterangan mereka.

Saya telah melihat beberapa perangkat lunak / perangkat keras untuk membantu dalam penulisan notasi, bahkan satu yang disetujui FIDE ; ini mengharuskan Anda mengulangi gerakan pada perangkat. Hampir tidak lebih cepat daripada pena dan kertas, sama seperti rentan terhadap kesalahan, ditambah Anda berisiko mengetik gerakan yang salah dan menghabiskan lebih banyak waktu.

DJP membuat papan yang akan melakukan ini secara otomatis, tetapi hanya akan bekerja dengan potongan-potongannya, dan mulai dari € 400, dua kali lipat dari papan turnamen . Beberapa proyek independen tersedia seperti papan catur usb 101 , atau robot catur yang dikendalikan suara , sequencer papan catur Catur . Selain itu beberapa proyek terbuka tersedia yang bahkan memindahkan barang (atau barang raksasa ).

Saya memiliki playoff malam ini, dan aturan turnamen mendikte permainan lebih pendek dan lebih pendek sampai ada pemenang. Karena itu saya berpikir untuk membuat film papan tulis jika kita kehilangan jejak. Tapi kemudian latar belakang pemrograman saya muncul dan saya pikir "pasti ada beberapa perangkat lunak yang dapat memproses film dan menulis PGN".

Saya mencari kemana-mana, dan tidak menemukan apa pun.

  1. Apakah ada hal seperti itu (webcam / video ke pgn converter)? Sebuah prototipe mungkin?
  2. Adakah yang mencoba hal semacam itu dan membagikan penelitian mereka?
  3. Adakah batasan jelas yang membuat proyek ini tidak mungkin berhasil?
  4. Apakah Anda akan membelinya jika ada?
Riccardo Zorn
sumber
2
itu akan menjadi proyek pembelajaran visi / mesin komputer yang menarik!
Memming
Saya pikir papan harus difilmkan dari atas ke bawah untuk menghasilkan gambar "2D". Jika tidak, ada masalah tambahan untuk mentransposisi tampilan 3D ke tampilan 2D dan sudut 3D yang berbeda harus diperlakukan secara terpisah.
Rauan Sagit
sebenarnya itu hanya transformasi linear untuk "membuka" papan dan membuat semua kuadratnya. masalah utama adalah mengenali kuadrat potongan dipindahkan dari jika sudutnya sedemikian rupa sehingga potongan bisa berbaris di belakang satu sama lain.
peter
Mungkin kita bisa melakukan semacam crowdsourcing untuk proyek ini. Saya pikir ini sangat menarik. Saya bertaruh bahwa beberapa mahasiswa dapat melakukan ini untuk proyek-proyek senior. Kita perlu menemukan cara untuk mengkomunikasikan ide itu kepada para profesor. Mungkin dengan dua kamera ditempatkan di dua lokasi berbeda ini bisa dilakukan dengan andal. Saya akan tertarik dengan pendekatan 3D, bukan 2D dari overhead. Memasang kamera overhead terlalu tidak praktis. Saya juga akan tertarik pada perangkat lunak yang akan mengambil input dari beberapa kamera yang berbeda yang menembak beberapa game secara bersamaan dimainkan di atas meja panjang dan menghasilkan notasi - untuk
Mengingat kickstarter.com/projects/infivention/… sudah berhasil, proyek crowdfunding tampaknya memang layak. Terutama karena biaya untuk pengguna akhir akan sangat rendah.
Wolfgang Fahl

Jawaban:

4

Jelas menarik dan relevan untuk secara otomatis merekam permainan catur (live board kurang lebih menangani masalah yang sama). Sejauh yang saya tahu, tidak ada perangkat lunak untuk tujuan ini yang ada saat ini. Untuk mengatasi masalah ini, saya pikir kasus "sederhana" harus sebagai berikut.

  1. Papan catur harus difilmkan dari atas ke bawah untuk mendapatkan tampilan dua dimensi. (Motivasi: pembuatan film dalam tampilan tiga dimensi akan menyebabkan masalah karena tampilan miring dan potongan-potongan yang akan memblokir tampilan untuk potongan lain di belakangnya. Juga, berbagai tampilan 3D dimungkinkan yang akan menangkal prosedur bersih.)
  2. Film ini harus diedit secara manual untuk menangkap momen "papan bersih" dan menghapus momen ketika tangan atau kepala kedua pemain menghalangi pandangan.
  3. Algoritma pemrosesan gambar pada sisi perangkat lunak harus mendeteksi perubahan di papan tulis dan merekamnya sebagai gerakan. Ini juga harus memutar otomatis dan mengubah gambar untuk mendeteksi orientasi papan dan dengan demikian koordinat.
  4. Perangkat lunak harus menggunakan posisi awal untuk "menghafal" setiap jenis bagian dan kemudian menggunakannya untuk pengenalan gambar selama pertandingan. Mungkin, beberapa trik pintar dapat ditulis untuk menyelesaikan masalah pengenalan potongan dengan cara yang cerdas.

Pencarian Google cepat dengan string pencarian

pemrosesan gambar permainan catur

mengembalikan artikel yang menarik ini

Secara keseluruhan, harus realistis untuk mengimplementasikan perangkat lunak jenis ini. Namun mungkin lebih murah bagi manusia untuk melakukan pekerjaan yang sama (transfer bergerak dari klip video ke komputer).

Rauan Sagit
sumber
Butuh beberapa saat untuk mempelajari GDIlleperuma yang Anda tautkan, ini yang paling menarik. Tapi itu tidak termasuk apriori kemungkinan mengelaborasi gambar miring 3D. Terima kasih, artikel yang sangat menarik.
Riccardo Zorn
@ Riccardo, selamat datang! Saya harus mengakui bahwa saya tidak melihat gunanya menangani gambar miring 3D. Situasinya adalah jika manusia memiliki masalah dalam mendokumentasikan perpindahan dari perekaman video, maka perangkat lunak pengolah gambar akan lebih sulit lagi.
Rauan Sagit
Menyiapkan kamera vertikal membutuhkan banyak ruang, invasif, dan Anda memerlukan dukungan / penyangga khusus. Ini membuatnya tidak praktis :-(
Riccardo Zorn
Teknologi "live board" yang lebih sederhana dan murah mungkin cara yang lebih baik untuk digunakan dalam kasus itu. Secara opsional, buat film dari sudut 3D yang masuk akal dan biarkan manusia mengekstrak notasi catur dari rekaman video.
Rauan Sagit
file researchgate.net/publication/… sepertinya tidak ada lagi. apakah ada yang punya salinan?
peter
6

Dalam urutan,

1) Tidak setahu saya

2) Tidak setahu saya

3) Ada beberapa hal yang membuat proyek semacam ini tidak sepele, bahkan sulit. Tidak sedikit yang mengikuti potongan, membedakannya dari isyarat tangan, misalnya. Juga menentukan kapan langkah berhenti akan menjadi pertanyaan yang menarik untuk dipecahkan oleh visi komputer. Jenis-jenis masalah ini telah diselesaikan dalam situasi lain, tetapi tidak dengan akurasi 100%, dan tentu saja tidak pada harga yang bahkan hampir bersaing dengan dewan DJP.

Lalu ada pertanyaan di mana kamera bisa diposisikan. Langsung di atas kepala akan menawarkan tampilan papan terbaik, sehingga lebih mudah untuk menentukan persegi dengan presisi. Tapi di mana pun kamera ditempatkan, ada kemungkinan yang berbeda pandangannya akan terhalang oleh salah satu pemain, baik membungkuk di papan, meraih jam, atau hanya menggerakkan tangan.

4) Tidak kecuali itu benar-benar murah. Dan saya tidak berharap itu akan terjadi. Alasan saya sederhana. Seiring waktu semakin singkat, kualitas permainan berkurang, ke titik di mana itu tidak lagi menarik bagi saya

Arlen
sumber
Anda membuat poin yang bagus di 4: kualitasnya memang buruk. Tidak sebanding dengan kerumitan memasang kamera, apalagi menghabiskan waktu sebulan untuk menulis perangkat lunak. Saya baru saja memenangkan playoff, tetapi saya malu betapa buruknya saya bermain.
Riccardo Zorn
5

Itu akan menjadi tugas yang agak rumit. Mungkin langkah pertama yang masuk akal adalah melihat ke mengenali posisi FEN dari satu gambar - di mana ada lebih banyak sumber daya, misalnya:

Tihomir Georgiev
sumber
Sangat baik, terima kasih. Saya membaca keduanya dan mereka sangat menarik. Chessgrabber adalah proyek terbaru dan pasti lebih cocok, saya menghubungi pengembang.
Riccardo Zorn
Saya akan berpikir bahwa dari langkah pertama ini tidak akan terlalu sulit untuk mengkonversi video ke PGN - mengambil gambar setiap beberapa milidetik, menganalisisnya, dan jika posisinya telah berubah secara legal, tambahkan posisi baru ke file.
rlms
Pembaruan: pengembang merespons, itu tidak akan pernah berhasil untuk gambar miring 3-d dengan potongan yang tumpang tindih. Sayang sekali, tanpa itu sebagai basis, proyek tidak akan pernah dimulai.
Riccardo Zorn
mengenali gambar diam sebenarnya lebih sulit daripada membuat video mengarah ke sana, karena yang terakhir menghilangkan masalah karena harus dapat mengidentifikasi potongan.
peter
4

Sekarang 2019-12 dan 5 tahun setelah pertanyaan awal.

  1. Apakah ada hal seperti itu (webcam / video ke pgn converter)? Sebuah prototipe mungkin?

    Lihat

  2. Adakah yang mencoba hal semacam itu dan membagikan penelitian mereka?

    Ya - sejauh ini saya menemukan sekitar 35 makalah penelitian dan sekitar 10 solusi open source dan satu penawaran komersial

    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 adalah proyek lain yang membidik tujuan yang dinyatakan oleh Anda. Proyek ini dimulai 2019-10-15 dan dalam beberapa jam saya sudah menemukan banyak sumber daya mis. Pertanyaan ini Beberapa dua bulan kemudian saya telah memperbarui jawaban saya (lihat tautan di atas)

  3. Adakah batasan jelas yang membuat proyek ini tidak mungkin berhasil? Saya hanya bisa menjawab dari pengalaman saya sendiri dengan proyek serupa yang saya lakukan 31 tahun yang lalu lihat http://wiki.bitplan.com/index.php/MagneticSensorChessBoard1987 . Saat itu saya mencoba membuat papan catur yang mendeteksi gerakan. Saya menggunakan magnet di potongan kayu dan buluh kontak. Kunci kesuksesan adalah menggunakan mesin catur yang "aturan" baru untuk dapat berkonsentrasi pada gerakan sendiri dan tidak harus mendeteksi potongan individu. Seperti yang dijabarkan dalam jawaban di atas, promosi ke produk non-ratu mungkin menjadi salah satu tepi kata kunci yang sulit. Mendeteksi gerakan potongan melalui perbedaan gambar adalah masalah yang dipahami dengan baik.

    Mesin catur dan GUI yang kompatibel dengan UCI juga tersedia akhir-akhir ini. Jadi masalahnya lebih merupakan masalah integrasi hari ini kemudian menyelesaikan masalah detail individu.

    Kendala utama adalah perbedaan antara "prototipe" dan produk. Lihat misalnya http://www.nandanbanerjee.com/files/ICCVR-08AUG12-011%20paper.pdf

    makalah yang bahkan lebih tua dari pertanyaan ini tetapi jauh dari produk yang dapat Anda beli dengan harga yang wajar.

  4. Apakah Anda akan membelinya jika ada?

    Iya. Ketika saya membeli papan catur baru beberapa hari yang lalu saya sedang mencari papan catur yang dapat merekam pergerakan dan harganya masih sekitar 500 EUR. Seperti terlihat biaya perangkat keras akan jauh di bawah 150 EUR hari ini termasuk papan catur yang layak dan potongan-potongan.

    Perangkat lunaknya mungkin open source dan segera (seperti bir gratis). Saya akan memperbarui jawaban ini sesuai.

Wolfgang Fahl
sumber
1
Terima kasih, saya menantikan untuk melihat kemajuan Anda
Riccardo Zorn
3

Saya menulis perangkat lunak ini. Ini berisi webcam AI untuk pengenalan gerakan, terhubung ke Arena GUI.

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

Marius
sumber
Marius yang sangat mengesankan, selamat! Apakah sudah tersedia alpha untuk pengujian? Bisakah Anda mengekspos gerakan melalui layanan, untuk digunakan oleh perangkat lunak lain?
Riccardo Zorn
3

Saya bekerja pada proyek pelacakan catur 8x8cam dalam kursus pemrosesan gambar pada 2013 di FING UdelaR.

Kemudian pada tahun 2014 siswa lain membuat versi yang lebih baik untuk Android bernama chesstrack . Di bawah webnya Anda dapat menemukan video dan tautan ke kode yang mereka gunakan.

Saya akan senang melihat aplikasi final dari ide proyek ini yang saya miliki selama bertahun-tahun. Jadi jika ada berita tentang ini, silakan tinggalkan komentar.

Menjawab pertanyaan runcing Anda:

  1. Apakah ada hal seperti itu (webcam / video ke pgn converter? Sebuah prototipe mungkin?


    Terlepas dari proyek saya 8x8cam dan permainan catur , saya baru-baru ini menemukan sebuah proyek bernama ChessCam . Semua proyek ini adalah Sumber Terbuka dan hanya perlu disebut sebagai sumber daya jika Anda membuat proyek baru dari mereka.

  2. Adakah yang mencoba hal semacam itu dan membagikan penelitian mereka?


    Iya. Anda dapat melihat seperti pada jawaban pertanyaan sebelumnya.

  3. Adakah batasan jelas yang membuat proyek ini tidak mungkin berhasil?


    Bagian tersulit yang saya percaya adalah membuat perangkat lunak bekerja tidak peduli bagaimana kamera ditempatkan dan terlepas dari penerangan. Dan juga untuk bekerja pada game yang bergerak cepat dan bekerja dengan oklusi tangan saat game dimainkan, untuk mendeteksi dengan benar langkah yang dilakukan.

  4. Apakah Anda akan membelinya jika ada?


    Pasti ya.

Cedric Zoppolo
sumber
1

Saya tidak akan menjawab pertanyaan, karena saya tidak tahu apakah ada perangkat lunak di luar sana. Saya hanya mengatakan bagaimana saya pikir itu cara melakukannya, saya tidak tahu pasti, jadi ...


Oke pertama, Anda perlu memastikan bahwa video direkam dari perangkat lunak catur, bukan turnamen langsung, hanya untuk membuat pekerjaan Anda lebih mudah.

Anda perlu mengonversi film ke gambar

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

Itu mudah, sekarang bagian yang sulit, Anda harus mulai melakukan prosesi gambar, untuk itu, yang paling kuat adalah OpenCV.

Untuk itu, ada beberapa teknik, saya akan memberi Anda tautan sehingga Anda dapat membacanya.

Ini rumit tetapi lebih sederhana daripada yang Anda pikirkan, karena Anda hanya perlu tahu apa posisi awal, mengulangi semua gambar dan melihat perbedaannya. Lihatlah OpenCV docs Anda akan menemukan banyak bahan tentang hal itu.


Oh, omong-omong, apa yang Anda minta sudah dilakukan, tetapi tidak menggunakan perangkat lunak sejauh yang saya tahu, ada proyek lama yang dikodekan menggunakan Pascal, kamera ditempatkan di atas papan, robot melakukan pemrosesan gambar dan bergerak. Saat ini banyak robot bermain catur.

Anda bisa membeli Arduino uno, dan sensor cahayanya, itu akan mendeteksi keping putih dan keping hitam, beberapa kode dan itu akan bermain catur. :)

Lynob
sumber
1

Sunting: mempromosikan sesuatu yang berbeda dari ratu akan membuat semuanya meledak. Ini juga akan sangat sulit untuk mendukung ini (program saya untuk Bagian 2 mendukung kurang promosi, tetapi menyimpan info Bagian 1 murni dengan membaca piksel adalah mimpi buruk).

Sunting2: Saya baru saja memperhatikan maksud Anda papan catur nyata untuk PGN, jadi ini semua tidak berguna dan saya kemungkinan besar akan menghapus jawaban saya.

Bagian 1: menyimpan kotak menggunakan pembaca piksel

Sangat mungkin, langkah-langkah yang diperlukan adalah:

  1. ubah pengaturan papan sehingga menyoroti langkah terakhir (lebih baik tidak hanya perbatasan)
  2. menulis sebuah program yang membaca piksel pada yang diberikan (x, y)
  3. buat itu membaca sekitar 5+ piksel pada setiap kotak (jadi tidak mungkin kursor / bagian untuk menutupi semua piksel untuk dibaca)
  4. konversikan HEX ke RBG, lalu berikan kisaran nilai yang diterima dari apa yang kita anggap dekat dengan warna "langkah terakhir"
  5. simpan gerakan pada array dengan format ["h1-h8", "e4-e5", ...] hanya kotak awal dan akhir (urutan tidak penting )

catatan: dari sini kita tidak bisa benar-benar tahu dari mana persegi adalah posisi awal / akhir, tetapi hanya ada 2 kemungkinan dan hanya 1 yang legal.

Saya telah menulis macro / bots berbasis pixel sederhana untuk game RPG di C #, saya dapat menjamin ini tidak terlalu sulit, mengingat bahwa:

  1. cam statis (jadi nilai x, y tidak kacau)
  2. Anda sebelumnya tahu warna latar belakang atau Anda dapat mengaturnya sebelum bermain

Pada dasarnya, yang terbaik adalah jika permainan dimainkan secara online dan Anda merekam langsung dari layar.

Maaf, tidak ada program yang tersedia untuk bagian # 1


Bagian 2: mengekspor daftar itu ke PGN

Untuk mengubah daftar ini menjadi PGN nyata, Anda dapat menggunakan program yang saya tulis dalam JavaScript yang merekam gerakan, dan salah satu fungsi yang moveCaller()Anda lewati dua posisi kuadrat dan mencari final_posdi dalam gerakan legal initial_posdan jika ada kecocokan maka ia memanggil makeMove(). Jadi kita bisa menyebutnya dua kali e5 to e4dan e4 to e5dan saya menjamin akan mengabaikan satu ilegal.

  1. unduh proyek (tautan langsung .zip )
  2. membuka kompres .zip
  3. ubah JavaScript index.htmlfile dengan ini:

'

$(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. salin daftar pindah dan tambahkan beberapa header PGN di atasnya seperti [WhiteElo "2400"]dll.

ajax333221
sumber
-1

Saya menggunakan Perangkat Notasi Catur Monroi untuk semua permainan catur saya dan pada dasarnya adalah papan elektronik.

Cferrel
sumber
4
Itu tidak menjawab pertanyaan OP.
Dag Oskar Madsen
Anda bisa menggunakan presenter digital untuk merekam permainan dengan kamera tepat di atas meja. maka Anda bisa menulis aplikasi yang melacak objek dalam kotak.
Cferrel