Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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) 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}
|