Программное обеспечение для анализа файлов изображений

Вы можете использовать VI Script :

$ vi test.txt -c '%s/aaa/NNN/ | wq'
$ cat test.txt
NNN
NNN
bbb
ccc
ddd

Вы просто автоматизируете, что обычно будет введено при использовании VI в командном режиме (доступ к использованию ESC : Обычно):

% - выполнять следующую команду на каждой строке:

S / AAA / NNN / - подтитность AAA с NNN

| - Command Delimiter

w - Написать изменения в файл

Q - Quit

0
14.09.2014, 07:21
3 ответа

Командная строка

Существуют различные программы командной строки, такие как xxd или ] hexdump , который выведет шестнадцатеричное содержимое файла на ваш терминал. Вы можете использовать vim для редактирования шестнадцатеричных файлов. См. этот ответ .

Вы действительно хотите этим заниматься? Вы заявили, что особенно хотите анализировать файлы изображений. Для этого лучше использовать язык программирования.

Использование языка программирования

Изображение - это просто матрица чисел. Например, изображение RGB может быть представлено как 3 матрицы, содержащие значения от 0 до 255. Чисто красное изображение 5x5 пикселей будет выглядеть следующим образом:

Матрица 1 (красная плоскость):

255 255 255 255 255
255 255 255 255 255
255 255 255 255 255
255 255 255 255 255
255 255 255 255 255

Матрица 2 (зеленая плоскость):

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

Матрица 3 (синяя плоскость):

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

Для анализа изображений таким образом были созданы различные инструменты. Эти инструменты довольно стандартные в мире обработки изображений:

  1. MATLAB (Matrix Laboratory) изначально был создан для этой цели. GNU Octave в основном совместим с MATLAB и может использоваться вместо него.
  2. Python - отличная альтернатива с открытым исходным кодом для управления изображениями с помощью пакета scikit-image .

Они интерактивны и очень просты в использовании. MATLAB дает вам приглашение >> , где вы, например, вводите команды. Компиляция не требуется.

Пример MATLAB / Octave

Чтобы прочитать изображение:

>> im = imread('Penguins.jpg');

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

>> red = im(:,:,1);

Здесь используется оператор : для извлечения всех координат x и всех координат y из 1-й плоскости z (красная плоскость) изображения.

Чтобы увидеть сначала 5x5 пикселей красной плоскости:

>> red(1:5, 1:5)

ans =

  116  118  118  120  118
  116  116  117  118  116
  118  117  117  118  118
  117  117  118  118  118
  119  118  117  118  118

Я не буду публиковать примеры Python, но это также легко сделать.

1
28.01.2020, 02:20

Если вы просто ищете способ сравнить изображение после манипуляции, чтобы увидеть, какие пиксели (и в каких каналах) изменились, вы можете использовать ImageMagick compare инструмент. Это подробно описано здесь, на веб-сайте ImageMagick: http://www.imagemagick.org/script/compare.php .

Вот пример с той страницы, но я использую изображение розы с этого сайта вместо . Допустим, у вас есть изображение rose.jpg , и вы запускаете на нем функцию повышения резкости, сохраняя результаты в reconstruct.jpg .

$ convert rose.jpg -sharpen 0x1 reconstruct.jpg

rose.jpg reconstruct.jpg

Затем мы можем использовать инструмент compare , чтобы построить изображение difference1.png из двух изображений выше, например:

$ compare rose.jpg reconstruct.jpg difference1.png

difference1.png

If мы хотим удалить любые намеки на исходное изображение из difference1.png , мы можем использовать опцию -compose src для дальнейшего удаления исходного изображения из разностного изображения. Результаты можно увидеть в difference2.png .

$ compare -compose src rose.jpg reconstruct.jpg difference2.png

difference2.png

Это только царапина на поверхности того, что может сделать compare . Помимо прочего, он также может показать вам различия в цветовых каналах.

Что делает -compose src ?

Если вам интересно, эта операция подробно обсуждается здесь.

отрывок - http://www.imagemagick.org/script/command-line-options.php#compose

-оператор компоновки

Устанавливает тип композиции изображения. См. Альфа-композитинг для подробное обсуждение альфа-композитинга.

Этот параметр влияет на операторы обработки изображений, которые объединяют два (или подробнее) изображения вместе каким-то образом. Сюда входят операторы, -сравнить , -композит , -слой композит, -плоский , -мозаика , - слои объединяются, -граница , -кадр и -экстент .

Это также одна из основных опций для "составной" команды.

3
28.01.2020, 02:20

Если файлы Не находятся в некоторых сжатых или иным образом кодированных, формата, а изменения ограничены, вы можете легко сделать это с помощью CMP -L .

Когда мы получили нашу первую графическую доску Targavista, которые предоставляли бы изображения одной рулевой палубы, она пришла с простой командой (DOS) загрузки утилиты и пакетом краски, но без какой-либо документации. ¹

Что было легко Рассчитано это несжатое изображение имело размер 18 * 3 * (ширина * высота) пикселей. Затем я создал полное черное изображение и вывел несколько файлов, где на каждом только один пиксель, в основном цвете, в одном из углов. Сравнивая эти файлы (после передачи в SunOS) с помощью CMP - было легко проанализировать порядок байта рядов и столбцов, а также порядок цветов, а также написать программу для распадания нашего визуализации .gif Изображения .tga .tga

¹ Это было в 1990 году до того, как произошли библиотеки с открытым исходным кодом, которые поддерживали .TGA / .vst
² ² Взял дилер, который продал нам карту, несколько недель, чтобы получить нам едва читаемое, N-Th Copy, факс с информацией об формате файлов из США. Основываясь на том, я мог бы реализовать версию файлов Runlendencedededed и сэкономить нами несколько секунд. Время загрузки на кадр.

0
28.01.2020, 02:20

Теги

Похожие вопросы