JPEG-LS
- стандарт
сжатия без потерь
(в котором, однако, предусмотрен также режим сжатия с ограниченными потерями), представленный группой экспертов в области фотографии (
Joint Photographic Experts Group
) в дополнение к известным форматам сжатия изображений
JPEG
и
JPEG 2000
, ориентированным прежде всего на сжатие с потерями.
Формат
JPEG-LS
был основан на формате
LOCO-I
(Low Complexity Lossless Compression for Images)
[1]
. Алгоритм сжатия без потерь LOCO-I, принятый за основу при разработке стандарта JPEG-LS, впервые предусматривал не только
lossless
, но и
near lossless
режим (сжатие с ограниченными, задаваемыми пользователем потерями). Декодер JPEG-LS почти не отличается от кодера, поэтому этот алгоритм сжатия симметричный.
[1]
Алгоритм сжатия, лежащий в основе JPEG-LS, использует адаптивное предсказание значения текущего пиксела по окружению, включающему уже закодированные пикселы (метод Median Edge Detection), классификацию контекста, контекстное моделирование ошибки предсказания и её коррекцию, а также энтропийное кодирование скорректированной ошибки предсказания (используется
кодирование Голомба
-Райса)
[2]
. Для повышения эффективности кодирования низкоэнтропийных изображений (или фрагментов изображений) алгоритм предусматривает автоматический переход в режим
кодирования длин серий
, что позволяет использовать его для сжатия без потерь (или с ограниченными потерями) не только фотореалистических изображений, но и компьютерной графики.
Для цветных (многокомпонентных) изображений стандарт JPEG-LS не предписывает какого-то определённого метода преобразования цветовых компонент, поэтому программы, реализующие JPEG-LS, обычно предлагают выбрать одну схему из нескольких (независимое сжатие цветовых плоскостей, преобразование в стиле JPEG 2000 lossless mode и т. п.).
Формат
JPEG-LS
разрабатывался прежде всего для хранения изображений в медицинских целях, то есть для тех случаев, когда важно иметь большое изображение без малейших потерь качества. Как уже говорилось, за основу был взят формат LOCO-I, разработанный в стенах ≪HP Labs≫. Затем он был доработан совместными усилиями ≪
Hewlett-Packard
≫ и ≪
Mitsubishi
≫. Обе компании разрешили использовать их патенты на этот формат без оплаты лицензии, поэтому JPEG-LS можно встретить и в обычных программах для PC.
[2]
Lossless JPEG
представляет собой дополнение к JPEG (и к JPEG-LS, несмотря на некоторое сходство в названии, отношения не имеет). В отличие от ≪обычного≫ JPEG, построенного на основе дискретного косинусного преобразования, Lossless JPEG использует схему предсказания значения пиксела по трём ближайшим соседям ? верхнему, левому и верхнему левому пикселам, а для сжатия разницы между истинным и предсказанным значением пиксела использует
энтропийное кодирование
. В отличие от JPEG-LS алгоритм сжатия Lossless JPEG не предусматривает ни адаптивного предсказания значения кодируемого пиксела, ни контекстного моделирования ошибки предсказания. Для энтропийного кодирования ошибки предсказания Lossless JPEG использует
код Хаффмана
. В качестве альтернативного стандарт допускает использование
арифметического кодирования
, однако из-за патентных ограничений оно не нашло применения в практических реализациях Lossless JPEG. Этот метод не получил широкого распространения и не поддерживается популярными библиотеками
IJG libraries
.
JPEG 2000
также имеет режим сжатия без потерь (отличающийся от JPEG-LS), основанный на специальном целочисленном wavelet-фильтре (биортогональный 3/5). Сжатие без потерь в JPEG 2000 работает медленнее и оно менее эффективно, чем в JPEG-LS, как на искусственных, так и на фотореалистичных изображениях
[3]
[4]
[5]
[6]
.