Страничка посвящена описанию JPEG-LS кодера, реализованного автором на языке VHDL для применения в проектах на FPGA.



Краткое описание стандарта JPEG-LS

Стандарт JPEG-LS был разработан к 1997 году группой JPEG на основе алгоритма LOCO-I от компании Hewlett-Packard. Стандарт описывает сжатие полутоновых черно-белых или цветных изображений без потерь. Впрочем, предусмотрен также и вариант сжатия с ограниченными потерями, так называемый "near lossless" режим, при котором значения оригинального и восстановленного пикселов могут отличаться не более, чем на определенное значение.

Кодер JPEG-LS состоит из двух основных частей - блока контекстого моделирования и энтропийного кодера:
Блок-схема JPEG-LS кодера
Кроме того, JPEG-LS кодер может работать в режиме сжатия последовательностей одинаковых пикселов, так называемый "run mode". В этом случае кодируется длина последовательности. В обычном же режиме кодируется ошибка предсказания пиксела, то есть разность между пикселом и его предсказанным значением, полученным в свою очередь с помощью фиксированного предиктора и адаптивной коррекции в соответствии со встречаемостью контекста.

Основные характеристики кодера JPEG-LS



Текущая реализация кодера JPEG-LS

По проекту аппаратного кодера JPEG-LS полностью реализована и проверена "в железе" следующая функциональность:

Интерфейс.

Входные сигналы кодера следующие:
Выходные сигналы кодера:

Тестовый макет.

Кодер тестировался "в железе" на следующей платформе: Чип FPGA - XILINX Spartan2 XC2S200PQ208 -6C. В нем помимо собственно кодера JPEG-LS, было реализовано выходное FIFO длиной в строку изображения и интерфейс EPP для обмена данными и получения команд с компьютера.
Блок-схема тестового макета Все модули проекта написаны на языке VHDL. На компьютере для передачи исходных данных (картинки), для приема сжатого потока и для управления кодером была написана программа на DELPHI под WINDOWS.

Возможные применения аппаратного кодера JPEG-LS

Список возможных применений аппаратного кодера JPEG-LS очень широк, вот лишь некоторые варианты: