Мультимедийные технологии

Автор работы: Пользователь скрыл имя, 30 Января 2011 в 05:05, реферат

Описание работы

Для записи изображений требуются достаточно большие объемы памяти, часто в единицы и даже десятки Мегабайт – а, это может оказаться недостижимым, если изображение необходимо записать на дискету или передать по Интернет. Существуют специально разработанные форматы записи графических файлов, практически каждый из которых базируется на том или ином, а иногда и на нескольких алгоритмах сжатия изображений – это является решением проблемы. Посредством сжатия (компрессии) изображений удается в несколько раз и даже в ряде случаев в десятки раз сократить цифровой поток, представляющий изображение.

Содержание работы

1.Проблема сжатия изображений Þ стр. 3
1.1 Оценка качества изображения Þ стр. 3

2.Статистическая избыточность изображений Þ стр. 4
3.Психофизическая избыточность изображений Þ стр. 6
4.Декорреляция сигнала изображения Þ стр. 6
5.Кодирование длин серий Þ стр. 8
6.Кодирование методом LZW Þ стр. 9
6.1 Принципы метода сжатия LZW Þ стр. 9

7.Метод кодирования Хаффмена Þ стр. 10
8.Принципы кодирования с использованием
ортогональных преобразований Þ стр. 11

9.Дискретное косинусное преобразование Þ стр. 15
10.Оптимальное распределение двоичных единиц кода между
спектральными коэффициентами Þ стр. 17

11.Сжатие изображений в формате JPEG Þ стр. 18
Вывод Þ стр. 22

Список литературы Þ стр. 23

Файлы: 1 файл

реферат ММТ.doc

— 477.00 Кб (Скачать файл)

     Описанный метод кодирования относится  к группе методов сжатия данных с  потерями информации. Смысл этого термина заключается в том, что после декодирования распределение яркости в восстановленном изображении отличается от того распределения, которое было до его кодирования, т.е. имеет место искажение изображения и соответственно потеря информации. Но следует иметь ввиду, что речь здесь идет о потере информации, которой зрительная система не в состоянии воспользоваться в силу присущих ей ограничений.

     На  практике при сжатии изображений  применяются как методы сжатия данных с потерей информации (обычно эти методы основаны на сокращении не только психофизической избыточности, но статистической), так и методы сжатия данных без потерь информации.

  1. Декорреляция  сигнала изображения

      Избыточность изображения обусловлена наличием сильных корреляционных связей между значениями яркости смежных пикселов, кроме того, избыточность обусловлена также тем, что неравномерность распределения плотности вероятности их значений мала. Различие в вероятности появления тех или иных уровней яркости невелико. Сказанное поясняется рис.2.1, на котором приведена плотность вероятности значений яркости в исходном изображении .

Рис.2.1.

Первым шагом при сжатии изображений с использованием энтропийного кодирования является декорреляция кодируемой последовательности, при которой устраняются статистические связи между кодируемыми отсчетами и уже затем производится кодирование статистически независимых отсчетов. Простейшим, но не оптимальным способом декорреляции является преобразование последовательности отсчетов кодируемого сигнала, представляющего яркость пикселов изображения , в последовательность отсчетов приращений этой яркости при переходе с одного пиксела на другой, т.е.

,

где - номер отсчета. В результате такого преобразования статистические связи между кодируемыми отсчетами сильно ослабляются, а распределение плотности вероятности их значений становится резко неравномерным. Отмеченное поясняется рис. 2.2, на котором приведена плотность вероятности приращения яркости . Из сопоставления рис. 2.1 и рис. 2.2 видно, что во втором случае плотность вероятности распределения приращений резко неравномерна, благодаря чему сигнал последовательности приращений обладает большой избыточностью, а следовательно, может быть в большей степени сжат.

Рис.2.2 

Рис.2.3 
 
 
 

  1. Кодирование длин серий

     Кодирование длин серий или как его еще  называют RLE (Run-Length Encoding) в настоящее время широко применяется при записи графических изображений  в файлы либо как самостоятельный метод, либо в составе более сложных алгоритмов кодирования, применяемых в различных форматах графических файлов, например в JPEG. Этот метод применяется также в таких распространенных форматах, как PCX, TIFF и TARGA.

     Многие графические изображения, например, чертежи, плакаты и т.п. включают в себя значительные однородные области, имеющие одинаковые яркость и цвет. При разложении таких изображений в растр наличие однородных областей приводит к появлению в строках последовательностей отсчетов, имеющих одни и те же  значения, как показано на рис. 2.4. Эта особенность позволяет при их сжатии расходовать меньше двоичных единиц, чем при традиционном методе кодирования, записывая лишь длину серии (число повторений одинаковых отсчетов) и значение яркости, с которого начинается  

Рис.2.4.  

серия. Так при использовании метода кодирования длин серий для кодирования отсчетов яркости,  показанных на рис. 2.4, получим следующую кодовую последовательность: . Из изложенного следует, что при использовании этого метода в кодируемом сигнале устраняются (строго говоря, ослабляются) корреляционные связи.

        Определим величину коэффициента сжатия, которое обеспечивается при использовании этого метода. Учитывая, что для записи числа повторений одинаковых отсчетов  в последовательности, максимальная протяженность которой равна , необходимо затратить двоичных единиц, а также необходимо затратить двоичных единиц для записи значения самой величины, где - число уровней квантования яркости в кодируемом изображении, найдем, что затрата двоичных единиц для записи последовательности составит

.

      Обозначая вероятность нового значения, т.е. вероятность  появления последовательности, через , а число строк в изображении и число отсчетов в строке, соответственно через и , найдем, что полная затрата двоичных единиц кода для записи изображения будет равна . Принимая во внимание, что при традиционном кодировании для записи такого изображения потребуется двоичных единиц, находим, что коэффициент сжатия , обеспечиваемое от применения метода кодирования длин серий составит

.

      Из  этой формулы видно, что коэффициент  сжатия сильно зависит от вероятности  появления новых значений . При малых значениях вероятности новых значений коэффициент сжатия оказывается большим, но быстро убывает при ее увеличении. К сожалению, статистика полутоновых изображений такова, что при 256 уровнях квантования практически каждый новый отсчет (пиксел) представляет новое значение, т.е. . Обращаясь к формуле, видим, что при коэффициент сжатия оказывается меньше единицы, т.е. применение описанного метода приводит не к сокращению числа двоичных единиц, а к увеличению. Объясняется это тем, что в этом случае  дополнительная затрата двоичных единиц идет на представление длительности последовательностей, хотя их протяженность почти всегда равна единице.

     Недостатком этого метода является также его  низкая помехоустойчивость. Даже редкие помехи приводят либо к появлению на изображениях протяженных штрихов, поскольку помеха изменяет значение яркости всей последовательности, либо, что еще хуже, к “раздергиванию” строк, если помеха искажает данные о числе повторения отсчета в последовательности.  Достоинством же этого метода является простота его реализации. Отмеченные особенности определили и область его применения, а именно при записи графических изображений, в том числе цветных, содержащих большие однородные поля.

  1. Кодирование методом LZW

      В настоящее время метод LZW  (Алгоритм сжатия, с адаптивностью и использованием кодов переменной длины с максимальной длиной 12 двоичных единиц.), используется в форматах записи как графической, так и гипертекстовой информации: GIF, TIFF, PDF.

6.1 ПРИНЦИПЫ  МЕТОДА СЖАТИЯ LZW

      Принципы метода сжатия LZW. Пусть сжатию подлежит черно-белое полутоновое изображение, проквантованное по яркости на 256 уровней. Сжатие начинается с того, что строится (инициализируется) первоначальная таблица кодов, в которой каждому уровню квантования сопоставляется код, представляющий собой двоичную запись номера уровня квантования. Так, например, нулевому уровню квантования приписывается значение кода - 0, первому уровню квантования значение - 1, и т.д., 255-му уровню квантования значение -255. Такая таблица содержит 256 значений кода. Далее в таблицу записываются еще два кода: код очистки, которому присваивается значение 256 и код конца записи -257. Код очистки используют для того, чтобы не произошло переполнение таблицы, которая по принятому соглашению может включать коды протяженностью не более 12 двоичных единиц (числа до 4096). Он необходим, так как по мере заполнения таблицы  и соответствующего увеличения кода имеет место переход к кодам протяженностью в 10, 11 и 12 двоичных единиц,   Код очистки инициализирует таблицу заново, стирая в ней все коды, начиная с 258 и выше  и освобождая тем самым место для кодового представления встречающихся в изображении комбинаций символов. Код конца записи, как это видно из его названия, сигнализирует о том, что кодируемая последовательность окончилась. После завершения подготовительных операций алгоритм готов к началу сжатия данных (изображения). 

      Алгоритм  сжатия данных:

    • Инициализировать, т.е. ввести первоначальную таблицу кодов;
    • Очистить таблицу кодов, начиная с кода 258 и до конца;
    • Очистить буфер строки (String), буфер строки (Test) и буфер строки (Byte).
    • Далее в цикле:

            а) Прочитать очередной  байт  кодируемых данных в буфер (Byte).

            б) Сцепить (конкатенировать) String + Byte и поместить результат в буфер Test.

              в) Проверить, имеется  ли в таблице  кодов код, соответствующий  комбинации, помещенной в буфер Test?

            - если имеется,  то содержимое  буфера Test переписать в буфер String и перейти в начало цикла;

             - если нет, то  добавить в таблицу код, соответствующий содержимому буфера Test, присвоив ему значение, совпадающее со следующим свободным порядковым номером, вывести в выходной поток код, соответствующий содержимому буфера String,  переписать содержимое буфера Byte в String  и перейти в начало цикла.

    • Работа программы заканчивается тем, что делаются записи в выходной поток кода содержимого String и кода конца записи.
 

      В результате применения такого алгоритма  получаем коды переменной длины, причем для сочетаний из двух-трех символов, каждый из которых в отдельности описывается в таблице 8-разрядным кодом, длина полученных кодов будет составлять не 16 и не 24 бита, а существенно меньшей.

      Декодированию (декомпрессии) сжатых данных.

      Декодирующий  алгоритм, получая коды комбинаций исходных отсчетов, составляет по ним кодовую таблицу идентичную той, которую составляет кодирующий алгоритм.

        Декодирующий алгоритм:

    • Прочитать новый код сжатых данных (Newcode).
    • Если Newcode представляет собой код конца записи, то завершить работу.
    • Если Newcode представляет собой код очистки, то необходимо:

            а) проинициализировать  таблицу кодов;

            б) прочитать следующий  код сжатых данных (если это будет код  конца записи, то завершить работу);

            в) найти Newcode в кодовой таблице и вывести соответствующую ему декомпрессированную последовательность отсчетов;

            г) скопировать Newcode в буфер, где был записан предыдущий код (Prevcode).

    • Если же Newcode находится в таблице, но не является ни кодом очистки, ни кодом конца записи, то необходимо:

            а) вывести соответствующую  ему декомпрессированную последовательность отсчетов;

            б) взять первый байт декомпрессированного кода Newcode и декомпрессированного кода Prevcode, конкатенировать их и добавить в кодовую таблицу;

            г) скопировать Newcode в  буфер, где хранится  Prevcode.

            Если Newcode в таблице отсутствует, а, кроме того, он не является кодом очистки и кодом конца записи, то необходимо:

            а) конкатенировать  и вывести значение декомпрессированного кода Prevcode+ первый байт того же значения;

            б) добавить в таблицу  элемент для вышеприведенного значения;

            в) скопировать Newcode в  буфер Prevcode. 

      Метод сжатия LZW может быть применен не только для сжатия данных, каждая единица которых имеет размер в один байт, например, отсчетов яркости черно-белого полутонового изображения, но также и для сжатия данных, имеющих произвольный размер. В этом случае кодовые последовательности этих данных объединяются в группы по 8 двоичных единиц. Так если каждый отсчет содержит 4 двоичных единицы, то объединение в группы происходит по два отсчета, а если один отсчет представлен 16 двоичными единицами кода, то такая кодовая последовательность делится пополам. Величина сжатия, обеспечиваемая при использовании этого метода, невелика и лежит обычно в пределах 2 – 3 раза.

  1.   Метод кодирования Хаффмена

        Этот метод позволяет получить код с минимальной средней длиной при заданном распределении вероятностей значений некоррелированных отсчетов сигналов. Особенностью этого метода кодирования является использование кодов переменной длины, при этом  наиболее вероятным символам присваиваются наиболее короткие кодовые слова, а менее вероятным – длинные.

      На  рис. 2.5 показано кодовое дерево применительно  к случаю кодирования шести символов A1, A2,

Информация о работе Мультимедийные технологии