Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 61
Текст из файла (страница 61)
Тогда читатель сможет оценить современное состояние дел в области сжатия изображений. Представленные стандарты (на самом деле, мы рассмотрим лишь некоторые приближения к ним) разработаны для обработки широкого круга изображений, которым требуются весьма различные условия сжатия. При трансформационнам кослсровании используется некоторое обратимое линейное преобразование, например, дискретное преобразование Фурье 1)г Т (см.
гл. 4) или дискретное косинусное преобразование РСТ (1)евсгесе Сосйппв Тгапв|огш), которое задается уравнениями Т(и,и) = ) ~ Дх,у)ом(и)он(и)сов ~ ~ сов ~ ((2х+ 1)ия ) ((2у+ 1)ия) *=о »=о где — при и = О, ом(и) = — при и = 1, 2,..., ЛХ вЂ” 1 (и аналогичная формула для функции о»г(и)). При этом изображение Д(х, у) отображается в некоторое множество коэффициентов преобразования, которые (33з Г ВС б м затем квантуются и кодируются.
Для подавляющего числа естественных изображений существенная часть коэффициентов преобразования имеет малую амплитуду, и их можно грубо квантовать (или даже совсем отбросить), внеся тем самым в изображение незначительные искажения, практически незаметные для глаза. 8.5.1. ЛРЕС Одним из самых известных и широко применяемых универсальных стандартов сжатия изображений с непрерывными тонами является стандарт ПРЕС (эта аббревиатура образована из слов Зо1пг РЬо1обгарЫс Ехрегсв Сгоир, объединенная группа экспертов по фотографии). В базовой системе кодирования,)РЕС„основанной на дискретном косинусном преобразовании и годящейся для большинства приложений сжатия, входные и выходные изображения ограничены 8-и битным форматом представления компонент яркости и цветности, а длина представления коэффициентов 1ЭСТ равна 11 битам.
Как видно на упрощенной блок-схеме рис. 8.11, а), само сжатие совершается за четыре шага: извлечение подизображений размерами 8 х8, вычисление ПСТ, квантование и присвоение кодов переменной длины, т. е. кодирование. а) Входное изображение Сжатое изображение б) Сжатое изображение Восстановленное изображение Рис. 8.11. Блок-схема зРЕС: а) кодер; б) декодер Первый шаг процесса сжатия ПРЕС заключается в разделении входного изображения на непересекающиеся блоки пикселов размерами 8х8. Это выполняется последовательно в направлении слева направо и сверху вниз. Каждый блок 8х8 (подизображение) подвергается определенной обработке.
Все его 64 пиксела сдвигаются вычитанием числа 2 ', где 2 — это число уровней яркости изображения, после чего вычисляется дискретное косинусное преобразование ПОТ блока. Полученные коэффициенты нормируются и квантуются по правилу Ьа1Т(и, и) = гоипт1 ~ 1Т(и,и)~ ~У(и,и)~ где Т(и,и) при и,о = 0,1,2,...,7 обозначают нормированные и квантованные коэффициенты, Т(и, и) — коэффициенты ПОТ текущего блока 8 х8 изображения )'(х, у), а У(и, и) — нормирующая матрица преобразования, предписанная стандартом и приведенная на рис. 8.12, а).
Если менять элементы матрицы Я(и, и) пропорционально некоторому числу, то это позволяет варьировать коэффициент достигаемого сжатия, что отражается на качестве реконструированного изображения. д.д. Г д деде 33~5 1 '1' ( !6 ' !1 !О !6 24, 40 . 5! 6! ) 0 ! ) 5 ! 6 ! !4 !5 27 28 ' !2 ( !2 ' $4 ~ !9 26 ' 58 60 55 Рнс. 8.12. о) Нормировочная матрица ПРЕС! 6) Последовательность упорядочения коэффициентов по зигзагу в ПРЕС Тцпсс1оп у = Аш2)реЕ(х, с)ца11су) %1М2ЭРЕС Сошргеввев вл 1шабе цв1пЕ а ПРЕС арргох1ша01оп.
% У 1М2ЛРЕС(Х, ЦУА11ТУ) сошргеввев 1шайе Х Ьаве!1 оп 8 х 8 !)СТ % Сгапв1огшв, соеШ01епг с)папг1ва01оп, ап6 Нцггшап вушЬо1 % сос)1пЕ. 1прцс СОА11ТУ 6есегш1пев сЬе ашоцпс 01 1п1огшас1оп сЬас % 1в 1оаг апс) сошргевв1оп асййенес). У Хв ап епсос)1пЕ аггцсгцге % сопга1п1пЕ 11е14)в! % % % % У.в1ве У. зшшЫо с)св У.с)па11су 81ве 01 Х НцшЬег 01 8-Ьу-8 епсойе!) Ыос)св Цпа110у 1асгог (ав регсепг) После того, как коэффициенты ПСТ всех блоков будут проквантованы, элементы двумерных матриц Т(и, 0) переупорядочиваются в зигзагообразном порядке, показанном на рис.
8.12, б) последовательными числами О, 1, 2,..., 63, образуя одномерный массив. Поскольку полученные одномерные векторы (квантованных коэффициентов) упорядочены по возрастанию пространственной частоты, то сами они уменьшаются в этом направлении, и кодер символов на рис. 8.11, а) оптимизирован с учетом вероятного появления длинных серий нулей, которые обычно возникают после упорядочения зигзагом.
В частности, ненулевые коэффициенты АС д!т. е. все Т(и, н), кроме случая и = 0 = О) кодируются с использованием кодов переменной длины, которые определяют величины этих коэффициентов и число следующих за ними нулей. Коэффициенты ПС (т. е. Т(0, 0)) кодируются разностными кодами по отношению к коэффициентам ))С предыдущих подизображений. В стандарте имеются таблицы для кодов Хаффмана коэффициентов ПС и АС, которые используются при сжатии по умолчанию, но пользователь может построить свои собственные таблицы, а также задать свою нормировочную матрипу.
В последнем случае всю эту информацию придется добавить к сжатым данным в зарезервированную область параметров. Хотя полная реализация стандарта ПРЕС выходит за рамки этой главы, следующая М-функция моделирует процесс базового кодирования: ~~~336 Глава б. Сжатие иэвбраъеений % ЛРЕО аотша11х1аЕ аттау % аай х18-хаб теиотйет1аб % распета. % Ттиасасе Ста111аб 0'в, аио ЕОВ % аай аеЫ Со оисриС чессот % У.бий1шап % % % Бее а1зо ЗРЕ021М. еттот(патбсЬ)е(1, 2, ьптбта)); '/ СЬес)е 1арис атбишеасз 11 айсшз(х) = 2 ) 1зтеа1(х) ! 1вшппет1с(х) ) 1ва(х, 'и1пС8') еттот('ТЬе 1приС шивс Ье а 01НТ8 1шабе.'); еш1 11 аат51а < 2 Чиа11Су = 1; '/ Ре1аи1С ча1ие 1от Чиа11Су.
еш1 ш = [16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 Б4 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99] в с[иа11су; отйет = [1 9 2 3 10 17 25 18 11 4 5 12 19 26 ЗЗ 41 34 27 20 13 б 7 14 21 28 35 42 49 57 50 43 36 29 22 15 8 16 23 30 37 44 51 58 59 52 45 38 31 24 32 39 46 53 60 61 54 47 40 48 55 62 63 56 Б4]; [хш, ха] = з1яе(х); '/ ОеС 1арис в1хе. х = йоиЫе(х) - 128; '/. Ьече1 зЬ1ХС спрос с = дссшсх(8); % Сошрисе 8 х 8 ОСТ шаст1х '/ СошриСе ОСТв оХ 8х8 Ыос)ев ааб Чиаассхе СЬе сое111ссеасв. у = Ь1)ертос(х, [8 8], 'Р1 е х в Р2', с, с'); у = Ь1хргос(у, [8 8], 'топай(х ./ Р1) ', ш); у = 1ш2со1(у, [8 8], '41вс1исс'); % ВгеаЖ 8х8 Ыосхз 1асо со1ипшз хЬ = з1ке(у, 2); % Оес пшпЬет оХ Ыос)пв у = у(отйет, :); % Яеотбет со1иша е1ешеасв еоЬ = шах(х(:)) + 1; '/ СтеаСе еае)-о1-ЫосК вушЬо1 т = хетов(аише1(у) + вахе(у, 2), 1); соипс = 0; Хот ] = 1.хЬ % Ртосевв 1 Ыос)е (со1) ас а С1ше 1 = шах(т1аи(у(:, ]))); % Р1ад 1авС поа-вето е1ешеаС 11 1вешрпу(1) % Ио аоакето Ыос)п ча1иев 1=0; еш1 р = сопас + 1; Ч=Р+1' т(р:Ч) = [у(1:1.
]); еоЬ]; соиас = соипс + 1 + 1; епб в. в а авва зД г[[соппс + 1):епб) = []; у.в1зе = п1пс16([хш хп]); у.пошЫоскв = п1пС16[хЫ; у.г[па11Су = п1пС16[ппа11Су ь 100); у.Ьпггшап = шас2Ьпгг[г); '/ Ре1еСе пппвпе6 рогСАоп о1 г В соответствии с блок-схемой на рис. 8.11, а], функция Аш2]ре8 обрабатывает отдельные подизображения или блоки 8х8 входного изображения х (последовательно блок за блоком, но не все изображение сразу). Для упорядочения вычислений используются две функции обработки блоков Ь11гргос и 1ш2со1.
Функция Ы)гргос имеет стандартный синтаксис В = Ь1йргос[А, [И М], РРМ, Р1, Р2, ...). В = 1ш2со1(А, [И М], в61аС1псСв), где параметры А, В и [И М] имеют тот же смысл, что и в функции Ы[гргос, а строка в 61ас1псс в сообщает Аш2со1 о том, что обрабатываемые блоки не пересекаются; другая строка-параметр ' я1161вй ' сигнализирует о том, что необходимо строить один столбец В для каждого пиксела в А (как если бы блок скользил по изображению).
В процедуре 1ш2]реб функция Ы)гргос применяется для облегчения вычисления [)СТ, нормирования и квантования, а функция Аш2со1 упрощает упорядочение квантованных коэффициентов и отслеживание серий нулей. В отличие от стандарта ЛРЕС, функция 1ш2]реб обнаруживает только последнюю серию нулей в каждой упорядоченной последовательности коэффициентов квантованного блока, заменяя всю эту серию одним символом еоЬ (Епа] ОГ В!осй). Наконец, отметим, что в системе МАТ[ АВ имеется эффективная утилита, написанная на базе г г Т, которая выполняет [)СТ для больших изображений (см.
справку для функции йсс2). Тем не менее, 1ш2)реб использует альтернативную матричную Эта функция унифицирует весь процесс поблочной обработки изображения. Она принимает входное изображение А вместе с размерами блоков [М М], по которым требуется обрабатывать изображение, а также функцию РОМ, которая будет обрабатывать эти блоки, и некоторый опционный набор аргументов Р1, Р2, функции РРМ.
Затем функция Ывгргос разделяет А на блоки Ихй (используя заполнение нулями там, где блок выходит за рамки изображения), вызывает функцию РРМ для каждого блока с заданными параметрами Р1, Р2, ..., и, наконец, помещает результат в выходное изображение В. Другой функцией поблочной обработки, используемой в процедуре 1ш2]реб, является функция Аш2со1. Если функция Ы)гргос не годится для реализации специфических поблочных действий, функция 1ш2со1 может использоваться для переупорядочения входа так, чтобы операции можно было совершить проще и эффективнее (например, применяя векторизацию). Выходом Аш2со1 служит матрица, в которой каждый столбец состоит из элементов одного блока входного изображения.
Ее стандартизованный формат имеет вид (331 Г В. с б формулу т = НГН', где Е -- это блок 8х8 изображения /(х, у), Н -- матрица преобразования [)СТ, которая строится командой бссшсх(8), а Т вЂ” результат применения [)СТ к Р. Здесь верхний индекс т обозначает операцию транспонирования. При отсутствии квантования обратное преобразование [)СТ от Т вычисляется по формуле Г = НтТН. Эта формула особенно эффективна при обработке малых квадратных изображений (подобно 1)СТ 8х8 в )РЕП). Таким образом, команда у = Ь1йргос(х, [8 8], 'Р1яхеР2', Ь, Ь') вычисляет преобразование [)СТ изображения х по блокам 8х8 с использованием матрицы преобразования Ь и транспонированной матрицы Ь' в качестве параметров Р1 и Р2, которые являются множителями в формуле матричного произведения [)СТ Р1ехер2, играющего роль функционального параметра РСМ.
Аналогичная поблочная обработка и преобразование на основе матричных произведений (см, рис, 8.11, б)) применяются в процессе декодирования изображения, сжатого функцией 1ш2]реб. Приведенная ниже функция ]ре821ш выполняет всю необходимую последовательность обратных операций (за исключением квантования). Она использует общую функцию А = со121ш(В, [М И], [ММ ИИ], '61вс1псс') для воссоздания двумерного изображения из столбцов матрицы В, где каждый столбец по 64 элемента является блоком 8х8 реконструируемого изображения. Параметры А, В, [М М] и '61вС1псх' были определены при описании функции Аш2со1, а массив [ММ ИМ] обозначает размеры выходного изображения А. 1ппсс1оп х = )ре821ш(у) '/)РЕС21М Весобев ап 1М23РЕС сошргеввес( [шабе.