Библиотека или подход для извлечения значений каналов RGB в изображении RAW - PullRequest
0 голосов
/ 27 августа 2018

Я ищу решение для сравнения изображений для разных целей. Чтобы можно было анализировать, мне нужен доступ к значениям каждого пиксельного канала. Например: формат RAW, который поддерживается многими камерами.

* Есть ли библиотека с открытым исходным кодом, чтобы получить доступ к каналам, или можно извлечь его непосредственно как байтовые значения?
* В настоящее время я использую читатель bitmap_image (https://github.com/ArashPartow/bitmap),, но не очень хорошая идея конвертировать каждый раз необработанное изображение bo BMP для анализа, я связал репозиторий , добавленный в github , эта библиотека написана на C ++ 14

Пожалуйста, предложите самый быстрый способ доступа к данным изображения, спасибо.

1 Ответ

0 голосов
/ 27 августа 2018

Используйте ImageMagick , который установлен в большинстве дистрибутивов Linux и доступен для macOS и Windows.

В командной строке:

# Convert NEF raw file to 16-bit RGB data
magick image.nef -depth 16 rgb:image.bin

# Convert CR2 raw file to 8-bit RGB data
magick image.cr2 -depth 8 rgb:image.bin

Или используйте его с popen() в C / C ++ и напишите на stdout:

magick image.dng -depth 16 rgb:-

, а затем читать на C / C ++.


Если вы хотите определить размеры изображения перед чтением:

magick identify temp.png
temp.png PNG 640x480 640x480+0+0 8-bit Gray 2c 12348B 0.000u 0:00.009

Если используется версия 6, заменить magick на convert и заменить magick identify на identify.


В качестве альтернативы посмотрите на формат NetPBM PPM (см. P6 format здесь ) и разработайте некоторый код для его чтения, а затем просто конвертируйте все и вся в формат PPM с помощью ImageMagick и читайте его, что дает вам размеры в начале:

magick image.nef -depth 16 ppm:-
magick image.cr2 -depth 8  ppm:- 

Обратите внимание, что это именно та стратегия, принятая CImg .

...