2011-02-02 3 views
4

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

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

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

Спасибо!

ответ

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 

Вот конечный результат: enter image description here

+0

Спасибо, что именно это я искал. Я * знал * был бы подходящий инструмент CLI UNIX, его просто сложно найти, если вы не знаете, что искать ;-) – tmr

+1

@ user279714: Да, «netpbm» - это не совсем первое, что приходит в голову ум, а? Кстати, мне потребовалось бесконечное время, чтобы найти онлайн-список справочных страниц, который, оказывается, представляет собой взаимозависимую ссылку на главной странице документа на http://netpbm.sourceforge.net/doc/directory.html. –

0

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

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

Смежные вопросы