LED 矩阵到阵列的图像

Image of LED matrix to an array

我想从一张大小为96x64的LED矩阵图片中读取像素。它们要么开要么关,我在下面提供了一个示例图片。

我应该只检查图像并使用例如 PIL 读取颜色,还是应该使用其他任何东西。我注意到矩阵有点倾斜并且没有完全对齐。有时组成它的小块相对于彼此有一点偏移。

编辑:

图片将从 youtube 上的实时流中捕获,因此它是视频。它将始终是相同的矩阵。我无法完全控制矩阵,如前所述,这是某人的 YouTube 直播,我无法改变周围环境。

一种方法可能是:

  • 进行 4 点透视变换以将矩阵的每个角映射到图像的角
  • 将结果缩放到 96x64
  • 阈值

图像的像素与矩阵的 LED 非常吻合。

我只是在终端中用 ImageMagick 做的,像这样:

magick matrix.png -distort perspective "4,10 0,0 584,7 585,0 574,383 585,387 11,388 0,387" -scale 96x64\! -threshold 30% result.png

该命令意味着我想将输入图像中的点 4,10 映射到输出图像中的点 0,0 - 即 top-left 角。然后我想将输入图像中的点 584,7 映射到点 585,0 - 即 top-right 角等。

如果是视频,即使矩阵不是直线的,您也可以通过跨帧查看来确定 LED 中心的位置来改进它。您还可以优化寻找角点,因为角点像素可能会在视频中的某个时间点亮起。

如果将命令更改为以下内容,您将获得一个包含所需值的文本文件:

magick matrix.png -distort perspective "4,10 0,0 584,7 585,0 574,383 585,387 11,388 0,387" -scale 96x64\! -threshold 30% -compress none result.pgm

P2是一个PGMheader表示文件是96x64,最亮的值为255。然后是前4行像素:

P2
96 64
255
255 255 255 0 255 0 255 0 0 0 0 0 0 0 0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 255 0 0 0 0 0 0 255 255 255 255 255 0 255 255 255 255 255 0 255 255 255 255 255 0 255 255 255 255 255 0 0 255 
255 255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 0 0 255 255 0 0 0 255 0 0 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 0 0 255 255 0 0 0 0 0 0 0 255 0 0 0 0 0 0 255 255 0 0 255 0 0 0 255 0 255 0 0 0 0 255 255 255 0 255 255 255 0 0 
0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 0 0 0 0 0 0 0 255 255 0 255 255 0 0 255 255 255 0 255 255 255 255 255 255 255 255 255 0 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 0 255 255 255 255 255 255 255 255 0 255 255 255 0 0 
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 0 0 255 0 0 0 0 255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 0 0 255 255 255 255 255 255 0 0 255 0 0 0 255 255 0 0 255 255 255 255 255 0 0 0 0 0 0 0 0 0 255 0 255 255 255 0 0 0 0 0 
...
...

如果您想要 Python 答案,您可以将上面的代码转换为基于 ImageMagickwand 或执行完全相同的步骤在 OpenCVscikit-image.