Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 50
Текст из файла (страница 50)
Рассмотрим, к примеру, следующую последовательность команд: » 1 = ша81с (8); » (с1, в1) = иачеаес2(г. 3, 'Ьааг'); » авве(с1) 1 64 » в1 в1 = 1 1 1 1 2 2 1 4 8 8 » арргох = аррсое12(с1, в1, 'Ьааг') арргох = 260.0000 » Ьогвгдет2 = йетсое12('Ь', с1, в1, 2) Ьог1гбес2 = 1.0е-013 е 0 -0.2842 0 0 » пеис1 = исЬсое12('Ь', с1, в1, 2); » пеяЬог1вдес2 = дессое12('Ь', пеис1, в1, 2) пеиЬог1вйес2 = О 0 0 0 ~274 Г Х. 8~ Здесь совершается трехуровневая (трехмасштабная) декомпозиция вейвлетным преобразованием Хаара над магическим квадратом 8х8 с помощью функции яаче4ес2.
Результат декомпозиции записывается в вектор с1 размерами 1х64. Поскольку в1 имеет размеры 5 х2, то коэффициенты с1 соответствуют (и — 2) = = (5 — 2) = 3 масштабам декомпозиции. Значит, в нем располагаются элементы, необходимые для заполнения ЗЖ+ 1 = 3 3+ 1 = 10 подматриц приближения и деталей. Основываясь на информации, содержащейся в в1, приходим к выводу, что эти подматрицы суть: (а) одна подматрица приближения 1х1 и три подматрицы деталей 1 х 1 масштаба 3 (см. в1(1,: ) и в1(2,: ) ), (б) три подматрицы деталей 2х2 масштаба 2 [см.
в1(3,:)) и (в) три подматрицы деталей 4х4 масштаба 1 )см. в1(4,:)). Пятая строка матрицы в1 содержит размер исходного изображения 1. Матрипа арргох = 260 извлекается из с1 с помощью функции пакета аррсое12, которая имеет следующий синтаксис: а = аррсое12(с, в, япыэе). Здесь а — это возвращаемая матрица приближения, а кваше — имя вейвлета из табл. 7.1. К коэффициентам деталей масштаба 2 можно обратиться с помощью функции бегсое12, которая имеет похожий синтаксис 4 = йеСсоей2(о, с, в, и), где о принимает одно из значений 'Ь', 'в' или '4', что соответствует деталям по горизонтали, вертикали и диагонали, а и — это нужный масштаб декомпозиции.
В этом примере возвращается 2х2 матрица ЬогтхйеС2. Затем коэффициенты в с1, соответствующие ьог1зйес2, обнуляются с помощью функции всьсое12, которая представляет собой вейвлетную срезающую функцию вида пс = яСЬсоег2(Суре, с, в, и, С, вогЬ), где Суре принимает одно из значений 'а' (приближение), 'Ь', 'ч' или '6' (детали). Вход и обозначает уровень (масштаб) декомпозиции, который будет срезаться с помощью пороговых значений, предписанных вектором С, а переменная вогЬ принимает одно из двух значений 'в ' или 'Ь~, что соответствует мягкому (эой) или жесткому (Ьагб) решению при срезании.
Если параметр с отсутствует, то все коэффициенты, соответствующие значениям суре и и, будут обнулены. Выход пс представляет собой модифицированный (т. е. обрезанный) вектор декомпозиции. Все три представленные функции пакета Ч"аче1еС То!1Ъох допускают и другие синтаксические формы, о которых можно узнать, выполнив системный запрос Ье1р. О 7.3.1. Редактирование вейвлетных коэффициентов вне пакета Жазге1еФ То11Ьох Не имея функций М аче1еС То11Ьох, всю информацию о коэффициентах декомпозиции следует извлекать из управляющей матрицы Б, которая поможет получить доступ к конкретным коэффициентам приближения или деталей кратномасштабного вектора с. В этом параграфе мы разработаем несколько подпрограмм общего цл.
Р~ и д 2Д Уипсг1оп [чзгагяоих] = иачеиогй(орсойе, Суре, с, в, и, х) '/ИАЧЕЫОНК Ав изей Со ей1г иаче1ес йесошров1с1оп вггиссигев. Х [ЧАВАНОООТ] = ИАЧЕМОНК(ОРСООЕ, ТУРЕ, С, Я, М, Х) Еегв сЬе '/ сое111с1епсв врес111ей Ьу ТУРЕ апй М Уог ассевв ог шойгййсас1оп '/ Ьавей оп ОРСООЕ. Х Х 1ИРОТЯ: '/ ОРСООЕ Орегаг1оп Со регУогш /-- '/ 'сору' Х '/ 'сит' Х % Х 'равсе' Х '/ Х ТУРЕ Х- [чагагйоиг] = У = тес(иевгей (нйа ТУРЕ апй И) соетт1с1епс шасг1х [нагагйоис] = [МС, У] = Меи йесошровьс1оп чессог (ийгЬ тес(иевсей соетт1с1епс шасггх хегоей) АНО геоиезгей соеШс1епь шаьг1х [чагагйоис] = [МС] = пеи йесошров1с1оп чессог и1сЬ соетг1с1епг шагг1х гер1асей Ьу Х Сое111с1епг сагебогу Арргох1ша11оп соехг1с1епгв '/ Ног1хопга1 йеса11в / >н\ Четсйса1 йеса11в / РДЭ Огайопа1 йеса11в '/ Х '/ Х У '/ Яее а1зо ЧАЧЕСОТ, ЧАЧЕСОРУ, зпй ИАЧБРАЯТЕ.
еггог(пагбсЬЬ(4, 6, пзгя1п)); гй (пй1шв(с) = 2) ( (айве(с, 1) 1) еггог('С шизс Ье а гои нессог.'); епй 11 (пй1шв(в) = 2) ( Авгеа1(з) ( 1впишег1с(в) ( (в1хе(з, 2) = 2) еггог('Я визг Ье а геа1, пишег1с Сио-со1ишп аггау.'); епй е1ешепсв = ргой(з, 2); '/ Соетг1с1епг шасг1х е1ешепсв. 11 (1епЕГЬ(с) ( е1ешепсз(епй)) (е1ешепгв(1) е 3 е виш(е1ешепсв(2:епй — 1)) )= е1ешепсв(епй)) еггог(['[с Я] шивс 1огш а вгзпйагй иаче1ес йесошров111оп ' 'зсгиссиге.']); [С, Я] Ав а иане1ег соо1Ьох йесошров1сйоп всгиссиге. Н 1в а йесошров1сйоп 1ене1 (1Епогей И ТУРЕ = 'а').
Х 1в а сио-й1шепв1опа1 соетг1с1епс шасгйх Уог равс1пЕ епй 11 всгсшр(1оиег(орсойе(1:3)), 'рав') А пагбйп ( б применения для обработки вектора с с помощью информации, расположенной в матрице Б. Функция иачеиогй является фундаментом всех этих подпрограмм, которая является рутинной метафорой для действий при работе с современными текстовыми процессорами типа «вырезать-скопировать-вставить». ~~~~276 Глава 7. Вейвлеты Х ИаЬе ро1птегв 1пСо С еггог('Мос епопЯЬ (ирис агЯишепсв.'); епб И патЯ1п ( 5 п=1; Х Ретап1С 1ече1 1в 1. епб швах = в(хе(в, 1) — 2; '/ Хах1шпш 1ече1в 1п [С, Я] .
а11аЯ = (1очег(Суре(1)) == 'а'); Ы а11аЕ Ь (п ) швах) еггот('М ехсеебв СЬе бесошров1С1опв 1п [С, Я) . '); епб вч(СсЬ 1овег(Суре(1)) саве 'а' п1пбех = 1; втагС = 1; есор = е1ешепсв(1); пСвС = вшах; саве ('Ь', 'ч', 'б'т вч1СсЬ Суре саве 'Ь', огтвеС = 0; '/ Огтвес Со беСа11в. саве 'ч', оггвеС = 1; саве 'б', оттвеС = 2; епб п1пбех = в1хе(в, 1) '/ Тпбех Со беса11 1пХо.
всагс = е1ешепсв(1) + 3 в впш(е1ешепсв(2:вшах — п + 1)) + оттвес в е1ешепсв(п1пбех) + 1; асор = всагС + е1ешепСв(п1пбех) - 1; птвс = п; оСЬеты1ве еггог('ТУРЕ шпвС ЬеЕ1п в1СЬ >а», Ь», ч>, ог >б>.'); епб вчйтсЬ 1очег(орсобе) Х Ро тее(певсеб асС(оп. саве (' сору', 'спС'1 у = гершаС(О, в(п1пбех, :)); у(:) = с(втвтС:втор); пс = с; 11 втгсшр(1очет(орсобе(1:3)), 'спС') пс(всагС:есор) = 0; натагЕопС = (пс, у1; е1ве чагатЯопС = (у1; епб саяе 'равте' 11 ргоб(в1хе(х)) = е1ешепсв(епб — птвС) еггог('Х 1в поС в1хеб Хог СЬе гее(певтеб рвете.'); е1ве пс = с; пс(всагс:есор) = х(:); чатагЯопс = (пс1; епб оСЬегч(ве егтот('Опгесояп1кеб ОРСОРЕ.'); епб «. «. б «««2~~~»»7»7«««»»» УвпсФ1оп [пс, у] = чачеспФ(Фуре, с, в, и) '/ЧАЧЕСЛ Хегоев соегг1с1епсв тп а чаче1ес «»есошров1Ф1оп всгпссиге.
/ [НС, У] = НАЧЕСОТ(ТУРЕ, С, Я, Н) геспгпв а печ «(есошров1Ф1оп % чессот чЬове «(еса11 ог арртох1шаФ1оп соетт1с1епсв (Ьаве«( оп ТУРЕ % азЫ И) Ьаче Ьееп вегоеб. ТЬе соетт1с1епсв ФЬас чете кетов«( ате % геспгпе«( 1п У. % % 1ЫРОТВ". % ТУРЕ Соегт1с1епФ сасейогу % % 'а' % 'Ь' % 'ч' % '6' % % [С, В] 1в а чаче1ес «(аса всгпсспге. Арргох1шаФ1оп сое111с1епсв Нот1вопса1 беса11а Чегсгса1 «(еса11в 01абопа1 «(еса11в При проверке корректности своих входных аргументов функция чачечотк определяет число элементов каждой подматрицы с с помощью функции е1ешепсв = = рте«((в, 2). Напомним (см.
3 3.4.2), что функция У = рте«[(Х, 01М) из системы МАТ[ АВ вычисляет произведение элементов матрицы Х вдоль измерения 01М. Затем первое предложение в команде вчАФсЬ начинается вычислением пары указателей на коэффициенты, ассоциированные с входными параметрами Фуре и п. Для случая коэффициентов приближения (т. е. саве 'а'), вычисления являются тривиальными, т. к. эти коэффициенты всегда расположены в начале вектора с (т.е. начальный указатель всагс равен 1), а конечный индекс, указатель асор, равен числу элементов матрицы приближений, т.е. е1ешепсв(1), Если же требуется найти коэффициенты деталей, то указатель всагс вычисляется суммированием числа элементов всех уровней декомпозиции до масштаба и и сложением о11вес«е1ешепсв(п1п«(ех), где оггаеФ равен О, 1 или 2, соответственно, для коэффициентов деталей по горизонтали, вертикали и диагонали, а п1пйех-- указатель на строку в в, которая соответствует входному параметру и.
Второе предложение вч1ФсЬ в функции чачевотЬ совершает операцию, заданную в орсойе. Для случаев 'спс ' и 'сору' коэффициенты с, расположенные между всагс и асор, копируются в матрипу у, которая была заранее описана как двумерная матрица, размер которой задан в а. Это действие совершается командой у = гершаФ(0, в(п1пйех, :)), где задействована стандартная функция МАТЕАВ «тиражирования матриц» с синтаксисом гершаФ(А, М, Н), которая создает большую матрицу В, составленную из копий матрицы А, размещенных в ячейках таблицы Л/х/Ч.
Для случая 'ранте' элементы из х копируются в вектор пс, который является копией с, на места между указателями всагФ и асор. Для обеих операций 'спс' и 'равсе' функция возвращает новый вектор декомпозиции пс. Следующие три функции: чачеспс, чачесору и чачеравсе используют в своих манипуляциях с вектором с функцию чачевотЬ, но имеют более интуитивный синтаксис. .В. Р гг ~ . д 279)) '/ [С, 3] 1в а иаче1еС паса вСгиссиге.
'/ Н врес1т1ев а йесошров1С1оп 1ече1 (1Епотеа Н ТУРЕ = 'а'). '/ Х Ав а Счо-61шепв1опа1 арргох1шаС1оп ог беса[1 соетт1с1епС '/ шасвйх иЬове о1шепв1опв ате аррторттаСе 1от йесошровАС1оп '/ 1ече1 в. '/ '/ Еее а1во ЧАЧЕЧОНК, ЧАЧЕСОТ, апй ЧАЧЕСОРУ. егтог(пагбсЫс(б, 5, пагбш)) пс = вачеиотй('раисе', Суре, с, в, и, х); Пример 7.5. Манипулирование с вектором с посредством функций шаиесис и шаиесору. Функции иачесиС и иачесору можно применять для воспроизведения результатов примера 7.4, полученных с использованием пакета Жаче Тоо]Ьох. » Х = ша81с (8); » [с1, в1] = иачеоес2И, 3, 'Ьааг'); » арртох = иачесору('Ь', с1, в1, 2) арртох = 260.0000 » Ьог1хйеС2 = иачесору('Ь', с1, в1, 2) Ьог1ваеС2 = 1.0е-013 в 0 -0.2842 0 0 » [печс1, Ьог1вйеС2] = вачесиС('Ь', с1, в1, 2); » пеиЬот1вйеС2 = чачесору('Ь', пеис1, в1, 2) пеиЬог1вйеС2 = 0 0 0 0 Заметьте, что все извлеченные подматрицы идентичны соответствующим под- матрицам, полученным в предыдущем примере.