Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Практическая часть. Варианты заданий приведены в Приложении 1





Варианты заданий приведены в Приложении 1.

Пункты 6-9 задания являются факультативными.

Порядок выполнения задания:

1) Провести «вручную» сжатие 2-х фрагментов данных методом группового кодирования. Сравнить полученные коэффициенты сжатия.

2) Провести «вручную» сжатие 2-х фрагментов данных методом LZW. Сравнить полученные коэффициенты сжатия.

3) Провести «вручную» сжатие 2-х фрагментов данных c применением кодов Хаффмана. Сравнить полученные коэффициенты сжатия.

4) Провести «вручную» сжатие фрагмента данных c применением алгоритмов RLE, LZW и кодов Хаффмана. Описать полученные результаты и сделать соответствующие выводы.

5) Реализовать алгоритм JPEG в среде Mathcad и применить его для сжатия двух фрагментов изображения согласно варианту задания при q=2 для 1-го фрагмента и при q=2 и 7 для 2-го фрагмента.

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

Примечание:

Импорт в Mathcad-документ полутоновой матрицы цветного изображения Image1.bmp на диске C: осуществляется командой

M:=READBMP(“c:\Image1.bmp”).

Для выделения рабочего блока из общей матрицы изображения используйте функцию

IMG=submatrix(M,r1,r2,c1,c2),

при этом перевод блока в цветовую плоскость YUV не требуется.

6) Создать динамическую библиотеку с процедурой CompressImage, реализующую алгоритм группового кодирования (RLE) согласно блок-схеме на рис. 2. Инструкции приведены в Приложении 2.

7) Запустить основную программу RLE.exe. Выполнить сжатие изображения Image1.bmp, выбрав пункт меню Файл/Сжать изображение. При успешном завершении процедуры на экране появляется диалоговое окно с указанием коэффициента сжатия и в основной директории создается соответствующий файл Image1.rle;

8) Визуально проверить качество сжатия, открыв изображение командой меню Файл/Открыть сжатое изображение: если процедура сжатия была реализована корректно, то в окне программы можно наблюдать осмысленное изображение. В противном случае необходимо корректировать процедуру;

9) Выполнить сжатие изображения Image2.bmp и Image3.bmp. Сравнить коэффициенты сжатия изображений Image1.bmp, Image2.bmp и Image3.bmp. Объяснить полученные результаты.

10) Оформить отчет о проделанной работе, содержащий подробное решение всех пунктов задания и листинги программ.

 

 

Приложение 1. Варианты заданий.

Числа в таблице соответствуют номерам цепочек данных. В пунктах 17-26 данных для кодирования числа обозначают индексы строк и столбцов для выделения рабочего блока из общей матрицы изображения.

  Номер задания
1 (RLE) 2 (LZW) 3 (Haffman) 4 (все три метода) 5 JPEG
Вариант 1 1,2 5,6 9,10   17,22
Вариант 2 1,4 5,8 9,12   18,23
Вариант 3 3,2 7,6 11,10   19,24
Вариант 4 3,4 7,8 11,12   20,25
Вариант 5 1,2 5,8 11,10   21,26
Вариант 6 1,4 7,6 11,12   19,22
Вариант 7 3,2 7,8 9,10   20,23
Вариант 8 3,4 5,6 9,12   21,24
Вариант 9 1,2 7,8 9,10   17,25
Вариант 10 1,4 5,6 11,10   18,26

 

Данные для кодирования:

1) bbbbbbbccccccbbcaaaaaaabbbccccaaaaaaabbbbbaaaaadddddddddaaaadd

2) cbcbbbbcdccddaddabbddccaaaccddddccbbbaaadddddbbbbcacccddaabb

3) aaaaaccccaaccccbbccccccccfffffffffffffssssssssaaaaaabbbbbcccbbbbbffbbbb

4) ccccccbbaaccaddcdacdbcadcdadaaaddacaccadaabbbacadcccadbcbbbcbcbd

 

5) baaccbccbcabaccabbaabaaabcc

6) babaabbaabbaaabbbaaaaa

7) abbabbabaabbabbbba

8) aaacbcbbbbcccbbbcacc

 

9) dcafbfbabggbceffgggfhhhgghhhefffsffaabbabchhabffccaf

10) faaadddddbbbccbaffbbbaabbabbbabbfcadcbfababadddab

11) gdadafghggfghababahbagggabcdcdcahhggaghhhgacagca

12) bbffdddedffdfdccdcadcddddacacacccaccaccadccfcc

 

13) abaacadbbaaaaadcda

14) aacaddddccdbbaaaaad

15) bbbacadbccadcbaaadcda

16) abaaabbccdabaacadb

 

17) 250-257, 200-207

18) 290-297, 170-177

19) 50-57, 60-67

20) 150-157, 141-148

21) 220-227, 300-307

22) 121-128, 145-152

23) 122-129, 146-153

24) 123-130, 147-154

25) 140-147, 170-177

26) 123-130, 296-303

Приложение 2. Инструкции по выполнению пп. 6-9 задания.

Программная реализация алгоритма сжатия RLE в виде процедуры (функции) может быть выполнена на любом доступном языке высокого уровня, таком как Pascal (в среде Delphi) или C++ (в средах Воrland Builder или Microsoft Visual), однако следует учитывать, что при вызове процедуры в основной программе используется т.н. «паскалевское»(__stdcall) соглашение о передаче параметров.

Процедура входит в динамическую библиотеку (DLL), которая подключается к основной программе. Взаимодействие происходит по следующей схеме:

1) основная программа RLE.exe загружает исходный файл изображения и динамическую библиотеку в оперативную память;

2) из динамической библиотеки вызывается функция CompressImage c четырьмя параметрами:

- pInBuf – массив исходных данных;

- pOutBuf – массив сжатых данных;

- nInSize – размер входных данных;

- nOutSize – размер сжатых данных.

Функция реализует алгоритм и формирует массив сжатых данных;

1) Основная программа компонует новый файл изображения и записывает его на “жесткий” диск.

 

Ниже приведён пример шаблона реализации в среде программирования Delphi:

- создать новый проект с именем “RLE” c помощью мастера создания динамической библиотеки выбрав пункт меню Project / Add New Project / DLL Wizard;

- добавить в проект файл Module1.pas, выбрав команду Project / Add to Project (шаблоны файлов RLE.dpr и Module1.pas см. ниже);

- скомпилировать библиотеку RLE.dll и перенести её в каталог основной программы RLE.exe.

 

 

/////////////////////////////////////////////////////// Файл RLE.dpr /////////////////////////////////

library RLE;

 

 

Uses

SysUtils,

Classes,

Module1 in 'Module1.pas'; {подключаем модуль файла Module1.pas}

Date: 2015-12-12; view: 486; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию