Читать в оригинале

<< Предыдущая Оглавление Следующая >>


3.8.2. Основы метода JPEG-LS

Мы уже отмечали в § 3.7.6, что мода без потерь данных метода JPEG весьма неэффективна, и часто ее даже не включают в конкретные приложения, использующие JPEG. В результате ISO в кооперации с IEC разработали новый стандарт для сжатия без потерь (и почти без потерь) непрерывно-тоновых изображений. Этот метод официально известен как рекомендация ISO/IEC CD 14495, но его принято называть JPEG-LS. Здесь рассматриваются основные принципы этого метода, который не является расширением или модификацией метода JPEG. Это совершенно новый метод, простой и быстрый. Он не использует ни DCT, ни арифметическое кодирование. Применяется слабое квантование и только в моде почти без потерь. JPEG-LS основан на идеях, развитых в [Weinberger и др. 96] для метода компрессии LOCO-I. JPEG-LS (1) изучает несколько предыдущих соседей текущего пиксела, (2) рассматривает их как контекст этого пиксела, (3) использует контекст для прогнозирования пиксела и для выбора распределения вероятностей из нескольких имеющихся, и (4) применяет это распределение для кодирования ошибки прогноза с помощью специального кода Голомба. Имеется также серийная мода, когда длина серии одинаковых пикселов кодируется подходящим образом.

Пикселы контекста a, b, с, d, используемые для прогнозирования текущего пиксела , показаны на рис. 3.61. Кодер изучает пикселы контекста и устанавливает, в какой моде кодировать данный пиксел , в серийной или в регулярной. Если контекст указывает, что пикселы  и , следующие за , скорее всего будут совпадать, то выбирается серийная мода. В противном случае, используется регулярная мода. Если включена опция «почти без потерь», то выбор моды делается несколько иначе. Если контекст предполагает, что следующие пикселы будут почти совпадать (в соответствии с параметром допустимого отклонения NEAR), то декодер выбирает серийную моду. Если нет, то берется регулярная мода. Дальнейшее кодирование зависит от выбранной моды.

 

 

 

 

 

 

 

c

b

d

 

 

 

a

x

y

z

 

 

 

 

 

 

 

Табл. 3.61. Контекст для прогноза .

В регулярной моде кодер использует величины пикселов a, b и с для вычисления прогноза пиксела . Этот прогноз вычитается из , в результате чего получается ошибка прогноза, которая обозначается через Errval. Затем ошибка прогноза корректируется некоторым членом, зависящим от контекста (корректировка делается с целью компенсирования систематического отклонения прогноза), и потом она кодируется с помощью кодов Голомба. Код Голомба зависит от всех четырех пикселов контекста, а также от ошибок прогноза этих же самых пикселов (эта информация хранится в массивах А и N, которые будут использоваться в § 3.8.3). При компрессии почти без потерь ошибка прогноза еще дополнительно квантуется перед кодированием.

В серийной моде кодер начинает с пиксела  и находит в этой строке наибольшую длину серии пикселов, совпадающих с контекстным пикселом . Кодер не расширяет эту серию за пределы текущей строки. Поскольку все символы серии совпадают с  (а этот пиксел известен декодеру), то достаточно закодировать длину серии, что делается с помощью массива  из 32 элементов (см. § 3.8.3). (При сжатии почти без потерь, кодер выбирает серию пикселов, близких к  с помощью параметра NEAR.)

Декодер мало отличается от кодера, поэтому JPEG-LS можно считать почти симметричным методом сжатия. Сжатый файл состоит из сегментов данных (содержащих коды Голомба и длины серий), сегментов маркеров (с информацией, необходимой декодеру) и просто маркеров (в качестве которых используются некоторые зарезервированные маркеры JPEG). Маркером является байт из одних единиц, за которым следует специальный код, сигнализирующий о начале нового сегмента. Если за маркером следует байт, у которого старший бит равен 1, то этот байт является началом сегмента маркеров. В противном случае, начинается сегмент данных.

 



<< Предыдущая Оглавление Следующая >>