Сжатие любого формата изображения с помощью фрактального сжатия

Я новичок в области сжатия изображений или обработки изображений. Я пытаюсь изучить сжатие фрактальных изображений по известной книге Юваля Фсихера. В конце книги он привел весь код сжатия-декомпрессии на C. Я в основном работаю на CUDA. Настоящий код C от Fisher работает только с необработанными изображениями.

  1. Моя основная цель - понять процесс сжатия, а затем изменить приведенный выше код, чтобы он также работал с изображениями BMP (цветными и оттенками серого).
  2. Впоследствии я хочу ускорить код, преобразовав выбранные функции в ядра CUDA. Я планирую сосредоточиться на сравнениях области значений, которые требуют больших вычислительных ресурсов.

Итак, у меня есть следующие проблемы:

Нужно ли изучать формат изображения BMP, прежде чем приступить к его сжатию, или я могу рассматривать его как матрицу и сжимать с помощью Fractal Image Compression. Фрактальная компрессия работает на основе концепции поиска сходств в картах области значений с помощью IFS (Iterated Function System), которая в основном представляет собой набор аффинных преобразований.


person MuneshSingh    schedule 08.11.2014    source источник
comment
Вы не захотите напрямую работать с форматом файла BMP. Существует множество примеров кодов для преобразования формата BMP в матрицу необработанных пиксельных данных.   -  person Robert Crovella    schedule 08.11.2014


Ответы (1)


Фрактальное сжатие полностью не зависит от формата хранения исходного файла. После того, как вы загрузили BMP в изображение или буфер, это будут необработанные пиксели (как если бы вы читали PNG или JPEG). Если ваш BMP несжатый, его очень легко читать; это необработанные пиксели после заголовка. Но гибкий ридер также поддерживает разную глубину пикселей и степень сжатия, поэтому лучше всего найти библиотеку, которая сделает это за вас, если вам не нужно работать только с вашими собственными тестовыми изображениями.

person Dithermaster    schedule 09.11.2014
comment
Это означает, что я могу рассматривать файл изображения BMP так же, как любой другой файл, а затем применять фрактальное сжатие ко всему файлу. Будет ли это служить цели? Будет ли это отличаться от применения фрактального сжатия за заголовком исключительно к пиксельным данным? Я подозреваю, что IFS, который имеет дело с аффинными преобразованиями (сопоставлениями между парами диапазона и домена), должен применяться исключительно к данным пикселей, а не к некоторой комбинации данных управления (заголовок, информация о растровом изображении, палитра и т. Д.) И данных пикселей вместе. Я надеюсь, что смогу донести до вас свою точку зрения. - person MuneshSingh; 11.11.2014
comment
Вы не применяете IFS к линейным данным файла, вы применяете его к данным 2D-изображения. Поэтому, независимо от формата файла, вам необходимо преобразовать его в 2D-изображение, прежде чем выполнять сжатие IFS. - person Dithermaster; 12.11.2014