Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 62
Текст из файла (страница 62)
'/ Х = БРЕС21М(У) с(есобев сошргеввеб [шабе У, Бепегас1пБ % гесопвсгцссед арргох1шас1оп Х. У Ав а всгцссцге Еепегасеб Ьу Х 1М23РЕС. у Х Вее а1во 1М2ЛРЕС. еггог(пагбсЬЬ(1, 1, паг81п)); '/ СЬесй 1прцс агБцшепсв ш = [16 11 10 16 24 40 51 61 '/ СРЕС погша11в1пБ аггау 12 12 14 19 26 58 Б0 55 '/. апб х18-хаЕ геога пб 14 13 16 24 40 57 69 56 '/ раххегп. 14 17 22 29 51 87 80 62 18 22 37 ББ 68 109 103 77 24 35 55 64 81 104 113 92 ~Для вычисления РСТ блока т размерами Вкб с помощью матричной операции Ьегек', следует все ек(в). д.. д д дддд Зддкддд 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99]' огбег = [1 9 2 3 10 17 25 18 11 4 5 12 19 26 33 41 34 27 20 13 б 7 14 21 28 35 42 49 57 50 43 Зб 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 бб 64] геч = огаег; '/ Сошрцсе 1пчегве огс(ег1пб 1ог к = 1:1епЕСЬ(огаег) геч(к) = 11па(огаег == к); епб ш = боиЫе(у.9па11Су) / 100 * ш; '/ ОеС епсо61пб цпа11Су.
хЬ = аоцЫе(у.ппшЫоскв); '/ ОеС х Ыоскв. вх = аопЫе(у.в1хе); хп = вх(2); хш = вх(1); х = Ьц112шаС(у.йпггшап); еоЬ = шах(х(:)); х = иегов(64, хЬ); к = 1; 1ог ] = 1:хЬ 1ог 1 = 1:64 11 х(К) == еоЬ й = й + 1; Ьгеак; е1ве х(1, ]) = х(а); )с=а+1; епб епа еш1 г = г(геч, :); х = со121ш(х, [8 8], [хш хп], д61вС1пссд); х = Ь1кргос(х, [8 8], 'х .к Р1', ш); С = бссшсх(8); х = Ыкргос(х, [8 8], 'Р1 к х к Р2', С', С); х = п1пС8(х + 128); '/ Оес х со1пшпв. '/ Оес х гоев. '/ Нпггшап бесо<1е. '/ Оес епб-о1-Ыоск вушЬо1 '/ Рогш Ыоск со1пяшв Ьу сору1пб '/ впссевв1че на1пев Хгош х 1псо '/ со1пшпв оХ х, иЬ11е сЬап81пб '/ Со СЬе пехС со1пшп яЬепечег '/ ап ЕОН вушЬо1 1в Хоппа. '/ Кевсоге огбег '/ Рогш шасг1х Ыоскв '/ Репогша11хе РСТ '/ Оес 8 х 8 РСТ шасг1х '/ Сошрпсе Ыоск РСТ-1 '/ Еече1 вЬТХС Пример 8.8. Сжатие ПРЕС.
На рис. 8.13, а) и б), приведены два кодированные и декодированные изображения ПРЕС, которые являются приближениями одного и того же исходного черно-белого изображения на рис. 8.4, а). Первый результат, имеющий коэффициент сжатия примерно 18 к 1, получен прямым использованием стандартной нормирующей матрицы на рис.
8.12, а). Второе изображение, имеющее коэффициент сжатия 42 к 1, построено при умножении нормирующей матрицы на 4, что соответствует более грубому квантованию. » 1втат1о(1, с1) апв 18.2450 » сошраге(т, 11, 3) 2.4675 » с4 = 1ш2)ре8И, 4); » 14 = )ре821ш(с4); » 1штат 1о (т, с4) 41.7828 » сошрате(1, 14, 3) 4.4184 Эти результаты отличаются от тех,которые получаются при сжатии настоящим стандартом ПРЕС, поскольку наша программа 1ш2)реб лишь моделирует процесс кодирования Хаффмана, заложенный в стандарт )РЕС. Имеется два принципиальных отличия, заслуживающих внимания: (1) в стандарте все серии нулевых коэффициентов кодируются по Хаффману, а в 1в2)ре8 кодируется лишь завершающая серия нулей каждого блока; (2) кодер и декодер стандарта используют (по умолчанию) предписанный код Хаффмана, в то время как 1ш2)ре8 получает информацию, необходимую для реконструкции таблицы кодовых слов из самого изображения.
Если использовать полный стандарт ЗРЕС, то коэффициент сжатия повысится еще примерно в два раза. П 8.5.2. ЛРЕС 2000 Как и первоначальная реализация ЗРЕС, рассмотренная в предыдущем параграфе, алгоритм сжатия стандарта ПРЕС 2000 основан на идее, что коэффициенты преобразования, которое декоррелирует пикселы изображении, можно кодировать более эффективно, чем сами исходные пикселы. Если базисные функции преобразования — вейвлеты в случае ПРЕС 2000 — пакуют самую важную часть визуальной информации в относительно малое число коэффициентов, то оставшиеся коэффициенты можно грубо проквантовать или вовсе обнулить, что приведет лишь к малым искажениям сжатого изображения. Рис.
8.14 показывает упрощенную систему кодирования ДРЕС 2000 (в ней отсутствует несколько опционных операций). Первый шаг процесса кодирования, как и в исходном стандарте ПРЕС, состоит в сдвиге в нуль среднего уровня яркости пикселов, которое достигается вычитанием из всех пикселов числа 2 где 2 — общее число возможных уровней яркости. Затем вычисляется одномерное дискретное вейвлетное преобразование строк и столбцов изображения. При сжатии без потерь используется биортогональное вейвлетное преобразова- Г 342 (лана Е Сэм ага иг аиебра вгенггп а С ние 5 3".
В ггритоанениях, ног гргае попуска1ог потерю ипфорчаггигг. испопьзуетгя 4. С ли ЬГЕС ЗДЗ функциям в18пз и 11оот в МАТЮКАВ). Шаг квантования /1а задается выражением /1а = 2 ' е" (1 + — „) . Здесь Ка номинальный динамический диапазон поддиапазона Ь, а еа и да— число битов, отводил~ых под величины порядка и мантиссы его коэффициентов.
Номинальный динамический диапазон Ь равен сумме числа битов, используемых для представления исходного изображения, и числа дополнительных битов анализа поддиапазона 6. Числа дополнительных битов анализа заключены в черные кружочки на рис. 8.15. Например, для поддиапазона Ь = 1НН отводится 2 дополнительных бита анализа. Для сжатия без потерь используются следующие значения параметров: /еа = О, Ла = еы /Хь = 1. Для необратимого сжатия в стандарте не предусмотрено никакого конкретного шага квантования. Вместо этого декодер должен знать число битов порядка и мантиссы, которое или передается вместе с каждым поддиапазоном (это называется явным квантованием), или же только с поддиапазоном Хь/,/, /неявное квантование).
В последнем случае остальные поддиапазоны квантуются с использованием значений параметров, экстраполированных по параметрам поддиапазона Аь/.0. Полагая, что ее и де — это известное число битов, отводимых для поддиапазона Ь/ь/Ь, параметры для поддиапазона Ь вычисляются по формулам дь = до, еь = ео + пяль пасха, где пвг/а обозначает число уровней декомпозиции от исходного изображения до поддиапезона Ь. Финальным шагом процесса сжатия является кодирование квантованных коэффициентов с помощью метода арифметического кодирования на основе битовых плоскостей. Мы здесь не обсуждаем метод арифметического кодирования, который, подобно схеме Хаффмана, представляет собой эффективный вариант кодирования кодами переменной длины, разработанный для сокращения кодовой избыточности.
Приводшиая далее функция 1ш2) ре82к моделирует процесс кодирования )РЕС 2000 на рис. 8.14, а/ за исключением этапа арифметического символьного кодирования. Как видно из текста этой функции, вместо этого для простоты используется кодирование Хаффиана, расширенное кодированием длин нулевых серий. 1ппст1оп у = 1ш2)ре821с(х, и, ц) %1И2ЛРЕС2К Сошртеввев еп 1шайе пв1пЕ а ПРЕС 2000 арртох1шат1оп. % У = 1М23РЕС2К(Х, Н, Ц) сошртеввев 1шайе Х пв1п8 ап Н-вса1е зРЕС % 2К иаве1ес стапв1отш, 1шр11сйс от ехр11с1с соехх1с1епс % циапс1вас1оп, апд Нпххшап вушЬо1 соб1п8 апйшепсеб Ьу вето % тпп-1епбпЬ сод1пК.
11 опапп1гас1оп нессот 0 соппатпв Сио % е1ешепсв, ЬЬеу ате аввцшеб Со Ье 1шр11с1с с1папс1вас1оп % раташесегв; е1ве, хс хв аввпшеб со сопсахп ехр) Хсхп впЬЬапб втер % вйвев. У 1в ап епсод1пЕ всгпссрге сопса1п1п8 Нпххшап-епсобес1 % баса апд ас141с1опа1 рагашесетв пеебец Ьу СРЕС2К21Н Хот е1есоЫпК. ЗДля любого числа х функция в1вв(х) возвращает Ц если х больше нуля, Е, если оно равно нулю и -ц если меньше нуля. [ 344 Глава 8.
Сжатие изображений % % Яее а1зо ЛРЕ02К21М. 81оЬа1 ВОМЯ еггог(пагЯсЬЫ(3, 3, паг81п)); % СЬесЬ 1прпс агЯпшепсв 11 пдгшв(х) = 2 ) 1згеа1(х) ( 1вппшег1с(х) ( 1ва(х, 'п1пс8') еггог('ТЬе 1прпс шпаг Ье а ОТМТ8 1шаяе.'); епд 11 1епЯСЬ(8) = 2 й 1епЯСЬ(с() = 3 е и + 1 еггог('ТЬе цпапс1хас1оп всер вахе нессог 1в Ьад.'); епд % Ьече1 вЬ11с сЬе 1прпс апд сошрпсе 1сз чане1ей сгапзХогш. х = допЬТе(х) — 128; [с, в] = вачеХавг(х, и, ']рея9.7'); % Цпапй1ге СЬе чаче1ег соеШс1епгв. 9 = всерв1хе(п, ~[); вяп = вгяп(с); вяп(11пд(вяп == 0)) = 1; с = аЬв(с); 1ог Ь = 1:и =ЗеЬ-2; с = юачеравге('Ь', с, з, Ь, чачесору('Ь', с, з, Ь) / я(81)); с = чачеразйе('»', с, в, И, вачесору('ч', с, в, М) / 8(ср + 1)); с = чанеразсе('д', с, з, Ь, чачесору('д', с, в, И) / ~[(~)1 + 2)); епд с = вачеравсе('а', с, в, Ь, яачесору('а', с, з, Ь) / о(с(1 + 3)); с = 11оог(с); с = с .ч вяп; % Впп-1епЯСЬ соде хего гппв ой шоге СЬап 10.
Ве81п Ьу сгеаг1пЯ % а врес1а1 соде Хог 0 гппз ('хгс') апд епд-о1-соде ('еос') апд % ша)с1пЯ а гпп-ХепЯсЬ саЬ1е. хгс = ш1п(с(:)) — 1; еос = ягс - 1; КОНЯ = [65535]; % Р1пд СЬе гпп Сгапз111оп ро1пзв: 'р1пв' сопйагпв СЬе 1пдех о1 СЬе % зсагс оХ а хего гпп; сЬе соггевропд1пя 'ш1ппв' 1в 11в епд + 1. х = с == 0; г = х — [О х(1:епд — 1)]; р1пв = 11пд(х == 1); ш1ппв = 1гпд(х == -1); % Нешоче апу сегш1пас1пЯ гего гпп 1гош 'с'.
11 1епяСЬ(р1пв) = 1епяСЬ(ш1ппв) с(р1пв(епд):епд) = П; с = [с еос]; епд % Нешоче а11 оСЬег хего гппв (Ьавед оп 'р1пв' апд 'шгппв') 1гош 'с'. 1ог 1 = 1епдсЬ(ш1ппв):-1:1 гпп = ш1ппв(1) — р1пз(1); 11 гпп > 10 очг11о = 11оог(гпп / 65535); гпп = гпп — очг11о е 65535", с = [с(1:р1пв(1) - 1) гершаг([хгс 1], 1, очг11о) хгс гппсоде(гпп) с(ш1ппв(1):епд)]; епд епд % Нпггшап епсоде апд адд шгвс. 1п1огшаггоп Хог десод1п В.д.
д д дддд З~дд/ о1 С16(БОМБ); игас16(в(:)); о1пс16(-вгс); п1пс16(100 е Ч'); п1пс16(п); шас2Ьи11(с); у.гппв у.в у.хгс У Ч у.п у.Ьп11шап %-— / 1ппсСАоп у = пшсобе(х) % р1пп а вето тип 1п СЬе тип-1епБСЬ СаЫе. 11 пес 1ооп6, сгеасе а % пев епсгу Ап сье саЫе. Яесигп сье 1пйех о1 сье гпп. 81оЬа1 БОМБ у = 1пп$(ЕБМБ == х); 11 1епБСЬ(у) = 1 ЕБМБ = (МБМБ; х); у = 1епБСЬИШМБ); енса %- % 1опсс1оп Ч = втерв1хе(п, р) % Стеасе а воЬЬапп Чоапс1хас1оп аггау оу эсер вгвев огоегео Ьу % 6есошровАСАоп (т1гвс Со 1авС) апо впЬЬапй (Ьог1гопса1, негс1са1, % 61аБопа1, ап6 1ог 11па1 оесошров1С1оп СЬе арргох1шаС1оп воЬЬап6).
11 1епБСЬ(р) == 2 % 1шр11с1С Циапс1вас1оп Ч = П; Чп = 2 "(8 — р(2) + и) е (1 + р(1) / 2 "11); 1ог Ь = 1:и ЧЬ = 2 Ь * Чп' Ч = (Ч (2 е ЧЬ) (2 е ЧЬ) (4 * ЧЬ)); еп6 Ч = (Ч Чх) ' е1ве % Ехр11с1С Цоапсхвас1оп Ч=Р' епс) Ч = т 6(Ч * 100) / 100; % Яоппб со 1/100СЬ р1асе 11 апу(100 е Ч ) 65535) егтог('ТЬе Чпапс1х1пБ всерв аге поС 01МТ16 гергевепсаЬ1е.'); епб 11 апу(Ч == О) еггог(дА ЧиапС1х1пБ вСер о1 0 1в поС а11оне6. '); епб Декодер )РЕС 2000 просто обращает описанные выше операции. После декодирования арифметических кодов коэффициентов совершается восстановление выбранного пользователем числа поддиапазонов изображения. Хотя кодер может иметь Мд, арифметически закодированных битовых плоскостей для конкретного поддиапазона, пользователь -.
в силу вложенной природы кодового потока— (346 Г 8. с б может выбрать для декодирования только /и"ь битовых плоскостей. Это равняется квантованию коэффициентов с использованием размера шага 2 ' и' /1ь. Все недекодируемые биты приравниваются нулю, и полученные коэффициенты, обозначаемые дь(и, н), восстанавливаются по формулам (дь(и, н) + 2м' ьс'(" ")) с1ь при дь(и, а) > О, К~,(и н) = (дь(и,н) — 2~' ~'("'")) /1ь при дь(и, е) > О, О при дь(и,н) = О, где гсн,(и, н) обозначает восстановленные значения коэффициентов, а /нь(и, н)— число декодируемых битовых плоскостей для дь(и, н). Затем полученные коэффициенты подвергаются обратному преобразованию, а к результату прибавляется величина 2" ~, где и — число битов яркости пикселов.