До меня наконец дошло, спустя двадцать лет
Зашакаленные картинки - это просто картинки через Caps Lock.
Зашакаленные картинки - это просто картинки через Caps Lock.
Но зато теперь в hd. Баянометр ругается на оригинал и таракановский мост ¯\_(ツ)_/¯
Решил я для своего руководства в стиме гифку сделать, сделал, но загрузить не смог, ибо стим не разрешает загружать изображения в руководство >2МБ, и тут я как шакал последний пошел её сжимать, вот результаты:
Откуда взялся размер 3.57 неизвестно.
В наше время трудно найти человека, который не знает про JPEG, но многие ли понимают, как он сжимает?
Начнем с основ, пока не будем переходить к схеме кодера JPEG. Наш глаз воспринимает оттенки трех цветов: красного (R), зеленого (G), синего (B). Отсюда и пошло название цветовой модели RGB. По этому же принципу работают дисплеи — каждый пиксель включает в себя три светодиода. Иногда четыре и больше, но это не важно.
В эру черно-белого телевидения была придумана другая цветовая модель — YCbCr. В ней Y — это черно-белая составляющая изображения (яркость), а Cb и Cr — цветоразностные. Из YCbCr можно легко получить RGB практически без потерь в качестве. Справедливо и обратное. Формулы приводить не буду, оставлю ссылку в конце.
Для компонент Cb и Cr производится выборка с уменьшением числа передаваемых элементов изображения, так как человеческий глаз менее чувствителен к перепадам цвета. Это позволило экономить место уже на этапе представления изображения аж в 2 раза.
Итак, экономия места в JPEG начинается на этапе представления изображения. Вместо привычного RGB в нем используется YCbCr. Изображение разбивается на блоки 8х8 пикселей. Каждый блок подвергается Дискретному Косинусному Преобразованию (ДКП), которое переводит блок из пространственного в спектральный вид.
Визуальное представление есть в этом посте: http://pikabu.ru/story/naglyadnoe_obyasnenie_preobrazovaniya...
Спектр можно сжать эффективнее, чем отдельные пиксели. Дополнительно спектр подвергается квантованию (а точнее все коэффициенты, кроме левого верхнего угла), что увеличивает количество нулей в блоке.
Почему эти нули так важны? Все просто. Отквантованные спектральные коэффициенты сжимают сериями.
Например серия: 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 19
Будет иметь вид: 4, 6, 8, 19
(первое число — количество нулей, второе — прерывающее серию)
Намного меньше чисел, неправда ли?
После сжатия серий результат подается на кодер Хаффмана, который делает сжатие еще более эффективным. Далее весь процесс повторяется для каждого блока изображения.
Многих наверное интересует момент, а что же так "жмет" изображения?
Во всем виновато квантование. Чем выше степень квантования, тем более сжатое изображение на выходе.
Сразу хочу сказать, я опустил подробности зигзагообразного обхода, ограничения длины серий и другие подробности для упрощения повествования.
Надеюсь, Вам было интересно!
Баянометр ругался на картинки.
Ссылки на материалы:
1) JPEG: http://rain.ifmo.ru/cat/view.php/theory/data-compression/jpe...
2) Квантование: https://traditio.wiki/Квантование_(обработка_сигналов)
3) YCbCr: https://ru.wikipedia.org/wiki/YCbCr
Тогда этот вызов для вас! Мы зашифровали звездных капитанов команд нового юмористического шоу, ваша задача — угадать, кто возглавил каждую из них.
Переходите по ссылке и проверьте свою юмористическую интуицию!
Ребят, подскажите чем хорошо сжимать гифки онлайн? Ну или прогой, но чтобы без фотошопов и в две-три кнопки.
Комментарии для минусов внутри.