自动注释工具:将网络摄像头电影转换为PGN


14

有时,在全盘闪电战中或在zeitnot中时,注释它们非常困难。

我已经看过几种软件/硬件来帮助编写该符号,甚至是经过FIDE批准的软件/硬件。这些要求您重复设备上的移动。几乎不比笔和纸快,就像容易出错一样,而且您冒着输入错误的动作并浪费更多时间的风险。

DGT制作的棋盘将自动执行此操作,但仅能按部就班,起价为400欧元,是锦标赛棋盘的两倍。可以使用一些独立的项目,例如USB棋盘101语音控制的国际象棋机器人国际象棋棋盘步进音序器。此外,还有一些开放项目,甚至可以移动碎片(或巨大的碎片)。

今晚我有一个季后赛,而比赛规则规定比赛越来越短,直到有赢家。因此,我考虑过要为董事会的电影拍摄,否则我们会迷路。但是后来我的编程背景开始了,我认为“必须有一些可以处理电影并编写PGN的软件”。

我到处搜寻,一无所获。

  1. 是否存在这样的东西(网络摄像头/视频到PGN转换器)?原型吗?
  2. 有没有人尝试过这样的壮举并分享了他们的研究成果?
  3. 是否有明显的局限性使该项目难以成功?
  4. 如果存在,您会购买吗?

2
这将是一个有趣的计算机视觉/机器学习项目!
2014年

我认为必须从上到下拍摄木板才能产生“ 2D”图像。否则,存在将3D视图转换为2D视图的另一个问题,并且必须分别处理不同的3D角度。
Rauan Sagit 2014年

实际上,这只是将板“展开”并使其所有正方形均为正方形的线性变换。主要问题是,如果角度可以使工件相互对齐,则要识别出工件的移动方向是正方形。
彼得,2015年

也许我们可以为此项目进行某种形式的众包。我觉得这很有趣。我敢打赌一些大学生可以为高级项目做这件事。我们需要找到一种将想法传达给教授的方法。也许将两个摄像机放置在两个不同的位置,就可以可靠地完成此操作。我会对3D方法感兴趣,而不是对开销产生2D影响。安装高架摄像机太不切实际。我也会对这样的软件感兴趣:该软件将从几个不同的相机输入来拍摄在长桌上同时玩的几个游戏并产生符号

鉴于kickstarter.com/projects/infivention/…已经成功,众筹项目似乎确实可行。特别是因为最终用户的成本将非常低。
沃尔夫冈·法尔

Answers:


4

自动录制国际象棋很有趣,而且很有意义(实时棋盘或多或少地解决了同一问题)。据我所知,今天没有用于此目的的软件。为了解决这个问题,我认为“简单”情况应该如下。

  1. 棋盘应该自上而下进行拍摄以获得二维视图。(动机:在三维视图中进行拍摄会导致问题,因为视图倾斜,并且某些块会阻挡后面的其他块的视图。此外,可能会有不同的3D视图来抵消干净的过程。)
  2. 应该手动编辑影片,以捕捉“干净的板”时刻,并消除两个玩家的手或头阻挡视线时的时刻。
  3. 软件方面的图像处理算法应检测板上的变化并将其记录为移动。它还应该自动旋转和变换图像,以检测板的方向,从而检测坐标。
  4. 该软件应使用起始位置“记忆”每种棋子类型,然后在游戏过程中将其用于图像识别。可能可以编写一些巧妙的技巧来以一种聪明的方式解决棋子识别问题。

带有搜索字符串的Google快速搜索

象棋游戏图像处理

返回了这篇有趣的文章

总而言之,实施此类软件应该是现实的。但是,对于人类来说,执行相同的工作可能会更便宜(将视频剪辑中的内容转移到计算机上)。


我花了一些时间通过您所链接的GDIlleperuma进行研究,这很有趣。但这确实排除制作3D偏斜图像的先验可能性。谢谢,非常有趣的文章。
Riccardo Zorn 2014年

@RiccardoZorn,不客气!我必须承认我看不到处理3D偏斜图像的意义。这种情况是,如果人们在记录视频录制的动作时遇到麻烦,那么图像处理软件将面临更大的困难。
Rauan Sagit 2014年

设置立式相机需要大量空间,这是侵入性的,并且您需要自定义的支撑/支架。这使其不切实际:-(
Riccardo Zorn 2014年

在这种情况下,更简单,更便宜的“活动板”技术可能是更好的选择。可选地,以合理的3D角度拍摄影片,然后让人们从视频记录中提取国际象棋符号。
Rauan Sagit 2014年

文件researchgate.net/publication/…似乎不再存在。有人有副本吗?
彼得,2013年

6

为了,

1)据我所知

2)据我所知

3)有几件事使这种项目变得微不足道,甚至是困难的。例如,其中至少有一个是跟随该块,从而将其与手势区分开。确定移动何时停止将是计算机视觉要解决的一个有趣问题。这些问题已经在其他情况下得到了解决,但并不是100%的准确度,当然也不能以与DGT板竞争的价格来解决。

然后是相机可以放置在哪里的问题。直接在头顶上方将提供木板的最佳视图,从而更容易精确地确定正方形。但是无论摄像机放置在哪里,都有一个明显的可能性是其中一个玩家会遮挡其视线,要么斜倚在棋盘上,要么争分夺秒,要么只是打手势。

4)除非它真的很便宜,否则不会。而且我不希望那样。我的推理很简单。随着时间的缩短,游戏的质量下降,到我不再感兴趣的地步


您在4点上说得很对:质量确实很差。不用花时间去设置相机,更不用说花一个月的时间来编写软件了。我只是赢了季后赛,但我为自己的表现差劲而感到尴尬。
Riccardo Zorn 2014年

5

那将是一个相当复杂的任务。也许合理的第一步是研究从单个图像中识别FEN位置-对于该图像,存在更多资源,例如:


非常好,谢谢。我都读了,他们真的很有趣。Chessgrabber是一个最近的项目,绝对更合适,我联系了开发人员。
Riccardo Zorn 2014年

我认为从第一步开始,将视频转换为PGN并不是很困难-每几毫秒拍摄一次图像,对其进行分析,并且如果位置已经以合法方式更改,则将新位置添加到文件中。
rlms 2014年

更新:开发人员响应,它将永远无法用于重叠部分的3D倾斜图像。太糟糕了,没有这个基础,该项目将永远无法启动。
Riccardo Zorn 2014年

实际上,识别静止图像比将视频引导到静止图像要困难得多,因为后者消除了必须能够识别片段的问题。
彼得,2013年

5

现在是2019-12年,距原始问题还有5年了。

  1. 是否存在这样的东西(网络摄像头/视频到PGN转换器)?原型吗?

    看到

  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#Commercial

    http://wiki.bitplan.com/index.php/PlayChessWithAWebCam是另一个针对您指定目标的项目。该项目于2019-10-15开始,在几个小时内,我已经找到了很多资源,例如,这个问题。大约两个月后,我更新了答案(请参阅上面的链接)

  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
谢谢,我期待着您的进步
Riccardo Zorn


3

我的工作是国际象棋跟踪项目8x8cam图像处理过程中,2013年在FING UdelaR。

然后在2014年,其他学生为Android创建了一个更好的版本,名为Chesstrack。在网络下,您可以找到视频并链接到他们使用的代码。

我很乐意看到我多年以来对该项目构想的最终应用程序。因此,如果有关于此的一些新闻,请发表评论。

回答您指出的问题:

  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文档,您会发现大量关于该主题的材料。


哦,顺便说一句,您要的东西已经完成了,但是据我所知,并没有使用软件,有一个旧项目是使用Pascal编码的,摄像机放在板上,机器人进行图像处理并移动。如今,许多机器人下棋。

您可以购买Arduino uno及其光检查器,它将检测白色和黑色部分,进行一些编码,然后下棋。:)


1

编辑:提升为女王以外的任何事物都会使一切爆炸。支持它也将非常困难(我的第2部分程序支持促销不足,但是仅通过读取像素来存储第1部分的信息是一场噩梦)。

Edit2:我刚刚注意到您的意思是真正的PGN棋盘棋,所以这都是没有用的,我很可能会删除我的答案。

第1部分:使用像素读取器存储正方形

完全有可能,所需步骤将是:

  1. 改变板的设置,以便它突出的最后一步(prefereably 只是边境)
  2. 编写一个程序来读取给定(x,y)上的像素
  3. 使它在每个正方形上读取大约5个以上的像素(因此,光标/片段不可能覆盖要读取的所有像素)
  4. 将HEX转换为RBG,然后给出我们认为接近“最后一步”颜色的可接受值范围
  5. 将移动保存在数组中,其格式["h1-h8", "e4-e5", ...] 仅为起始和终止平方(顺序不重要

注意:从这里我们无法真正知道起始/结束位置是从哪个正方形开始的,但是只有两种可能性,其中只有一种是合法的。

我已经写了简单的基于像素的宏/机器人在C#中的RPG游戏,我可以保证,这不是很难,因为:

  1. 凸轮是静态的(因此x,y值不会弄乱)
  2. 您以前知道背景颜色,或者可以在播放之前进行设置

基本上,最好是在线玩游戏,并且直接从屏幕上录制。

抱歉,第一部分没有程序


第2部分:将该列表导出到PGN

要将此列表转换为真实的PGN,您可以使用我用JavaScript编写程序来记录移动,并且其中一个函数moveCaller()传递两个正方形的位置,然后搜索final_pos的合法移动,initial_pos如果存在匹配项,则调用makeMove()。因此,我们可以调用它两次e5 to e4e4 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"]


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.