자동 표기법을위한 도구 : 웹캠 영화에서 PGN으로


14

때로는 보드 위의 블리츠 게임이나 제니트에있을 때 주석을 달기가 매우 어려워집니다.

FIDE 승인을받은 표기법을 작성하는 데 도움이되는 여러 소프트웨어 / 하드웨어를 보았습니다 . 이를 위해서는 장치에서 이동을 반복해야합니다. 오류가 발생하기 쉬운 것처럼 펜과 종이보다 훨씬 빠르지 않으며 잘못된 움직임을 입력하여 더 많은 시간을 낭비 할 위험이 있습니다.

DGT는 이것을 자동으로 수행 하는 보드만들지 만, 그 조각으로 만 작동하며 400 €에서 시작하여 토너먼트 보드의 두 배입니다 . USB 체스 판 101 또는 음성 제어 체스 로봇 , 체스 보드 스텝 시퀀서 와 같은 일부 독립적 인 프로젝트를 사용할 수 있습니다 . 또한 움직이는 조각 (또는 거대한 조각 ) 조차도 열려있는 일부 프로젝트를 사용할 수 있습니다 .

오늘 밤에 플레이 오프가 있으며 토너먼트 규칙은 승자가 될 때까지 짧고 짧은 게임을 지시합니다. 그래서 우리가 트랙을 잃으면 보드의 영화를 촬영하는 것에 대해 생각했습니다. 그러나 내 프로그래밍 배경이 시작되었고 "영화를 처리하고 PGN을 작성할 수있는 소프트웨어가있을 것"이라고 생각했습니다.

나는 모든 곳을 수색했지만 아무것도 찾지 못했습니다.

  1. 그러한 것이 있습니까 (웹캠 / 비디오 -pgn 변환기)? 프로토 타입일까요?
  2. 누구든지 그러한 위업을 시도하고 연구를 공유 했습니까?
  3. 이 프로젝트가 성공하지 못할 명백한 제한이 있습니까?
  4. 존재한다면 사시겠습니까?

2
흥미로운 컴퓨터 비전 / 기계 학습 프로젝트 일 것입니다!
Memming

보드를 위에서 아래로 촬영하여 "2D"이미지를 만들어야한다고 생각합니다. 그렇지 않으면, 3D- 뷰를 2D- 뷰로 전이하는 추가적인 문제가 있고 다른 3D- 앵글은 별도로 처리되어야합니다.
Rauan Sagit

실제로 이것은 단순히 보드를 "언 스트레치"하고 모든 사각형을 사각형으로 만드는 선형 변환입니다. 가장 큰 문제는 각이 서로 뒤를 이룰 수있는 각도 인 경우 조각이 이동 한 사각형을 인식하는 것입니다.
peter

이 프로젝트를 위해 일종의 크라우드 소싱을 할 수도 있습니다. 매우 흥미 롭습니다. 나는 일부 대학생이 상급 프로젝트를 위해 이것을 할 수 있다고 확신합니다. 우리는 아이디어를 교수들에게 전달할 수있는 방법을 찾아야합니다. 두 대의 카메라를 두 개의 다른 위치에 배치하면이 작업을 확실하게 수행 할 수 있습니다. 오버 헤드에서 2D가 아닌 3D 방식에 관심이 있습니다. 오버 헤드 카메라 장착이 실용적이지 않습니다. 또한 긴 테이블에서 동시에 여러 게임을하는 몇 가지 카메라에서 입력을 받아 표기법을 생성하는 소프트웨어에 관심이있을 것입니다.

kickstarter.com/projects/infivention/… 이 이미 성공 했다는 점 에서 크라우드 펀딩 프로젝트는 실제로 가능해 보입니다. 특히 최종 사용자 비용이 매우 낮기 때문입니다.
Wolfgang Fahl

답변:


4

체스 게임을 자동으로 기록하는 것은 분명 흥미롭고 관련이 있습니다 (라이브 보드는 거의 같은 문제를 다루고 있습니다). 내가 아는 한, 오늘날이 목적을위한 소프트웨어는 없습니다. 이 문제를 해결하려면 "간단한"사례는 다음과 같아야합니다.

  1. 체스 판은 2 차원으로 볼 수 있도록 위에서 아래로 촬영해야합니다. (동기 부여 : 3 차원보기로 촬영하면 왜곡 된보기와 그 뒤에있는 다른 조각에 대한보기를 차단하는 조각으로 인해 문제가 발생할 수 있습니다. 또한 깨끗한 절차를 방해하는 다른 3D보기가 가능합니다.)
  2. "깨끗한 보드"순간을 포착하고 두 선수의 손이나 머리가 시야를 가리고있는 순간을 제거하려면 필름을 수동으로 편집해야합니다.
  3. 소프트웨어 측의 이미지 처리 알고리즘은 보드의 변경 사항을 감지하고 움직임으로 기록해야합니다. 또한 이미지를 자동 회전하고 변환하여 보드 방향과 좌표를 감지해야합니다.
  4. 소프트웨어는 시작 위치를 사용하여 모든 조각 유형을 "암기"한 다음 게임 도중 이미지 인식에 사용해야합니다. 아마도 영리한 방식으로 조각 인식 문제를 해결하기 위해 영리한 트릭을 작성할 수 있습니다.

검색 문자열을 사용한 빠른 Google 검색

체스 게임 이미지 처리

흥미로운 기사를 반환

대체로 이러한 유형의 소프트웨어를 구현하는 것이 현실적이어야합니다. 그러나 사람이 동일한 작업을 수행하는 것이 더 저렴할 수 있습니다 (비디오 클립에서 컴퓨터로 이동 전송).


연결 한 GDIlleperuma의 연구를 진행하는 데 시간이 걸렸습니다. 가장 흥미 롭습니다. 그러나 3D 왜곡 된 이미지를 구체화 할 가능성을 우선적으로 배제 합니다 . 매우 흥미로운 기사 감사합니다.
리카르도 존

@RiccardoZorn 환영합니다! 3D 기울어 진 이미지를 다루는 지점이 보이지 않는다는 것을 인정해야합니다. 인간이 비디오 기록으로부터의 움직임을 문서화하는데 문제가 있다면, 이미지 처리 소프트웨어는 훨씬 더 어려울 것이다.
Rauan Sagit 2019

수직 카메라를 설치하려면 많은 공간이 필요하고, 침습적이며, 사용자 지정 지원 / 스탠드가 필요합니다. 이것은 비현실적 :-(합니다
리카르도 죤

이 경우보다 간단하고 저렴한 "라이브 보드"기술이 더 나은 방법 일 수 있습니다. 선택적으로, 합리적인 3D 각도에서 필름을 촬영하여 사람이 비디오 기록에서 체스 표기법을 추출 할 수 있습니다.
Rauan Sagit

researchgate.net/publication/… 파일 이 더 이상 존재하지 않는 것 같습니다. 누구든지 사본을 가지고 있습니까?
peter

6

순서대로

1) 내 지식이 아님

2) 내 지식이 아님

3) 이런 종류의 프로젝트를 사소하고 어렵게 만드는 몇 가지 사항이 있습니다. 예를 들어, 손 제스처와 차별화되는 부분이 가장 중요합니다. 또한 이동이 중지 된 시점을 결정하는 것은 컴퓨터 비전이 해결해야 할 흥미로운 질문입니다. 이러한 종류의 문제는 다른 상황에서는 해결되었지만 100 % 정확성은 아니고 DGT 보드와 경쟁하기에 가까운 가격은 아닙니다.

그런 다음 카메라를 어디에 배치 할 수 있는지에 대한 질문이 있습니다. 직접 오버 헤드는 보드를 가장 잘 볼 수있게하므로 정사각형을보다 정확하게 결정하는 것이 쉬워집니다. 그러나 카메라를 배치 할 때마다 플레이어 중 한 명이 보드에 기대거나 시계에 닿거나 간단히 한순간에 볼 때 시야가 가려 질 가능성이 분명합니다.

4) 정말 싸지 않은 한 그렇지 않습니다. 그리고 나는 그것이 될 것이라고 기대하지 않습니다. 나의 추론은 간단하다. 시간 제어가 단축됨에 따라 게임 품질이 더 이상 나에게 흥미롭지 않을 정도로 줄어 듭니다.


4시를 강조합니다. 품질은 실제로 열악합니다. 카메라를 설치하는 번거 로움이 없어 소프트웨어를 작성하는 데 한 달이 걸리지 않습니다. 나는 플레이 오프에서 이겼지 만, 내가 얼마나 가난하게 플레이했는지는 당황 스럽다.
Riccardo Zorn 1

5

그것은 다소 복잡한 작업입니다. 합리적인 첫 단계는 더 많은 리소스가 존재하는 단일 이미지에서 FEN 위치를 인식하는 것입니다.


훌륭 해요, 고맙습니다. 나는 둘 다 읽고 그들은 정말 재미있다. Chessgrabber는 최근 프로젝트이며 확실히 더 적합합니다. 개발자에게 연락했습니다.
리카르도 존

이 첫 단계부터 비디오를 PGN으로 변환하는 것이 그리 어렵지 않을 것이라고 생각합니다. 몇 밀리 초마다 이미지를 찍고 분석하고 위치가 합법적으로 변경되면 파일에 새 위치를 추가하십시오.
rlms

업데이트 : 개발자가 응답했지만 조각이 겹치는 3 차원 기울어 진 이미지에는 작동하지 않습니다. 그것의 기초가 없으면 프로젝트가 시작되지 않을 것입니다.
Riccardo Zorn

스틸 이미지를 인식하는 것은 실제로 비디오를 가져 오는 것보다 어렵습니다. 후자는 조각을 식별 할 수 없어야하기 때문입니다.
peter

5

2019-12-12이며 원래 질문 후 5 년입니다.

  1. 그러한 것이 있습니까 (웹캠 / 비디오 -pgn 변환기)? 프로토 타입일까요?

    보다

  2. 누구든지 그러한 위업을 시도하고 연구를 공유 했습니까?

    예-지금까지 약 35 개의 연구 논문과 10 개의 오픈 소스 솔루션 및 1 개의 상용 제품을 발견했습니다.

    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에 시작했으며 몇 시간 내에 이미 많은 리소스를 찾았습니다. 예를 들어 2 개월 후 답변을 업데이트했습니다 (위 링크 참조).

  3. 이 프로젝트가 성공하지 못할 명백한 제한이 있습니까? 나는 31 년 전에했던 비슷한 프로젝트에 대한 내 자신의 경험에서만 대답 할 수 있습니다 http://wiki.bitplan.com/index.php/MagneticSensorChessBoard1987 . 그 당시에는 움직임을 감지하는 체스 판을 만들려고했습니다. 나는 나무 조각과 리드 접점에 자석을 사용했습니다. 성공의 열쇠는 체스 엔진을 사용하여 새로운 "규칙"을 사용하여 움직임에만 집중할 수 있고 개별 조각을 감지 할 필요가 없었습니다. 위의 답변에 요약 된 것처럼 비 여왕 조각에 대한 프로모션은 어려운 유스 케이스 중 하나 일 수 있습니다. 그림 차이를 통해 조각의 움직임을 감지하는 것은 잘 알려진 문제입니다.

    요즘 체스 엔진과 UCI 호환 GUI도 사용할 수 있습니다. 따라서 문제는 요즘 더 통합적인 문제이며 개별 세부 사항 문제를 해결합니다.

    주요 장애물은 "시제품"과 제품의 차이입니다. 예를 들어 http://www.nandanbanerjee.com/files/ICCVR-08AUG12-011%20paper.pdf 참조

    이 질문보다 오래되었지만 합리적인 가격으로 구입할 수있는 제품과는 거리가 먼 종이.

  4. 존재한다면 사시겠습니까?

    예. 며칠 전에 새 체스 판을 구입했을 때 움직임을 기록 할 수있는 보드를 찾고 있었으며 여전히 500 유로 정도였습니다. 하드웨어 가격은 요즘 괜찮은 체스 판과 조각을 포함하여 150 유로 미만이 될 것입니다.

    이 소프트웨어는 오픈 소스이고 무료 (무료 맥주와 같이) 곧 제공 될 것입니다. 이에 따라이 답변을 업데이트하겠습니다.


1
내가 진행 상황보고 기대하고, 감사합니다
리카르도 죤을


3

2013 년 FING UdelaR의 이미지 처리 과정에서 체스 추적 프로젝트 8x8cam 을 연구했습니다.

그런 다음 2014 년에 다른 학생들은 chesstrack 이라는 Android 용으로 더 나은 버전을 만들었습니다 . 웹 아래에서 비디오를 찾고 사용 된 코드에 연결할 수 있습니다.

나는 몇 년 동안이 프로젝트 아이디어의 최종 응용 프로그램을보고 싶습니다. 이에 대한 소식이 있으면 의견을 남겨주세요.

지적한 질문에 대한 답변 :

  1. 그러한 것이 있습니까 (웹캠 / 비디오 -pgn 변환기? 프로토 타입일까요?


    내 프로젝트 8x8camchesstrack 외에도 최근에 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 문서를 살펴보십시오.


그건 그렇고, 당신이 요구하는 것은 이미 완료되었지만 내가 아는 한 소프트웨어를 사용하지 않고, 파스칼을 사용하여 코딩 된 오래된 프로젝트가 있습니다. 오늘날 많은 로봇들이 체스를합니다.

Arduino uno와 가벼운 검열기를 구입할 수 있으며 흰색 조각과 검은 색 조각, 일부 코딩을 감지하고 체스를 할 것입니다. :)


1

편집 : 여왕과 다른 것을 홍보하면 모든 것이 폭발합니다. 또한 이것을 지원하기가 매우 어려울 것입니다 (Part 2에 대한 내 프로그램은 판촉을 지원하지만 픽셀을 읽음으로써 Part 1의 정보를 저장하는 것은 악몽입니다).

Edit2 : PGN에 실제 보드 체스를 의미한다는 것을 알았습니다. 그래서 이것은 모두 쓸모가 없으며 대부분 내 대답을 삭제합니다.

1 부 : 픽셀 리더를 사용하여 정사각형 저장

완전히 가능하며 필요한 단계는 다음과 같습니다.

  1. 이 (prefereably 마지막 이동 강조 있도록 보드의 셋업을 변경 하지 단지 국경을)
  2. 주어진 (x, y)에서 픽셀을 읽는 프로그램을 작성하십시오.
  3. 각 정사각형에서 약 5+ 픽셀 이상 읽도록합니다 (따라서 커서 / 조각이 읽을 모든 픽셀을 가리는 것은 불가능합니다)
  4. HEX를 RBG로 변환 한 다음 "마지막 이동"색상에 가까운 것으로 간주되는 것으로 허용되는 값 범위 를 지정하십시오.
  5. ["h1-h8", "e4-e5", ...] 초기 및 끝 사각형 형식으로 배열에 이동을 저장하십시오 ( 중요하지 않은 순서 )

참고 : 여기에서 우리는 실제로 어느 정사각형이 초기 / 종료 위치인지 알 수 없지만 가능성은 2 개 뿐이며 그중 하나만 합법적입니다.

나는 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. index.html파일 의 JavaScript를 다음 과 같이 변경하십시오 .

'

$(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 Chess Notation Device 를 사용하며 기본적으로 전자 보드입니다.


4
그러나 OP의 질문에 대답하지는 않습니다.
Dag Oskar Madsen 2012

디지털 발표자를 사용하여 테이블 바로 위의 카메라에 게임을 녹화 할 수 있습니다. 그런 다음 그리드에서 객체를 추적하는 응용 프로그램을 작성할 수 있습니다.
Cferrel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.