Есть быстрее сжатия, чем JPEG?
есть ли алгоритм сжатия, который быстрее, чем JPEG, но хорошо поддерживается? Я знаю о jpeg2000, но из того, что я слышал, это не намного быстрее.
Edit:для сжатия.
Edit2: он должен работать на Linux 32 бит, и в идеале он должен быть на C или c++.
6 ответов
jpeg кодирование и декодирование должно быть очень быстро. Вам будет трудно найти более быстрый алгоритм. Если это медленно, ваша проблема, вероятно, не формат, а плохая реализация кодировщика. Попробуйте кодер из libavcodec
на .
у вас есть инструкции MMX/SSE2, доступные в вашей целевой архитектуре? Если это так, вы можете попробовать libjpeg-turbo. Кроме того, вы можете сжать изображения с чем-то вроде zlib
, а затем передавать фактическое сокращение на другую машину? Обязательно ли фактическое сжатие изображений с потерями происходит на самом встроенном устройстве?
в каком контексте? На ПК или портативном устройстве?
из моего опыта у вас есть JPEG, JPEG2000, PNG и ... Ну, вот и все для "хорошо поддерживаемых" типов изображений в широком контексте (с потерями или нет!)
(Ура, что GIF на своем пути.)
JPEG2000 не быстрее вообще. Это кодирование или декодирование, которое недостаточно быстро с jpeg? Вероятно, вы могли бы быть намного быстрее, делая только 4x4 FDCT и IDCT на jpeg.
трудно найти какую-либо документацию по ijg libjpeg, но если вы используете это, попробуйте снизить настройку качества, это может сделать его быстрее, также, кажется, есть быстрый вариант FDCT.
кто-то упомянул libjpeg-turbo, который использует инструкции SIMD и совместим с обычным libjpeg. Если это вариант для вас, я думаю, вы должны попробовать его.
Я думаю, что алгоритмы сжатия на основе вейвлетов в целом медленнее, чем те, которые используют DCT. Возможно, вам стоит взглянуть на форматы JPEG XR и WebP.
вы можете просто изменить размер изображения на меньший, если вам не требуется полная точность изображения. Усреднение каждого блока 2x2 в один пиксель очень быстро уменьшит размер до 1/4.