Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 60
Текст из файла (страница 60)
М-функции шаС21рс и 1рс2шаС реализуют процедуру кодирования/декодирования с предсказанием, описанную выше (за вычетом шагов символьного кодирования/декодирования). Функция кодирования шаС21рс использует цикл 1от для построения одновременного прогноза всех пикселов входа х. На каждом шаге итерации массив хв, который в начале равен х, сдвигается на одну позицию вправо (с нулевым заполнением слева), умножается на соответствующие коэффициенты предсказания и прибавляется к суммирующему массиву р. Поскольку обычно число коэффициентов линейного предсказания мало, процедура работает достаточно быстро.
Отметим, что при исполнении следующей программы, если фильтр предсказания 1 не задан на входе, то используется простейший фильтр, состоящий из одного числа 1. 1ппсСАоп у = шаС21рс(х, 1) '/ИАТ2ЬРС Сошртеввея а шаст1х пя1пя 1-() 1ояв1ез ртео1сС1пе соЖпб. '/ У = ИАТ2ЬРС(Х, Р) епсоп(ев шахт1х Х пв1пя 1-)) 1ояв1евв ртейусС1пе '/ со61пя.
А 11пеат ртео1сС1оп о1 Х 1я шап)е Ьавео оп СЬе '/. сое111с1еппя 1п Р. 11 Р Ав ош1ССео, Р = 1 (Тот ртен1опв рххе1 Х сой1пб) 1я азвпшес(. ТЬе рте61сС1оп еттот 1в СЬев сошриСей аш1 '/ опсрпС ав епсооеп( шастух У. Х '/ Бее а1яо ЬРС2ИАТ. еттот(патясЬЬ(1, 2, патя1п)); '/ СЬесЬ 1приС атяпшепсв 11 патя1п ( 2 '/ Бес п)е1ап1С 111Сет 11 ош1ССео 1=1; еш1 х = оопЬ1е(х); '/ Епвше п(опЬ1е Тот сошрптаС1опв [ш, и] = я1ие(х); '/ Сес Жшепя1опв о1 1прпС шаст1х р = иегов(ш, и); '/ 1п1С 11пеат ртеп(1сС1оп Со 0 хв = х; гс = иегов(ш, 1); '/ Ртерате 1от 1прпС вЬ11С апо рао Тот ] = 1:1епяСЬ(1) '/ Рот еасЬ 111Сет сое111суепС хз = [ис хв(:, 1:епо - 1)]; Х ЯЬ11С апй ието рао х р = р + 1(]) и хв; Х Ропп ратС1а1 ртед1сС1оп зашя епп) у = х — тоши$(р); '/ СошрпСе СЬе ртео1сС1оп еттот Функция декодирования 1рс2шаС совершает действия, обратные преобрззованиям функции кодирования шаС21рс. Как видно из следующего текста этой программы, она совершает и итераций цикла 1от, где и обозначает число столбцов (328 Г В.
Ь 1 Ю закодированной входной матрицы у. На каждой итерации вычисляется только один столбец выхода декодера х, поскольку для этого требуется знать все предыдущие столбцы. Для ускорения вычислений цикла 1ог матрица х расширяется до максимально необходимого размера перед началом цикла и заполняется нулями. Заметьте также, что предсказания вычисляются здесь точно в том же порядке, что и в функции 1рс2шаь.
В этом случае удается избежать ошибок округления в вычислениях с плавающей точкой. йшсС1оп х 1рс2шаС(у, 1) '/ЬРС2МАТ ))есошргеззез а 1-0 1овз1езз ргеййсС1че епсойей шаСг1х. '/ Х = ЬРС2МАТ(У, Р) йесойез 1приС шаьг1х Т Ьазей оп 11пеаг '/ ргей1сгйоп соетт1с1епьз 1п Р впй СЬе аззшьрьгоп оу 1-)) 1озв1езв Х ргеййсС1че сой1п8. 11 Р 1з ош1ССей, 111Сег Р = 1 (Тот ргеч1оиз '/ рйхе1 сой1п8) 1в аввшьей. '/ '/ Бее а1зо МАТ2ЬРС. етгог(пагбсЬЬ(1, 2, паг81п)); '/ СЬесЬ 1приС агбишепсз 11 паг81п < 2 '/ Бес йе1ап1С ШСет 11 ошйссей — 1; еш1 1 = 1(епй:-1:1); Х йечегзе СЬе 111Сет сое1г1с1епьз [ш, п] = з1хе(у); '/ СеС й1шепз1опз о1 оиьриС шаСг1х огйег = 1еп8СЬИ); '/ СеС огйег о1 11пеаг ргей1сСог 1 = тершаС(1, ш, 1); '/ йир11саье 111Сег 1ог чесьог1х1п8 х = хегоз(ш, п + отйег); '/ Рай Тот 1зС 'огйег' со1иьш йесойез '/ йесойе СЬе оисрис опе со1ишп аС а С1ше.
СошрпСе а ртей1сьйоп Ьавей '/ оп СЬе 'огйег' ргеч1оиз е1ешепгв апй айй 1С Со СЬе ргеййсС1оп '/ еггог. ТЬе гези1С 1з аррепйей Со СЬе оиСриС шагг1х Ье1п8 Ьи11С. Тот ) = 1:и )) = ) + огйег; х(:, ))) = у(:, )) + топай(зиш(1(:, огйег:-1:1) х(:, Ц2 — 1):-1: Ц) - огйег)), 2)); епй х = х(:, огйет + 1:еш1); '/ йешоче 1егь раййгаб Пример 8.5. Кодирование с предсказанием без потери информации. Рассмотрим кодирование изображения на рис. 8.7, в) с помощью простого линейного предсказателя первого порядка /[х,у) = гошп1[а/[х,у — 1)). Такую форму предсказания принято называть предсказанием по предыдущему пикселу, а соответствующая схема кодирования называется диффсренциальним кодированием или кодированием по предыдущему пиксслу.
На рис. 8.9, а) приведено изображение ошибки предсказания при о = 1. Здесь уровень яркости 128 .. иве «..в.:.~ ..,.„. ЗЪ) соонв~ кнвуез кв.н'воп опн1бк~ пред~ к'лвння. а не кулевьн (положнтедвНце н ог- ~330 г В. о б~ м Обратите внимание на высокий пик возле 0 и на относительно небольшую дисперсию гистограммы по сравнению с гистограммой распределения уровней исходного изображения (см. рис.
8.7, г)). Все это означает удаление значительной части межпиксельной избыточности в процессе дифференциального предсказания. (ь(ы завершим этот пример демонстрацией полного сохранения информации при кодировании по этой схеме. Для этого мы декодируем с и сравниваем результат с начальным изображением 1: » 1рс2шас(1ш112шас(с)); » сошраге(1, 8) 0 П 8А. Визуальная избыточность В отличие от кодовой и межпиксельной избыточности, визуальная избыточностьг связана с настоящей визуальной информацией, поддающейся количественному измерению.
Ее удаление желательно, поскольку эта информация сама по себе не существенна для обычного визуального восприятия. Поскольку уменьшение визуальных избыточных данных приводит к потери части количественной информации, этот процесс принято называть квантованием. Такая терминология хорошо согласуется с обычным смыслом этого слова, которое означает представление широкого набора величин с помощью ограниченного множества допустимых значений. Эта процедура не является обратимой (после ее совершения происходит невосполнимая утрата части информации), т. е, квантование приводит к потере части сжимаемых данных. Пример 8.6.
Сжатие посредством квантпования. Рассмотрим изображения на рис. 8.10. Рис. 8.10, а) показывает черно-белое изображение с 256 возможными градациями яркости. На рис. 8.10, б) представлено то же самое изображение после равномерного квантования на 16 уровней (4 бита). Полученный в результате коэффициент сжатия равен 2: 1. Заметим, что на некоторых областях изображения, которые были гладкими, появились ложные контуры. В этом проявляется обычный видимый эффект слишком грубого представления уровней яркости изображения. Рис.
8.10, в) иллюстрирует значительное улучшение изображения, возможное при использовании квантования, которое учитывает визуальные особенности зрительного аппарата человека. Несмотря на то, что коэффициент сжатия при этом квантовании также равен 2: 1, ложные контуры значительно ослаблены за счет некоторой дополнительной, но мало заметной зернистости. Заметим, что в обоих случаях полное восстановление изображения после декодирования остается невозможным (квантование является необратимым преобразованием). П В английском оригинале использовано словосочетание реуслое1вна1 геднпг(апву (псахоензуальная пзбмгпочоосгп.
Мы будем употреблять принятый в русскоязычной литературе термин еизуальнал озбмгпочность. Однако следует иметь в виру, что ета избыточность связана прежде всего с психофизическими особенностями зрения человека, ~332 Г В. с б с ЬС = п1пС8(2 "8 оопЬ)е(1о) 1); '/ Регйогш ясапоаго опапС1яагйоп пп1евв 108 1в вресШей Н паг81п ( 3 ~ всгсшр1 (Суре, '18в') у = ЫСапп(х, Ы); '/ Е1ве 108 опапсгяагйоп.
Ргосевв со1шшг-яйве. 11 СЬе МЯВ'в о1 СЬе '/ рухе1 аге а11 1'я, СЬе виш 1я яеС Со СЬе р1хе1 ча1пе. Е1ве, аоо '/ СЬе РСхе1 на1пе Со СЬе ЬЯВ'я ог СЬе ргег1опя впш. ТЬеп сайе СЬе '/ МЯВ'в о1 СЬе вша ав СЬе опапС1хед ча1пе. е1ве (ш, п) = вйхе(х); я = яегоя(ш, 1); ЫСевС = допЫе(ЬССапй(х, Ы) = Ь1); х = допбуе(х); гог ) = 1:и в = х(:, )) + ЫСевС(:, )) .я йопбйе(ЫСапИп1пС8(в), 1о)); у(:, )) = ЬССапд(пйпС8(в), Ь1); епй епд Модифицированное квантование яркости является весьма типичным представителем большого семейства процедур квантования, которые оперируют напрямую со значениями яркости пикселов сжимаемых изображений.
Они часто приводят к понижению как пространственного, так и яркостного разрешения изображений. Если изображение сначала отображается с целью сокращения межпиксельной избыточности, то дальнейшее квантование может привести к другим типам искажения в виде размытия тонких контуров (т. е.
к потере высокочастотных деталей), когда двумерное преобразование в частотной области используется для декорреляции данных. Пример 8.7. Сочегпание квантования /СЕ, кодирования с предсказанием без потерь и кодирования Хоффмана. Несмотря на то, что квантование, использованное при построении сжатого изображения на рис. 8.10, е), удаляет большую часть визуальной избыточности с весьма малым влиянием на воспринимаемое глазом качество изображения, дальнейшее сжатие можно получить, используя методы, изложенные в предыдущих двух параграфах, которые позволяют уменьшить межпиксельную и кодовую избыточности. На самом деле, мы можем более чем вдвое повысить сжатие, достигнутое при квантовании 1СЯ.
Следующая последовательность команд выполняет квантование 1СЯ, кодирование с предсказанием и кодирование Хаффмана, что позволяет сжать изображение на рис. 6.10, а) в четыре раза и более от его исходного размера: » 1 = Сшгеад('ВгпвЬев.СИ '); » й = йпялС1хе(Х, 4, '18в'); » йв = допЬ1е(о) / 18; » е = шаС21рс(пв); » с = шаС2Ьп11(е); » 1шгас1о(С, с) 4.1420 Закодированное изображение с можно разжать с помощью обратной последова- тельности операций (только без «обратного квантования»): » пе = )гп112шах(с); » пс)в = 1рс2шах(пе); » пс) = 16» пс1в; » сошраге(с1, ш1) елв О » гшве = сошраге(г, пс)) гшве = 6.8382 Отметим,что среднеквадратическое отклонение разжатого изображения от исходного равно приблизительно 7 уровням яркости, что происходит исключительно из-за процедуры квантования.
П 8.5. Стандарты сжатия ~РЕс.л Изложенные в предыдущем параграфе методы оперируют непосредственно с пикселами изображения, поэтому они называются методами квантования в пространственной области. В этом параграфе мы рассмотрим семейство популярных стандартов сжатия, которые основаны на модификациях преобразованного изображения. Наше цель заключается в описании использования двумерных преобразований при сжатии изображений, а также в рассмотрении некоторых новых приемов сокращения избыточности, которые обобщают подходы, изложенные в Я 8.2 — 8.4.