- •Содержание
- •Введение
- •Методы сжатия информации
- •Алгоритмы сжатия информации без потерь
- •Кодирование длин сессий
- •2.2 Алгоритм lz78-lzw84
- •Алгоритм lzw
- •2.5 Код Хаффмана
- •Алгоритм ppm
- •2.7 Алгоритм bwt
- •2.8 Алгоритм арифметического кодирования
- •Заключение
- •Список использованных источников
- •Приложение 1
Заключение
Результатом написания данной курсовой работы стала программная реализация одного из алгоритмов сжатия информации без потерь, а именно алгоритма кодирования длин серий. Данный подход является в своей основе достаточно простым, но, не смотря на это, может давать хорошие результаты в ряде случае.
Написанная программа носит демонстративный характер, показывая хорошие результаты по сжатию информации. В особенности программа показывает себя эффективно для сжатия данных, содержащих большое количество серий, например, для простых графических изображений, таких как иконки и графические рисунки.
Список использованных источников
Д. Ватолин, А. Ратушняк, М. Смирнов, В. Юкин. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. — Диалог-МИФИ, 2002.
Д. Сэломон. Сжатие данных, изображения и звука. — М.: Техносфера, 2004.
Ватолин Д.С. Алгоритмы сжатия изображений – М.: Диалог-МГУ, 1999.
Климов А.С. Форматы графически файлов С.-Пб.: ДиаСофт. 1995
Александров В.В., Горский Н.Д. Представление и обработка изображений/ М.: Наука, 2002.
Кривошеев М.И. Основы телевизионных измерений. 3- изд., доп. и перераб. М.: Радио и связь, 1989.
Кадач А.В. Эффективные алгоритмы неискажающего сжатия текстовой информации – Институт систем информатики им. А.П.Ершова, Новосибирск, 1997.
Ковалгин Ю.А., Вологдин Э.И. Цифровое кодирование звуковых сигналов — М.: Корона-Принт, 2004 г.
Артюшенко В.М., Шелухин О.И., Афонин М.Ю. Цифровое сжатие видеоинформации и звука — М.: Дашков и Ко, 2004 г.
Ричардсон Я. Видеокодирование. Н.264 и MPEG-4 - стандарты нового поколения. Техносфера, 2005 г.
Дж. Миано. Форматы и алгоритмы сжатия изображений в действии. Из-во Триумф, 2003.
Приложение 1
function encode(s:string):string;
var i,j:integer;
newS:string;
begin
i:=1;
while i <= length(s) do
begin
j:=i;
while s[i] = s[j+1] do inc(j);
if j-i = 0 then
begin
newS := newS + s[i];
inc(i);
end else
begin
newS := newS + inttostr(j-i+1) + s[i];
delete(s,i,j-i+1);
end;
end;
result:= newS;
end;
function decode(s:string):string;
var i,j,c:integer;
newS:string;
dp : string;
begin
i:=1;
while i <= length(s) do
begin
j:=i;
while s[j] in ['0'..'9'] do inc(j);
if j-i > 0 then
begin
dp := copy(s,i,j-i);
for c:=1 to strtoint(dp) do newS := newS + s[j];
delete(s,i,j-i+1);
end else
begin
newS := newS + s[i];
inc(i);
end;
end;
result:= newS;
end;
Размещено на Allbest.ru