Быстро визуализировать большую бинарную матрицу?

Я ищу простую и особенно быструю возможность преобразовать двоичную матрицу (состоящую только из 0 и 1), хранящуюся в текстовом файле, в какой-то график. Черно-белое растровое изображение полностью удовлетворило бы мою задачу визуализации. Я пробовал с gnuplot, но думаю, что для первого раза gnuplot недостаточно, так как у меня много данных (по крайней мере, десятки мегабайт), а потребление памяти и время обработки ужасное.

При поиске решений я в основном находил материалы, связанные с матрицами, хранящимися в двоичном формате (формат данных), и возможностями чтения двоичного формата данных, например. гнуплот.

Знаете ли вы какие-либо программы, которые могут быстро преобразовывать текстовую матрицу в растровое изображение? Я даже подумываю написать небольшую программу на C, которая делает это, но поскольку я не могу оценить, насколько сложно создать растровое изображение таким образом, поскольку я никогда раньше не занимался обработкой изображений, было бы неплохо использовать существующие инструменты, если возможный.

Спасибо!


person tmr    schedule 02.02.2011    source источник


Ответы (2)


Используйте нетпбм. Например.:

$ 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

Вот конечный результат: введите здесь описание изображения

person Marcelo Cantos    schedule 02.02.2011
comment
Спасибо, это именно то, что я искал. Я знал, что будет подходящий инструмент UNIX CLI, просто его трудно найти, если не знаешь, что искать ;-) - person tmr; 02.02.2011
comment
@ user279714: Да, netpbm — не первое, что приходит на ум, а? Кстати, мне понадобилась целая вечность, чтобы найти онлайн-список справочных страниц, который оказался тайно размещенной на главной странице документа ссылкой на netpbm.sourceforge.net/doc/directory.html. - person Marcelo Cantos; 03.02.2011

Единственное изображение, выводимое через C, с которым я работал, — это библиотека C JPG, которая может соответствовать или не соответствовать вашим потребностям. Это не самая быстрая вещь в мире, но с ней легко работать, и есть несколько сокращений, которые вы можете сделать в самой логике, чтобы сделать ее немного быстрее.

То, о чем я думаю, буквально повторяет вашу матрицу и выводит черный или белый пиксель на основе значения вашей матрицы; Я просто совершенно не уверен, будет ли это быстрее или эффективнее, чем gnuplot.

person sichinumi    schedule 02.02.2011