Всем привет!
Обнаружилась задачка — быстро сжимать картинки. Требования расплывчатые, но все равно интересно мнение общественности. Картинки размером где-то 640 x 480, 32 bpp. Сжимать надо уметь быстро: 30 картинок в секунду, сжатия раза в 4 будет достаточно. Пробовал zlib — отказался: сжимает хорошо, но долго. Возможно, кто-нибудь слышал об оптимизированом zlib'е — с помощью mmx или еше чего-нибудь — тогда поделитесь ссылками, пожалуйста.
Всем спасибо!
Здравствуйте, Unhandled_Exception, Вы писали:
U_E> Всем привет! U_E> Обнаружилась задачка — быстро сжимать картинки. Требования расплывчатые, но все равно интересно мнение общественности. Картинки размером где-то 640 x 480, 32 bpp. Сжимать надо уметь быстро: 30 картинок в секунду, сжатия раза в 4 будет достаточно. Пробовал zlib — отказался: сжимает хорошо, но долго. Возможно, кто-нибудь слышал об оптимизированом zlib'е — с помощью mmx или еше чего-нибудь — тогда поделитесь ссылками, пожалуйста. U_E> Всем спасибо!
Здравствуйте, Unhandled_Exception, Вы писали:
U_E> Всем привет! U_E> Обнаружилась задачка — быстро сжимать картинки. Требования расплывчатые, но все равно интересно мнение общественности. Картинки размером где-то 640 x 480, 32 bpp. Сжимать надо уметь быстро: 30 картинок в секунду, сжатия раза в 4 будет достаточно. Пробовал zlib — отказался: сжимает хорошо, но долго. Возможно, кто-нибудь слышал об оптимизированом zlib'е — с помощью mmx или еше чего-нибудь — тогда поделитесь ссылками, пожалуйста. U_E> Всем спасибо!
Судя по коэффициенту компрессии сжатие идет с потерями качества (без потерь качества такую компрессию на реальных картинках достичь очень сложно)
Можно попробовать вейвлеты CDF22 с лифтинговой схемой с однородным квантованием и останется только найти быстрый арифметик.
Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>Здравствуйте, Unhandled_Exception, Вы писали:
U_E>> Всем привет! U_E>> Обнаружилась задачка — быстро сжимать картинки. Требования расплывчатые, но все равно интересно мнение общественности. Картинки размером где-то 640 x 480, 32 bpp. Сжимать надо уметь быстро: 30 картинок в секунду, сжатия раза в 4 будет достаточно. Пробовал zlib — отказался: сжимает хорошо, но долго. Возможно, кто-нибудь слышал об оптимизированом zlib'е — с помощью mmx или еше чего-нибудь — тогда поделитесь ссылками, пожалуйста. U_E>> Всем спасибо!
SAS>http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html — беспотерьное сжатие видео в реалтайме.
боюсь сжатие в 4 раза на 32bpp она очень редко даст.
Здравствуйте, pangolin, Вы писали:
P>Здравствуйте, Sergey A. Sablin, Вы писали:
SAS>>Здравствуйте, Unhandled_Exception, Вы писали:
U_E>>> Всем привет! U_E>>> Обнаружилась задачка — быстро сжимать картинки. Требования расплывчатые, но все равно интересно мнение общественности. Картинки размером где-то 640 x 480, 32 bpp. Сжимать надо уметь быстро: 30 картинок в секунду, сжатия раза в 4 будет достаточно. Пробовал zlib — отказался: сжимает хорошо, но долго. Возможно, кто-нибудь слышал об оптимизированом zlib'е — с помощью mmx или еше чего-нибудь — тогда поделитесь ссылками, пожалуйста. U_E>>> Всем спасибо!
SAS>>http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html — беспотерьное сжатие видео в реалтайме.
P>боюсь сжатие в 4 раза на 32bpp она очень редко даст.
Ну если жать с потерями, то перевод картинки в YUV и даунсампл в два раза цветоразностей уже дает сжатие в два раза всей картинки (кстати альфа-канал вообще используется или так просто для погоды присутствует?). Потом huffyuv. В три раза не шумное изображение сожмет адназначна.
Здравствуйте, Unhandled_Exception, Вы писали:
U_E> Всем привет! U_E> Обнаружилась задачка — быстро сжимать картинки. Требования расплывчатые, но все равно интересно мнение общественности. Картинки размером где-то 640 x 480, 32 bpp. Сжимать надо уметь быстро: 30 картинок в секунду, сжатия раза в 4 будет достаточно. Пробовал zlib — отказался: сжимает хорошо, но долго. Возможно, кто-нибудь слышал об оптимизированом zlib'е — с помощью mmx или еше чего-нибудь — тогда поделитесь ссылками, пожалуйста. U_E> Всем спасибо!
Как вариант формат DXT1(это из DirectX) дает сжатие(с потерями) в 8-раз любой картинки, правда требуется чтобы размеры картинки были кратны степени двойки.
Насчет скорости сжатия не знаю, не тестировал.
Использовть можно с помощью DirectX, или с помощью nvDXTLib (лежит гдето здесь )