Быстрая библиотека кодирования JPEG - PullRequest
10 голосов
/ 15 мая 2009

кто-нибудь знает о бесплатной библиотеке кодирования jpeg с открытым исходным кодом для C / C ++? В настоящее время я использую ImageMagick, который прост в использовании, но довольно медленный. Я сравнил это с оценкой Intel Performance Primitives и скорость IPP безумна. К сожалению, это также стоит 200 $, и мне не нужно 99% IPP). Также он будет работать только на Intel.

Кто-нибудь делает какие-нибудь тесты? Есть ли другие хорошие библиотеки быстрее, чем ImageMagick?

Редактировать: я использовал 8-битную версию ImageMagick, которая должна быть быстрее.

Ответы [ 7 ]

6 голосов
/ 20 января 2010

Проверьте libjpeg / SIMD в магистрали TigerVNC (http://www.tigervnc.com).. Мы оптимизировали 64-битные и 32-битные версии, которые почти с такой же скоростью, как IPP, сжимают / распаковывают базовый JPEG:

http://www.mail-archive.com/tigervnc-devel@lists.sourceforge.net/msg00403.html

3 голосов
/ 15 мая 2009

AMD предлагает Framewave , альтернативу IPP с открытым исходным кодом.

3 голосов
/ 15 мая 2009

Я считаю, что GIL, которая является библиотекой в ​​Boost, содержит способ сохранения данных изображения в формате JPEG. Я не знаю скорость этого, все же. Учитывая, что библиотека спонсируется Adobe, я ожидаю, что она довольно хорошо сделана.

2 голосов
/ 06 июня 2009

ImageMagick использует libjpeg (независимая библиотека JPEG Group a.k.a). Если вы улучшите скорость libjpeg, скорость ImageMagick JPEG увеличится.

Есть несколько вариантов:

  1. Скомпилируйте оптимизированный libjpeg. Если у вас современный gcc и хотя бы Pentium 4, вы можете попробовать -O3 -msse2 и посмотреть, сможет ли он повысить вашу скорость. Тогда вы можете использовать LD_LIBRARY_PATH или другой способ загрузить ваш libjpeg вместо системного.
  2. Попробуйте libjpeg-mmx. Он не поддерживается, и предположительно содержит ошибки и имеет недостатки в области безопасности, но в вашем случае он может повысить скорость.
1 голос
/ 08 июня 2009

Я сделал несколько временных кодировок в формате 512x512 jpeg с использованием 100% качества (я знаю, что 100% не без потерь). В основном ImageMagick был лишь немного медленнее, чем libjpeg. Для 100 изображений разница составляла порядка 10 секунд. Затем я получил libjpeg с расширением SIMD (http://cetus.sakura.ne.jp/softlab/jpeg-x86simd/jpegsimd.html#source) и тому подобное в 6-10 раз быстрее. Обратите внимание, что это действительно зависит от типа изображения. Изображения с большим количеством черного действительно быстрые, изображения с деталями везде очень медленные - Я полагаю, что это алгоритм кодирования. Возможно, мне придется попробовать libjpeg-mmx, потому что он выглядит более поддерживаемым, чем японская версия, которую я получил, что я даже не знаю, что это за лицензия.

Я также пытался заставить Framewave работать и даже не смог его поднять. В заголовочных файлах отсутствует определение какой-либо структуры, а форумы абсолютно не поддерживают. Я не могу поверить, что это "спонсируется AMD".

1 голос
/ 18 мая 2009

Есть также Independent JPEG Group , которая довольно старая, и я не могу ручаться за ее скорость. Но оно должно быть стабильным.

Найден через эту страницу .

1 голос
/ 15 мая 2009

Если вы посмотрите вокруг, вы можете найти старую версию библиотеки Intel JPEG. Это не с открытым исходным кодом, но это быстро. Это было достаточно быстро, чтобы получить 25 кадров в секунду на 733 МГц P-III.

...