快速可视化一个大的二进制矩阵?

4
我正在寻找一种简单且特别快速的方法,将存储在文本文件中的二进制矩阵(仅由0和1组成)转换为某种绘图。黑白位图完全可以满足我的可视化需求。我尝试使用gnuplot,但是我认为对于第一次来说,gnuplot不够用,因为我有大量数据(至少几十MiB),内存消耗和处理时间很糟糕。
在寻找解决方案时,我大多数都找到了与二进制数据格式相关的矩阵(数据格式)以及在例如gnuplot中读取二进制数据格式的可能性的内容。
您是否知道任何程序可以快速地将文本矩阵转换为位图?我甚至考虑编写一个小型C程序来完成此任务,但由于我从未进行过图像处理,因此无法估计以这种方式创建位图的难度,如果可能的话,使用现有工具会很好。
谢谢!
2个回答

7
使用netpbm。例如:
$ cat | pnmtopng > circle.png
P1 
10 10
0001111000
0111111110
0111111110
1111111111
1111111111
1111111111
1111111111
0111111110
0111111110
0001111000
$ file circle.png 
circle.png: PNG image, 10 x 10, 1-bit grayscale, non-interlaced

Here is the end-result: enter image description here


谢谢,这正是我在寻找的。我知道会有一个合适的UNIX CLI工具,只是如果不知道该找什么,很难找到它;-) - tmr
1
@user279714:是啊,“netpbm”不是我们首先想到的东西,对吧?顺便说一句,我花了很长时间才找到在线手册列表,结果发现它是主文档页面上一个隐蔽的链接,指向http://netpbm.sourceforge.net/doc/directory.html。 - Marcelo Cantos

0

我曾经使用过的唯一一种通过C语言输出图像的方法是C JPG库,这可能适合你的需求,也可能不适合。它不是世界上最快的东西,但很容易使用,并且在逻辑本身中有一些快捷方式可以使其更快。

我考虑的方法是直接迭代您的矩阵,并根据矩阵值输出黑色或白色像素;我只是完全不确定它是否比gnuplot更快或更有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接