
ВОПРОСЫ_И_Лекции по КГ
.pdfАлгоритмы сжатия для формата .BMP
Формат BMP поддерживает простое RLE-сжатие изображений с 4 и 8 битами на пиксель.
Кодирование длин серий (RLE) является одной из простейших технологий сжатия. В этом методе данные сохраняются таким образом, что повторяющиеся значения замещаются числом, равным их количеству. Данный тип сжатия подходит только для изображений с множеством повторяющихся значений, например, мультипликационные рисунки. Для изображений многих типов кодирование длин серий (RLE) создает файл, размер которого больше исходного (отрицательное сжатие). Формат сжатых данных зависит от числа битов на пиксель.
Метод сжатия RLE8
В методе сжатия RLE8 сжимаемые данные разбиваются на 2-байтовые пары. Первый байт равен количеству повторяющихся значений пикселей, а второй байт равен значению пикселя, которое повторяется. В изображении с 8 битами на пиксель байтовая последовательность:
0816 0016 16 –ая система счисления разворачивается в следующую последовательность значений пикселей
0016 0016 0016 0016 0016 0016 0016 0016 0016 (первые 00 – счетчик повтора) Счетчик повторов равный нулю используется в качестве управляющего
кода. Нулевое значение, за которым следует другое нулевое значение, означает переход к следующей строке в изображении. Нулевое значение, за которым следует 1, означает конец изображения. Нуль, за которым следует байт, содержащий значение 2, изменяет текущее положение в изображении. Следующие два байта являются значениями без знака, которые равны, соответственно, числу столбцов и строк, на которые следует выполнить переход в новое положение. Этот код позволяет пропускать большое число пикселей с нулевыми значениями. Кодовая последовательность:
0416 1516 0016 0016 0216 1116 0216 0316 0016 0116
разворачивается в следующие две строки:
1516 1516 1516 1516
1116 1116 0316 0316
Конец изображения.
Из приведенного описания метода сжатия нетрудно заключить, что если изображение не содержит последовательных байтов с одинаковым значением, итоговый размер данных изображения превысит размер эквивалентных несжатых данных.
Метод сжатия RLE4
Формат RLE4 почти идентичен формату RLE8. Основное различие заключается в том, что при кодировании значений цвета байт данных, который следует за числом-счетчиком, содержит два значения пикселей. Значение четырех старших битов используется для кодирования первого и всех последующих нечетных пикселей в серии, в то время как четыре младших бита используются для кодирования второго и остальных четных пикселей. Таким образом, формат RLE4 позволяет кодировать серии одинаковых значений пикселя или два чередующихся значения. Данная закодированная пара:
61

0516 5616
разворачивается в следующую последовательность 4-битовых значений:
5 6 5 6 5
Все управляющие коды метода RLE4 совпадают с управляющими кодами метода RLE8. Заключение
Если вы разрабатываете программное обеспечение для чтения и записи графических файлов в среде Windows, формат Windows BMP будет наилучшим выбором для тестирования ваших программ. Его несложно реализовать и отладить, и, кроме того, файлы данного формата можно просматривать без использования специальных программных средств. При чтении или записи двоичных файлов изображений следует открывать их в двоичном режиме (binary mode).
Кодирование по Хаффману.
Один из классических алгоритмов, известных с 60-х годов. Использует только частоту появления одинаковых байт в изображении (статистическое кодирование). Сопоставляет символам входного потока, которые встречаются большее число раз, цепочку бит меньшей длины. И, напротив, встречающимся редко - цепочку большей длины. Длина кода для символа пропорциональна двоичному логарифму его частоты, взятому с обратным знаком. Для сбора статистики требует двух проходов по изображению. Классический алгоритм Хаффмана требует записи в файл таблицы соответствия кодируемых символов и кодирующих цепочек.
Для последовательности из 100 символов (см. рис.), в которой символ A встретится 50 раз, символ B - 24 раза, символ D - 15 раз, а символ C - 11 раз, данный код позволит получить последовательность из 176 бит, т.е. в среднем мы потратим 1.76 бита на символ потока. На практике используются различные разновидности алгоритма Хаффмана. Так, в некоторых случаях используется либо постоянная таблица, либо строится
62
"адаптивно", т.е. в процессе архивации/разархивации. Эти приемы избавляют от двух проходов по изображению и от необходимости хранения таблицы вместе с файлом. Коэффициенты компрессии: лучший 8, средний 1,5, худший 1. Единственный алгоритм, который не увеличивает размера исходных данных в худшем случае (если не считать необходимости хранить таблицу перекодировки вместе с файлом). Класс изображений: Практически не применяется к изображениям в чистом виде. Обычно используется как один из этапов компрессии в более сложных схемах. Симметричность: 2 (за счет того, что требует двух проходов по массиву сжимаемых данных).
Режимы сжатия JPEG
Первоначальный стандарт JPEG определял четыре режима сжатия: иерархический, прогрессивный, последовательный и без потерь
Последовательный режим
Последовательный режим является простейшим режимом JPEG. Последовательный режим сжатия обеспечивает кодирование изображения сверху вниз. Последовательный режим поддерживает дискретизацию данных с точностью 8 и 12 битов.
Впоследовательном JPEG каждый цветовой компонент полностью кодируется в один скан - блок сжатых данных, который содержит результаты одного прохода по изображению для одного или нескольких компонентов. В большинстве форматов все сжатые данные пикселов хранятся в одной непрерывной области файла. В формате JPEG каждый проход по изображению сохраняется в отдельном блоке данных, называемом сканом.
Врамках метода последовательного сжатия стандарт JPEG определяет два альтернативных процесса кодирования. Один использует кодирование Хаффмана (Huffman), а в другом применяется арифметическое кодирование.
Прогрессивный режим
В JPEG-изображениях с прогрессивным сжатием компоненты кодируются во множестве сканов. Сжатые данные для каждого компонента помещаются не менее чем в 2, и не более чем в 896 сканов, хотя фактическое их число почти всегда находится на нижней границе этого диапазона. Начальные сканы создают грубую версию изображения, тогда как последующие сканы улучшают его качество. Изображения с прогрессивным сжатием предназначены для просмотра во время их декодирования. Они удобны, когда изображение загружается по сети или просматривается в Web-браузере, поскольку позволяют пользователю получить представление о содержании изображения после передачи как минимально возможного количества данных.
Основные недостатки прогрессивного режима заключаются в том, что его труднее реализовать, чем последовательный режим, а также в том, что если изображение просматривается по мере его загрузки, требуется значительно больший объем обработки. Прогрессивный JPEG наиболее выгоден тогда, когда относительная вычислительная мощность превышает относительную скорость передачи изображения. В целом, размеры файлов изображений, сжатые в
63
прогрессивном и последовательном режимах, примерно одинаковы, прогрессивный режим встречается редко.
Иерархический режим
Иерархический JPEG представляет собой суперпрогрессивный режим, в котором изображение разделяется на множество фрагментов, называемых кадрами. Кадр представляет собой группу из одного или нескольких сканов. В иерархическом режиме первый кадр создает версию изображения с низким разрешением. Остальные кадры улучшают качество изображения путем повышения разрешения.
Сторонники этого метода утверждают, что при низкой скорости передачи данных иерархический режим лучше, чем прогрессивный режим. Если нужно получить только изображение с низким разрешением, для достижения желаемого результата достаточно использовать только часть из всех существующих кадров.
Очевидным недостатком иерархического режима является его сложность. а использование множества кадров увеличивает количество данных, которые должны передаваться.
Режим сжатия без потерь
Первоначальный стандарт JPEG определял режим сжатия без потерь, который всегда сохраняет точное исходное изображение. Режим без потерь никогда не может достичь такого же сжатия, как режим сжатия с потерями. Более того, в большинстве случаев применения он не обеспечивал такого же сжатия, как форматы, существовавшие на тот момент, поэтому не было побудительных причин для его использования. В настоящее время разработан новый метод сжатия без потерь, известный как JPEG-LS, что сделало первоначальный формат сжатия без потерь морально устаревшим для всех практических сфер применения.
Режимы арифметического кодирования защищены патентами, и чтобы их использовать, необходимо платить за лицензию владельцам патентов. Кодирование Хаффмана и арифметическое кодирование используются разными процессами для выполнения идентичных функций. Если два метода делают одно и то же, но применение одного из них требует лицензионных выплат, а применение второго - нет, который из них вы бы выбрали? Помимо вопросов оплаты лицензии, патенты делают невозможным создание общедоступных (бесплатных) реализаций некоторых функций JPEG.
Это составляет важнейшую причину того, почему большинство режимов кодирования JPEG редко используются на практике. Для того чтобы формат графического файла получил всеобщее признание, кто-то должен разработать программное обеспечение для работы с этим форматом и сделать его доступным для других пользователей. Формат изображений, который нельзя использовать для обмена данными между множеством различных программ, малополезен. Проблема реализации усложняется тем, что стандарт JPEG бесплатно не доступен. Стандарты всех других основных форматов графических файлов обращаются свободно, но с JPEG это не так. Вы должны приобрести копию стандарта у своего национального представителя международной организации по стандартизации (ISO), а это недешево. Если формат слишком сложен, обладает ограниченным значением или требуется плата за лицензию, маловероятно, что
64
кто-либо возьмет на себя хлопоты по написанию для него программного кода и сделает этот код общедоступным.
Это алгоритм сжатия с потерями придуманный Объединенной группой экспертов по фотографии (Joint Photographic Experts Group). Хорошо подходит для фото-изображений, имеет коэффициент сжатия до 20. В нем изображение проходит через несколько стадий сжатия:
1.Сначала изображение прореживается по цвету. Человеческий глаз более чувствителен к изменениям яркости, чем и изменению цвета. Сначала изображение переводится в систему YUV (Y-яркость, U,V- цветовые составляющие). Затем цветовые составляющие прореживаются, так, что из каждого квадратика пикселей 2х2 исходного изображения получается один пиксель (фактически изображение приводится к вдвое меньшему разрешению). За счет этого происходит сжатие в
(4+4+4)/(4+1+1)=2,66 раз.
2.Изображение разбивается на квадратики 8х8 пикселей и к каждому такому квадратику применяется дискретное косинусное преобразование (по каждой составляющей). Его цель – перейти к спектру значений яркости и цветности в квадратике. Так как глаз более чувствителен к низкочастотным составляющим спектра, а высокочастотные воспринимаются как шум – можно отбросить несколько высокочастотных коэффициентов, и за счет этого получить сжатие. Чем больше коэффициентов будет отброшено, тем больше коэффициент сжатия и искажения изображения.
3.Наконец, эти коэффициенты кодируются с помощью RLE и Хаффмана.
Алгоритм сжатия данных LZW
Алгоритм основан на поиске и замене в исходном файле одинаковых последовательностей данных для их исключения и уменьшения размера файла, алгоритм сводит избыточность к минимуму. Кодируются часто встречающиеся последовательности символов, а не один символ. Программа алгоритма просматривает файл с байтами графической информации и выполняет статистический анализ для построения кодовой таблицы. Данный тип сжатия не вносит искажений в исходный графический файл и подходит для обработки растровых данных любого типа: чернобелых, монохромных, полноцветных. Лучшие результаты получаются при компрессии изображений с большими областями одного цвета или с повторяющимися структурами.
Алгоритм S3TC.
Это алгоритм сжатия текстур (S3 Texture Compression). Это достаточно простой метод, изображение разбивается на квадратики 4х4, каждый квадратик приводится к палитре в 4 цвета. Таким образом, начальное изображение пакуется с коэффициентом (16*4*4)/(16*4+2*4*4)=2,66. Это сжатие с потерями. При этом распаковка происходит очень быстро, что важно для текстур.
Алгоритм MPEG.
65

Это алгоритм сжатия видео, здесь используется предположение, что соседние кадры мало отличаются друг от друга. Поэтому достаточно описать лишь разницу между ними. В этом алгоритме изображение, как и в JPEG, прореживается по цвету, а затем разбивается на блоки 16x16. Первый кадр кодируется как обычное изображение, а для последующего для каждого блока ищется наиболее похожий блок в предыдущем кадре. Причем он может быть смещен на некоторый вектор. Если блоки совпадают полностью – можно просто сохранить этот вектор, если отличаются – то можно сохранить разницу между ними, она должна занять меньше места, чем сам блок. Кроме того, можно посчитать среднее между блоком с предыдущего кадра и блоком со следующего, которое может лучше соответствовать данному.
Существует три типа закодированных кадров. I-фремы - это кадры, закодированные как неподвижные изображения - без ссылок на последующие или предыдущие. Они используются как стартовые.
P-фреймы - это кадры, предсказанные из предыдущих I- или P-кадров. Каждый блок в P-фрейме может идти с вектором и разностью коэффициентов ДКП от соответствующего блока последнего раскодированного I или P, или может быть закодирован как в I, если не соответствующего блока не нашлось.
И, наконец, существуют B-фреймы, которые предсказаны из двух ближайших I или P-фреймов, одного предыдущего и другого - последующего.
Понятие цвета
Цвет чрезвычайно важен в компьютерной графике как средство усиления зрительного впечатления и повышения информационной насыщенности изображения. Ощущение цвета формируется человеческим мозгом в результате анализа светового потока, попадающего на сетчатку глаза от излучающих или отражающих объектов. Восприятие цвета зависит от физических свойств света, т. е. электромагнитной энергии, от его взаимодействия с физическими веществами, а также от их интерпретации зрительной системой человека. Зрительная система человека воспринимает электромагнитную энергию с длинами волн от 400 до 700 нм как видимый свет (1 нм = 10-9м). Свет принимается либо непосредственно от источника, например электрической лампочки, либо косвенно при отражении от поверхности объекта или преломлении в нем. Источник или объект является ахроматическим, если наблюдаемый свет содержит все видимые длины волн в приблизительно равных количествах. Ахроматический источник кажется белым, а отраженный или преломленный ахроматический свет - белым, черным или серым. Белыми выглядят объекты, ахроматически отражающие более 80% света белого источника, а черными - менее 3%. Промежуточные значения дают различные оттенки серого. Хотя трудно определить различие между светлотой и яркостью, светлота обычно считается свойством несветящихся или отражающих объектов и изменяется от черного до белого, а яркость является свойством самосветящихся или излучающих объектов и
66
изменяется в диапазоне от низкой до высокой. Если воспринимаемый свет содержит длины волн в произвольных неравных количествах, то он называется хроматическим. Если длины волн сконцентрированы у верхнего края видимого спектра, то свет кажется красным или красноватым, т. е. доминирующая длина волны лежит в красной области видимого спектра. Если длины волн сконцентрированы в нижней части видимого спектра, то свет кажется синим или голубоватым, т. е. доминирующая длина волны лежит в синей части спектра. Однако сама по себе электромагнитная энергия определенной длины волны не имеет никакого цвета. Ощущение цвета возникает в результате преобразования физических явлений в глазу и мозге человека. Цвет объекта зависит от распределения длин волн источника света и от физических свойств объекта. Объект кажется цветным, если он отражает или пропускает свет лишь в узком диапазоне длин волн и поглощает все остальные. При взаимодействии цветов падающего и отраженного или пропущенного света могут получиться самые неожиданные результаты. Например, при отражении зеленого света от белого объекта и свет, и объект кажутся зелеными, а если зеленым светом освещается красный объект, то он будет черным, так как от него свет вообще не отражается. Представление света определяется цветовым тоном, насыщенностью и светлотой. Цветовой тон позволяет различать цвета, а насыщенность - определять степень ослабления (разбавления) данного цвета белым цветом. У чистого цвета она равна 100% и уменьшается по мере добавления белого. Насыщенность ахроматического цвета составляет 0%, а его светлота равна интенсивности этого света. Психофизическими эквивалентами цветового тона, насыщенности и светлоты являются доминирующая длина волны, чистота и яркость. Электромагнитная энергия одной длины волны в видимом спектре дает монохроматический цвет. Обычно встречаются не чистые монохроматические цвета, а их смеси. В основе трехкомпонентной теории света служит предположение о том, что в центральной части сетчатки находятся три типа чувствительных к цвету колбочек. Первый воспринимает длины волн, лежащие в середине видимого спектра, т. е. зеленый цвет; второй - длины волн у верхнего края видимого спектра, т. е. красный цвет; третий - короткие волны нижней части спектра, т. е. синий. Относительная чувствительность глаза максимальна для зеленого цвета и минимальна для синего. Если на все три типа колбочек воздействует одинаковый уровень энергетической яркости (энергия в единицу времени), то свет кажется белым. Естественный белый свет содержит все длины волн видимого спектра; однако ощущение белого света можно получить, смешивая любые три цвета, если ни один из них не является линейной комбинацией двух других. Это возможно благодаря физиологическим особенностям глаза, содержащего три типа колбочек. Такие три цвета называются основными.
В машинной графике применяются две системы смешения основных цветов: аддитивная - красный, зеленый, синий (RGB) и субтрактивная - голубой, пурпурный, желтый (CMY). Цвета одной системы являются дополнительными к другой: голубой - к красному, пурпурный - к зеленому, желтый - к синему. Дополнительный цвет - это разность белого и данного цвета: голубой это белый минус красный, пурпурный - белый минус зеленый, желтый - белый минуc синий. Хотя красный можно считать дополнительным к голубому, по традиции красный, зеленый и синий считаются основными цветами, а голубой, пурпурный, желтый - их дополнениями. Интересно, что в спектре радуги или призмы пурпурного цвета нет, т. е. он порождается
67
зрительной системой человека. Для отражающих поверхностей, например типографских красок, пленок и несветящихся экранов применяется субтрактивная система CMY. В субтрактивных системах из спектра белого цвета вычитаются длины волны дополнительного цвета. Например, при отражении или пропускании света сквозь пурпурный объект поглощается зеленая часть спектра. Если получившийся свет отражается или преломляется в желтом объекте, то поглощается синяя часть спектра и остается только красный цвет. После его отражения или преломления в голубом объекте цвет становится черным, так как при этом исключается весь видимый спектр. По такому принципу работают фотофильтры. Аддитивная цветовая система RGB удобна для светящихся поверхностей, например экранов ЭЛТ или цветных ламп.
Физические характеристики светового потока определяются параметрами мощности, яркости и освещенности. Визуальные параметры ощущения цвета характеризуются светлотой, то есть различимостью участков, сильнее или слабее отражающих свет. Минимальную разницу между яркостью различимых по светлоте объектов называют порогом. Величина порога пропорциональна логарифму отношения яркостей. Последовательность оптических характеристик объекта (расположенная по возрастанию или убыванию), выраженная в оптических плотностях или логарифмах яркостей, составляет градацию и является важнейшим инструментом для анализа и обработки изображения.
Способы описания цвета
В компьютерной графике применяют понятие цветового разрешения (другое название — глубина цвета). Оно определяет метод кодирования цветовой информации для ее воспроизведения на экране монитора. Для отображения чернобелого изображения достаточно одного бита (белый и черный цвета). Восьмиразрядное кодирование позволяет отобразить 256 градаций цветового тона. Два байта (16 бит) определяют 65 536 оттенков. При 24-разрядном способе кодирования возможно определить более 16,5 миллионов цветов
С практической точки зрения цветовому разрешению близко понятие цветового охвата, имеется в виду диапазон цветов, который можно воспроизвести на устройствах вывода. Цветовые модели расположены в трехмерной системе координат, которая образует цветовое пространство. При этом исходят из законов Грассмана о том, что цвет можно выразить точкой в трехмерном пространстве.
Первый закон Грассмана (закон трехмерности)
Любой цвет однозначно выражается тремя составляющими, если они линейно независимы. Линейная независимость заключается в том, что невозможно получить любой из этих трех цветов сложением двух остальных.
Второй закон Грассмана (закон непрерывности)
При непрерывном изменении излучения цвет смеси непрерывно меняется. Не существует такого цвета, к которому нельзя подобрать бесконечно близкий.
Третий закон Грассмана (закон аддитивности)
Цвет смеси излучений зависит только от их цвета, но не спектрального состава.
Цветовая модель CIE Lab
В1920 году была разработана цветовая пространственная модель CIE Lab
L,a,b — обозначения осей координат в этой системе). Система является аппаратно независимой и потому часто применяется для переноса данных между устройствами. В модели CIE Lab любой цвет определяется светлотой (I) и хроматическими
68

компонентами: параметром а, изменяющимся в диапазоне от зеленого до красного, и параметром b, изменяющимся в диапазоне от синего до желтого. Цветовой охват модели CIE Lab значительно превосходит возможности мониторов и печатных устройств, поэтому перед выводом изображения, представленного в этой модели, его приходится преобразовывать. Данная модель была разработана для согласования цветных фотохимических процессов с полиграфическими. Сегодня она является принятым по умолчанию стандартом для программы Adobe Photoshop.
CIE Lab состоит из трѐх каналов:
L (Lightness) — устанавливает координаты света (100) и тени (0);
a — спектр от зеленого (-128) до пурпурного (127);
b — спектр от голубого (-128) до желтого (127).
Lab представляет собой трѐхмерное пространство, где отрицательные значения a и b содержат холодные цвета, положительные — тѐплые. Ось L определяет светлость, где 100 — участок, соответствующий диффузному белому. Изменение параметров L не влияет на насыщенность цвета
— он сохраняет естественные свойства так же, как в реальности цвет не становится грязнее от того, что на него падает тень. Черно-белая гамма получается при нулевых значениях координат a и b.
CIE Lab призвана стать аппаратно независимой моделью и определять цвета без оглядки на особенности устройства (монитора, принтера, печатного станка и так далее). В отличие от других цветовых моделей впервые цвет описан не в терминах элементов, которые воспроизводятся устройствами, а с использованием трех составляющих цветового зрения человека. В этой модели любой цвет определяется светлотой ( L- Lightness ) и двумя хроматическими компонентами: канал a - это цвета от темно-зеленого через серый до пурпурного цвета, канал b - это цвета от синего через серый до желтого. Каналы a и b меняются от -128 до 127, а параметр L от 0 до 100. Нулевое значение цветовых компонентов при яркости 50 соответствует серому цвету в модели RGB (119,119,119). При значении яркости 100 получается белый цвет, при 0 - черный.
69
Графическое представление цветовой модели Lab.
В Lab параметр яркости L полностью отделен от изображения, поэтому в случаях где нужно заменить цвет или повысить насыщенность изображения удобно использовать эту модель, влияя только на цветовые составляющие a и b. Регулировка контраста, резкости и других тоновых характеристик изображения возможна за счет изменения параметра яркости L. Примечательно, что при конвертации в Lab все цвета сохраняются. Можно перевести изображение в режим Lab, выполнить в нем коррекцию изображения, а затем безболезненно перевести результат обратно в режим RGB. Цветовой охват Lab шире, чем RGB, поэтому каждое повторное преобразование из одного режима в другой достаточно безопасно. Это свойство Lab очень важно для полиграфии. Программа Adobe Illustrator и Adobe Photoshop использует цветовую модель Lab в качестве "посредника" при любом конвертировании из модели в модель. Помимо этого, модель Lab можно использовать в следующих случаях: при печати на принтерах с PostScript Level 2 и 3, при работе с форматом PhotoCD, при конвертировании цветного изображения и серую шкалу.
70