WebP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
WebP

Логотип Webp

Расширение

.webp[1]

MIME-тип

non assigned yet

Сигнатура

WEBP

Разработчик

Google

Опубликован

2010-9-30; 1433 дня тому назад[2]

Последний выпуск

0.3.0 / 2013-04-02

Тип формата

Графический формат
Алгоритм сжатия без потерь/с потерями

Содержится в

Resource Interchange File Format (RIFF)[3]

Открытый формат?

Да[4]

Сайт

code.google.com/speed/webp/

WebP (произносится как англ. weppy[5]) — формат сжатия изображений с потерями и без потерь качества, предложенный компанией Google Inc. в 2010 году. Основан на алгоритме сжатия неподвижных изображений (ключевых кадров) из видеокодека VP8. Использует контейнер RIFF.

Для работы с данным форматом существуют открытые библиотека (libvpx) и конвертор (webpconv).

Алгоритм[править | править вики-текст]

Сжатие состоит из двух этапов. На первом делается попытка «предсказать» содержимое одних блоков по уже декодированным (три блока над текущим и один блок слева от него), на втором кодируется ошибка предсказания. Блоки отрисовываются в порядке слева направо и сверху вниз[6]. Режимы предсказания работают с 3 размерами макроблоков[7]:

  • 4x4 в канале яркости
  • 16x16 в канале яркости
  • 8x8 в канале цветности

В VP8 и WebP реализованы режимы предсказания[7]:

  • Горизонтальное, H_PRED. Каждый столбец текущего блока есть копия столбца слева от текущего блока.
  • Вертикальное, V_PRED. Каждая строка текущего блока есть копия строки над текущим блоком.
  • DC предсказание, DC_PRED. Заполняет весь блок одинаковыми значениями, полученными за счет усреднения значений пикселов вышележащей строки и столбца слева от текущего блока.
  • Предсказание TrueMotion, TM_PRED. Разработано в On2 Technologies. Кроме строки над блоком и столбца слева от него, используется пиксел, расположенный сверху-слева от блока. Разница между угловым пикселом и строкой сверху записывается в строки блока, при этом к значениям добавляется значение соответствующего пиксела из столбца. Xij = Столбецi + Рядj - Угл. Пиксел.
  • Для блоков 4x4 реализовано 6 дополнительных режимов, сходных с V_PRED и H_PRED, но с диагональными направлениями.

Для сжатия ошибок предсказания и подблоков, которые не были предсказаны, используется дискретное косинусное преобразование DCT (и, изредка, преобразование Уолша—Адамара, WHT). Оба преобразования работают с подблоками размером 4х4 пиксела. Реализация преобразований выполнена на представлении чисел с фиксированной точностью, чтобы уменьшить ошибки округления [8]. Коэффициенты DCT и WHT пакуются энтропийным кодеком.

WebP не работает в цветовом пространстве RGB, перед кодированием изображение переводится в YUV с глубиной 8 бит и форматом 4:2:0. Перевод осуществляется согласно стандарту ITU-R BT.601[8].

Для некоторых изображений может использоваться алгоритм upscaling, когда кодируется не само изображение, а его отмасштабированная (уменьшенная) версия. Декодер проводит обратное преобразование (увеличение изображения)[8].

Поддержка[править | править вики-текст]

В настоящее время просмотр изображений в формате WebP поддерживается браузерами Google Chrome (начиная с 9 версии)[9] и Opera (начиная с версии 11.10)[10].

Android поддерживает чтение и запись WebP изображений начиная с версии 4.0[11].

С помощью специальной JavaScript-библиотеки возможно отображение в браузерах, поддерживающих видео в формате WebM, в частности, в Firefox 4.0 и более новых[12][13].

Существует также порт библиотеки libwebp под названием libwebpjs/libwebpas на JavaScript и ActionScript, позволяющий использовать WebP во всех популярных браузерах (поддержка IE6+ осуществляется с помощью дополнительного модуля Adobe Flash)[14].

Ограничения и недостатки[править | править вики-текст]

Как и VP8, поддерживает только формат 8-bit YUV 4:2:0[15], что может быть причиной потери цвета на изображениях с 1-пиксельными контрастными переходами, например в пиксельной графике и других видах компьютерной графики.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]

Публикации в прессе

См. также[править | править вики-текст]