Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 49
Текст из файла (страница 49)
11 (паг81п == 1) нагагйопг(1:4) = Пс), Ьб, 1г, Ьг1; е1ве вч1ссЬ 1очег(суре(1)) саве '6' нагагяопс = (16, ЬЮ; саве 'г' нагагйопг = 41г, Ьг]; осЬегч1ве еггог('Опгесойп1хаЬ1е 111сег ТУРЕ.'); епб епб Заметим,что для каждого ортонормированного фильтра в чане111сег (т.е. 'Ьааг', '6Ь4' и 'вуш4') фильтр реконструкции получается из фильтра декомпозиции отражением по времени, а высокочастотный фильтр декомпозиции является модулированной версией своей низкочастотной пары. Следовательно, в программном коде достаточно дать численные значения лишь коэффициентов низкочастотного фильтра декомпозиции. Все остальные коэффициенты получаются из этих данных. В функции чанеШсег обращение по времени осуществляется перенумерацией элементов векторов фильтров от последнего к первому при выполнении команд вида 1г(епб: -1: 1) = 14. Модулирование выполняется умножением компонент известного фильтра на числа сов(РАнс), которые меняются в интервале от — 1 до 1 при возрастании с от 0 на целые шаги.
Для каждого биортогонэльного фильтра в чане111сег (т.е. 'Ь1ог6.8' и ']Ье89.7'), следует численно задавать коэффициенты и высокочастотного, и низкочастотного фильтров, а фильтры реконструкции получаются из них модулированием. Наконец, отметим, что все фильтры, генерируемые функцией чане111сег, имеют четную длину. Кроме того, используется продолжение нулями, чтобы фильтры декомпозиции и реконструкции для каждого вейвлета имели одинаковую длину. Имея пару фильтров декомпозиции, построенных функцией чане111тег, легко написать процедуру общего назначения для вычисления соответствующего )ь26В С Ь В ° быстрого вейвлетного преобразования. Наша цель состоит в разработке эффективного алгоритма на основе операций свертки и прореживания, изображенных на рис. 7.2.
Нтобы добиться совместимости с существующим пакетом ЧЧаче[еС Топ[бок, мы воспользуемся той же структурой результата декомпозиции [т.е. в виде [С, Б], где С вЂ” это вектор декомпозиции, а Я управляющая матрица). Следующая программа, которую мы назвали чаче1авС, использует метод симметричного дополнения изображений при борьбе с граничными искажениями, возникающими при выполнении г'ЪУТ:~ 1ццсС1оп [с, в] = иаче1авС(х, и, чагагЕгв) ХНАЧЕРАЯТ РегТогш шц1С1-1ече1 2-61шепв1опа1 Таас иаче1еС Сгапв1огш. % [С, Ц = ИАЧЕРАБТ(Х, И, ЬР, НР) рег1огшв а 20 Н-1ече1 РИТ о1 % 1шаЕе (ог шаСг1х) Х чАСЬ гевресС Со Несошров1С1оп 111Сегв ЬР апд % НР.
% % [С, П = ИАЧЕРАЯТ(Х, М, ННАМЕ) рег1огшв СЬе ваше орегаС1оп Ьцс Х ТессЬев 111Сегв ЬР апс) НР 1ог чаче1еС ЖБАНЕ цв1пЕ МАЧЕР1ЬТЕН. '/ % Яса1е рагвшеСег Н шцвС Ье 1евв СЬап ог ес[ца1 Со 1оЕ2 о1 СЬе % шах1шцш 1шаНе с(1шепв1оп. Р11Сегв ЕР апб НР шцвС Ье ечеп. То '/ тес)цсе Ьогс)ег с)1всогС1оп, Х Ав вушшесг1са11у ехсеЫес(. ТЬаС 1в, % 11 х = [с1 с2 сЗ ... сп] (хв 1))), сьеп Асв вушшесг1с ехсепв1оп % иоц1с) Ье [... сЗ с2 с1 с1 с2 сЗ ... сп сп сп-1 сп-2 ...] .
% % (Н)ТР()ТЯ: % ИаСг1х С Ав а соегг1с1епС с)есошров1С1оп чессог: % Х С = [ а(п) Ь(п) ч(п) 6(п) Ь(п-1) ... ч(1) И1) ] % '/ чЬеге а, Ь, ч, апс) ц аге со1цвшитве чессогв сопса1п1пЕ % арргох1шаСАоп, Ьог1хопСа1, чегС1са1, апс) 61аЕопа1 соеИ1с1епС '/ шаСг1сев, гевресСАче1у. С Ьав Зп + 1 весс1опв чпеге и 1в СЬе '/ пшаЬег о1 чаче1еС с[есошров1С1опв.
% % Масг1х Я 1в ап (и+2) х 2 Ьоо)сйеер1пЕ шаСг1х: Х % Я = [ ва(п,:); вс)(п,:); вс)(п-1,:); ...; вс)(1,:); вх ] Х % чЬеге ва ап6 вс) аге арргох1шаС1оп ап6 с)еса11 в1ге епгг1ев. % Х Яее а1во УАЧЕВАСК апс) ИАЧЕР1ЬТЕВ. Х СЬесЬ СЬе 1прцС агЕцшепсв уог геавопаЬ1епевв. еггог(пагЕСЬЬ(3, 4, пагЕ1п)); 11 пагя1п == 3 'Функция тея(Г, Ч) возвращает остаток от деления Х на У. Функция С = совч2(А, В) совершает двумерную свертку матриц А и В.
.. Б б 26~~9) АГ ХвсЬаг(нагагН[ы.[1г) [1р, Ьр] = ванеХ11Сег(чагзгНАыс1г, '6'); е1ве еггог('ИАвв1ыН ваче1еС паше.'); еыН е1ве 1р = чагагНАыС1Ъ; Ьр = чагагНАы(2г; ешь Х1 = 1еыНСЬ(1р); вх = в1хе(х); 1Г (ыНАшв(х) = 2) ! (ш5ы(вх) < 2) ! Авгеа1(х) ! 1выышегзс(х) еггог('Х шывС Ье а геа1, ыышег1с шаСг1х.'); еж1 11 (ЫАшв(1р) = 2) ! Хвгеа1(1р) ( АвыышегАс(1р) (л61шв(ЬР) = 2) ( Хвгеа1(ЬР) ) Авыышег[с(ЬР) И1 = 1елНСЬ(ЬР)) ) геш(11, 2) = О еггог(['ЬР аыб НР шывС Ье ечеы аыд еНыа1 1елНСЬ геа1, 'ыышег1с 111Сег нессогв.
']); еыН 11 Авгеа1(л) ) 1выышегпс(ы) ! (ы < 1) ) (ы ) 1оН2(шах(вх))) еггог(['Н шавС Ье а геа1 вса1аг Ьегвеел 1 аыб '1оН2(шах(в1хе((Х))).']); еыд % 1ыАС СЬе вгагС[ыН оисриС баса вггиссыгев алб 1ыАСАа1 арргохпшагпол. с = []; в = вх; арр = йоиЬ1е(х); % Рог еасЬ бесошров[С[ол ... аког 1 = 1:ы % Ехселй СЬе арргох1шаС1ол вушшеСгАса11у. [арр, Кеер] = вушехсеый(арр, г1); % Солно1че говв в1СЬ НР аы6 йоылвашр1е. ТЬеы соачо1че со1ышлв % вгСЬ НР аыб ЕР Со Нес СЬе 61аНоыа1 алд негСАса1 соегг1с1еыгв.
гоев = вушсолн(арр, Ьр, 'гоч', Х1, Кеер); сое1в = вушсолн(гоев, Ьр, 'со1', 11, Кеер); с = [соеСв(:)' с]; в = [впхе(соеХв); в]; соеХв = вушсолч(гоев, 1р, 'со1', г1, Кеер); с = [соегз(:)' с]; % Солчо1че говв ч1СЬ ЕР алб йовлвашр1е. ТЬел солчо1не со1ышлв % в[СЬ НР алб ЬР Со Нес СЬе Ьог[яоыса1 алб ыехС арргох[шаС1оы % соеХЙАс[елгв. гоев = вушсолч(арр, 1р, 'гов', Х1, Кеер); соевое = вушсолч(гоев, Ьр, 'со1', 11, Кеер); с = [соеСв(:)' с]; арр = вушсолч(гоев, 1р, 'со1', 11, Кеер); елб % АррелН 1[ыа1 арргох1шаСХоы вСгыссигев.
с = [арр(:)' с]; в = [впхе(арр); в]; %- -% СНО .....КВ..., 1ппсС1оп (у, Кеер) = еушехсепб(х, 11) % Сошрпсе СЬе ппшЬег о1 соехх1с1епсе Со Кеер айсег сопно1пС1оп '/. апб йояпеашр11пй. ТЬеп ехсепй х 1п ЬоСЬ 61шепя1опе. Кеер = 11оог((11 + в1хе(х) - 1) / 2); у = рабаггау(х, ((11 — 1) Ш вЂ” 1)3, 'еушшесг1с', 'ЬоСЬ'); /- - - — — -/ ХппсС1оп у = вушсопн(х, Ь, Суре, 11, Меер) '/ Сопно1не СЬе гона ог со1пшпв оХ х я1СЬ Ь, оояпеашр1е, '/ апб ехСгасС СЬе сепсех еесС1оп я1псе вушшеСгйса11у акселей. 11 есгсшр(суре, 'гоя') у сопн2(х, Ь); у = у(:, 1:2:еш1); у = у(:, 11 / 2 + 1:11 / 2 + Кеер(2)); е1ве у = сопн2(х, Ь'); у = у(1:2:епб,:); у = у(11 / 2 + 1:11 / 2 + Кеер(1),:); еш1 Как видно из программного кода, в нем имеется всего один цикл Хог, который совершается по уровням (масштабам) декомпозиции при выполнении прямого преобразования.
При совершении каждого шага цикла текущее приближение изображения арр, которое в начале приравнивается к х, расширяется по методу симметричного отражения с помощью внешней функции вушехсепй. Эта функция вызывает процедуру радаггау, которая рассматривалась в я 3.4.2. Функция рабаггау расширяет изображение арр по обоим измерениям зеркальным отражением через границы 11-1 его элементов (т.е. длина фильтра декомпозиции минус 1). Функция еушехсепб возвращает расширенную матрипу коэффициентов приближения и число пикселов, которое необходимо извлечь из центра любого последовательно свернутого и прореженного результата.
Строки расширенного приближения затем сворачиваются с высокочастотным фильтром декомпозиции Ьр и прореживаются функцией вушсопн. Эта функция определяется в следующем абзаце. Свернутый выход гоне затем подается на еушсопн для свертки и прореживання его столбцов с фильтрами Ьр и 1р для получения коэффициентов диагональных и вертикальных деталей в соответствии с верхними двумя путями блок-схемы рис. 7.2. Эти результаты помещаются в вектор декомпозиции С (от последнего элемента к первому). Далее весь процесс повторяется для вычисления коэффициентов горизонтальных деталей и коэффициентов приближения (нижние два пути на рис. 7.2). Функция еушсопн использует функцию сопн2 для выполнения основного объема вычислений при выполнении преобразования.
Она совершает свертку фильтра Ь со строками или столбцами х (в зависимости от значения переменной суре), отбрасывает строки или столбцы с четными индексами (т.е. прореживает их с шагом 2), а также извлекает центральные Меер элементов из каждой строки или столбца. Вызов функции сопн2 с аргументами х (матрица) и вектором-строкой !.!. Ь' «гг б 27~~!) фильтра Ь запускает вычисления строка за строкой, а использование вектора- столбца Ь' приводит к вычислению свертки по столбцам.
Пример 7.3. Сравнение времени вычислений функциями чачебес2 и чаче1авС. Следующая тестовая программа использует функции САс и Сос для сравнения скорости вычислений функцией чачебес2 из пакета Чуаче!ег Тоо)Ьох и построенной нами функцией чаче1авС. ХопсС1оп [гаС1о, шах61Н) = 1чссошраге(1, и, чпаше) '/РИТСОМРАЕЕ Сошраге чачебес2 ап6 чаче1авС. % [ВАТ10, МАХРТРГ) = ГИТСОМРАКЕ(Р, М, ИМАМЕ) сошрагев СЬе орегаСАоп Х о1 Соо1Ьох 1ипсС1оп ИАЧЕОЕС2 ап6 спвсош 1ппсС1оп ИАЧЕГАБТ. '/ '/ 1МРОТВ: % Р 1шайе Со Ье Сгапв1огше6.
'/ М МишЬег о1 вса1ев Со сошриСе. '/ ИМАМЕ Иаче1еС Со пве. % '/ ООТРОТЯ ! '/, ЕАТ10 Ехеспс1оп С1ше гаСАо (спвСош/Соо1Ьох) '/ МАХО1РР Мах1шош сое111сйепС 61гтегепсе. '/ ОеС Сгапв1огш ап6 сошрпсаСАоп С1ше 1ог чачебес2. Сйс; [с1, в1) = чачебес2(1, и, чпаше); ге1С1ше = Сос; '/Оет Сгапв1огш вл6 сошригаСАоп С1ше 1ог чачегавС. С1с; [с2, в23 = чаче1авв (1, и, чпаше); С2 = Сос; '/ Сошраге СЬе геви1Св. гаС1о = С2 / (ге1С1ше е ерв); шах61гг = аЬв(шах(с1 — с2)); Для изображения 512х512 на рис.
7.4 и для пятого масштаба вейвлетного преобразования Добеши порядка 4 функция гчссошрвге дает следующие результаты: » 1 = Ашгеа6 ('Чане', !С11!); » [гаС1о, шах61ггегепсе) = 1чссошраге(1, 5, '6Ь4') гаС1о = 0.5508 шах61ггегепсе = 3.2989е-012 Заметим, что функция чаче1авс выполнялась почти в два раза быстрее, чем конкурирующая функция из пакета Ч~аче1ег Тоо[Ьох, выдавая при этом практически тождественный результат. П ТГ Р . гг 1 сб В м 27~~3~ Управляющая матрица Б структуры декомпозиции представляет собой массив размерами ()У + 2) х2 вида Я = ~ванч; вс1ац вг1н ~, .вс1,; .
вй~, вЕ~, где ван, вг1, и вг" — векторы 1 х2, содержащие, соответственно, горизонтальные и вертикальные размеры Х-го уровня матрицы аппроксимации Ан, размеры 1-го уровня матриц деталей (Ни У; и О, при 1 = 1,2,..., Ж) и размеры исходного изображения Р. Информация в Я дает локализацию конкретных коэффициентов приближения и деталей в векторе с. Обратите внимание на то, что использование точки с запятой при разделении элементов матрицы Б указывает на расположение этих данных в виде вектора-столбца. Пример 7.4. Функции из пакета Угаие1е1 ТоПЬох дяя обращения с вектором декомпозиции с.
В пакете Ч'аче!е( То1!Ьох имеется множество функций для нахождения, извлечения, форматирования и изменения коэффициентов приближения и деталей, расположенных в векторе с, которые действуют на заданном уровне или масштабе, Мы приведем здесь эти функции для иллюстрации обсуждавшихся выше понятий и для приготовления основы для написания альтернативных функций, которые будут разрабатываться в следующем параграфе.