Кодирование (сжатие) данных
Расчет (написание программы) методом Шеннона-Фано оптимальных двоичных кодов сообщений данного источника информации. Программы, выполняющие кодирование и декодирование. Энтропия и избыточность источника информации. Ожидаемый коэффициент сжатия данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 04.05.2015 |
Размер файла | 98,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Московский государственный институт электроники и математики (технический университет)
Кафедра «Математическое обеспечение систем обработки информации и управления»
Отчет к курсовой работе
по дисциплине «Теория информации и основы криптографии»
Работу выполнила
студентка группы М-82
Работу проверила
О.Л. Зуйкова
Москва 2011 г.
1. Задание
программа кодирование информация
Пусть источник информации (ИИ) генерирует тексты на английском языке. Считать, что буквы появляются независимо друг от друга с вероятностями, заданными в таблице 1. Выбрать для работы файл, содержащий английский текст объемом 3-5 страниц. Большие и малые буквы считать одинаковыми символами; символы, не встречающиеся в таблице, заменить пробелами.
Таблица 1. Таблица вероятностей английских букв
Пробел |
е |
т |
а |
о |
n |
i |
s |
r |
|
0.180 |
0.097 |
0.076 |
0.064 |
0.062 |
0.057 |
0.056 |
0.052 |
0.047 |
|
h |
l |
d |
с |
u |
f |
m |
w |
y |
|
0.040 |
0.031 |
0.028 |
0.025 |
0.018 |
0.018 |
0.017 |
0.016 |
0.015 |
|
b |
g |
v |
k |
q |
x |
j |
z |
p |
|
0.013 |
0.013 |
0.007 |
0.039 |
0.002 |
0.002 |
0.001 |
0.001 |
0,018 |
Рассчитать (написать программу) методом Шеннона-Фано оптимальные двоичные коды сообщений данного источника информации. Таблицу кодов хранить в отдельном файле.
Для полученного кода рассчитать:
энтропию и избыточность ИИ,
среднее число символов кода на один символ алфавита ИИ,
избыточность кода,
ожидаемый коэффициент сжатия данных как отношение энтропии ИИ к энтропии кода в пересчете на один двоичный символ в памяти компьютера.
Написать программы, выполняющие кодирование и декодирование с помощью полученной таблицы кодов. Исходное сообщение берется из файла, результат также должен быть сохранен в файле. Для того, чтобы программа выполняла реальное сжатие, необходимо, чтобы каждый символ кода (0 или 1) занимали 1 бит памяти.
Выполнить кодирование (сжатие) данных для двух различных файлов: того, по которому считались вероятности и другого файла, содержащего подобный текст. В каждом случае сравнить объемы полученных файлов и определить практическую степень сжатия как отношение размеров полученного файла к исходному, сравнить ее с теоретической.
2. Таблицы кодов
Используя алгоритм двоичного кодирования по методу Шеннона-Фано, составим таблицу кодов для заданного алфавита ИИ:
xk |
P(xk) |
Подгруппы и их вероятности |
коды |
||||||||
Пробел |
0,180 |
0.691 |
0.353 |
0.180 |
000 |
||||||
E |
0,097 |
0.173 |
0010 |
||||||||
T |
0,076 |
0011 |
|||||||||
A |
0,064 |
0.338 |
0.183 |
0.064 |
0100 |
||||||
O |
0,062 |
0.119 |
01010 |
||||||||
N |
0,057 |
01011 |
|||||||||
I |
0,056 |
0.155 |
0.056 |
0110 |
|||||||
S |
0,052 |
0.099 |
01110 |
||||||||
R |
0,047 |
01111 |
|||||||||
H |
0,040 |
0.664 |
0.163 |
0.079 |
1000 |
||||||
K |
0,039 |
1001 |
|||||||||
L |
0,031 |
0.084 |
0.031 |
1010 |
|||||||
D |
0,028 |
0.053 |
10110 |
||||||||
C |
0,025 |
10111 |
|||||||||
U |
0,018 |
0.141 |
0.071 |
0.036 |
11000 |
||||||
P |
0,018 |
11001 |
|||||||||
F |
0,018 |
0.035 |
11010 |
||||||||
M |
0,017 |
11011 |
|||||||||
W |
0,016 |
0.07 |
0.031 |
11100 |
|||||||
Y |
0,015 |
11101 |
|||||||||
B |
0,013 |
0.039 |
0.026 |
111100 |
|||||||
G |
0,013 |
111101 |
|||||||||
V |
0,007 |
0.013 |
0.007 |
111110 |
|||||||
Q |
0,002 |
0.006 |
0.004 |
0.002 |
11111100 |
||||||
X |
0,002 |
0.002 |
11111101 |
||||||||
J |
0,001 |
0.002 |
0.001 |
11111110 |
|||||||
Z |
0,001 |
0.001 |
11111111 |
Полученная таблица будет записана в файл table.txt, который будут использовать кодер и декодер.
3. Результаты расчетов
Энтропия и избыточность ИИ
Пусть мы имеем источник информации Х с алфавитом:
Сообщения источника независимы, и появляются с вероятностями
Энтропия H(x) равна:
Максимальная энтропия равна:
Избыточность источника информации R:
Среднее число символов кода на один символ алфавита ИИ
Среднее число символов кода, необходимых для кодирования одного сообщения. Оно равно математическому ожиданию длины кодового слова.
,
где - длина кодового слова для сообщения
Избыточность кода
4. Ожидаемый коэффициент сжатия данных
Для записи одного символа ИИ используется nи=8 двоичных - при кодировке ASCII. Тогда количество информации на один двоичный символ ИИ:
а количество информации на один двоичный символ кода:
Тогда коэффициент сжатия будет равен
Итак, мы получили теоретический коэффициент сжатия.
5. Тестовый пример кодирования и декодирования короткого сообщения
Имеется файл с таблицей кодов table.txt, в котором приведены коды всех символов русского языка в алфавитном порядке
Имеется файл с исходным текстом source.txt, содержание которого приведено в кавычках ниже:
«”Look at me, up in the tree”, said Tom»
В результате кодирования данного файла, мы получаем следующую последовательность нулей и единиц, разбитую по байтам:
00010100
10100101
01001000
01000011
00011011
00100000
00110001
10010000
11001011
00000110
11110010
00100000
00000011
10010001
10101100
00001101
01011011
Закодированный файл result.txt будет иметь следующий вид:
«hsиAЧА»ЏЧxЋЦ .…В3;». Здесь каждой восьмерке нулей и единиц соответствует один символ ASCII.
Декодер, использующий закодированный файл, восстанавливает информацию и создает файл restored.txt следующего содержания:
«look at me up in the tree said tom»
Как мы видим, большие буквы были заменены на маленькие, знаки препинания - на знак пробела.
Оценим результаты сжатия файла.
Исходный файл source.txt: 37 байт.
Закодированный файл result.txt 20 байт.
Восстановленный файл restored.txt 39 байт (два лишних пробела).
Итак, реальный коэффициент сжатия
Таким образом, данный пример демонстрирует правильность наших расчетов.
6. Результаты сравнения объемов исходных файлов и файлов после кодировки
Для того чтобы более точно определить реальный коэффициент сжатия файлов, рассмотрим еще два примера.
Пример 1.
Агата Кристи «Evil under the Sun»
Результаты сжатия:
Исходный файл 87896 байт
Закодированный файл 45956 байта
Реальный коэффициент сжатия превышает теоретический. Это можно объяснить наличием большого числа знаков препинания в обоих произведениях. Все знаки препинания кодируются лишь тремя двоичными битами.
Тем не менее, реальные коэффициенты сжатия все равно достаточно близки к теоретическому.
Заключение
В данной работе были рассчитаны оптимальные двоичные коды сообщений для заданного алфавита источника информации, написаны программы, реализующие кодирование и декодирование по этим кодам. Также было произведено сравнение практических результатов с теоретическими.
Полученный код является малоизбыточным. Данная избыточность возникает вследствие того, что сообщения источника невозможно разделить на абсолютно равновероятные группы.
Уменьшить избыточность можно, применив блочное кодирование. Однако это не принесет значительного увеличения коэффициента сжатия, хотя сильно усложнит таблицу кодов.
Приложение А
Кодер. Текст программы.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#pragma warning(disable: 4996)
typedef union
{
char symbol;
struct
{
unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}
bit;
}
code;
char ** codes = NULL;
code * result = 0;
int max_size = 0;
int result_i = 0, result_j = 0;
int code_num(char sym)
{
int num = 0;
if(sym == 'a' || sym == 'A')
num = 1;
else if(sym == 'b' || sym == 'B')
num = 2;
else if(sym == 'c' || sym == 'C')
num = 3;
else if(sym == 'd' || sym == 'D')
num = 4;
else if(sym == 'e' || sym == 'E')
num = 5;
else if(sym == 'f' || sym == 'F')
num = 6;
else if(sym == 'g' || sym == 'G')
num = 7;
else if(sym == 'h' || sym == 'H')
num = 8;
else if(sym == 'i' || sym == 'I')
num = 9;
else if(sym == 'j' || sym == 'J')
num = 10;
else if(sym == 'k' || sym == 'K')
num = 11;
else if(sym == 'l' || sym == 'L')
num = 12;
else if(sym == 'm' || sym == 'M')
num = 13;
else if(sym == 'n' || sym == 'N')
num = 14;
else if(sym == 'o' || sym == 'O')
num = 15;
else if(sym == 'p' || sym == 'P')
num = 16;
else if(sym == 'q' || sym == 'Q')
num = 17;
else if(sym == 'r' || sym == 'R')
num = 18;
else if(sym == 's' || sym == 'S')
num = 19;
else if(sym == 't' || sym == 'T')
num = 20;
else if(sym == 'u' || sym == 'U')
num = 21;
else if(sym == 'v' || sym == 'V')
num = 22;
else if(sym == 'w' || sym == 'W')
num = 23;
else if(sym == 'x' || sym == 'X')
num = 24;
else if(sym == 'y' || sym == 'Y')
num = 25;
else if(sym == 'z' || sym == 'Z')
num = 26;
else
num = 0;
return num;
}
int rar_symbol(char sym)
{
int sym_num;
int i = 0;
char digit;
sym_num = code_num(sym);
while((digit = codes[sym_num][i]) != ' ')
{
switch(result_j)
{
case 0:
{
if(digit == '0')
result[result_i].bit.bit0 = 0;
else
result[result_i].bit.bit0 = 1;
result_j ++;
break;
}
case 1:
{
if(digit == '0')
result[result_i].bit.bit1 = 0;
else
result[result_i].bit.bit1 = 1;
result_j ++;
break;
}
case 2:
{
if(digit == '0')
result[result_i].bit.bit2 = 0;
else
result[result_i].bit.bit2 = 1;
result_j ++;
break;
}
case 3:
{
if(digit == '0')
result[result_i].bit.bit3 = 0;
else
result[result_i].bit.bit3 = 1;
result_j ++;
break;
}
case 4:
{
if(digit == '0')
result[result_i].bit.bit4 = 0;
else
result[result_i].bit.bit4 = 1;
result_j ++;
break;
}
case 5:
{
if(digit == '0')
result[result_i].bit.bit5 = 0;
else
result[result_i].bit.bit5 = 1;
result_j ++;
break;
}
case 6:
{
if(digit == '0')
result[result_i].bit.bit6 = 0;
else
result[result_i].bit.bit6 = 1;
result_j ++;
break;
}
case 7:
{
if(digit == '0')
result[result_i].bit.bit7 = 0;
else
result[result_i].bit.bit7 = 1;
result_i ++;
result_j = 0;
break;
}
}
if(i < max_size-1)
i ++;
else
break;
}
return 0;
}
int main(void)
{
int current_size = 0, i = 0, k = 0, count = 0, result_size;
char c = ' ';
FILE * fp;
int cint = 0;
fp = fopen("table.txt", "rt");
while((c = fgetc(fp)) != EOF)
{
current_size ++;
if(c == '\n')
{
current_size = 0;
i ++;
}
if(current_size > max_size)
{
max_size = current_size;
k = i;
}
}
printf("Max size: %d(on %d string)\n", max_size, k + 1);
codes = malloc(32*sizeof(char*));
assert(codes);
for(i = 0; i < 32; i ++)
{
codes[i] = malloc(max_size*sizeof(char));
assert(codes[i]);
memset(codes[i], ' ', max_size);
}
fclose(fp);
fp = fopen("table.txt", "rt");
i = 0;
k = 0;
while((cint = fgetc(fp)) != EOF)
{
c = (char)cint;
if(c == '\n')
{
i ++;
k = 0;
}
else
{
codes[i][k] = c;
k ++;
}
}
fclose(fp);
fp = fopen("source.txt", "rb");
while((cint = fgetc(fp)) != EOF)
{
c = (char)cint;
//if(c != '\n')
count ++;
}
fclose(fp);
printf("Size of file: %d\n", count);
result_size = (int)(count*9)/8 + 1;
printf("Result size: %d\n", result_size);
result = malloc((int)sizeof(code)*result_size);
assert(result);
for(i = 0; i < result_size; i ++)
{
result[i].symbol = 0;
}
fp = fopen("source.txt", "rb");
while((cint = fgetc(fp)) != EOF)
{
c = (char)cint;
rar_symbol(c);
}
fclose(fp);
fp = fopen("binary.txt", "wt");
for(i = 0; i < result_i+1; i ++)
{
c = (char)(result[i].bit.bit0 + 48);
fputc(c, fp);
c = (char)(result[i].bit.bit1+48);
fputc(c, fp);
c = (char)(result[i].bit.bit2+48);
fputc(c, fp);
c = (char)(result[i].bit.bit3+48);
fputc(c, fp);
c = (char)(result[i].bit.bit4+48);
fputc(c, fp);
c = (char)(result[i].bit.bit5+48);
fputc(c, fp);
c = (char)(result[i].bit.bit6+48);
fputc(c, fp);
c = (char)(result[i].bit.bit7+48);
fputc(c, fp);
c = '\n';
fputc(c, fp);
}
fclose(fp);
fp = fopen("result.txt", "wb");
for(i = 0; i < result_i+1; i ++)
{
c = result[i].symbol;
fputc(c, fp);
}
fclose(fp);
return 0;
}
Приложение B
Декодер. Тексты программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#pragma warning(disable: 4996)
typedef union
{
char symbol;
struct
{
unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}
bit;
}
code;
char ** codes = NULL;
code * result = 0;
int max_size = 0;
int result_i = 0, result_j = 0;
char find_symbol(char *buffer, int length)
{
int i = 0, j = 0, flag = 1, sym_num = -1;
char symbol = 0;
for(i = 0; i < 32; i ++)
{
flag = 1;
j = 0;
while(codes[i][j] != ' ' && j < max_size)
{
if(j > length)
{
flag = -1;
}
else
{
if(codes[i][j] != buffer[j])
{
flag = -1;
}
}
if(flag)
j ++;
else
break;
}
if(flag == 1)
{
sym_num = i;
if(sym_num == 1)
symbol = 'a';
else if(sym_num == 2)
symbol = 'b';
else if(sym_num == 3)
symbol = 'c';
else if(sym_num == 4)
symbol = 'd';
else if(sym_num == 5)
symbol = 'e';
else if(sym_num == 6)
symbol = 'f';
else if(sym_num == 7)
symbol = 'g';
else if(sym_num == 8)
symbol = 'h';
else if(sym_num == 9)
symbol = 'i';
else if(sym_num == 10)
symbol = 'j';
else if(sym_num == 11)
symbol = 'k';
else if(sym_num == 12)
symbol = 'l';
else if(sym_num == 13)
symbol = 'm';
else if(sym_num == 14)
symbol = 'n';
else if(sym_num == 15)
symbol = 'o';
else if(sym_num == 16)
symbol = 'p';
else if(sym_num == 17)
symbol = 'q';
else if(sym_num == 18)
symbol = 'r';
else if(sym_num == 19)
symbol = 's';
else if(sym_num == 20)
symbol = 't';
else if(sym_num == 21)
symbol = 'u';
else if(sym_num == 22)
symbol = 'v';
else if(sym_num == 23)
symbol = 'w';
else if(sym_num == 24)
symbol = 'x';
else if(sym_num == 25)
symbol = 'y';
else if(sym_num == 26)
symbol = 'z';
else if(sym_num == 0)
symbol = ' ';
return symbol;
}
}
return symbol;
}
int main(void)
{
int current_size = 0, i = 0, j = 0, k = 0, result_size = 0;
char c = ' ';
short int cint = 0;
char * buffer;
FILE * fp;
fp = fopen("table.txt", "rt");
assert(fp);
while((c = fgetc(fp)) != EOF)
{
current_size ++;
if(c == '\n')
{
current_size = 0;
i ++;
}
if(current_size > max_size)
{
max_size = current_size;
k = i;
}
}
codes = malloc(32*sizeof(char*));
assert(codes);
for(i = 0; i < 32; i ++)
{
codes[i] = malloc(max_size*sizeof(char));
assert(codes[i]);
memset(codes[i], ' ', max_size);
}
fclose(fp);
fp = fopen("table.txt", "rt");
i = 0;
k = 0;
while((c = fgetc(fp)) != EOF)
{
if(c == '\n')
{
i ++;
k = 0;
}
else
{
codes[i][k] = c;
k ++;
}
}
fclose(fp);
fp = fopen("result.txt", "rb");
assert(fp);
while((cint = fgetc(fp)) != EOF)
{
result_size ++;
}
fclose(fp);
result = malloc(sizeof(code)*result_size);
assert(result);
buffer = malloc(max_size);
memset(buffer, 0, max_size);
fp = fopen("result.txt", "rb");
assert(fp);
i = 0;
while((cint = fgetc(fp)) != EOF)
{
c = (char)cint;
result[i].symbol = c;
i ++;
}
fclose(fp);
fp = fopen("restored.txt", "wt");
k = 0;
for(i = 0; i < result_size; i ++)
{
for(j = 0; j < 8; j ++)
{
switch(j)
{
case 0:
{
if(result[i].bit.bit0 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 1:
{
if(result[i].bit.bit1 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 2:
{
if(result[i].bit.bit2 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 3:
{
if(result[i].bit.bit3 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 4:
{
if(result[i].bit.bit4 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 5:
{
if(result[i].bit.bit5 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 6:
{
if(result[i].bit.bit6 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
case 7:
{
if(result[i].bit.bit7 == 0)
buffer[k] = '0';
else
buffer[k] = '1';
break;
}
}
if((c = find_symbol(buffer, k+1)) != 0)
{
fputc(c, fp);
memset(buffer, 0, max_size);
k = 0;
}
else if(k < 9)
k ++;
if(k >=9)
break;
}
}
fclose(fp);
return 0;
}
Приложение С
Таблица кодов table.txt
000
0100
111100
10111
10110
0010
11010
111101
1000
0110
11111110
1001
1010
11011
01011
01010
11001
11111100
01111
01110
0011
11000
111110
11100
11111101
11101
11111111 Размещено на Allbest.ru
...Подобные документы
Типы сжатия данных: с потерями (lossy) и без потерь (lossless). Сжатие с минимальной избыточностью. Кодирование методом Шеннона-Фано. Проверка работы программы по сжатию файлов формата bmp и xls. Реализация на Delphi алгоритма сжатия Шеннона и Хаффмана.
курсовая работа [2,6 M], добавлен 26.01.2011Энтропия и количество информации. Комбинаторная, вероятностная и алгоритмическая оценка количества информации. Моделирование и кодирование. Некоторые алгоритмы сжатия данных. Алгоритм арифметического кодирования. Приращаемая передача и получение.
курсовая работа [325,1 K], добавлен 28.07.2009Количество информации и ее мера. Определение количества информации, содержащегося в сообщении из ансамбля сообщений источника. Свойства количества информации и энтропии сообщений. Избыточность, информационная характеристика источника дискретных сообщений.
реферат [41,4 K], добавлен 08.08.2009Общее число неповторяющихся сообщений. Вычисление скорости передачи информации и пропускной способности каналов связи. Определение избыточности сообщений и оптимальное кодирование. Процедура построения оптимального кода по методике Шеннона-Фано.
курсовая работа [59,4 K], добавлен 17.04.2009Краткий обзор основных теорий сжатия. Концепции идей и их реализация. Сжатие данных с использованием преобразования Барроуза-Вилера. Статический алгоритм Хафмана. Локально адаптивный алгоритм сжатия. Алгоритм Зива-Лемпеля (Welch) и метод Шеннона-Фано.
практическая работа [188,5 K], добавлен 24.04.2014Определение среднего количества информации. Зависимость между символами матрицы условных вероятностей. Кодирование методом Шеннона–Фано. Пропускная способность канала связи. Эффективность кодирования сообщений методом Д. Хаффмана, характеристика кода.
контрольная работа [94,6 K], добавлен 04.05.2015Задачи обработки и хранения информации при помощи ЭВМ. Сжатие и кодирование информации в информационно-вычислительных комплексах. Метод Лавинского как простейший метод сжатия информации (числовых массивов) путем уменьшения разрядности исходного числа.
курсовая работа [66,0 K], добавлен 09.03.2009Основные понятия и методы сжатия данных. Преобразование информации, хранящейся в файле, к виду, при котором уменьшается избыточность в ее представлении. Статистический и словарный способы сжатия. Программы-архиваторы, основные возможности WinRAR.
контрольная работа [27,5 K], добавлен 12.03.2011Задачи и постулаты прикладной теории информации. Разновидности помехоустойчивых кодов. Кодирование информации для канала с помехами. Энтропия при непрерывном сообщении. Количественная оценка информации. Условная и взаимная энтропия и ее свойства.
курс лекций [3,2 M], добавлен 28.04.2009Обзор существующих программ сжатия данных без потерь. Анализ методов сжатия: алгоритмов группы, KWE, Lossless JPEG, кодирование Хаффмана. Обзор составляющих компонентов. Разработка кода программы-архиватора, работающей на основе алгоритма Хаффмена.
курсовая работа [487,3 K], добавлен 14.07.2011Источники сообщений, сигналы и коды, примеры применения знания основ теории информации для практических целей. Расчет информационных характеристик и согласование дискретного источника с дискретным каналом без шума и с шумом, эффективное кодирование.
курсовая работа [179,6 K], добавлен 13.11.2009Аналоговое и цифровое представление информации. Понятие, классификация и характеристика методов сжатия данных: алгоритмы одно- и двухпараметрической адаптации, линейной экстра- и интерполяции. Кодирование информации и вычисление циклического кода.
курсовая работа [157,4 K], добавлен 07.12.2012Методы кодирования изображения: кодированием длины серии, частотно-зависимое кодирование, метод Лемпеля-Зива. Размер строки при 16-битном цвете. Расчет размера всего исходного изображения. Примеры качественного и некачественного сжатия изображения.
презентация [2,0 M], добавлен 22.10.2013Оптимальное статистическое (экономное) кодирование. Основные понятия и определения теории кодирования. Принципы построения оптимальных кодов. Способность системы осуществлять прием информации в условиях наличия помех. Увеличение мощности сигналов.
реферат [69,3 K], добавлен 09.07.2009Схема и коэффициент эффективности дискретного канала. Функции блоков, свойства канальных матриц, информационные характеристики источника сообщений и приемника. Теоремы Шеннона о критической скорости, криптографическому и помехоустойчивому кодированию.
учебное пособие [994,9 K], добавлен 06.05.2011Сущность универсального метода упаковки, его преимущества и недостатки. Кодирование путем учета числа повторений. Примеры схем распаковки последовательности байтов. Алгоритмы сжатия звуковой, графической и видеоинформации. Разновидности формата МРЕG.
презентация [96,2 K], добавлен 19.05.2014Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.
курсовая работа [212,6 K], добавлен 25.02.2009Общее понятие архивации. Особенности программ архиваторов. Основные методы сжатия информации. Методические основы изучения темы "Архивация данных и сжатие информации" на уроках информатики в базовом курсе. Разработка блока уроков по сжатию информации.
курсовая работа [3,0 M], добавлен 03.06.2012Методика и основные этапы создания программы, взаимодействующей с пользователем посредствам графического интерфейса и выполняющей помехоустойчивое кодирование информации, ее цели. Алгоритм работы программы, отладка и проверка ее работоспособности.
курсовая работа [43,1 K], добавлен 12.05.2013Принцип действия и назначение факсимильной связи, сферы ее применения, оценка преимуществ и недостатков. Сущность и особенности использования адресно-позиционного кодирования. Алгоритм программы сжатия и восстановления изображения по методу АПК.
курсовая работа [23,3 K], добавлен 16.04.2010