Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 48
Текст из файла (страница 48)
Следующие за ней команды ахтв и С1С1е будут выполняться только в этом подокне. ~262 Г Ь ВМ что они равны нулю вне некоторого конечного отрезка оси ш, который называется носителем. Для функций Хаара носителем служит отрезок ~0, 1]. Помимо всего прочего, функция чаче1в1о сообщает, что функции разложения Хаара являются ортогональными, поэтому ядра прямого и обратного преобразования Хаара совпадают. П Имея фильтры декомпозиции, образованные функцией и111сегв или полученные иным путем, пользователь может легко вычислять соответствующее вейвлетное преобразование с помощью функции иачейес2 из пакета ЪЪ'аче)еФ Тоо)Ьох.
Она вызывается командой [С, Б) = иачебес2[Х, М, 1.о Р, Н1 Р), где Х вЂ” это изображение или матрица, Н вЂ” число масштабов, которые следует вычислить (т.е. количество проходов через блок фильтра [)ЖТ на рис. 7.2), а Ьо Р и НХ Р обозначают фильтры декомпозиции. Следующая форма обращения к этой функции является немного более эффективной: [С, Б) = иачейес2[Х, М, впвше), в которой ипаше обозначает название фильтра из табл.
7.1. Выходные данные оформлены в виде структуры [С, Б), состоящей из вектора-строки С [класса боЬ1е), в который записываются коэффициенты вычисленного вейвлетного преобразования входного изображения, и из вспомогательной управляющей матрицы Б (также класса 6оЬ1е), которая определяет организацию коэффициентов вектора С. Связь между С и Б станет понятной после изучения следующего примера, а более подробная информация дается в з 7.3.
Пример 7.2. Проспае преобразование 1) %Т с помощью фильгаров Хаара. Рассмотрим одномасштабное вейвлетное преобразование Хаара: » 1 = ша81с[4) 16 2 3 13 6 11 10 8 9 7 6 12 4 14 16 1 [с1, в1) = чачейес2И, 1, 'Ьааг') » с1 = 2 2 2 2 4 4 Со1ишпв 1 СЬгоиБЬ 9 17.0000 17.0000 -1.0000 -1.0000 Со1ишпв 10 сЬтоиБЬ 16 -4.0000 -4.0000 -6.0000 -10.0000 17.0000 17.0000 1.0000 1.0000 4.0000 4.0000 10.0000 6.0000 Здесь магический квадрат 1 размерами 4х4 преобразуется в вектор вейвлетной декомпозиции с1 размерами 1х16 с образованием управляющей матрицы в1 размерами Зх2. Вейвлетное преобразование вычисляется за одну итерацию (с использованием входа Х) с помощью операций, изложенных в 9 7.2.
При этом образуется четыре выходные матрицы размерами 2 х 2, а именно: одно прореженное приближение и три направленные (горизонтальная, вертикальная и диагональная) матрицы деталей. Точнее, с с!(!) по с![4) записаны коэффициенты приближения Иг (1,0,0),Иг (1, 1,О), И'„,(1,0, 1) и И' (1, 1, 1) из рис. 7.2, причем исходный масштаб изображения 1 взяли равным 2; элементы с с1(6) по с! [8) совпадают с коэффициентами И'~э(1,0,0), И'~э(1,1, О), И~~(1,0, 1) и И'~о(1, 1, 1).
Например, матрица горизонтальных деталей равна 1 -1,~ В управляющей матрице в1 записаны размеры вычисленных матриц, которые столбец за столбцом помещены в вектор с1 плюс размер исходного изображения Х [записанный в векторе в!(епй,:)). Векторы в1(1,:) и в1(2,:) содержат, соответственно, размеры матрицы приближения и трех матриц деталей. В первом элементе каждого из этих векторов записано число строк матрицы приближения или матрицы деталей, а второй элемент — число столбцов этих матрицы.
Чтобы построить следующий, нулевой масштаб, необходимо выполнить ко- манду » [с2, в2] = яачеоес2(т, 2, 'Ьаат') с1 = Со1олюв 1 СЬгонкЬ 9 34.0000 0 0 0.0000 -1.0000 -1.0000 1.0000 4.0000 Со1вяпа 10 сЬгоняЬ 16 -4.0000 -4.0000 4.0000 10.0000 -6.0000 -10.0000 1.0000 6.0000 1 1 1 1 2 2 4 4 Заметьте, что с2(5: 16) = с! [6: 16). Элементы с!(1:4), которые являются коэффициентами приближения преобразования первого масштаба, были помещены во вход блока фильтров рис.
7.2, что породило четыре выхода размерами 1х1: И' (О, О, О), И'и (О, О, О), Иг~~ (О, О, О) и Иг (О, О, О) . Эти выходы были присоединены по столбцам (они являются здесь матрицами 1х1) в том же порядке, что и при вычислении первого масштаба, и подставлены на место коэффициентов приближения, по которым они вычислялись. Управляющая матрица в2 была обновлена, чтобы в ней отражался тот факт, что единственная матрица приближения 2х2 в с1 была заменена четырьмя матрицами 1х1: матрицей приближения и тремя ~~~264 Глава 7. Вейелеты матрицами деталей в с2. Итак, в2(епс1,: ) — опять размер исходного изображе- ния, в2(3,:) — размер трех матриц деталей масштаба 1, в2(2,:) — размер трех матриц деталей масштаба О, а в2(1,: ) — размер конечной матрицы при- ближения.() В заключение этого параграфа стоит заметить,что поскольку преобразования !)%'Т основаны на технике цифровой фильтрации и свертки, на выходе преобразования могут проявиться граничные искажения.
Чтобы минимизировать эти артефакты, границы изображений следует обрабатывать отдельно от остальных его частей. Если элементы фильтра выходят за пределы изображения в процессе свертки, необходимо присваивать некоторые значения областям, лежащим вне обрабатываемого изображения. Многие функции пакета Мауе)еь Тоо1Ъох осуществляют это расширение изображений с помощью глобального параметра битшобе. Чтобы узнать текущую моду расширения, наберите команду днсшобе ( ' всасцв ' ) или просто бисшобе после системного приглашения МАТЬАВ (т.е., » бисшобе). Чтобы иметь текущую моду ЯТАТЯЯ, выполните команду бисшобе(ЯТАТУЯ).
Поддерживаемые моды расширения и соответствующие значения переменной ЯТАТУЯ перечислены в табл. 7.2. 'Таблица ТЛЬ Моды пакета ЪЧаче!ет Тоо!Ьох для расширения изображений Описание ЯТАТ(!Я Изображение расширяется симметричным отражением относительно гра- ниц. Мода по умолчанию. Изображение расширяется сплошными нулями.
Изображение расширяется экстраполяцией первой производной ипи ли- нейным продолжением значений двух самых дальних границ. Изображение расширяется экстраполяцией граничных значений, т.е. их повторением. Изображение расширяется периодическим способом. Изображение расширяется периодическим способом, после того, как оно будет (при необходимости) расширено до нечетного размера с помощью моды 'врец 'ауя' 'арв' 'врй', 'вр!' 'аро' 'рег' 7.2.2. Преобразования Р'ЖТ без использования Жахге1ей ТОО1Ьох В этом параграфе мы построим две функции ианеХ11сег и ианеханс, которые смогут заменить функции иХ11сег и иауедес2 из пакета ЪУауе!е! Тоо1Ьох, рассмотренные в предыдущем параграфе. Наша цель состоит также в дополнительном рассмотрении алгоритма вычисления Ы%'Т, а также в разработке отдельного пакета для обработки изображений на базе вейвлетного анализа без привлечения пакета Ч"ауе1е! Тоо1Ьох.
Эта программа будет завершена в Ц 7.3 и 7.4, и полный набор функций будет задействован в примерах Я 7.5. Прежде всего, необходимо написать функцию для построения фильтров вейвлетной декомпозиции и реконструкции. Следующая функция, которую мы назовем иаве111тег, использует стандартную конструкцию виАСсп вместе с операторами саве и осйегиАве и совершает эти действия. Несмотря на то, что функция ианеХ11сег строит фильтры, разобранные в гл. 7 и 8 книги [СопяаМ, Юоог)э, 2002), Сй.
и м С 26~~Б) йшсС1оп [натагбоиС) = иане111Сег(ипвше, Суре) '/МАЧЕР1ЬТЕК Сгеасе иане1ес бесошров1САоп впб гесопвсгпсссоп 111сегв. '/ [ЧАКАКСООТ) = МАЧЕРХЬТЕК(ММАМЕ, ТУРЕ) гетшпв СЬе бесошров1С1оп Х апб/ог гесопвтгпсС1оп 111Сегв цвеб Ап СЬе сошрцтатсоп о1 СЬе '/ 1огвагб впб Апнегве РМТ (1авс иаче1ес стапв1огш). Х '/ ЕХАМРЬЕБ: '/ [16, Ьб, 1г, Ьг) = ваче111Сег('Ьааг') Сет СЬе 1он апб ЬАЕЬравв '/ бесошровсс1оп (16, Ьб) Х апб гесопвсгпсссоп Х (1г, Ьг) 111Сегв 1ог '/ иаче1еС 'Ьааг'. '/ [16, Ьг() = ианеЯ1сег('Ьааг','б') Сес бесошров1с1оп 111сетв '/ 16 апб Ьб. '/ [1г, Ьг] = иане111сет('Ьаат','г') Сес гесопвсгпсссоп '/ 111Сегв 1г апб Ьт.
Х '/ 1МРОТЯ: '/ ММАМЕ Маче1ес Маше /-- '/ 'Ьаат' ог '6Ы' У 'бЬ4' '/ 'вуш4' '/ 'Ьсогб.8' У ')РеЕ9.7' '/ Е ТУРЕ '/ — —— Наат 4сЬ огбег ВацЬесЫев 4СЬ огбег Яуш1есв СоЬеп-ОапЬесЬАев-Реаичеап ЫогСЬоЕопа1 Апсопсп1-Ваг1апб-МасЬАец-ОапЬесЫев Р11сет Туре / УДЫ Весошров1с1оп 111сегв Кесопвсгцсс1оп 111сегв '/ '/ Вее а1во ЧАЧЕРАВТ апб МАЧЕВАСК. Х СЬесй СЬе справ апб онтрпС агйвшептв. еггог(пагйсЬЬ(1, 2, пагЕ1п)); 11 (пвт81п == 1 А пагйопС "= 4) ! (пагЕ1п == 2 А пагйоцС = 2) еггог('1пна114 швпЬег о1 оптрцС агбошептв.'); еш1 11 патЕ1п == 1 Ф 1всЬаг(нпвше) еггот('ИМАМЕ шивс Ье а всг1пЕ.'); епб 11 пвтЕ1п == 2 А 1всЬаг(Суре) еггот('ТУРЕ шпвс Ье а всг1пЕ.'); епб другие вейвлетные фильтры декомпозиции и реконструкции могут быть легко добавлены (с помощью новых операторов саве) к нашей функции.
Описание зти вейвлетов можно найти в разных книгах по кратномасштабному анализу. ~~~2бб Глава 7. Веавлеты '/ Сгеаге 111Сегв Хог СЬе ге~(иевСей ваче1еС. вю1СсЬ 1оюег(вааше) саве ('Ьааг', '651'] 16 = [1 1]/ве[гС(2); Ьй = [-1 1]/ве[гС(2); 1г = 16; Ьг = -ЬД; саве 'бЬ4' 16 = [-1.059740178499728е-002 3.288301166698295е-002 3.084138183598697е-002 -1.870348117188811е-001 -2.798376941698385е-002 6.308807679295904е-001 7.148465705525415е-001 2.303778133088552е-001]; (О:7); Ьй = 16; Ьб(еай:-1:1) = сов(р1 в С) .в 16; 1г = 16; 1г(еаб:-1:1) = 16; Ьг = сов(р1 в С) .в 16; саве 'вуш4' 16 = [-7.576571478927333е-002 -2.963552764599851е-002 4.976186676320155е-001 8.037387518059161е-001 2.978577956052774е-001 -9.921954357684722е-002 -1.260396726203?83е-002 3.222310060404270е-002]; — (О:7); Ьй = 16; Ьй(еад:-1:1) = сов(р1 в С) .в 16; 1г = 16; 1г(еаб:-1:1) = 1е(; Ьг = сов(р1 в С) .в 16; саве 'Ь1огб.8' 16 = [О 1.908831736481291е-003 -1.914286129088767е-003 ...
-1.699063986760234е-002 1.19345652797292бе-002 4.973290349094079е-002 -7.726317316720414е-002 -9.40592034957364бе-002 4.207962846098268е-001 8.259229974584023е-001 4.207962846098268е-001 ... -9.40592034957364бе-002 -7.726317316720414е-002 4.973290349094079е-002 1.19345652797292бе-002 -1.699063986760234е-002 -1.914286129088767е-003 ... 1.908831736481291е-003]; Ьй = [О 0 0 1.442628250562444е-002 -1.446750489679015е-002 -7.872200106262882е-002 4.036797903033992е-002 4.17849109150274бе-001 -7.589077294536542е-001 4.178491091502746е-001 4.036797903033992е-002 -7.872200106262882е-002 -1.446750489679015е-002 1.442628250562444е-002 0 0 0 0]; С = (О:17); 1г = сов(р1 в (С + 1)) .в Ьб; Ьг = сов(р1 в С) .в 16; саве ']ре59.7' 16 = [О 0.02674875741080976 -0.01686411844287495 -0.07822326652898785 0.2668641184428723 0.6029490182363579 0.2668641184428723 -0.07822326652898785 -0.01686411844287495 0.02674875741080976]; Ьд = [О -0.09127176311424948 0.05754352622849957 0.5912717631142470 -1.115087052456994 0.5912717631142470 0.05754352622849957 -0.09127176311424948 0 0]; с = (О:9); 1г = сов(р1 н (Г + 1)) .н Ьс1; Ьг = сов(р1 н С) .н 1д; оСЬегч1ве еггог('Опгесойп1ааЬ1е чане1ег паше (ИМАМЕ).'); епб 7, Опсрпс сЬе гейпевсеб 111сегв.