Uploaded by naty_vyazik

Вейвлеты от теории к практике

advertisement
Серия «Полное руководство пользователя»
В. П. Дьяконов
Вейвлеты.
От теории к практике
Москва
СОЛОН-Пресс
2010
УДК 621.396.218
ББК 32.884.1
Д93
В. П. Дьяконов
Д93 Вейвлеты. От теории к практике. Изд. 2-е, перераб. и доп.— М.:
СОЛОН-Пресс, 2010. — 400 с.: ил. — (Серия «Полное руководство
пользователя»).
ISBN 5-98003-171-5
Описано новейшее направление в теории и практике обработки функций и
сигналов — вейвлеты (wavelets). Они способны эффективно представлять локальные особенности функций и сигналов, обеспечивать высокую степень компрессии
сигналов и изображений и вести их эффективную обработку. Впервые, наряду с
теоретическими сведениями о вейвлетах, детально описаны наиболее известные
пакеты по вейвлетам — Wavelet Toolbox, Wavelet Extension Pack, Wavelet Explorer,
используемые с массовыми системами компьютерной математики MATLAB 6.*,
Mathcad 2001/11 и Mathematica 4/5. Описаны и другие инструментальные программные средства. Книга уникальна по числу практических примеров и иллюстраций работы с вейвлетами. Для студентов и преподавателей университетов и вузов, научных работников, инженеров и аспирантов.
КНИГА — ПОЧТОЙ
Книги издательства «СОЛОН-Пресс» можно заказать наложенным платежом по фиксированной цене. Оформить заказ можно одним из двух способов:
1. послать открытку или письмо по адресу: 123001, Москва, а/я 82;
2. передать заказ по электронной почте на адрес: magazin@solon-r.ru.
Бесплатно высылается каталог издательства по почте.
При оформлении заказа следует правильно и полностью указать адрес, по которому должны
быть высланы книги, а также фамилию, имя и отчество получателя. Желательно указать дополнительно свой телефон и адрес электронной почты.
Через Интернет вы можете в любое время получить свежий каталог издательства «СОЛОН-Пресс». Для этого надо послать пустое письмо на робот-автоответчик по адресу: katalog@solon-r.ru.
Получать информацию о новых книгах нашего издательства вы сможете, подписавшись на
рассылку новостей по электронной почте. Для этого пошлите письмо по адресу: news@solon-r.ru. В теле письма должно быть написано слово SUBSCRIBE.
По вопросам приобретения обращаться:
ООО «Альянс-книга»
Тел: (095) 258-91-94, 258-91-95, www.abook.ru
ISBN 5-98003-171-5
© Макет и обложка «СОЛОН-Пресс», 2010
© В. П. Дьяконов, 2010
Предисловие ко второму изданию
Первое издание книги по вейвлетам быстро разошлось, что свидетельствует о
большом интересе нашей научной и образовательной общественности к вейвлетам — новому базису представления произвольных зависимостей и сигналов.
К сожалению, данная книга так и осталась единственной книгой российского автора, изданной в центральном издательстве достаточно большим тиражом. Хотя в
некоторых университетах и были изданы небольшие учебные пособия по вейвлетам, они практически недоступны для наших читателей, ввиду крайне малого тиража и потому малой известности. За время, прошедшее с момента выхода в свет
первого издания данной книги, в России были опубликованы еще две новые переводные книги по применению вейвлетов в графике [19, 20].
Инструментальные программные средства по обработке сигналов и изображений часто относятся к системам компьютерной математики [25]. В ряде книг описаны пакеты расширения по вейвлетам систем Mathcad [25, 26] и MATLAB
[28—30]. Но для такой большой страны, как Россия, книг по технике вейвлетов и
вейвлет-преобразований, особенно доступных и понятных для массового читателя, все еще остро не хватает. Это и сделало целесообразным новое издание данной
книги. В ней впервые собраны воедино многочисленные материалы по вейвлетам
и описаны наиболее важные пакеты расширения по ним популярных систем
компьютерной математики Mathcad, MATLAB и Mathematica. Это предоставляет
читателям уникальную возможность не только охватить всю широту данной тематики, но и сравнить возможности тех или иных программных средств в реализации вейвлет-преобразований.
Книги по новейшим направлениям развития науки и техники неизбежно содержат неточности, описки и, порою, даже ошибки. В настоящем издании, по
возможности, устранены замеченные в первом издании книги погрешности. Заметно расширены главы 1, 2 и 7. Добавлено много новых примеров применения и
осуществления фурье- и вейвлет-преобразований. Все это сделано с целью сделать
сложный материал книги еще более доступным и понятным. Описаны последние
на момент подготовки рукописи второго издания книги пакеты расширения по
вейвлетам систем компьютерной математики Mathcad 11, Mathematica 5 и MATLAB 6.5/6.5 + Service Pack 1.0.
3
Введение
Как раз в то время, когда наша страна вползала в столь непривычную для нас
рыночную экономику и переживала распад некогда могучей и по своим временам
вполне эффективной советской науки, в математике и в теории обработки функций, сигналов и изображений произошли события, которые можно охарактеризовать как новое важное открытие. Появились вейвлеты (wavelets)! Иногда вейвлеты
называют изобретением. Но вейвлеты — математические объекты, а таковые изобретениями не признаются. Открытие — куда более точное определение для этого
нового средства представления функций и обработки сигналов и изображений.
Многие века математиков занимала проблема единообразного (в смысле применяемого аппарата) и достаточно простого (в смысле реализации) представления
сложных функций. В ушедшем столетии этой проблемой занялись и представители прикладных наук, в частности, таких как связь, радиотехника и средства телекоммуникаций. Можно отметить такие крупные вехи на пути решения этой проблемы, как разложение произвольных (с определенными ограничениями) функций
в ряд Тейлора, полиномиальную и рациональную аппроксимации и, наконец,
представление функций и сигналов рядами Фурье.
В последние годы стало очевидно, что традиционный аппарат представления
произвольных функций и сигналов в виде рядов Фурье (или фурье-представлений) оказывается малоэффективным для функций с локальными особенностями,
в частности для импульсных и цифровых сигналов и изображений, получивших
весьма широкое распространение. Это связано с тем, что базисная функция рядов
Фурье — синусоида определена в пространстве от –∞ до +∞ и по своей природе
является гладкой и строго периодической функцией. Как об этом давно говорили
ниспровергатели рядов Фурье, такая функция на практике (в условиях ограничения числа членов ряда или спектра разложения) принципиально не способна описывать произвольные сигналы и функции.
Таким образом, известные методы представления сигналов и функций постоянно наталкивались на принципиальные теоретические ограничения, не позволяющие всерьез говорить о принципиальном решении проблемы единообразного
представления функций и сигналов (особенно нестационарных), созданного на
основе Фурье-преобразований. Так продолжалось до открытия вейвлетов, которые, похоже, наконец, решили эту сложнейшую и актуальную научную проблему.
Основой этого решения стала разработка принципиально нового базиса и класса
функций, которые используются для декомпозиции и реконструкции функций и
сигналов — в том числе нестационарных. Соответственно, был создан и новый
аппарат представления функций и сигналов, а уже совсем недавно и необходимые
инструментальные и программные средства для его реализации.
Вейвлеты были предложены математиками и потому основные работы по вейвлетам написаны на довольно сложном и непонятном для большинства читателей
(даже для многих математиков) языке [1—20]. При этом авторы таких работ довольно часто допускают «математическую эквилибристику» в лучшем, хотя и не всегда, смысле этого понятия. В результате для непосвященных в дебри теории функций и их пространств, кратномасштабного анализа и иных вейвлет-трюков читателей вейвлеты часто выглядят как эффектный фокус, повторить который
невозможно. Недаром даже в книге одного из открывателей вейвлетов г-жи Инг-
4
Введение
рид Добеши [3, 11] можно встретить такие характеристики математического описания вейвлетов, как «математическая шелуха», «вейвлет-трюки» и «парадоксы».
Вейвлеты по существу являются новыми математическими понятиями и объектами, применение которых может теоретически строго и впрямь приблизить любую функцию или любой сигнал. Поэтому они весьма перспективны в решении
многих математических задач приближения (интерполяции, аппроксимации, регрессии и т. д.) функций, сигналов и изображений. Вейвлет-обработка сигналов
обеспечивает возможность весьма эффективного сжатия сигналов и их восстановления с малыми потерями информации, а также решение задач фильтрации сигналов. Таким образом, вейвлеты существенно пополняют (а вовсе не опустошают)
привычный гардероб традиционных средств обработки сигналов и изображений.
Но особенно важна принципиальная возможность вейвлетов представлять нестационарные сигналы, например состоящие из разных компонент, действующих
в разные промежутки времени, модулированные сигналы и т. д. Такие сигналы в
наше время находят куда более широкое применение, чем стационарные или квазистационарные (искусственно сводящиеся к стационарным) сигналы, а также
процессы и системы, их порождающие. Как известно, ряды и преобразования Фурье в классическом виде принципиально непригодны для представления нестационарных сигналов, процессов и систем. Поэтому возможность их представления
вейвлетами трудно переоценить.
Вейвлет-спектрограммы намного более информативны, чем обычные фурье-спектрограммы, и (в отличие от последних) позволяют легко выявлять тончайшие локальные особенности функций, сигналов и изображений с привязкой
их ко времени или координатам пространства. Это полезно при решении задач
идентификации сигналов и образов в картографии, в разведке полезных ископаемых, в медицине и даже в судебном делопроизводстве (одно из первых полезных
применений вейвлетов связано с сильной компрессией изображений отпечатков
пальцев без заметной потери информации).
Поистине неисчерпаемы возможности вейвлетов в обработке сигналов и изображений, например для Интернета [33] с его ограниченной пропускной способностью каналов передачи информации, или минимизации объема звуковых и видеофайлов. Популярный новый стандарт JPEG 2000 и известные графические программные средства Corel Draw 9/10 уже широко используют вейвлет-технологию
обработки изображений. Она включена и в расширения новейших систем компьютерной математики (СКМ), таких как MATLAB, Mathcad и Mathematica. Появились даже микросхемы для вейвлет-преобразований.
Словом, джин вырвался из бутылки! И теперь многие специалисты в области
прикладной математики, обработки сигналов и изображений, связи и средств телекоммуникаций лихорадочно пытаются понять, что же такое вейвлеты и как их
можно использовать в своей практике.
Как и всякое важное научное открытие, вейвлеты можно успешно применять с
разной степенью знания о них. Подавляющее большинство людей прекрасно пользуются телевизором, автомобилем или самолетом не зная тонкостей их работы и
тем более специфики проектирования этих сложных устройств. Так же можно использовать и вейвлеты. Например, художники и Web-дизайнеры могут с помощью
уже существующей вейвлет-обработки изображений добиться высокого качества
компьютерных рисунков и фотографий при значительной степени их компрессии.
Однако специалистам в области обработки сигналов и изображений, безусловно,
надо иметь достаточно четкое представление о том, что такое вейвлеты, и знать,
5
Введение
«с чем их едят», — т. е. с какими инструментальными средствами можно практически работать с вейвлетами.
Многие ли наши специалисты в математике, радиоэлектронике и в ряде других
областей науки и техники знают вообще, что такое вейвлеты, хотя с момента и[
реального зарождения прошло уже полтора десятка лет? Увы, приходится констатировать, что лишь очень и очень немногие. Хотя по вейвлетам написаны десятки
научных работ российских авторов, все они опубликованы в изданиях, рассчитанных скорее на математиков, чем на специалистов в области прикладных наук.
Списки таких работ, включая диссертации, можно найти в переводных книгах [11,
12]. В связи с этим в списке литературы данной книги приводится лишь несколько наиболее крупных обзорных работ наших авторов по вейвлетам, реально доступных читателям.
Новизна вейвлетов привела к тому, что даже название этих математических
объектов в литературе не установилось окончательно. В некоторых литературных
источниках вейвлеты называют всплесками и волночками [15], во французо-язычной литературе используется термин ondelettes [2]. Мы остановимся на термине
вейвлеты как наиболее употребительном в последнее время и не имеющем достойного аналога на русском языке, хотя в переводной книге по вейвлетам К. Чуи
[12] вейвлеты названы «вэйвлетами».
Вейвлеты (wavelets) — это обобщенное название особых функций, имеющих
вид коротких волновых пакетов с нулевым интегральным значением и с той или
иной, подчас очень сложной, формой, локализованных по оси независимой переменной (t или x) и способных к сдвигу по ней и масштабированию (сжатию/растяжению).
Вейвлеты создаются с помощью специальных базовых функций — прототипов,
задающих их вид и свойства и удовлетворяющих целому ряду специфических
условий. Набор вейвлетов, в их временном или в частотном представлении, может
приближать сложный сигнал или изображение, причем идеально точно или с некоторой погрешностью. Таким образом, вейвлеты — это новый математический и
практический аппарат представления и обработки произвольных функций, сигналов и изображений, о чем и говорилось выше.
По своей значимости роль вейвлетов можно сравнить разве что с выдающейся
ролью рядов Фурье и преобразований Фурье [21—24]. Как известно, именно ряды
и преобразования Фурье при всех их известных и обнаруженных уже в наше время и ранее недостатках легли в основу многих новых и ведущих областей науки и
техники — начиная от решения дифференциальных уравнений различных классов, создания теоретических основ современной электротехники, радиотехники и
всевозможных средств связи и телекоммуникаций и кончая многочисленными
физическими и измерительными приборами на их основе (анализаторы спектра,
синтезаторы сложных сигналов по гармоникам и др.).
Но вейвлеты имеют явные преимущества перед рядами Фурье, как в общем и
точном представлении функций, так и их разнообразных локальных особенностей. Они представлены намного более разнообразным набором типов, чем единственная синусоидальная функция в рядах Фурье. Это разнообразие вейвлетов, с
одной стороны, резко расширяет круг решаемых с их помощью прикладных задач,
а с другой стороны, делает такое решение творческим, а вовсе не рутинным процессом.
В области обработки изображений вейвлеты дают новейшие и весьма эффективные способы их обработки, например, декомпозиции, реставрации и иденти-
6
Введение
фикации сигналов и изображений, удаления из них шума, сжатия файлов, хранящих данные и изображения, и т. д. и т. п. Обширный набор базовых функций вейвлетов и множество их типов позволяют легко адаптировать их к решению тех или
иных конкретных и общих задач практики.
Вейвлеты и основанные на них интегральные вейвлет-преобразования были
предложены в начале 90-х годов прошлого века (хотя первый простейший тип
вейвлета, по существу, был описан Хааром (Haar) еще в 1909 году) и в последующее время интенсивно развивались. Наибольший вклад в разработку теоретических основ вейвлетов внесли Мейер (Meyer), Добеши (Daubechies), Малл (Mallat)
и другие ученые, опубликовавшие первые теоретические работы в этом направлении и сумевшие донести их до широкой научной общественности [1—12]. К настоящему времени за рубежом в области вейвлет-преобразований опубликованы
сотни книг, а число статей исчисляется многими тысячами.
В последние годы резко активизировался интерес к вейвлетам и у нас в России. Так, в 2001 году в издательском центре «Регулярная и хаотическая динамика»
(Москва, ФТИ РАН) вышла в переводе большая фундаментальная книга И. Добеши по вейвлетам [3, 11]. А издательство «Мир» подготовило перевод учебного курса по вейвлетам Ч. Чуи [12], ранее изданного на английском, японском и китайском языках. При вполне приличном тираже этих книг явно математического характера они не залеживаются на полках наших магазинов, хотя с момента издания
этих книг в оригинале прошло уже более 10 лет. А потому в них и не могло быть
описания современных инструментальных средств по вейвлетам. Следует также
отметить изданную весьма ограниченным тиражом книгу [13] и ряд обзорных статей по вейвлетам, опубликованных в нашей периодической печати [14—20]. Весьма полезны и книги по рядам и преобразованиям Фурье. Из большого числа таких
книг отметим лишь [21—24].
К сожалению, общим недостатком литературы по вейвлетам и вейвлет-преобразованиям (не только российской, но и мировой) является весьма слабое или вообще отсутствующее, описание практических примеров применения вейвлетов,
доступных иллюстраций их теоретических положений и, главное, современного
программного инструментария для работы с ними. В этом нет ничего удивительного — нужные средства вышли из лабораторий (нередко не очень афишируемых)
лишь в самые последние годы.
А потому лишь совсем недавно в России появились книги [26—28, 30], в которых описаны пакеты расширений по вейвлетам для отдельных конкретных систем
компьютерной математики (СКМ) Mathcad 2001/11, MATLAB 6/6.1/6.5 и Mathematica 4/5. Между тем именно они представляют собой тот мощный практический
и универсальный инструмент для работы с вейвлетами, который одинаково необходим как специалистам-практикам, разрабатывающим практические приложения
вейвлетов, так и теоретикам, желающим иметь практическую апробацию своих теоретических выводов.
Итак, до сих пор не было обобщающей научной монографии справочного характера, содержащей достаточно уравновешенное описание как теоретических
основ вейвлетов и вейвлет-преобразований, так и прикладных аспектов их применения и нужного для этого программного инструментария. Этот серьезный пробел и призвана устранить данная книга.
В данной книге предпринята попытка найти ту золотую середину в теоретическом и практическом описании вейвлетов, которая сделала бы такое описание понятным многим специалистам—прикладникам и вполне полезным для читателей
7
Введение
с самыми различными интересами. Поскольку основополагающие теоретические
работы по вейвлетам уже появились, в том числе в нашей литературе, теоретические сведения в данной книге носят обзорный характер и не претендуют по полноту математического описания. В частности, всякая «математическая эквилибристика» из этой книги сознательно удалена.
В то же время данная книга впервые, при вполне допустимом и разумном объеме теоретических сведений, дает достаточно полное описание новейшего программного инструментария для работы с вейвлетами и многочисленных практических примеров работы с ними. Описанные в книге возможности ряда крупных пакетов расширения СКМ по вейвлетам и многочисленные примеры их применения
взаимно дополняют друг друга и в целом дают уникальную возможность познать
многогранность самой современной вейвлет-технологии.
Именно это и заложено в смысл названия книги «Вейвлеты. От теории к практике». Это название никоим образом не принижает фундаментальной роли математической теории вейвлетов, которая уже не раз была отмечена выше. Оно говорит лишь об одном — пора перейти от созерцания теории вейвлетов к широкому
практическому их применению и к активному экспериментированию с вейвлетами. Автор надеется, что такой характер книги сделает ее ценным теоретическим и
практическим пособием для всех категорий читателей, желающих освоить или уже
осваивающих на практике новое открытие конца 20-го века — вейвлеты.
О содержании и стиле книги
Книга является первой справочной научной монографией, посвященной крупной, новой и актуальной проблеме — вейвлетам и вейвлет-преобразованиям, возможности которых представлены описанием ряда современных инструментальных
программных средств по вейвлетам. Теоретический материал представлен в обзорной форме, доступной для понимания специалистами в области прикладной математики и обработки функций, сигналов и изображений.
Основное внимание в книге уделено вопросам практического применения вейвлетов и вейвлет-преобразований на основе такого мощного программного инструментария, коим являются профессионально ориентированные пакеты расширения по вейвлетам, созданные для систем компьютерной математики MATLAB,
Mathcad и Mathematica (как новейших, так и предшествующих им версий). По
этим пакетам расширения (Wavelet Toolbox, Wavelet Extеnsion Pack и Wavelet Explorer) книга может выполнять функции достаточно полного справочника и руководства пользователя.
Вводная глава 1 содержит основные определения функций и сигналов и
средств их обработки, предшествующих появлению вейвлетов. Таким образом,
она как бы перекидывает мост между традиционным аппаратом приближения
функций и стационарных сигналов, в том числе на основе рядов Фурье и быстрого (оконного) преобразования Фурье, и новейшим аппаратом вейвлет-преобразований, в том числе нестационарных сигналов. Все теоретические сведения в этой
главе подкрепляются многочисленными примерами вычислений в наиболее массовой у нас системе Mathcad, документы которой имеют привычный для математиков и научно-технических специалистов вид пользовательского интерфейса.
Глава 2 содержит основной обзорный материал по теории вейвлетов. Чтобы
сделать этот, далеко не простой, материал доступным, в эту главу включено мно-
8
О содержании и стиле книги
жество практических примеров, реализованных в «чистой» (без пакетов расширения) системе Mathcad 2001/11 и наглядно иллюстрирующих основные положения
теории вейвлетов. Данная глава содержит минимальный набор теоретических положений, тем не менее вполне достаточный для понимания большинства нюансов
практического применения вейвлетов.
Здесь описываются возможности вейвлетов — как непрерывных одномерных,
так и дискретных, пакетных и двумерных. Значительное внимание уделено кратномасштабному анализу и описанию особенностей ортогональных вейвлетов, допускающих точную реставрацию сигналов после их декомпозиции. Описан временной и частотный подход при прямом и обратном вейвлет-преобразованиях —
как непрерывных, так и дискретных. Дается понятие о вейвлет-фильтрах и о вейвлет-декомпозиции и реконструкции сигналов. Завершается глава описанием методики создания вейвлетов и обширного набора вейвлетов, входящего в наиболее
мощный пакет расширения по вейвлетам — Wavelet Toolbox для систем MATLAB.
Глава 3 описывает работу с пакетом расширения Wavelet Toolbox системы
MATLAB в командном режиме. Этот пакет у нас доступен на CD-ROM, имеющихся в широкой продаже, хотя и имеющих сомнительное происхожение. В главе
3 описаны все функции этого пакета, за исключением функций задания вейвлетов, описание которых было вынесено в главу 2. Для каждой функции приведены
синтаксические формы записи и примеры практического применения. Примеры
охватывают всю проблематику применения вейвлетов — от применения утилит
построения деревьев вейвлет-преобразований и расчета отдельных характеристик
вейвлетов до обработки сигналов и изображений, включая их компрессию и очистку от шумов.
Глава 4 описывает мощную вейвлет-лабораторию на основе интерфейса пользователя (GUI) системы MATLAB. Показаны возможности вывода детальной (в
том числе графической) информации по всем типам вейвлетов, вошедших в пакет
Wavelet Toolbox, и наглядная реализация множества примеров вейвлет-обработки
сигналов и изображений с высокой степенью визуализации результатов и удобными средствами интерактивной работы с пользователем.
Глава 5 посвящена работе с пакетами расширения системы Mathcad, поддерживающими вейвлет-преобразования. Она начинается с описания восьми новых
функций по работе с вейвлетами пакета расширения по численным методам Numeric Recipes. Но основное внимание впервые в нашей литературе уделено специализированному на работу с вейвлетами обширному пакету расширения Wavelet
Extension Pack и электронной книге по нему. Дано описание всех функций этого
пакета и многочисленных примеров их применения.
Обширная глава 6 посвящена еще одному мощному пакету расширения по
вейвлетам — Wavelet Explorer для одной из самых известных СКМ Mathematica 4/4.1/5, которая является лидером среди систем компьютерной математики.
Этот материал также публикуется впервые. Wavelet Explorer принадлежит к числу
наиболее крупных и вполне завершенных программных продуктов по применению вейвлетов. И он охватывает практически все области применения вейвлетов — от визуализации вейвлетов и контроля за их параметрами до обработки сигналов и изображений.
Вообще надо отметить, что материалы по вейвлетам в разных пакетах расширения оказываются далеко не идентичными. Каждый пакет расширения имеет свое
ярко выраженное лицо, свои достоинства и недостатки. И лишь знакомство одновременно с несколькими пакетами расширения, впервые ставшее возможным в
9
Введение
этой книге, позволяет получить достаточно полную информацию по практическим аспектам применения вейвлетов и вейвлет-преобразований.
Заключительная глава 7 содержит обзор ряда важных областей применения
вейвлетов в таких областях, как идентификация и анализ функций и сигналов,
очистка от шумов и компрессия сигналов и изображений. Дается описание Интернет-страниц, поддерживающих представление информации по вейвлетам. Ряд
материалов этой главы выходит за рамки описания возможностей пакетов расширения СКМ по вейвлетам. Например, приводятся данные об использовании вейвлет-обработки изображений в популярных графических пакетах Corel
Draw 9/10/11 и данные о некоторых других программных средствах для работы с
вейвлетами. Здесь же описываются пути дальнейшего развития вейвлетов и вейвлет-преобразований в математике, физике, биологии, медицине и в других областях науки и техники.
Благодарности
Эта книга написана благодаря помощи и солидарности многих лиц и организаций. Особой благодарности заслуживают представители ряда крупных западных
корпораций США, создателей всемирно известных систем компьютерной математики, за предоставление автору их новейших программных продуктов, пакетов
расширений по ним, документации и информационного обеспечения.
С. Вольфрама (S. Wolfram), главу фирмы Wolfram Research, Inc. (США), и сотрудника этой фирмы Олега Маричева автор благодарит за предоставленную возможность полуторамесячной стажировки в США и прекрасные условия для работы. Это позволило собрать множество новых материалов как по системе Mathematica и пакету Wavelet Explorer (разработки этой фирмы), так и по другим системам
компьютерной математики, включая Mathcad и MATLAB, и оценить новые направления их применения в вейвлет-обработке сигналов и функций.
Представители фирмы MathSoft Inc. в Европе Rob Doley и Diane Ashfield заслуживают глубокой благодарности за оперативное предоставление автору расширения системы Mathcad — Wavelet Extension Pack c электронной книгой по нему.
Особую благодарность автор выражает представителям крупной корпорации
MathWorks Naomi Fernandes и Courtney Esposito за поддержку издания книг автора
по системам класса MATLAB и за своевременное и весьма оперативное предоставление одной из самых мощных систем компьютерной математики MATLAB 6.0/6.1/6.5. Входящий в них пакет расширения по вейвлетам — Wavelet Toolbox
является уникальной программной лабораторией для удобного изучения и применения вейвлетов. Поэтому данному пакету в книге уделено особенно много места.
Автор благодарит своих молодых сотрудников доцентов Ирину Абраменкову и
Елену Петрову за помощь в подготовке отдельных примеров в книге и споры по
их содержанию.
Директору ЗАО «Смоленский телепорт» Григорию Рухамину автор признателен
за многолетнее подключение к Интернету по спутниковому каналу, что позволило
получить самые свежие сведения по проблематике книги и выйти на прямое сотрудничество с указанными выше корпорациями.
Особую благодарность автор выражает Международной Соросовской программе в области точных наук (ISSEP), чей грант и признание в 1999 и в 2001 гг. ощу-
10
Предупреждения
тимо помогли автору осознать необходимость в подготовке подобных книг в
наши, все еще довольно смутные для российской науки и образования времена.
Предупреждения
Автор и издательство сделали все возможное, чтобы материал книги был доступен, своевременен, актуален, объективен и точен. Однако описанные в книге новые понятия — вейвлеты и относящиеся к ним новейшие программные средства
находятся в начале своего бурного развития. Поэтому нет гарантии в том, что в
крайне сжатые сроки подготовки даже второго издания книги что-то в их описании не было упущено и даже неточно истолковано.
Автор и издательство предупреждают читателей, что они не несут ответственности за неправильное истолкование читателями каких-либо терминов и положений, относящихся к вейвлетам, и за трудности в их применении при решении тех
или иных конкретных задач. Кроме того, авторы и издательство не несут ответственности за возможные негативные результаты использования случайных копий
систем компьютерной математики Mathcad, MATLAB и Mathematica и пакетов их
расширений, имеющихся на многочисленных компакт-дисках, а также за любой
моральный и материальный вред, который вытекает из работы (увы, далеко не
всегда правильной) пользователей с этими системами.
Эти предупреждения вовсе не означают наличия каких-либо особых недостатков в системах компьютерной математики и в пакетах их расширения, описанных
в данной книге. Предупреждения читателям просто являются долгом автора и издательства перед ними, вытекающим из современного юридического подхода к
использованию быстро развивающихся программных средств и их описаний. Подобные предупреждения вы найдете в любом описании современных программных продуктов.
Эти предупреждения сделаны еще и потому, что предшествующие книги автора уже много раз незаконно копировались на «пиратские» компакт-диски без уведомления автора и даже с удалением его фамилии. При этом скопированные тексты и рисунки нередко относились совсем не к тем версиям математических систем, которые находились на подобных дисках. Хотелось бы предупредить
читателей, что имеющиеся на таких дисках материалы не только незаконны, но и,
подчас, совсем не соответствуют тому, что написано на их конвертах и наклейках.
Адреса
Отзывы и пожелания о книге можно отправлять по адресу издательства, выпустившего книгу. Вы можете также посетить домашнюю страницу автора этой книги
на сайте АО «Смоленский телепорт» www.keytown.com/users/dyak.
Принятые в книге обозначения
Для облегчения чтения книги в ней используются следующие обозначения.
11
Введение
• Имена элементов интерфейса выделены специальным шрифтом, например:
«Позиция Open меню File».
• Термины, встречающиеся в тексте в первый раз, как правило, выделены
курсивом, например: «Строка меню — это строка, открывающая доступ к
пунктам меню с различными командами».
• Моноширинным шрифтом обозначены векторы, матрицы, функции, операторы, программные блоки и вообще все, что можно увидеть в окне редактора системы Mathcad. Например: Name := Nbegin..Nend.
В тексте вам также будут встречаться специальные врезки, в которых содержатся примечания и предупреждения.
ПРИМЕЧАНИЕ В примечаниях даются сведения, позволяющие лучше понять тему раздела.
ВНИМАНИЕ Под этим заголовком идут сведения, требующие особого внимания.
Чаще всего это сведения, подводящие итог рассмотрения тех или иных
аспектов применения вейвлетов, или указания на специфику использования инструментальных средств по ним.
В книге использован ряд общепринятых сокращений:
АМ — амплитудная модуляция;
АЧХ — амплитудно-частотная характеристика;
БПФ — быстрое преобразование Фурье;
БВП — быстрое вейвлет-преобразование;
ВП — вейвлет-преобразование;
ДКП — дискретное косинусное преобразование;
ДПФ — дискретное преобразование Фурье;
КЗС — квадратурные зеркальные фильтры;
КИХ — конечная импульсная характеристика;
КМА — кратномасштабный анализ;
КФ — квадратурные фильтры;
ОВП — обратное вейвлет-преобразование;
ОДВП — обратное дискретное вейвлет-преобразование;
ОНВП — обратное непрерывное вейвлет-преобразование;
ОПФ — обратное преобразование Фурье;
ПВП — прямое вейвлет-преобразование;
ПДВП — прямое дискретное вейвлет-преобразование;
ПНВП — прямое непрерывное вейвлет-преобразование;
ППФ — прямое преобразование Фурье;
ФВЧ — фильтр нижних частот;
ФНЧ — фильтр нижних частот;
ФЧХ — фазочастотная характеристика;
ЧМ — частотная модуляция;
phi — функция аппроксимации ϕ(t ) вейвлетов;
psi — детализирующая вейвлет-функция ψ( t ).
Специальные математические обозначения вводятся по мере необходимости в
них в начале глав 1 и 2.
12
Глава 1. Функции, ряды и преобразования
Фурье
1.1. Понятие о функции
1.1.1. Несколько слов о функции
Более двух сотен лет тому назад в обиход математиков пришло понятие функции, как некоторой зависимости одной величины, например, f или y, от другой
величины — независимой переменной x или t. Функции стали обозначать как f(x),
f(t), y(x) и т. д. Могут быть и функции ряда переменных, например, вида f(x, y, z,
...). Временные функции вида s(t), e(t), f(t) и т. д., широко используемые в технике
связи, принято именовать сигналами. А функции или сигналы, заданные в определенные моменты времени, называют временными рядами.
Довольно скоро стало ясно, что это понятие требует серьезных уточнений. Например, следует оговорить, в каком интервале [a, b] может задаваться независимая
переменная x или t, может ли она принимать в нем все виды численных значений
(например, в виде целых, рациональных, вещественных, иррациональных или
комплексных чисел), как задать характер зависимости зависимой переменной f
или y от независимой переменной (например, в явном или неявном или даже в
итерационном виде) и т. д.
1.1.2. Области определения функций
Часто функция определена на некотором отрезке от x = a до x = b. В этом случае область определения функции принято записывать как x∈[a,b]. Иногда используют и иные обозначения. Например, если интервал определения функции задан как a < x ≤ b, то это записывают как x∈(a,b].
Особого внимания требует определение функций в бесконечном интервале
значений независимой переменной от –∞ до +∞. Мы будем обозначать его как R,
т. е. R = (–∞, +∞). Пусть, скажем, x принадлежит R, это записывается как x∈R.
Примером функции, определенной в R, является синусоидальная функция sin(x).
1.1.3. Компактный носитель функции
В литературе по вейвлетам широко используется понятие носителя функции.
Носителем функции фактически является область ее определения. Например,
если f(x) определена при x∈[a,b] и f(x) = 0 при a < x и x > b, а b — a невелико, то
говорят, что функция f(x) явно имеет компактный носитель. Если a = –∞ или b =
+∞ или имеет место и то и другое, то функция компактного носителя не имеет.
Введение понятия компактного носителя ценно в связи с возможностью замены бесконечных пределов интегрирования в преобразованиях Фурье и в вейвлет-преобразованиях на конечные пределы. Это нередко упрощает вычисления и
делает математические преобразования корректными исходя из практических соображений.
13
Глава 1. Функции, ряды и преобразования Фурье
1.1.4. Пространства функции
В процессе изучения функций мы встретимся с понятиями о множествах или
пространствах функций. Пространство LP[R] означает, что функция f(x) удовлетворяет условию
∞
∫
p
f (x ) dx < ∞.
−∞
К примеру, часто используемое гильбертовое пространство L2[R] означает, что
f(x) удовлетворяет условию
∞
∫
2
f (x ) dx < ∞.
−∞
Могут встречаться и иные пространства, например, L2(0,2π) означает, что f(x)
удовлетворяет условию
2π
∫
2
f (x ) dx < ∞.
0
1.1.5. Периодичность функции
Практически можно считать, что в нашем случае f(x) — любая кусочно-непрерывная функция. Она может быть периодической. Например, на периоде 2π периодической будет функция, удовлетворяющая равенству f(x) = f(x±2π). Множество
функций из L2(0, 2π) называют пространством 2π-периодических функций, интегрируемых с квадратом.
Примером такой функции является и комплексная синусоида f(x) = eix =
cos(x) + i ⋅ sin(x), где i = −1 — мнимая единица. Синусоида является функцией
периодически продолжаемой на всю вещественную ось x. Однако пространству
L2(R) синусоида не принадлежит, поскольку из условия определения этого пространства следует, что принадлежащие ему функции должны затухать при x∈R.
Синусоида таким свойством не обладает.
Анализ функций — обширный раздел математики. Он позволяет выявить такие
особенности функций, как их периодичность, наличие особых точек (например,
разрывов самой функции и ее производных, точек перегибов и т. д.), существование и тип экстремумов, наличие асимптот и др. Обширный материал по анализу
функций с помощью СКМ собран в книге [27].
ВНИМАНИЕ В представленных ниже материалах отобраны только те сведения и примеры, которые непосредственно подводят нас к пониманию причин появления вейвлет-технологии и принципиально важны для сопоставления ее возможностей с возможностями классического, в том числе спектрального,
анализа функций и сигналов.
1.2. Приближение функций и сигналов
1.2.1. О приближении функций и сигналов
Некоторые формулы, описывающие важные физические явления и математические понятия, например траектории планет Солнечной системы, настолько
14
1.2. Приближение функций и сигналов
сложны, что занимают десятки и сотни страниц. В связи с этим появилась задача
представления сложных функций более простой функцией или набором простых
функций — задача аппроксимации. При этом весьма желательно, чтобы аппроксимация была как можно более точной и вычислялась за малое время.
Развитие науки и техники привело к созданию великого множества простых по
виду специальных математических функций, представляющих решения дифференциальных уравнений определенного вида или интегралов. Большинство из них
вычисляется только в численном виде, и такие вычисления требуют много времени. Были созданы таблицы подобных функций и написаны книги, содержащие
множество таких таблиц, например получившая мировую известность книга [33].
Есть описание специальных функций и в обычных справочниках по математике,
например [34].
Таблицы обычно дают значения функций для вполне определенных (дискретных) значений xi независимой переменной x. Точки, в которых они определены,
называют узловыми. Из работы с таблицами возникает задача интерполяции функций, т. е. вычисления значений f(xi) в промежутках между узлами xi. Нередко эта
задача тесно связана с аппроксимацией, поскольку подходящую аппроксимирующую функцию можно использовать для вычисления значений f(x) в промежутках
между узлами.
Вычисление функции за пределами узловых точек получило название экстраполяции. Экстраполяция возможна как вперед, так и назад. Экстраполяцию вперед
часто именуют предсказанием значений функций. Мечтой многих, увы, далеко не
всегда исполнимой, является создание математического предсказания событий —
часто непредсказуемых, например, таких как землетрясения, обвалы в финансовой сфере и ставшие печально известными террористические акты.
Как известно, на практике данные могут иметь погрешности, порою весьма
значительные. Например, применяемые в технике связи сигналы нередко засорены шумами, уровень которых может многократно превосходить уровень полезной
компоненты сигналов. В связи с этим возникает целый спектр задач обработки
таких сигналов и функций, например сглаживание данных, очистка их от шума
(или, что почти одно и то же — выделение полезных сигналов из шума). Проведение аппроксимации с одновременной статистической обработкой данных относится к регрессии или задачам регрессионного анализа. При этом широко используется оценка среднеквадратической погрешности для всех точек обрабатываемых
данных, а сам метод подобного приближения и анализа функций получил название метода наименьших квадратов (МНК).
Итак, с появлением функций, а затем сигналов возникла достаточно общая задача их однообразного представления простыми функциями или рядами таких
функций — задача приближения функций. Под простотой функции мы будем
прежде всего понимать возможность ее простого и быстрого вычисления. Разумеется, в наш век уже не ручного вычисления, а с помощью компьютера. Будем называть эту задачу задачей приближения функций и сигналов.
В многовековой истории развития математики принимались неоднократные
попытки решения задачи приближения произвольных функций и сигналов. Некоторые из них привели к созданию классических методов интерполяции, аппроксимации и регрессии, значение которых велико и в наши дни.
Но, пожалуй, одним из самых выдающихся открытий в математике стали ряды
Фурье. Впервые появилась возможность однообразного представления произвольных (с некоторыми оговорками) функций и сигналов с помощью набора синусо-
15
Глава 1. Функции, ряды и преобразования Фурье
ид. Для периодических сигналов эти синусоиды — гармоники имеют кратные частоты.
Ряды Фурье долгое время воспринимались как математическая абстракция. Однако с появлением радиосвязи и с созданием высокоизбирательных радиоприемных устройств выяснилось, что гармоники сложных сигналов являются объективно
существующими объектами и характеризуются их спектром (набором). Ныне владелец обычного транзисторного радиоприемника может в этом убедиться, принимая
паразитное излучение от строчной развертки своего телевизора. Оно воспринимается как множество сигналов с частотой, кратной частоте строчной развертки (около
17 кГц). Правда, сигналы эти не модулированные и их можно обнаружить по показаниям индикатора настройки или по пропаданию шумов радиоприемника. Триумфом фурье-анализа и синтеза стало создание специальных и довольно сложных физических приборов — анализаторов спектра и синтезаторов сложных сигналов.
Однако по мере практического использования рядов Фурье стало нарастать недовольство ими. Было очевидно, что базовая функция — синусоида явно неудачна
для представления функций и сигналов с локальными особенностями, например
разрывами. Бесконечное число членов в ряде Фурье недопустимо и нереально на
практике. А их ограничение приводит к возникновению больших погрешностей
(эффект Гиббса [23]). Появление сигналов с явно выраженными локальными особенностями, например импульсных, цифровых, сигналов изображений и т. д., все
чаще и чаще стало демонстрировать невысокую эффективность и принципиальные недостатки фурье-анализа и синтеза.
В связи с этим предпринимались неоднократные попытки применения рядов с
иными базовыми функциями (например, Уолша, Хаара и др.). И лишь к концу
80-х годов прошлого столетия эти попытки привели к новому открытию — вейвлетов, которым и посвящена данная книга. Вейвлеты (wavelets) представляют собой довольно обширный класс функций, график которых имеет вид коротких
волн, ограниченных во времени или в пространстве и способных к перемещению
и масштабированию. Замечательно, что многие вейвлеты могут представлять абсолютно точно или приближенно произвольные функции, сигналы и изображения.
Именно это и открывает перед ними перспективы широкого применения для анализа функций, обработки сигналов и изображений.
Однако вейвлеты оказались «крепким орешком». Математическая теория вейвлетов, базирующаяся на сложных понятиях пространств функций и сигналов, ортогональности базисных функций и их нормах намного сложнее и тоньше, чем
ставшая уже привычной теория фурье-приближения функций и сигналов. Теория
вейвлетов находится в развитии, многие понятия в ней непривычны и сложны для
непосвященных. Особенно в условиях отсутствия инструментальных средств для
практической работы с ними.
Мир специалистов, заинтересованных в применении вейвлетов, разбился на
два отдаленных друг от друга лагеря. В первом находятся опытные математики,
развивающие математическую теорию вейвлетов, но слабо владеющие современными инструментальными средствами по работе с ними или старающиеся не афишировать применение таких средств. Во втором, куда более обширном лагере находится основная масса специалистов в области прикладной математики и обработки сигналов и изображений. Большинство из них даже не слышали о вейвлетах
и об инструментальных средствах, облегчающих работу с ними.
Эта книга, как отмечалось во введении, перекидывает мост между этими двумя
лагерями. Она одинаково полезна как опытным математикам, получающим сведения
16
1.2. Приближение функций и сигналов
о самых современных и новейших программно-инструментальных средствах для
проверки своих идей и их внедрения в практику, так и, особенно, прикладникам и
практикам, применяющим их для создания новых высокоэффективных технических
изделий, приборов и программных средств по обработке сигналов и изображений.
В книге описаны следующие пакеты расширения систем компьютерной математики (СКМ), позволяющие работать с вейвлетами:
• Wavelet
Toolbox (WT) — пакет для мощных матричных СКМ
MATLAB 6.0/6.1/6.5;
• Wavelet Extension Pack (WEP) — пакет для популярных СКМ для всех
Mathcad 8/2000/2001/2001i/11;
• Wavelet Explorer (WE) — пакет для лидера в области компьютерной математики — СКМ Mathrmatica 4/4.1/4.2/5.
Для категории читателей, на которых рассчитана эта книга, крайне важно детально осмыслить, что же нового дает вейвлет-технология перед привычной технологией приближения функций и обработки сигналов и изображений. Именно поэтому книга открывается этой главой, в которой дается обзор теоретических понятий по приближению функций и обработке сигналов, сопровождающийся
практическими примерами реализации положений теории. В принципе, этот раздел имеет вполне самостоятельное значение и может рассматриваться как введение в технику приближения функций и сигналов.
Предполагается, что читатель имеет доступ к современным СКМ класса Mathcad,
MATLAB и Mathematica. Мощная и популярная СКМ Maple 8/9 пока не имеет пакета расширения по вейвлетам и потому в данной книге не рассматривается. В этой
книге нет описания упомянутых СКМ самих по себе — новички в их применении
могут воспользоваться многочисленными книгами по этим системам, например
[25—31]. В то же время по упомянутым выше пакетам расширения в книге содержится исчерпывающий справочный материал и множество примеров (как приведенных в документации по этим пакетам, так и новых). Это позволяет использовать
книгу не только как теоретическое, но и, прежде всего, практическое руководство по
применению современного программного инструментария по вейвлетам.
1.2.2. Приближение функций рядом Тейлора
Одним из первых методов единообразного представления функций было разложение их в ряд Тейлора [34]. Если f(x) дифференцируемая функция, то ее разложение в ряд Тейлора в окрестности точки x0 задается выражением:
f (x ) ≅ f (x 0 ) +
f ′ (x 0 )
f ′′(x 0 )
f ( n ) (x 0 )
(x − x 0 )n .
(x − x 0 ) +
(x − x 0 )2 +K+
n!
1!
2!
Если разложение выполняется относительно точки x0 = 0, его принято называть рядом Маклорена:
f (x ) ≅ f (x 0 ) +
f ′ (x 0 )
f ′′(x 0 ) 2
f ( n ) (x 0 ) n
x+
x +K+
x .
1!
2!
n!
Ряд Тейлора можно представить в следующем виде:
f (x ) ≅ f (x 0 ) +
∞
∑f
i =1
(i )
(x − x 0 )
.
i!
(1.1)
17
Глава 1. Функции, ряды и преобразования Фурье
ПРИМЕЧАНИЕ Формула (1.1) по существу реализует две важные идеи вейвлет-преобразования: разбиение приближения функции на две компоненты — аппроксимирующую (грубую) и детализирующую, а также реализацию детализации по итерационной формуле. В самом деле, в правой части (1.1)
член f(x0) есть грубое приближение к значению функции в любой точке,
близкой к x0, и, что замечательно, к абсолютно точному приближению
в самой этой точке. Член с суммой является детализирующим. Детализацию можно проводить вплоть до i→∞ или, ограничиваясь конечной
точностью, до i = n.
К сожалению, представление произвольной функции рядом (1.1) имеет множество недостатков. Даже для непрерывных функций этот ряд чаще всего сходится
очень медленно. Как известно, есть и непрерывные, но не дифференцируемые
функции (например, фракталы [19]). И вообще операция дифференцирования является далеко не простой и точной. Для разрывных и периодически повторяющихся функций разложение (1.1) практически неприемлемо.
Тем не менее операции разложения в ряд Тейлора и Маклорена настолько распространены, что включены в набор встроенных функций практически всех математических систем. Например, в системах Mathcad для этого используется опция
series в составе оператора символьного вывода →. Пример разложения функции
sin(x) в ряд Маклорена представлен на рис. 1.1. В местах ввода после оператора →
указывается имя независимой переменной и порядок ряда. Следует отметить, что
ряды многих функций могут не содержать члены с нечетной или четной степенью, поэтому порядок реального ряда может быть ниже заданного.
Рисунок 1.1 дает представление о совершенстве пользовательского интерфейса системы Mathcad 11. Это вполне привычный пользователям приложениями под Windows-интерфейс. Пожалуй, единственным его отличием от интерфейса таких приложений являются выводимые в окно редактирования документа палитры математических знаков. Общая палитра таких знаков Math и две
палитры распространенных операций (вычислений Calculus и символьных операций Symbolic) показаны на рис. 1.1, справа. С помощью палитр шаблоны
практически любых математических операций могут вводиться даже неопытными пользователями. В связи с этим в дальнейшем элементы интерфейса этой
системы будут опускаться.
Этот рисунок прекрасно иллюстрирует и основные проблемы разложения функции sin(x) в ряд Маклорена:
• погрешность разложения мала только в малой окрестности точки x0;
• при заметном удалении от точки x0 отклонение кривой ряда от кривой исходной точки x0 резко нарастает и становится практически непредсказуемым;
• никаких признаков периодичности функции sin(x) в ее разложении в ряд
не обнаруживается.
Суммируя сказанное, можно со всей определенностью сказать, что ряды Тейлора и Маклорена приближают даже гладкую и легко дифференцируемую синусоидальную функцию в целом плохо. Впрочем, как и подавляющее большинство
других функций. Исключением являются лишь функции, которые могут быть
представлены полиномами, но заданы в завуалированном виде. Но в этом случае,
скорее всего, само разложение в ряд Тейлора или Маклорена является излишним
18
1.2. Приближение функций и сигналов
Рис. 1.1. Разложение функции sin(x) в ряд Маклорена
и требуется просто грамотное преобразование функции в ее полиномиальное
представление.
1.2.3. Интерполяция и экстраполяция функций по Лагранжу
Можно попытаться приблизить таблично заданную функцию другим способом,
не привязываясь к одной конкретной точке. Пусть некоторая функция f(x) определена рядом своих узловых точек (xi, yi) на некотором отрезке [a, b]. Под интерполяцией мы будем подразумевать вычисление значений f(x) в любом промежутке
[xi, xi+1] в пределах отрезка [a, b]. Соответственно, любое вычисление f(x) вне отрезка [a, b] является экстраполяцией.
Если при интерполяции задача сводится к вычислению значений функции
между узлами, то при экстраполяции задача состоит в вычислении значений функции вне того интервала, на котором она задана в виде таблицы, графически или
иным способом. При аппроксимации таблично заданная функция (что, кстати, не
является обязательным признаком аппроксимации) заменяется другой функцией,
как правило, более простой и потому более быстро вычисляемой, которая приближенно описывает поведение исходной функции на некотором отрезке. При этом
на различных отрезках аппроксимирующие функции могут быть и чаще всего бывают разными.
Широко применяемые в практике обработки таблиц линейная и квадратичная
интерполяции, представленные выражениями
f(x)лин = a1x + a0 и f(x)кв = a2x2 + a1x + a0,
19
Глава 1. Функции, ряды и преобразования Фурье
являются частным видом полиномиальной интерполяции (и аппроксимации), при
которой значения f(x) вычисляются с помощью аппроксимирующего полинома:
n
fa(x) = anxn + an–1xn–1 + ... aixi + ... + a2x2 + a1x + a0 =
∑ax .
i
i
(1.2)
i =0
Реализация полиномиальной аппроксимации сводится к вычислению коэффициентов полинома an, an–1, ..., a1, a0, так чтобы точки fa(xi) точно совпадали с узловыми точками f(xi). Нетрудно показать, что эта задача решается довольно легко.
В самом деле, можно составить систему линейных относительно an, an–1, ..., a1, a0
уравнений вида (1.2) так, что в каждом уравнении x = xi и f(xi) = fa(xi). Из решения
такой системы можно получить требуемые коэффициенты an, an–1, ..., a1, a0 многочлена. При этом значения полинома в узловых точках точно совпадают со значениями ординат в этих точках.
Есть и более эффективные способы полиномиальной аппроксимации и ряд
удобных форм полинома — в частности, форма, известная как формула интерполяции по Лагранжу [33]. Ее удобство в том, что в ней фигурируют лишь координаты узловых точек. Обобщенная формула Лагранжа в практической ее реализации
в системе Mathcad представлена на рис. 1.2. Эта формула использует только данные об узловых точках функции.
Рис. 1.2. Пример интерполяции табличных данных с помощью обобщенной
формулы Лагранжа
Недостатками обобщенной формулы Лагранжа является ее сложность и отсутствие явного выражения для аппроксимирующего полинома.
1.2.4. Полиномиальная аппроксимация
Несложно выполнить и полиномиальную аппроксимацию таблично заданной
функции в общем случае (для произвольно заданной степени полинома), то есть по-
20
1.2. Приближение функций и сигналов
лучить аппроксимирующий полином (1.2) в явном виде. Пример этого представлен
на рис. 1.3. В данном случае гарантировано, что кривая полинома точно (или, точнее, с погрешностью машинных расчетов) пройдет через все узловые точки. Но, увы,
гарантии высокой точности при интерполяции и тем более при экстраполяции нет.
Рис. 1.3. Пример полиномиальной аппроксимации
Особенностью рассмотренной только что глобальной полиномиальной аппроксимации является однозначное соответствие между числом узловых точек N аппроксимируемой функции и степенью полинома n = N – 1. На практике можно
нередко задать функцию множеством точек, но тогда степень полинома станет
очень большой, его вычисления займут много времени, а главное, при этом точность вычислений может резко ухудшиться из-за осцилляций полиномов высоких
степеней. Практически максимальная степень полинома не превышает 8—10 и
лишь в СКМ с точными вычислениями может быть повышена.
ВНИМАНИЕ Интересующихся специальной техникой аппроксимации (Паде, Чебышева,
минимаксной и др.) стоит обратить внимание на ее реализацию в такой
мощной математической системе, как Maple. В книгах [27, 31] приводятся
примеры того, как выбор высокоточной аппроксимации позволяет получить
верные значения до 6—8 цифр результата и при этом сократить время вычислений функций порой в сотни раз. При этом особенно важно учитывать
особенности аппроксимируемой функции, для чего (как мы увидим из дальнейшего) чрезвычайно полезными оказываются вейвлеты.
1.2.5. Сплайновая интерполяция
В настоящее время важным направлением существенного повышения точности
интерполяции является переход от интерполяции одним полиномом к интерполяции рядом полиномов невысокой степени. В общем случае речь идет о том, что
21
Глава 1. Функции, ряды и преобразования Фурье
используются отрезки полиномов невысокой степени, интерполирующие данные
для нескольких смежных узловых точек. Если нужная точка выходит за их пределы, меняется набор узловых точек и строится новый полином. Такого рода интерполяция является локальной, поскольку при построении очередного отрезка полинома используются локальные данные лишь о части точек.
Простейшим видом сплайновой интерполяции является кусочно-линейная интерполяция, при которой вычисления дополнительных точек выполняются по линейной зависимости. Графически это означает просто соединение узловых точек
отрезками прямых. В массовой СКМ Mathcad для этого используется функция:
linterp(VX, VY, x)
Для заданных векторов узловых точек VX и VY и заданного аргумента x функция linterp(VX, VY, x) возвращает значение функции при ее линейной интерполяции. При экстраполяции используются отрезки прямых, проведенных через
две крайние точки слева (линейная экстраполяция назад) или справа (линейная
экстраполяция вперед).
В ряде случаев весьма полезной оказывается сплайновая интерполяции, при которой используются отрезки полиномов обычно не выше третьей степени — кубические сплайны. Требуется, чтобы кубические сплайны проходили через смежные
три ближайшие узловые точки и, кроме того, в граничных точках должны совпадать не только значения сплайнов и функции, но и значения их первых и вторых
производных. Это означает высокую плавность линий интерполяции (аппроксимации). Такую плавность обеспечивает гибкая линейка, как бы закрепленная в узловых точках.
Итак, сплайн-интерполяция характеризуется следующими особенностями:
• график кусочно-полиномиальной аппроксимирующей функции проходит
точно через узловые точки;
• в узловых точках нет разрывов функции и разрывов производной;
• благодаря низкой степени полиномов погрешность между узловыми точками обычно достаточно мала;
• поскольку используется множество полиномов, то появляется возможность
аппроксимации быстроменяющихся функций.
Разумеется, сплайны могут быть не только кубическими. Обычная линейная
интерполяция является, в сущности, сплайновой интерполяцией первого порядка.
Достаточно практична интерполяция сплайнами второго порядка, но основной
все же является кубическая сплайновая интерполяция. Сплайны порядка выше
трех настолько громоздки, что не нашли применение на практике.
Сплайновая интерполяция может быть как локальной, так и глобальной (с применением для вычислений сплайнов всей совокупности узловых точек). Сплайны
могут также отличаться характером экстраполяции (представлением функции за
пределами отрезка [a, b]), которая может быть линейной, параболической или кубической. Поскольку экстраполяция делается по последним трем точкам, ее точность невысока. Такая интерполяция часто именуется продолжением.
Сплайновая кусочная аппроксимация также возможна. Но на практике она неудобна, поскольку не дает единого выражения для описания функции. Вместо
этого приходится использовать набор разных полиномов и переходить от одного
из них к другому при смене значения независимой переменной.
22
1.2. Приближение функций и сигналов
Для осуществления сплайновой интерполяции система Mathcad предлагает четыре встроенные функции. Три из них служат для получения векторов вторых
производных сплайн-функций при различном виде интерполяции:
• cspline(VX, VY) — возвращает вектор VS вторых производных при кубическом продолжении;
• pspline(VX, VY) — возвращает вектор VS вторых производных при параболическом продолжении;
• lspline(VX, VY) — возвращает вектор VS вторых производных при линейном продолжении.
Четвертая функция — interp(VS, VX, VY, x) — возвращает значение y(x)
для заданных векторов VS, VX, VY и заданного значения x.
Таким образом, сплайн-интерполяция проводится в два этапа. На первом с помощью функций cspline, pspline или lspline отыскивается вектор вторых
производных функции y(x), заданной векторами VX и VY ее значений (абсцисс и
ординат). Затем на втором этапе для каждой искомой точки вычисляется значение
y(x) с помощью функции interp.
На рис. 1.4 показано применение описанных функций для линейной и сплайновой интерполяции.
Нетрудно заметить, что при линейной интерполяции график оказывается
слишком грубым — отчетливо видны точки перегибов. В то же время сплайн-интерполяция, несмотря на малое число точек в этом примере (их всего 6), дает
внешне прекрасные результаты: график функции оказывается плавным и точки
его перегиба вообще незаметны. Однако внимательное изучение кривой интерполяции показывает, что нередко она (как и гибкая линейка) может слишком сильно выгибаться вверх или вниз.
Аппарат сплайновой интерполяции есть и в других СКМ — MATLAB, Maple и
Mathematica. Однако надо отдать должное разработчикам систем класса Mathcad — их инструментарий для работы со сплайнами более удобен, чем в других
СКМ. Среди разнообразных типов вейвлетов сплайновые вейвлеты занимают достойное место.
Рис. 1.4. Линейная и сплайновая интерполяция функции
23
Глава 1. Функции, ряды и преобразования Фурье
1.2.6. Двумерная линейная и сплайн-интерполяция
Для повышения качества построения трехмерных графиков имеется возможность выполнения двумерной сплайн-интерполяции. Это позволяет существенно
повысить представительность сложных графиков функций, в том числе контурных
(рис. 1.5).
Рис. 1.5. Пример применения двухмерной сплайн-интерполяции для построения
контурного графика сложной поверхности
На этом рисунке слева показан контурный график после двумерной
сплайн-интерполяции, а справа — без нее (с применением линейной интерполяции). Нетрудно заметить, что плавность контурных линий при двумерной сплайновой интерполяции заметно лучше, чем при двумерной линейной интерполяции.
1.2.7. Другие методы приближения и интерполяции
Разумеется, разложениями в ряд Тейлора, интерполяцией по Лагранжу и сплайнами или даже рядами Фурье классические задачи приближения сигналов и функций не ограничиваются. Базисом приближения могут быть специальные полиномы, например, Эрмита и Чебышева. Так, в кораблестроении получила применение
Чебышевская аппроксимация, которая основана на оптимальном выборе расположения узлов интерполяции. Это позволяет уменьшить резкое возрастание ошибок
приближения на краях интервала интерполяции. Минимизация ошибок и выравнивание их максимальных значений в интервале интерполяции положены в основу так называемых минимаксных методов. Они реализованы в ряде систем компьютерной математики, например, Mathematica 4/5 и Maple 8/9. Наглядные примеры
приближения одной и той же зависимости рядом методов описаны в [32].
Здесь пора остановиться, поскольку иначе можно превратить суп в кашу и перейти границу рассмотрения различий между классическими приближениями и
техникой вейвлет-приближений. Однако важным остается рассмотрение методов
приближения сигналов и зависимостей, в основе которых лежит статистическая
обработка исходных данных.
24
1.3. Регрессия и сглаживание данных
1.3. Регрессия и сглаживание данных
1.3.1. Постановка задачи регрессии
Как отмечалось, на практике вполне возможно задание достаточно большого
числа узловых точек аппроксимируемой функции. Например, в физических экспериментах для этого достаточно порой повторить цикл измерений несколько раз
(а порою и сотни раз). Если подвергнуть такие данные хотя бы простейшей статистической обработке (например, усреднению), то можно заметно уменьшить случайную погрешность измерений.
Таким образом, мы логично подходим к желательности объединения аппроксимации с элементарной статистической обработкой данных. Это и реализуется в
задачах регрессии, при которых график аппроксимирующей функции должен проходить в «облаке» узловых точек исходной функции так, чтобы суммарная среднеквадратичная погрешность для всех точек была минимальной.
Математически постановка задачи регрессии сводится к следующему. Пусть
есть набор точно определенных значений xi и соответствующих им не точных значений yi. Допустим, мы предполагаем, что существует некоторая зависимость f(x,
a0, a1, ..., ak), которая может рассматриваться как приближение к зависимости
y(x), чьи точки представлены как yi(xi). Таким образом, мы вправе записать:
yi = f (xi , a0, a1, K , ak ) + ξ i .
Здесь ξ i — независимые случайные величины с нормальным законом распределения, определяющие погрешность задания yi. Обычно их считают следствием
ошибок эксперимента. Задача регрессии заключается в том, чтобы найти параметры a0, a1, ..., ak такими, при которых представление y(x) нашей функцией f(x)
имело наименьшую среднеквадратичную погрешность. Для этого нужно минимизировать функцию
Ф (a0, a1, K , ak ) =
∑ ( f (x , a0, a1, K ak ) − y ) .
2
i
i
К примеру, для весьма часто применяемой линейной регрессии, когда f(x) =
a0 + a1*x (часто обозначают a0 = a и a1 = b), надо минимизировать следующее
выражение
∑ (a0 + a1x
Ф (a0, a1) =
i
− yi )2.
Если приравнять ∂Ф ∂a0 и ∂Ф ∂a1 к нулю, то для линейной регрессии можно
найти ее параметры a0 и a1 в явной форме:
n
a1 =
a0 =
n ∑ xi yi −
i =1
n
n
i =1
i =1
∑ xi ∑ yi
 n

n ∑ x i2 −  ∑ x i 
 i =1 
i =1
n
2
,
n
1 n

 ∑ yi − a1 ⋅ ∑ xi  .

n  i =1
i =1
Аналогичным образом можно получить выражения и для других видов регрессии: полиномиальной, экспоненциальной, логарифмической и так далее. Ввиду
сложности соответствующих выражений они здесь не приводятся. Многие задачи
25
Глава 1. Функции, ряды и преобразования Фурье
нелинейной регрессии удается свести к рассмотренной выше линейной, используя соответствующие преобразования [35].
ВНИМАНИЕ Мерой оптимальности подбора функции регрессии часто служит коэффициент взаимного соответствия данных, именуемый коэффициентом корреляции. Его близость к 1 означает, что данные хорошо коррелированы.
На практике все современные математические системы имеют универсальный
аппарат проведения регрессии различного вида, до предела упрощающий реализацию достаточно сложных алгоритмов регрессии. Так что пользователю нет смысла
отвлекаться на вывод порой весьма сложных, но теперь уже тривиальных уравнений для выполнения того или иного вида регрессии. Достаточно лишь четко задать функцию регрессии, которая должна наилучшим образом соответствовать исходной зависимости.
ПРИМЕЧАНИЕ Ряды Фурье для дискретно заданных сигналов с коэффициентами, определяемыми единственным точно обоснованным для этого случая методом прямоугольников, представляют собой также пример регрессии, поскольку приближают сигнал в смысле минимума среднеквадратической
погрешности приближения. Аналогична и ситуация с вейвлетами —
ограниченный набор вейвлетов приближает сигналы или функции по
критерию минимума среднеквадратической погрешности.
1.3.2. Выполнение линейной регрессии
К линейной регрессии можно свести многие виды нелинейной регрессии при
зависимостях вида y(x). Для проведения линейной регрессии в систему Mathcad
встроен ряд приведенных ниже функций:
• corr(VX, VY) — возвращает скаляр — коэффициент корреляции Пирсона;
• intercrpt(VX, VY) — возвращает значение параметра а (смещение линии
регрессии по вертикали);
• slope(VX, VY) — возвращает значение параметра b (угловой коэффициент линии регрессии).
На рис. 1.6 показан пример проведения линейной регрессии для данных, представленных значениями элементов в векторах VX и VY. Обратите внимание на то,
что узлы при линейной регрессии расположены неравномерно.
Как видно на рис. 1.6, линия регрессии проходит в «облаке» исходных точек с
максимальным среднеквадратичным приближением к ним. Чем ближе коэффициент корреляции к 1, тем точнее представленная исходными точками зависимость
приближается к линейной зависимости.
1.3.3. Реализация линейной регрессии общего вида
В Mathcad реализована возможность выполнения линейной регрессии общего
вида. При ней заданная совокупность точек приближается к функции вида:
F(x,K1,K2,...,Kn)= K1⋅F1(x)+K2⋅F2(x)+...+Kn⋅Fn(x).
Таким образом, функция регрессии является линейной комбинацией функций
F1(x), F2(x), ..., Fn(x), причем сами эти функции могут быть нелинейными, что
резко расширяет возможности такой аппроксимации и распространяет ее на многие нелинейные функции.
26
1.3. Регрессия и сглаживание данных
Рис. 1.6. Линейная регрессия
Для реализации линейной регрессии общего вида используется функция linfit(VX,VY,F), возвращающая вектор K коэффициентов линейной регрессии общего вида, при котором среднеквадратичная погрешность приближения «облака»
исходных точек, координаты которых хранятся в векторах VX и VY, оказывается
минимальной. Вектор F должен содержать функции F1(x), F2(x), ..., Fn(x), записанные в символьном виде.
Рисунок 1.7 поясняет проведение линейной регрессии общего вида с применением функции linfit. Процедура проведения вычислений настолько проста, что
не нуждается в особых комментариях.
Расположение координат точек исходного массива может быть любым, но вектор VX должен содержать координаты, упорядоченные в порядке их возрастания.
Вектор VY должен содержать координаты, соответствующие абсциссам в векторе
VX.
Рис. 1.7. Пример проведения линейной регрессии общего вида
27
Глава 1. Функции, ряды и преобразования Фурье
1.3.4. Реализация одномерной и многомерной полиномиальной
регрессии
В Mathcad введена и функция для обеспечения полиномиальной регрессии при
произвольной степени полинома регрессии regress(VX,VY,n), которая возвращает вектор VS, запрашиваемый функцией interp(VS,VX,VY,x) и содержащий
коэффициенты многочлена n-й степени, который наилучшим образом приближает «облако» точек с координатами, хранящимися в векторах VX и VY.
На рис. 1.7 показан пример выполнения полиномиальной регрессии. Для вычисления коэффициентов полинома регрессии используется функция submatrix.
Рис. 1.8. Полиномиальная регрессия
На практике не рекомендуется делать степень аппроксимирующего полинома
выше 4—6, поскольку погрешности реализации регрессии сильно возрастают.
Обычно рекомендуется проводить регрессию для ряда полиномов с нарастающими степенями, оценивая погрешность с помощью МНК. Этот процесс останавливают на этапе, дающем наименьшую погрешность. Степень аппроксимирующего
полинома можно существенно увеличить (до десятков) переходя к точным вычислениям, возможным в ряде СКМ.
К сожалению, поэтапное проведение полиномиальной регрессии требует полного пересчета коэффициентов полинома на каждом этапе. Специальная техника
регрессии на основе ортогональных полиномов лишена этого недостатка. При
этом рассчитанные на предшествующем шаге коэффициенты полинома остаются
с прежними значениями, так что каждый этап регрессии позволяет найти очередной коэффициент аппроксимирующего полинома. Однако главного недостатка —
быстрого нарастания погрешности при увеличении степени полинома эта техника, увы, не ликвидирует.
Функция regress создает единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек. Иногда полезна другая функция полиномиальной регрессии, дающая локальные приближения отрезками полиномов второй степени loess(VX, VY, span), которая воз-
28
1.3. Регрессия и сглаживание данных
вращает вектор VS, используемый функцией interp(VS,VX,VY,x) для
наилучшего приближения данных векторов VX и VY отрезками полиномов второй
степени. Аргумент span>0 указывает размер локальной области приближаемых
данных (рекомендуемое начальное значение — 0,75). Чем больше span, тем сильнее сказывается сглаживание данных. При больших значениях span эта функция
приближается к функции regress(VX,VY,2).
На рис. 1.9 показан пример приближения сложной функции со случайным разбросом ее значений с помощью совокупности отрезков полиномов второй степени
(функция loess) для двух значений параметра span. Пример дан для Mathcad 2001.
Рис. 1.9. Пример регрессии отрезками полиномов второй степени
На рис. 1.9 нетрудно заметить, что при малом значении span=0.05 отслеживаются характерные случайные колебания значений функции, тогда как уже при
span=0.5 кривая регрессии становится практически гладкой. К сожалению, из-за
отсутствия простого описания аппроксимирующей функции в виде отрезков полиномов этот вид регрессии широкого применения не нашел.
1.3.5. Проведение многомерной регрессии
Mathcad 2000/2001/11 позволяет выполнять также многомерную регрессию.
Самый типичный случай ее использования — приближение поверхностей в трехмерном пространстве. Их можно описать, задав массив значений высот z, соответствующих двумерному массиву Mxy координат точек (x,y) на горизонтальной
плоскости.
Новых функций для этого не задано. Используются уже описанные ранее функции, но в несколько иной форме:
• regress(Mxy, Vz, n) — возвращает вектор, запрашиваемый функцией
interp(VS,Mxy,Vz,V) для вычисления многочлена n-й степени, который
наилучшим образом приближает точки множества Mxy и Vz (Mxy — матри-
29
Глава 1. Функции, ряды и преобразования Фурье
ца размера m×2, содержащая координаты x и y, Vz — m-мерный вектор, содержащий z-координаты, соответствующие m точкам, указанным в Mxy);
• loess (Mxy, Vz, span) — аналогична loess (VX, VY, span), но в многомерном случае;
• interp(VS, Mxy, Vz, V) — возвращает значение z по заданным векторам
VS (создается функциями regress или loess) и Mxy, Vz и V (вектор координат x и y заданной точки, для которой находится z).
Пример многомерной интерполяции был приведен выше. В целом многомерная регрессия применяется сравнительно редко из-за сложности сбора исходных
данных.
1.3.6. Проведение нелинейной регрессии общего вида
Под нелинейной регрессией общего вида подразумевается нахождение вектора
K параметров произвольной функции F(x,K1,K2,...,Kn), при котором обеспечивается минимальная среднеквадратичная погрешность приближения «облака»
исходных точек.
Для проведения нелинейной регрессии общего вида используется функция
genfit(VX, VY, VS, F), которая возвращает вектор K параметров функции F,
дающий минимальную среднеквадратичную погрешность приближения функцией
F(x,K1,K2,...,Kn) исходных данных.
Вектор F должен быть вектором с символьными элементами, причем они должны содержать аналитические выражения для исходной функции и ее производных по всем параметрам. Вектор VS должен содержать начальные значения элементов вектора K, необходимые для решения системы нелинейных уравнений регрессии итерационным методом.
На рис. 1.10 показан пример выполнения нелинейной регрессии общего вида с
помощью нелинейной функции F(x,a,b)= a⋅exp(-b⋅x)+ a⋅b.
Рис. 1.10. Пример выполнения нелинейной регрессии общего вида
30
1.3. Регрессия и сглаживание данных
При решении этой задачи возникают две проблемы. Во-первых, надо вычислить значения производных по переменным a и b. В документе на рис. 1.10 это
сделано средствами символьных операций (первая строка документа после заголовка), что наглядно показывает пользу от таких операций. Вторая проблема связана с необходимостью применения функции genfit в ее стандартном виде. Поэтому пришлось заменить параметр a на k1, а параметр b на k2. Остальные операции в примере на рис. 1.10 достаточно очевидны.
1.3.7. Новые функции для проведения регрессии в Mathcad
В последних версиях систем Mathcad 2000/2001 PRO/2001i/11 введен ряд новых функций регрессии:
• expfit(vx, vy, vg) — возвращает вектор, содержащий коэффициенты
•
•
•
•
•
(a, b и c) аппроксимирующего выражения вида a*e^(b*x)+c, график которого лучшим образом приближается к точкам, координаты которых хранятся в векторах vx и vy (вектор vg содержит первое приближение к решению);
lgsfit(vx, vy, vg) — то же, но для выражения a/(1+b*e^(-c*x));
logfit(vx, vy) — то же, но для выражения a*ln(x+b)+c (начального
приближения не требуется);
medfit(vx, vy) — то же, но для выражения a+bx (начального приближения не требуется);
pwrfit(vx, vy, vg) — то же, но для выражения a*x^b+c (вектор vg содержит первое приближение к решению);
sinfit(vx, vy, vg) — то же, но для выражения a*sin(x+b)+c.
ВНИМАНИЕ С помощью алгоритма реализации нелинейной регрессии общего вида (см.
рис. 1.10) можно легко осуществить регрессию любого частного вида, в
том числе и всех тех видов, которые реализуются приведенными выше функциями. Нетрудно это сделать и с помощью функции Minerror. Тем не менее, если пользователь нуждается в данных видах регрессии, то к его услугам теперь есть ряд функций, которые можно применить без «долгих раздумий» (эти слова взяты в кавычки, ибо любые вычисления без обдумывания
лучше не выполнять).
1.3.8. Пример синусоидальной регрессии в Mathcad
Еще один вид регрессии — синусоидальной — представляет документ, показанный на рис. 1.11. Здесь исходные векторы данных формируются путем добавления к значениям синусоидальной функции случайных чисел. Регрессия реализуется функцией sinfit.
Рекомендуется разобраться в небольших отличиях выполнения регрессии в
приведенных выше примерах.
1.3.9. Функции сглаживания данных
Данные большинства экспериментов и многих сигналов имеют случайные составляющие, поэтому часто возникает необходимость статистического сглаживания данных. Ряд функций Mathcad предназначен для выполнения операций сгла-
31
Глава 1. Функции, ряды и преобразования Фурье
живания данных различными методами. В их названии имеется слово smooth
(гладкий):
• medsmooth(VY,n) — для вектора с m действительными числами возвращает
m-мерный вектор сглаженных данных по методу скользящей медианы, параметр n задает ширину окна сглаживания (n должно быть нечетным числом, меньшим m);
• ksmooth(VX, VY, b) — возвращает n-мерный вектор сглаженных данных
VY, вычисленных на основе распределения Гаусса. VX и VY — n-мерные
векторы действительных чисел. Параметр b (полоса пропускания) задает
ширину окна сглаживания (b должно в несколько раз превышать интервал
между точками по оси x);
• supsmooth(VX, VY) — возвращает n-мерный вектор сглаженных данных
VY, вычисленных на основе использования процедуры линейного сглаживания методом наименьших квадратов по правилу k-ближайших соседей с
адаптивным выбором k. VX и VY — n-мерные векторы действительных чисел. Элементы вектора VX должны идти в порядке возрастания.
На рис. 1.12 показан пример применения функции subsmooth(X,Y), которая
выполняет сглаживание функции Y(X), представленной векторами X и Y координат ее точек.
В примере на рис. 1.12 для получения исходного массива точек используется
синусоидальная функция с шумом, смоделированным с помощью генератора случайных чисел. В средней части графика сглаживание неплохо выделяет зашумленную зависимость. Однако по краям заметно существенное отклонение сглаженной
кривой от синусоидальной. Это наглядно свидетельствует о не вполне точной работе алгоритма сглаживания. При сглаживании бывает полезно применение функции sort(Y), сортирующей данные векторов, что иногда уменьшает погрешности численного алгоритма сглаживания.
Рис. 1.11. Пример синусоидальной регрессии (Mathcad 2001/2001i)
32
1.3. Регрессия и сглаживание данных
Рис. 1.12. Сглаживание данных
1.3.10. Предсказание зависимостей
Весьма интересной является включенная в систему Mathcad (начиная с шестой
версии) функция предсказания (экстраполяции) predict(data,k,N), где data —
вектор данных, k — число последних точек, по которым делается прогноз, и N —
число точек прогноза. Она по ряду заданных равномерно расположенных точек
позволяет рассчитать некоторое число N последующих точек, то есть, по существу, осуществляет экстраполяцию произвольной (но достаточно гладкой и предсказуемой) зависимости. Функция использует авторегрессионный метод Бурга.
На рис. 1.13 показано применение функции предсказания — экстраполяции.
В этом показательном примере задана некоторая достаточно сложная зависимость — экспоненциально затухающая синусоида, на которую наложен шум, созданный генератором случайных чисел. Предсказание ведется по 6 последним
точкам этой зависимости при общем числе ее точек, равном 100. Функция predict вычисляет следующие 100 точек, построенные в правой половине графика
жирной линией. Для сравнения тонкой линией построена исходная зависимость
без шума.
Функция предсказания обеспечивает высокую точность при монотонных исходных функциях или функциях, представляемых полиномом невысокой степени,
и при достаточно большом числе исходных точек. Рис. 1.13 иллюстрирует, что она
неплохо предсказывает функцию, содержащую колебательную затухающую (или
нарастающую) составляющую на интервале, примерно равном начальному интервалу. Однако при больших значениях N ошибка предсказания может быть значительной. Улучшенные функции предсказания имеются в пакетах расширения Numeric Recipes и Signal Processing системы Mathcad [26—28].
У почитателей экономических расчетов может появиться соблазн применить
эту функцию для предсказания таких событий, как наш российский «черный
вторник» или августовский (1998 года) обвал рубля. Придется огорчить экономи-
33
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.13. Применение функции предсказания (экстраполяции)
стов — функция predict применима к предсказуемым событиям, поведение которых описывается реальной математической зависимостью. Указанные же события
относятся к разряду непредсказуемых, так что здесь применение данной функции
предсказания просто бесполезно. Однако в странах со стабильной экономикой эта
функция вполне подходит для описания сезонных и стабильных колебаний курса
валют, прибылей фирм и предприятий и других закономерных явлений. Она дает
неплохое представление о динамике развития сложных процессов, что уже само
по себе важно и полезно.
1.4. Введение в ряды Фурье
1.4.1. Синусоидальная функция
Описанный выше и, в целом, хорошо известный аппарат приближения функций страдает рядом ограничений. Он плохо приспособлен для приближения периодических функций и функций с локальными особенностями. Аппарат страдает
отсутствием единообразия и общности в представлении функций и, особенно,
сигналов и изображений. В значительной мере от этих недостатков свободны
ряды Фурье и основанные на их применении методы приближения функций.
Ряды и преобразования Фурье стали трамплином для появления вейвлетов и вейвлет-преобразований.
Ряды Фурье представляют собой тригонометрические многочлены, построенные на основе периодической базисной функции — синусоиды (и косинусоиды,
представляющей собой синусоиду с фазовым сдвигом в π/2). Благодаря этому
ряды Фурье способны приближать периодические функции без ограничения периодов их изменения. В рядах Фурье используются синусоиды и косинусоиды с
кратными частотами, получившие название гармоник.
На особое значение и своеобразную гармонию синусоиды обращали внимание
многие ученые (отец и сын Бернулли, Эйлер и др.) при изучении колебаний
сложных механических систем — от звучащей струны рояля до мостов и иных со-
34
1.4. Введение в ряды Фурье
оружений. Оказалось, что главные колебания таких систем (это такие колебания,
при которых все точки системы одновременно проходят через состояние равновесия) происходят по почти синусоидальному закону. Вскоре выяснилось, что колебания могут иметь куда более сложный характер из-за разных частот колебаний
отдельных частей систем.
Если вы крутите прикрепленный к веревке камень с постоянной скоростью
(числом оборотов в единицу времени), то проекция камня на ось ординат и есть
синусоида — рис. 1.14, сплошная линия. Рисунок 1.14 получен прямо в СКМ
Mathcad 11. Синусоидальные колебания характерны для многих физических объектов, их генерируют, к примеру, электронные генераторы синусоидальных сигналов. Ввиду неизменности их параметров во времени, симметрии и гладкости синусоидальные колебания получили название гармонических колебаний.
Рис. 1.14. Синусоидальная функция без сдвига фазы (сплошная линия)
и со сдвигом фазы, соответственно, на –0,1π, –0,2π и +π/2 (другие линии)
Одним из важных свойств синусоиды является ее периодичность. Значения
функции sin(x) повторяются с периодом a, так что эта функция удовлетворяет
условию периодичности функций f(x) = f(x + a). Другое не менее важное свойство
синусоидальной функции — ее стационарность. Все это означает, что в какой бы
интервал времени в прошлом или в будущем мы не рассматривали синусоиду, она
будет всегда представлять кривую одного и того же вида с неизменными во времени параметрами, которые мы рассмотрим чуть ниже. Значения этой функции будут периодически (с периодом в 2π) повторяться в интервале значений от [–1, 1].
А интегральное значение синусоиды для любого периода или ряда целых периодов равно 0, поскольку площади положительных и отрицательных полупериодов
синусоиды одинаковы.
Рисунок 1.14 показывает синусоиду в интервале от –2π до +2π. Если попробовать построить график синусоиды в более широком интервале (заинтересованный
читатель может проделать это самостоятельно), то станет ясно, что отмеченные
закономерности синусоиды полностью сохраняются. Более того, оказывается, что
синусоида определена в интервале [–∞, +∞] (или R), т. е. на всей временной оси.
Это значит, что синусоида в неизменном виде представлена не только на некотором определенном промежутке времени, но и в произвольно далеком прошлом и
даже в будущем.
Часто синусоидальная функция в виде сигнала записывается как функция от
времени:
s(t) = A ⋅ sin(2πft + ϕ),
(1.3,a)
где A — амплитуда синусоиды, f — ее частота, выраженная в Гц (Гц — одно полное колебание в одну секунду), и ϕ — фазовый сдвиг (или просто фаза). Нередко
35
Глава 1. Функции, ряды и преобразования Фурье
используется и понятие круговой частоты синусоиды ω = 2πf, тогда синусоида записывается в виде
s(t) = A ⋅ sin(ωt + ϕ).
(1.3,b)
Как нетрудно заметить, отрицательный фазовый сдвиг ϕ сдвигает синусоиду
вправо на величину ϕ, выраженную в радианах или в долях безразмерного периода
2π. Если ϕ = π/2, то синусоида вырождается в функцию cos(ω) или cos(x) — см. на
рис. 1.14 кривую из точек.
С параметрами синусоиды не все так просто, как кажется на первый взгляд.
Достаточно очевиден параметр — амплитуда A. Это максимальное отклонение синусоидальной функции в обе стороны (положительных и отрицательных значений
s) относительно нулевого уровня, взятое по модулю. О фазе только что говорилось. А что такое частота?
Оказывается, что тут есть уже ряд определений. Иногда говорят, что частота —
это число периодов синусоиды в единицу времени (чаще всего в секунду). Но тогда частота либо будет всегда целым числом, либо нам придется ввести понятие о
части периода T. Можно также определить частоту как f = 1/T, т. е. величину обратную периоду. Но, пожалуй, математически наиболее точным будет понятие частоты, вытекающее из прямого преобразования Фурье. Оно будет описано в этой
главе далее. При этом любая частотная компонента сигнала с неизменными параметрами характеризуется вертикальной линией на частотном спектре сигнала. Она
становится частотной компонентой спектра.
ВНИМАНИЕ Частоту принято измерять в герцах — 1 Гц это одно колебание в 1 секунду. Тысяча Гц это 1 кГц, 1000 кГц есть 1 МГц, 1000 МГц есть 1 ГГц и
т. д. Период синусоидальных колебаний измеряется в секундах, в миллисекундах (1 мс = 0,001 с), в микросекундах (миллионная доля секунды — мкс),
в наносекундах (миллиардная доля секунды — нс) и т. д.
Важно отметить, что синусоида является плавно изменяющейся по величине
функцией, т. е. гладкой функций. Она не содержит ни разрывов самой функции,
ни разрывов ее производной. Синусоида легко дифференцируемая функция. Интегрирование синусоиды в конечных пределах также не вызывает
трудностей, однако интегралы с
бесконечными пределами (или хотя
бы с одним бесконечным пределом)
не вычисляются (расходятся). Это
поясняют примеры, приведенные
на рис. 1.15 (напомним, что для
примененной системы Mathcad оператор → задает символьный вывод
результатов вычислений, т. е. дает
результат в виде формулы, в частности числа).
Обратите внимание на то, что
вывод вместо результата слова undefined означает, что соответствующий
Рис. 1.15. Примеры дифференцирования
интеграл не определен и не берется.
и интегрирования синусоиды
(документ Mathcad)
36
1.4. Введение в ряды Фурье
1.4.2. Модуляция синусоидальных колебаний
Поскольку синусоида характеризуется тремя параметрами (амплитудой, частотой и фазой), то у практиков—радистов тут же появился соблазн использовать
электрические синусоидальные сигналы для передачи информации — поначалу
звуковой. Заметим, что в стационарном случае параметры синусоиды неизменны
и потому она никакой информации (кстати, как и постоянный ток) не несет. Стимулом к применению синусоидальных колебаний в технике связи стала не только
возможность их передачи по проводам, но и через «свободное пространство»
(эфир) в виде электромагнитных волн с малой длиной волны и, соответственно, с
высокой частотой.
Очевидно, что если менять какой-либо один параметр синусоиды во времени,
то есть модулировать синусоидальный сигнал, то можно реализовать три основных вида модуляции: амплитудную, частотную и фазовую. Разумеется, можно
предположить возможность (и она реально есть) и комбинированных видов модуляции.
Однако изменение любого параметра синусоиды во времени означает, что
условие ее стационарности (A = const, f = const и ϕ = const) нарушается. Полученное в результате модуляции колебание с математической точки зрения уже не является синусоидальным. Оно приобретает сразу букет новых свойств, часть из которых полезна, а часть в определенных условиях вредна. Например, в силу нарушения математических свойств гармонического колебания.
В качестве примера возьмем наиболее известную амплитудную модуляцию синусоидального сигнала. Она представляет собой типичный мультипликативный
процесс, то есть неизменная амплитуда синусоиды умножается на некоторую, зависящую от времени, функцию (или множитель). Начнем с умножения амплитуды
на экспоненциальный множитель с отрицательным показателем экспоненты. Для
интервала времени [0, ∞] это означает, что мы получаем «затухающую синусоиду».
Возьмем пока эти слова в кавычки, ибо результирующее колебание (рис. 1.16) или
сигнал с позиций строгой математики уже нельзя именовать «синусоидой».
Почему, строго говоря, мы не может использовать понятие о синусоиде в данном случае? Да потому, что многие свойства «затухающей синусоиды» кардинально отличаются от свойств обычной синусоиды. И дело не только в количественных отличиях (пики уже не достигают значений +1 и –1 для каждого периода), а в
куда более глубоких качественных отличиях.
Результирующая функция — «затухающая синусоида» явно несимметричная. Даже на глаз отчетливо видно, что
площадь каждого последующего полупериода меньше, чем площадь предыдущего полупериода. Если интегральное значение синусоиды за период или
за время, равное кратному числу периодов, строго равно 0, то в нашем случае
оно должно выражаться положительным числом. К примеру, интегрируя
функцию f1(x) в пределах от 0 до 10π,
Рис. 1.16. Затухающее синусоидальное
колебание и примеры
мы получим значение интеграла 0.947.
его интегрирования
37
Глава 1. Функции, ряды и преобразования Фурье
Но еще разительнее ведет себя наша
«затухающая синусоида» при интегрировании в пределах от 0 до ∞. Оказывается (см. рис. 1.3), что в отличие от
обычной синусоиды (рис. 1.2) интеграл
в этом случае благополучно вычисляется (или, как говорят математики —
сходится) и полученное значение равно
100/101. Это легко понять — даже на
глаз видно, что суммарная площадь положительных и отрицательных полупеРис. 1.17. Нарастающее
риодов конечна.
синусоидальное
колебание и примеры
А что будет, если создать «нарастаюего интегрирования
щую синусоиду». Этот случай показан
на рис. 1.17. Тут мы явно видим, что
площадь каждого отрицательного полупериода всегда больше площади предшествующего ему положительного полупериода. Следовательно, можно ожидать, что
интеграл в пределах, кратных периоду синусоиды, будет конечен и выражаться отрицательным числом. Однако попытка интегрирования в пределах от 0 до ∞ завершается полным фиаско — такой интеграл не берется (расходится).
Итак, синусоида не так проста, как кажется, и ее модуляция по существу
означает появление новой функции. Чтобы описать модуляцию, сохранив представление о синусоиде, используется понятие медленности модуляции, благодаря
чему используемые колебания в некотором интервале времени приближенно
можно считать синусоидальными. К примеру, анализ амплитудной модуляции в
радиотехнике осуществляется хорошо известным методом медленно меняющихся
амплитуд.
Но техника развивается чрезвычайно быстрыми темпами. И понятие о медленности модулирующих колебаний в наши дни подвергается все большему и большему сомнению. Наступила пора четко осознать, что модулированные колебания
и иные сложные сигналы (особенно цифровые, звуковые и видеосигналы) в общем случае не являются стационарными. Они явно нестационарны и требуют новых математических методов для анализа. К ним относится технология вейвлетов,
но пока о ней говорить подробно рано. Мы должны обсудить свойства рядов Фурье и преобразований Фурье, которые многие десятилетия господствовали в теории и практике электротехники, радиотехники и связи. И, кстати, вовсе не потеряли свое значение в наши дни.
В этом разделе мы впервые ввели важные для последующего описания вейвлетов понятия об умножении синусоидальных функций на меняющийся во времени
t (или в пространстве переменной x) множитель. Такая операция, в отличие от
обычно линейной операции сложения (аддитивной операции), является типично
нелинейной (мультипликативной) операцией. Мы выяснили, что в определенных
условиях (пример с «затухающей синусоидой») это позволяет интегрировать такую
комбинированную функцию с бесконечным пределом интегрирования. В дальнейшем мы расширим этот подход введением понятия временных, частотных и
пространственных окон, а также убедимся в том, насколько важно интегрировать
в бесконечных пределах функции, содержащие произведение синусоидальной (косинусоидальной) функции на подобные множители.
38
1.4. Введение в ряды Фурье
1.4.3. Понятие о гармоническом синтезе
Синтез сложных колебаний на основе суммирования синусоидальных сигналов
с кратной частотой был известен задолго до того, как Фурье сделал свое замечательное открытие, показав, что его тригонометрические ряды способны (при определенных условиях) представлять любую математическую функцию.
С помощью СКМ Mathcad мы можем легко поставить эксперименты по такому синтезу. Один из примеров этого представлен на рис. 1.18. Здесь задана амплитуда каждой из гармоник, равная 2/kπ, где k — номер заданной синусоиды, которую мы называем k-й гармоникой в память о гармоническом характере синусоиды. Рис. 1.18 показывает графики функции sin(x) и два графика сумм для 5 и 15
гармоник.
Результат синтеза может удивить неопытного в спектральном синтезе читателя.
Оказывается, наш ряд гармоник неплохо описывает пилообразное колебание с
протяженным участком линейного спада и быстрым ростом. Нетрудно заметить,
что чем больше гармоник мы используем, тем ближе временная зависимость синтезируемого колебания к временной зависимости линейно-спадающего пилообразного импульса.
А теперь рассмотрим еще один рисунок — рис. 1.19. Здесь показано суммирование только нечетных гармоник — первой, третьей и пятой и от первой до двадцать первой. Амплитуды гармоник вычисляются как 1/kπ (где k есть, соответственно, k1 и k2). На этот раз хорошо видно, что представленные ряды гармоник
синтезируют прямоугольные колебания, в идеале называемые меандром.
Может возникнуть вопрос, почему именно такими соотношениями заданы амплитуды гармоник? Точный ответ дает следующий раздел книги. А пока отметим,
что мы эмпирически пришли к идее гармонического синтеза рассмотренных
выше функций (сигналов). И сразу же столкнулись с любопытным явлением —
явно заметными волнообразными колебаниями у синтезированной функции. Это
явление получило название эффекта Гиббса. Мы еще не раз вернемся к его описанию, обоснованию и попыткам исключения.
ПРИМЕЧАНИЕ Эффект Гиббса более широкое понятие, чем в случае фурье-анализа и
синтеза. Он в той или иной форме встречается в различных методах
синтеза сложных колебаний, в том числе и при выполнении вейвлет-анализа и синтеза.
Рис. 1.18. Гармонический синтез
пилообразных колебаний
Рис. 1.19. Гармонический синтез
меандра
39
Глава 1. Функции, ряды и преобразования Фурье
1.4.4. Фурье-анализ и синтез периодических функций
Итак, задача замены произвольной сложной или неудобной для вычислений
функции давно занимала умы математиков. Как было показано выше, частично
она была решена с помощью интерполяции и аппроксимации функций и регрессии. Однако все эти математические приемы страдали одним серьезным пороком — они плохо подходили для периодических колебаний. А между тем развитие
теории колебаний, а в дальнейшем электротехники и радиотехники настойчиво
требовало нового аппарата приближения периодических функций.
Над решением этой задачи бились многие ученые прошлых веков. Но подлинное открытие в этой области удалось сделать в 1807 году знаменитому математику
Фурье, который нашел и обосновал метод вычисления коэффициентов тригонометрического ряда, при котором такой ряд был способен приближать любую периодическую функцию. Правда, при выполнении условий, известных как условия
Дирихле для функции y(x) на промежутке (−π, π):
• функция непрерывна или имеет конечное число разрывов первого рода;
• промежуток (−π, π) можно разбить на конечное число таких промежутков,
на которых функция меняется монотонно.
Здесь важно отметить, что условия Дирихле выполняются для всех практически
существующих сигналов, поэтому в дальнейшем мы будем опускать ссылки на них.
Рядом Фурье для функции, удовлетворяющей условиям Дирихле, является ряд:
y (t ) =
a0
+
2
N
∑a
k
sin(2 πkf1t ) +bk cos(2 πkf1t ),
(1.4)
k =1
коэффициенты которого находятся по формулам Эйлера—Фурье:
ak =
1
π
π
∫ y(x )cos(kx )dx
(1.5)
−π
и
bk =
1
π
π
∫ y(x )sin(kx )dx .
(1.6)
−π
Строгое доказательство того, что ряд (1.4) может приближать произвольную
функцию, базируется на элементарных тригонометрических преобразованиях и
понятии ортогональности набора функций, образующих этот ряд:
1, cos(x), sin(x), cos(2x), sin(2x), ..., cos(nx), sin(nx), ...
Ортогональность означает, что интеграл от произведения двух любых различных функций этого (возможно и иного) набора функций в промежутке от 0 до 2π
равен нулю. Само доказательство, довольно громоздкое, можно найти в учебниках
по высшей математике, например в [21].
Важными сферами применения рядов Фурье являются расчеты радиотехнических устройств. В них обычно периодические сигналы представляют как функции
времени y(t) на отрезке [0, T] с периодом T = 1/f1, где f1 — частота первой гармоники периодического сигнала. В этом случае ряд Фурье, после несложных преобразований, записывается в виде:
40
1.4. Введение в ряды Фурье
y (t ) =
где
и
a0
+
2
∞
∑ (a
k
cos(2 πkf1t ) + bk sin(2 πkf1t )),
(1.7)
k =1
ak =
bk =
2
T
T
2
T
T
∫ y(t )cos(2 πkf t )dt
(1.8)
1
0
∫ y(t )sin(2 πkf t )dt .
(1.9)
1
0
В этом случае коэффициенты ak и bk описывают косинусную и синусную составляющие k-й гармоники сигнала с периодом T и частотой f1 = 1/T. Часто используется иная форма ряда Фурье, упрощающая его синтез [23]:
y (t ) =
a0
+
2
N
∑M
k
cos(2πkf1t + ϕ k ),
(1.10)
k =1
где амплитуды гармоник Mk и их фазы ϕk определяются выражениями:
Mk =
и
ak2 + bk2
ϕk = –arctan(bk/ak).
(1.11,a)
(1.11,b)
В дальнейшем будут приведены формулы, позволяющие вычислять коэффициенты Фурье (либо амплитуды и фазы гармоник) для любой функции y(t). Это является задачей спектрального анализа. Однако вначале мы рассмотрим обратную
задачу — задачу синтеза зависимости y(t) путем вычисления ряда Фурье с ограниченным числом членов.
Разложение функции на гармонические составляющие, то есть вычисление коэффициентов Фурье, принято назвать спектральным анализом. А воссоздание функции, представленной рядом Фурье, называют спектральным синтезом.
Гармонику с k = 1 называют основной или первой гармоникой сигнала. Она задает его частоту повторения f1. Остальные гармоники называют высшими, их частоты равны fk = k f1, где k = 2, 3, 4, ... Таким образом, спектр периодических сигналов, представимых рядом Фурье, дискретный — он содержит набор фиксированных частот fk, где k = 1, 2, 3, ...
1.4.5. Прямой фурье-анализ и синтез периодических сигналов
Современные СКМ открывают обширные возможности в отработке практических методов фурье-анализа и синтеза. Можно отметить, что нередко вычисление
коэффициентов Фурье (1.5) и (1.6) или (1.8) и (1.9) можно выполнить по встроенным функциям интегрирования. Назовем такой спектральный анализ и синтез
прямым.
Интересное воплощение прямого спектрального анализа в системе Mathcad
представлено на рис. 1.20. Это начало обсуждаемого здесь документа (программы). Здесь для вычисления коэффициентов Фурье используется программный модуль системы Mathcad, имеющий легко понятный вид. Для удобства представления периодических функций пределы интегрирования от –π до π заменены нормированными пределами от –L до L, где L = 1 — нормированный полупериод
колебаний. Отчетливо видно, что коэффициенты Фурье задаются прямо интегралами. Они при этом вычисляются настолько точно, насколько это возможно при
41
Глава 1. Функции, ряды и преобразования Фурье
использовании встроенных операторов интегрирования. Вычисленные коэффициенты становятся столбцами матрицы R.
Рис. 1.20. Документ системы Mathcad, реализующий фурье-анализ периодической
функции с периодом на интервале от –1 до 1
Далее мы рассмотрим серию примеров, которые являются второй частью документа рис. 1.21 и реализуют фурье-анализ для заданного числа гармоник N (N =
10 в начале документа) и затем синтез заданной функции f(x). На рис. 1.21 эта
функция задает линейно падающий в интервале от –1 до 0 пилообразный импульс. После этого задается ряд Фурье, суммирующий полученные гармоники.
Рисунок внизу показывает исходную функцию и результат ее фурье-синтеза. Векторы A и B выводят значения косинусных и синусных коэффициентов Фурье.
Нетрудно заметить, что форма синтезированной функции при N = 10 неплохо
согласуется с исходной функцией. Впечатление портит только проявление эффекта Гиббса.
Рис. 1.21. Пример прямого спектрального анализа и синтеза
для линейно-спадающего пилообразного импульса
42
1.4. Введение в ряды Фурье
Рисунок 1.22 показывает спектральный анализ и синтез прямоугольного симметричного колебания — меандра. И здесь получено в целом неплохое соответствие между исходной функцией и результатом синтеза гармоник. Эффект Гиббса,
увы, виден налицо. В спектре меандра отсутствуют четные гармоники, причем все
косинусные коэффициенты нулевые.
Рис. 1.22. Пример прямого спектрального анализа и синтеза для меандра
На рис. 1.23 представлен пример спектрального анализа и синтеза для короткого прямоугольного импульса положительной полярности, длительность которого
составляет 1/4 от периода колебаний. В особых комментариях приближение исходной функции в данном случае не нуждается. Разве что полезно обратить внимание на то, что спектр создается как косинусными, так и синусными коэффициентами, причем часть из них имеет нулевое значение.
Рисунок 1.24 демонстрирует спектральный анализ и синтез для функции типа
«выпрямленная синусоида» (такая функция описывает напряжение на выходе
Рис. 1.23. Пример прямого спектрального анализа и синтеза для короткого
прямоугольного импульса
43
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.24. Пример прямого спектрального анализа и синтеза
для «выпрямленной синусоиды»
идеализированного двухполупериодного диодного выпрямителя переменного
тока). В данном случае функция более гладкая, поэтому пример дан для меньшего
числа гармоник при синтезе — N = 5. Здесь эффект Гиббса проявляется слабо, но
он все же виден.
Наконец, на рис. 1.25 представлен пример прямого спектрального анализа и
синтеза для радиоимпульса, содержащего три периода синусоидальных колебаний.
При N = 10 он неплохо приближается синтезированной функцией, хотя эффект
Гиббса и здесь заметен.
Рис. 1.25. Пример прямого спектрального анализа и синтеза для радиоимпульса
Итак, мы рассмотрели достаточно представительный набор функций (сигналов) и выполнили для них практический спектральный анализ и синтез при конечном числе гармоник. Можно заметить следующие общие закономерности подобного спектрального анализа и синтеза:
• ни в одном из приведенных случаев точная реставрация исходной функции
(колебания) путем их гармонического синтеза не достигается, а различия
таковы, что отчетливо видны невооруженным глазом;
44
1.5. Специальные типы преобразований Фурье
• чем больше используется число гармоник, тем ближе форма синтезирован•
•
•
•
•
•
ной функции приближается к форме исходной функции (вы можете это
проверить, меняя в приведенных примерах N);
плавные функции требуют меньше гармоник для удовлетворительного их
представления результатами гармонического синтеза;
во всех случаях заметен эффект Гиббса в виде характерных колебательных
процессов, отсутствующих у исходных функций;
увеличение конечного числа гармоник не устраняет эффект Гиббса, а лишь
повышает частоту колебательных процессов;
эффект Гиббса особенно сильно проявляется в местах разрыва функций и в
точках с явно присутствующими особенностями;
из-за эффекта Гиббса интерполяционные возможности рядов Фурье невысоки, поскольку точность интерполяции весьма невысока;
нередки функции, у которых часть фурье-коэффициентов имеет нулевое
значение.
Итак, мы рассмотрели примеры спектрального анализа и синтеза сравнительно
простых функций и сигналов, для представления которых вполне достаточно до
сотни отсчетов (значений ранжированной переменной x). Однако реальные сигналы гораздо сложнее и число отсчетов сигналов нередко достигает многих сотен и
тысяч. В этом случае рассмотренный выше метод становится малоэффективным
вследствие следующих причин:
• интегралы, входящие в формулы для коэффициентов Фурье, трудны для
вычислений, поскольку содержат быстро осциллирующие множители, что
требует интегрирования по очень большому числу интервалов интегрирования;
• периодичность значений осциллирующих множителей не учитывается;
• вычисления по встроенным функциям интегрирования идут медленно
из-за применения в них сложных адаптивных методов интегрирования с
контролем погрешностей в ходе интегрирования.
1.5. Специальные типы преобразований Фурье
1.5.1. Дискретный фурье-анализ и спектр периодических функций
Предположим, что некоторая функция (или сигнал) задана рядом равноотстоящих дискретных отсчетов с числом N, т. е. y1, y2, ..., yN. В этом случае у нас нет
никаких оснований считать, что в промежутках между узлами значения функции
не постоянны. Если же они постоянны, то интегралы при расчете коэффициентов
Фурье (1.8) и (1.9) могут вычисляться простейшим методом прямоугольников:
ak =
2
N
N
∑
i =1
2
 2 πni 
yi cos
 и bk =
 N 
N
N
 2 πni 
.
N 
∑ y sin 
i
i =1
(1.13)
Детальный анализ, выходящий за рамки данной книги, показывает, что приведенные формулы для коэффициентов Фурье являются единственными теоретически обоснованными формулами приближенного вычисления коэффициентов
Фурье [22, 23]. Для произвольных функций они обеспечивают минимум средне-
45
Глава 1. Функции, ряды и преобразования Фурье
квадратической погрешности. Другими словами приближение функции тригонометрическим рядом Фурье с ограниченным числом членов является регрессией.
При дискретном задании функции (сигнала) неизбежно встает вопрос о том,
какое число гармоник M (k от 1 до M) может представлять сигнал? Или, напротив,
при заданном числе гармоник, какое число отсчетов N допустимо? Ответ на этот
вопрос дает теорема об отсчетах Шеннона, у нас именуемая теоремой Котельникова. Ответ довольно прост — число отсчетов должно минимум вдвое превышать
число гармоник. Это легко понять умозрительно — на высшую гармонику спектра
в идеале достаточно иметь два отсчета. В разделе 1.5.11 мы детально рассмотрим
применение базиса Котельникова для восстановления непрерывного сигнала из
его дискретного вида.
Многие СКМ имеют реализации дискретного преобразования Фурье по формулам (1.13). Наглядное представление о таком виде спектрального анализа и
синтеза дает документ СКМ Mathcad, начало которого представлено на рис. 1.26.
В этой части документа приведена реализация спектрального анализа для заданного в виде вектора Yi сигнала. В документе по формулам (1.13) вычисляются коэффициенты Фурье, а по формулам (1.11) и (1.12) — амплитуды и фазы гармоник.
Небольшое расхождение в обозначениях не принципиально.
Рис. 1.26. Стандартный дискретный спектральный анализ и синтез
(начало документа)
Зависимости амплитуд и фаз гармоник от частоты получили название амплитудного и фазового спектра сигнала. Для периодических колебаний такой спектр
является дискретным, т. е. состоящим из отдельных частот — гармоник. Его удобно представлять вертикальными отрезками прямых, длина которых определяет
значение амплитуды или фазы той или иной гармоники. Амплитудный и фазовый
спектры заданного сигнала показаны внизу рис. 1.26. При этом на амплитудном
спектре (его часто называют просто спектром) представлена огибающая спектра
(пунктирная кривая). Спектр имеет важное значение для оценки свойств и параметров сигнала, подвергаемого разложению в ряд Фурье.
46
1.5. Специальные типы преобразований Фурье
1.5.2. Гармонический синтез дискретно заданного сигнала
Теперь рассмотрим реализацию фурье-синтеза дискретно заданного сигнала.
Он представлен на рис. 1.27 и соответствует формуле (1.10). Она более удобна,
чем (1.7), поскольку требует вдвое меньшего числа вычислений тригонометрической функции косинуса.
Рис. 1.27. Стандартный дискретный спектральный анализ и синтез
(начало документа)
Внизу рис. 1.27 представлены графики исходного сигнала и результата его синтеза по 20 гармоникам. В данном случае задан довольно сложный сигнал. Увы, его
синтез подобен «старой песенке» — отчетливо видно сильное проявление эффекта
Гиббса, связанное с ограниченным числом гармоник M ≤ N.
В результате стандартного синтеза дискретного сигнала мы получаем уже не
дискретное, а непрерывное представление сигнала рядом Фурье с числом гармоник M. К сожалению, из-за уже не раз отмеченного эффекта Гиббса тригонометрическая аппроксимация и интерполяция сигнала имеет довольно низкую точность. Повышение точности возможно за счет резкого увеличения числа отсчетов
N (и гармоник M при синтезе) — нередко до многих сотен и тысяч. Но в этом случае мы столкнемся с полной непригодностью описанного метода анализа и синтеза, связанной с недопустимо большими временными затратами на вычисления.
1.5.3. Непрерывное преобразование Фурье
До сих пор мы рассматривали периодические функции и сигналы. А как быть,
если они не периодические? Тут правомерны два подхода. Если функция или сигнал определены на некотором конечном промежутке пространства или времени
(по терминологии вейвлетов, на носителе конечной длины), то мы можем считать
сигналы как бы периодическими и применять к ним описанный выше спектральный анализ и синтез. Например, если сигнал определен на некотором промежутке
времени t0, то его можно посчитать периодическим с периодом t0 или частотой
f1 = 1/t0.
47
Глава 1. Функции, ряды и преобразования Фурье
Другой путь заключается в переходе к непрерывному преобразованию Фурье в
общем виде — для произвольного сигнала. Прямое преобразование Фурье в таком
виде позволяет получить в аналитическом виде функцию частоты F(w) от временной функции f(t). Оно реализуется формулой
∞
F (ω ) =
∫ f (t )e
−iωt
dt .
(1.14)
−∞
Здесь f(t) — скалярная функция независимой переменной t. Поскольку мы исходим из предположения, что f(t) в общем непериодическая функция, то уже нельзя вести речь об отдельных гармониках и о дискретном спектре сигнала. Спектр
F(ω) становится непрерывным и можно говорить лишь о плотности энергии сигнала в некоторой малой (стремящейся к нулю) полосе частот. Так что в данном
случае F(ω) есть зависимость плотности энергии сигнала от частоты.
Соответственно, обратное преобразование Фурье задается следующим образом:
f (t ) =
1
2π
∞
∫ F (ω )e
iωt
dω.
(1.15)
−∞
Эта формула позволяет по функции F(ω) найти в аналитическом виде функцию f(t).
Из формулы (1.14) вытекает главный недостаток прямого преобразования Фурье — интегральная оценка всех частотных составляющих спектра вне зависимости от времени их существования. Это связано непосредственно с бесконечными
пределами интегрирования в (1.14). В результате вполне возможны случаи, когда
совсем разные сигналы имеют одинаковый частотный спектр. Другими словами,
фурье-анализ прекрасно подходит для стационарных сигналов, но не годится для
нестационарных, у которых определенные частотные компоненты существуют только в определенные промежутки времени или когда параметры сигнала меняются во времени.
Многие СКМ имеют средства для аналитического вычисления прямого и обратного преобразований Фурье. Например, система Mathcad реализует это с помощью функций символьного процессора fourier и ifourier. Рисунок 1.28 демонстрирует это на целом ряде примеров: линейно нарастающей функции, синусе, затухающей и нарастающей экспоненте и затухающем синусоидальном
сигнале. Обратите внимание, что во всех примерах, кроме функции синуса, после
прямого и обратного преобразований Фурье получено исходное выражение.
Рис. 1.28. Примеры прямого и обратного преобразований Фурье
в аналитической форме
48
1.5. Специальные типы преобразований Фурье
В случае функции синуса Mathcad тоже справился с задачей, но привел хорошо
известное выражение для синуса, представленное через экспоненциальные функции. Его удалось преобразовать в обычное с помощью функции упрощения символьных результатов simplify. Для ряда функций прямое преобразование Фурье
дает представление, содержащее функцию Дирака Dirac(ω). Эта функция не является внутренней функцией системы Mathcad, но входит в ядро символьных вычислений куда более мощной системы Maple. Это ядро используется системой
Mathcad, благодаря чему функция ifourier понимает выражения, в состав которых
входит функция Dirac(ω).
Соотношения (1.14) и (1.15) носят скорее фундаментальный теоретический,
чем практический характер. Это видно в наших примерах хотя бы из того, что мы
не можем построить график функции F(ω) и вычислять ее значения. Нередко
формы записи этой функции понятны лишь символьному процессору, а решатели
выражений в численном виде ее не понимают.
В связи с этим на практике удобнее применять уже упомянутый подход — периодизацию ограниченных во времени сигналов. Тем более в связи с тем что интегрирование в пределах от –∞ до +∞ встречает большие и подчас непреодолимые
трудности (и даже вызывает принципиальные сомнения в такой возможности).
В частности, оно по существу означает, что мы должны знать поведение сигнала
не только в прошлом (даже весьма далеком), но и в будущем. Разумеется, для сигналов с носителем конечной длины можно использовать конечные пределы интегрирования, если за пределами носителя значение сигнала равно нулю.
1.5.4. Быстрое преобразование Фурье (БПФ)
С позиций практики главным недостатком всех описанных выше методов фурье-анализа и синтеза функций и сигналов является большое время вычислений.
Это связано с тем, что в формулах для коэффициентов Фурье присутствуют быстро осциллирующие множители, что требует разбивки интервалов интегрирования
на очень малые части. В итоге объем вычислительных операций резко возрастает.
Для преодоления вычислительных трудностей, связанных с интегрированием в
ходе ППФ и ОПФ быстроизменяющихся функций, были предложены методы быстрого преобразования Фурье (БПФ или, в англоязычной транскрипции, FFT).
Они используют специальную технику комбинации отсчетов функций, помноженных на осциллирующие множители, и учитывают периодичность значений
тригонометрических функций. Алгоритмы БПФ не уменьшают погрешности вычислений при заданном числе гармоник, но позволяют резко уменьшить время
спектрального анализа и синтеза — особенно если число временных отсчетов yi(t)
кратно 2N, где N — целое число.
ВНИМАНИЕ Поскольку в этой книге фурье-анализ и синтез является лишь прелюдией к
рассмотрению вейвлет-технологий обработки функций, сигналов и изображений, мы не будем рассматривать алгоритмы БПФ подробно. Зато соответствующие алгоритмы быстрого вейвлет-преобразования будут рассмотрены в главе 2 достаточно подробно.
Далеко не все СКМ имеют функции, реализующие БПФ. Отчасти это связано
с тем, что высокая эффективность БПФ обеспечивается только при числе отсчетов функции, кратном 2 в целой степени. Если отсчетов меньше, то чаще всего их
просто дополняют до числа, кратного 2 в целой степени, путем добавления нулевых отсчетов. Достаточно эффективные средства БПФ имеют СКМ Mathcad и
49
Глава 1. Функции, ряды и преобразования Фурье
MATLAB, тогда как мощные системы символьной математики Mathematica 4/4.1
и Maple 6/7 таких функций не имеют.
Функция fft(v) системы Mathcad выполняет БПФ для данных, представленных действительными числами — значениями исходного вектора v. Он должен
иметь точно 2m составляющих, где m — целое число. В противном случае выводится сообщение об ошибке — неверном размере вектора. Если число элементов вектора v все же отличается от целой степени двух, то его можно дополнить нулями
до этой величины. Элементы вектора, возвращаемого функцией fft(v), соответствуют формуле
Cj =
1
n
n −1
∑ν e
2 πi ( j n ) k
k
.
k=0
Здесь n — число элементов вектора v, i — мнимая единица, k — индекс суммирования (от 0 до n – 1) и j — номер гармоники (от 0 до n/2). Эти элементы вектора
соответствуют следующим частотам:
fj =
j
⋅ fs .
n
Здесь fs — частота квантования сигнала, который подвергается БПФ. Элементы
вектора, возвращаемого функцией fff(v), в общем случае комплексные числа,
даже если сигнал представлен вещественными отсчетами.
Прямое преобразование Фурье по существу означает перевод временной зависимости в ее частотный спектр. А обратное преобразование Фурье переводит частотный спектр вновь во временную зависимость.
Функция ifft(v) реализует обратное (инверсное) преобразование Фурье для
вектора v с комплексными элементами. Вектор v здесь должен иметь 1+2m+1 элементов. В противном случае выдается сообщение об ошибке. Функция ifft(v)
вначале создает вектор w, комплексно-сопряженный с v, и затем присоединяет его
к вектору v. После этого вычисляется вектор d с элементами, рассчитанными по
формуле
dj =
1
n
n −1
∑w e
k
−2 πi ( j n ) k
.
k=0
Функции fft(v) и ifft(v) дают точные (в пределах погрешности численных
расчетов) обращения. При этом ifft(fft(v))=v, что можно использовать для
проверки преобразований.
Функция cfft(A) аналогична предыдущей, но реализует прямое преобразование Фурье для вектора A с комплексными элементами. Если A — матрица, реализуется двумерное преобразование. Введение функции fft(V) обусловлено тем,
что преобразование для векторов с действительными элементами реализуется по
более быстрому алгоритму (БПФ) и занимает меньше времени. В этом случае более прост и ввод исходных данных.
Функция icfft(B) выполняет обратное преобразование Фурье по полному алгоритму, при котором как исходный, так и результирующий векторы или матрицы
содержат элементы с комплексными значениями.
ПРИМЕЧАНИЕ В основе БПФ лежит прореживание по частоте и пирамидальный алгоритм, исключающий повторные вычисления периодически повторяющих-
50
1.5. Специальные типы преобразований Фурье
ся членов тригонометрического ряда Фурье. БПФ-алгоритм выполняется за ∼ N log N операций, где N — число отсчетов сигнала.
1.5.5. Примеры выполнения БПФ
Для проверки функций БПФ можно задать некоторый вектор из 2m действительных или комплексных элементов. Проведя прямое преобразование, получим
новый вектор. Затем над ним проведем обратное преобразование. Можно заметить, что полученный таким двукратным преобразованием вектор полностью совпадает с исходным. Читатель может легко проверить эту методику тестирования
функций самостоятельно. Мы же перейдем к более сложным примерам.
Рис. 1.29. Применение БПФ для спектрального разложения и синтеза
прямоугольного импульса
Техника проведения БПФ на примере разложения прямоугольного импульса и
последующего его синтеза с помощью ряда Фурье с ограниченным (k = 10) числом гармоник демонстрируется на рис. 1.29. Здесь исходный вектор задан элементами действительного типа, поэтому используются функции fft и ifft.
БПФ широко применяется при решении задач фильтрации сигналов или аппроксимации функций. При ограниченном числе гармоник приближение функции тригонометрическим рядом Фурье обеспечивает наименьшую среднеквадратичную погрешность, если при этом используется БПФ.
На рис. 1.30 представлено построение АЧХ и ФЧХ спектра прямоугольного
импульса (см. документ рис. 1.29) для случая, когда прямое БПФ реализовано
функцией fft. Обратите внимание на то, что для вычисления амплитуд гармоник
используется оператор вычисления модуля, а для вычисления фаз гармоник —
функция arg.
При вычислении АЧХ и ФЧХ использован график типа error, причем за вторую линию взят 0. При использовании функции fft спектр ограничен числом
гармоник, вдвое меньшем, чем число отсчетов сигнала — в нашем случае прямоугольного импульса. Это ограничение хорошо видно на рис. 1.30. АЧХ и ФЧХ
спектра имеют обычный вид.
51
Глава 1. Функции, ряды и преобразования Фурье
А на рис. 1.31 показаны АЧХ и ФЧХ того же импульса, но полученные с помощью функции cfft. На этот раз можно заметить два принципиально важных отличия:
Рис. 1.30. АЧХ (сверху) и ФЧХ (снизу) спектра прямоугольного импульса
(рис. 1.29) при использовании функции fft для прямого БПФ
Рис. 1.31. АЧХ (сверху) и ФЧХ (снизу) спектра прямоугольного импульса
(рис. 7.15) при использовании функции сfft для прямого БПФ
52
1.5. Специальные типы преобразований Фурье
• выходной вектор имеет то же число отсчетов, что и входной, т. е. вдвое
больше, чем при использовании функции fft;
• АЧХ и ФЧХ спектра имеют двойную длину и представлены как обычным
Рис. 1.32. Пример БПФ для сложной функции с построением ее спектрограммы
своим видом в левой части графика, так и их зеркальным отражением в
правой части графика.
На рис. 1.32 показан еще один пример применения прямого и обратного преобразований Фурье. Здесь для преобразования использована сложная трехкомпонентная функция, содержащая два синусоидальных компонента и компонент в
виде случайных чисел.
Здесь на графике слева производится сравнение исходной функции с результатом ее прямого и обратного преобразований Фурье, а на графике справа дается
построение спектрограммы функции (на этот раз линией, представляющей собой
огибающую спектра). Обратите внимание, что несмотря на наличие заметной шумовой составляющей на спектрограмме четко выделяются пики, соответствующие
частотам синусоидальных компонент входного сигнала. Читателю рекомендуется
после прямого БПФ задать искажения гармоник, характерные для работы какого-либо фильтра — при этом можно наблюдать степень искажения сигнала, прошедшего через фильтр.
1.5.6. Альтернативные преобразования Фурье
Рассмотренные выше функции основаны на обычных формулах преобразований Фурье. Однако существуют и альтернативные формы такого преобразования,
две из которых показаны ниже:
F (v ) =
f (τ ) =
1
n
n
∑ f (τ )e
−2 πiτ( v n )
,
τ =1
n
∑ F (v )e
−2 πiv( τ n )
.
υ =1
Вместо множителя перед обоими выражениями перед первым выражением
стоит множитель 1/n, а перед вторым — 1. Знак «минус» перед показателем степени имеется только в первой формуле (его нет во второй).
53
Глава 1. Функции, ряды и преобразования Фурье
ВНИМАНИЕ Альтернативные формулы преобразований Фурье используются в функциях
FFT(v), IFFT(v), CFFT(v) и ICFFT(v). В остальном использование этих
функций не отличается от аналогичных функций fft(v), ifft(v),
cfft(v) и icfft(v). Надо лишь помнить о том, что нормировка функций
БПФ в литературе может быть различной и это нередко создает путаницу при проведении операций спектрального анализа и синтеза и приводит к
разным результатам при их проведении.
В заключение отметим, что если в функциях преобразования Фурье в качестве
входного параметра задана матрица, то реализуется двумерное обратное преобразование Фурье. В ранних версиях Mathcad эта возможность отсутствовала, но могла быть реализована (хотя и более сложным путем) с помощью одномерного
БПФ.
1.5.7. Эффект Гиббса
Мы уже столько раз упоминали эффект Гиббса, что пора разобраться с причинами его возникновения и обсудить способы борьбы с ним. В том, что с этим эффектом надо всерьез бороться, говорит тот факт, что относительная амплитуда пульсаций синтезированных сигналов (самих по себе не имеющих пульсаций) достигает 18% (или 9% от двойной амплитуды) и практически не меняется при
увеличении числа гармоник — просто выбросы при пульсациях становятся короче. Между тем известно множество задач, где точность приближения должна составлять значения, намного меньшие 1%, а порою не превышать и тысячных долей процента.
Поскольку пульсации эффекта Гиббса наиболее явно проявляются в моменты
скачков анализируемой функции, ограничимся рассмотрением случая представления скачка
0, x < 0
f (x ) = 
1, x ≥ 0
ограниченным спектром. Ограничение спектра можно учесть, введя в (1.15) умножение на прямоугольное частотное окно
1, ω ≤ γ
.
W (ω ) = 
0, ω > γ
Это окно задает резкое ограничение спектра. Опуская детали вывода, которые
можно найти в [23], найдем, что в этом случае
f (x ) =
1 1
+ Si (γx ),
2 π
где функция Si(z) известна как интегральный синус
z
Si (z ) =
sin(t )
dt .
t
0
∫
Задание функции Si(z) и построение зависимости f(x) для данного случая представлено на рис. 1.33.
Итак, как следует из рассмотренного, эффект Гиббса существует, увы, как теоретически обоснованная реальность. И связан он, прежде всего, с неудачно подо-
54
1.5. Специальные типы преобразований Фурье
бранной (или просто поневоле существующей) формой частотного окна, резко
ограничивающего
число
используемых при спектральном синтезе гармоник (частот) — прямоугольного.
Закончим мы этот раздел на слегка
грустной нотке — оказывается, эффект
Гиббса «всеяден» — он встречается в
разложениях сигнала не только по синусоидальному базису, но и по другим
базисам — в том числе и характерным
для вейвлет-преобразований сигналов.
Так что с его проявлением мы столкнемся еще не раз.
1.5.8. Способы подавления
эффекта Гиббса
Рис. 1.33. Иллюстрация
к возникновению эффекта Гиббса
Наша русская поговорка «Клин клином вышибают» наводит на мысль, что,
применяя более совершенные частотные окна, чем простейшее прямоугольное,
можно ослабить эффект Гиббса или даже избавиться от него. К сожалению, введение частотных окон неизбежно ухудшает реставрацию сигналов на участках их
быстрых изменений. Ниже приведены реализации этих методов борьбы с эффектом Гиббса.
Одним из давно известных методов подавления эффекта Гиббса является применение сигма-множителей, уменьшающих амплитуды гармоник по мере роста их
номера n при приближенном вычислении коэффициентов Фурье методом прямоугольников — рис. 1.34. На представленном документе даны ссылки на работы, в
которых предложены методы борьбы с эффектом Гиббса.
Рис.1.34. Синтез меандра по 10 гармоникам
55
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.35. Синтез меандра по 10 гармоникам с сигма-множителями
Рис. 1.36. Синтез меандра по 10 гармоникам с множителями Фейера
Реализация метода сигма-множителей представлена рис. 1.35. Нетрудно заметить, что эффект Гиббса резко ослабляется, но небольшие его проявления все же
остаются.
Другой метод борьбы с эффектом Гиббса при использовании синтеза рядом
Фурье заключается в применении множителей Фейера. Их определение и применение представлено на рис. 1.36.
Этот метод обеспечивает практически полное подавление эффекта Гиббса. Но
его недостатком является несколько скошенная вершина импульсов.
1.5.9. Улучшенное моделирование сигналов на основе
спектрального подхода
К сожалению, встроенные в Mathcad функции прямого и обратного быстрого
преобразования Фурье не устраняют эффект Гиббса. Более того, они критичны к
выбору числа гармоник и числа отсчетов сигналов. Желательно, чтобы число отсчетов было равно 2m, где m — натуральное число. Это не всегда удобно, особенно
если функция задана малым числом отсчетов.
56
1.5. Специальные типы преобразований Фурье
Кардинальное улучшение моделирования сигналов при спектральном методе
достигается заменой дискретных отсчетов функции на плавную функцию y(t), получаемую при той или иной методике интерполяции. При этом появляется возможность задавать произвольное число отсчетов по интерполируемой функции
y(t) и получить сколь угодно большое число гармоник для ее синтеза.
Рис. 1.37. Улучшенный спектральный анализ с прямой линейной интерполяцией
функции между узлами (начало документа)
В других случаях отсчеты берутся для несколько иной функции, но на практике весьма близкой к исходной — той, которой принадлежат исходные точки сигнала. Несмотря на эти оговорки, такой прием дает блестящие результаты — при
достаточно большом числе выбранных для синтеза гармоник синтезируемая фун-
Рис. 1.38. Спектральный синтез на основании расчета спектра, показанного
на рис. 1.37 (конец документа)
57
Глава 1. Функции, ряды и преобразования Фурье
кция почти повторяет исходную, а эффект Гиббса исчезает практически полностью.
В документе рис. 1.37 показана реализация этого улучшенного метода в СКМ
Mathcad. В документе приняты меры по уменьшению времени вычислений за счет
отказа от умножений на ноль.
Как видно из конца этого документа, показанного на рис. 1.38, степень совпадения исходной и синтезируемой функций очень высока. Это свидетельствует о
высокой степени достоверности моделирования сложного сигнала на основе описанного подхода.
В приведенном примере использован достаточно сложный сигнал со скачками,
полками и участками линейного изменения. В реальной ситуации функция y(t)
чаще всего является довольно плавной и эффект Гиббса проявляется в гораздо
меньшей мере, чем в примененном тестовом примере. Это говорит о том, что все
описанные методы имеют право на жизнь.
В представленную на рис. 1.38 формулу спектрального синтеза сигнала нетрудно ввести члены, учитывающие изменение спектра сигнала при прохождении его
через те или иные устройства, например усилители или фильтры. В результате будет получена временная зависимость сигнала с учетом искажений его этими
устройствами. Читатель может попробовать свои силы в решении подобных задач.
1.5.10. Улучшенное приближение данных рядом Фурье
Когда коэффициенты Фурье вычисляются методом прямоугольников, то ряд
Фурье фактически приближает исходную зависимость (облако ее узловых точек) с
наименьшей среднеквадратической погрешностью. Другими словами, он является
вариантом регрессии. На практике такая регрессия используется не часто из-за
сложности вычислений. Но применение систем компьютерной математики, таких
как Mathcad, эти сложности успешно устраняет. Кроме того, трудности вызывают
расходимость ряда Фурье в точках разрыва и эффект Гиббса, описанные выше.
На рис. 1.39 представлено начало документа, в котором реализовано приближение зашумленных данных рядом Фурье. Показано задание исходной зависимости f(x), вектора ее значений Y0 и вектора зашумленных данных Y. Представленная зависимость явно неудобна для приближения рядом Фурье, поскольку ее зна-
Рис. 1.39. Начало документа с примером приближения данных рядом Фурье
58
1.5. Специальные типы преобразований Фурье
Рис. 1.40. Приближение данных рядом Фурье
чения на краях не равны нулю и довольно велики — это означает наличие на
краях разрывов.
Далее на рис. 1.40 представлено вычисление коэффициентов Фурье методом
прямоугольников (программные модули) и построение ограниченного числом гармоник nmax = 10 ряда Фурье. Нетрудно заметить, что за исключением концевых
точек ряд Фурье неплохо приближает облако точек исходной зависимости. Поскольку мы имеем функцию приближения в явном виде, можно говорить о полноценной аппроксимации, равно как и о довольно эффективном сглаживании данных.
Из рис. 1.40 ясно, что спектр Фурье быстро затухает, что позволяет отбросить высшие гармоники и тем самым обеспечить эффективное сглаживание данных.
Большой «ложкой дегтя» в таком приближении оказывается злополучный эффект Гиббса. Он проявляется как плохое схождение ряда Фурье на концах отрезка
приближения (в нашем случае в точках с x = 0 и x = 2). При этом наблюдаются
совершенно недопустимые выбросы кривой аппроксимации и волнообразный ее
ход даже в центре графика.
Одним из главных способов улучшения сходимости рядов Фурье является
устранение разрывов исходных функций в начале и в конце интервала приближения. Если данные представлены отдельными точками (узлами), то для этого достаточно использовать итерационную формулу, представленную в начале
рис. 1.41.
В результате пересчета точек исходной зависимости получается новая зависимость с нулями в конце интервала приближения. Такую зависимость можно представить рядом Фурье с только синусными членами, что дает сразу несколько важных достоинств:
• заметно сужается спектр Фурье, что позволяет использовать меньшее число
гармоник;
• ряд Фурье быстро сходится;
59
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.41. Часть документа с примером приближения данных рядом Фурье
с устранением разрывов в начале и конце отрезка приближения
Рис. 1.42. Окончание документа с примером приближения данных рядом Фурье
(сверху показано приближение преобразованной, а снизу восстановленной
исходной зависимости)
60
1.5. Специальные типы преобразований Фурье
• проявление эффекта Гиббса резко уменьшается;
• появляется возможность экстраполяции (продолжения по синусам).
Так, в нашем случае оказалось достаточным ограничить число гармоник ряда
Фурье значением 5 (на основании приведенной спектрограммы).
Теперь после преобразования данных можно получить весьма эффективное
приближение их рядом Фурье с малым числом гармоник — рис. 1.42 (верхний
график).
Используя далее обратную формулу преобразования, можно вернуть данным
исходные значения и получить кривую регрессии, показанную на рис. 1.42, снизу.
Нетрудно заметить, что полученная аппроксимирующая функция вполне удовлетворительно справляется с экстраполяцией. Для демонстрации возможностей приближения на рис. 1.42 показаны облако точек исходной зависимости, кривая приближения (жирная) и чистая (без шумов) исходная зависимость.
Рис. 1.43. Задание непрерывного сигнала его выборками и его восстановление
на основе теоремы Котельникова
1.5.11. Восстановление сигнала по базису Котельникова
Есть ряд базисов представления произвольных сигналов, которые занимают
как бы промежуточное положение между синусоидальным базисом Фурье и вейвлетами. К такому базису можно отнести базис Котельникова, появившийся в результате доказательства фундаментальной теоремы об отсчетах.
При цифровой обработке сигналов часто производят их выборку (вырезку) в
определенные моменты времени (рис. 1.43, сверху). Они могут равномерно или
неравномерно отстоять друг от друга. Сигнал может быть периодическим (с периодом T), но может быть и однократным или непериодическим.
61
Глава 1. Функции, ряды и преобразования Фурье
Выборку электрических сигналов и их представление в виде чисел или кодов
конечной разрядности выполняют так называемые аналого-цифровые преобразователи — АЦП. В результате на выходе АЦП мы имеем дискретный сигнал, представленный потоком чисел (кодов). Главные показатели АЦП — это их разрядность (число уровней квантования, обычно выражаемое в двоичном виде) и скорость выполнения преобразований (число операций в секунду).
Обратное преобразование цифровой информации в аналоговую выполняют
цифроаналоговые преобразователи — ЦАП. Для наиболее распространенных электрических сигналов АЦП и ЦАП выпускаются в виде больших интегральных микросхем. Их применение позволяет легко реализовать на практике описанные в
данной главе математические методы обработки сигналов.
Как часто надо делать равномерные выборки произвольного сигнала, чтобы
после преобразования в цифровую форму, а затем снова в аналоговую была сохранена форма сигнала? Ответ на этот важный вопрос дает теорема об отсчетах или
теорема Котельникова (за рубежом именуемая также теоремой Найквиста): «Если
спектр сигнала e(t) ограничен высшей частотой fв, то он без потери информации
может быть представлен дискретными отсчетами с числом, равным 2 ⋅ fв». При
этом сигнал восстанавливается по его отсчетам e(k ⋅ dt), следующим с интервалом
времени dt, с помощью фильтра низких частот, реализующего восстановление по
формуле:
—(е ) =
∞
∑ e(k ⋅ dt )
k = −∞
sin(π (t − k ⋅ dt ) / dt )
.
π (t − k ⋅ dt ) / dt
Для восстановления непрерывного сигнала по его выборкам достаточно располагать функцией sinc(x) = sin(x)/x с учетом ее особого значения sinc(x) = 1 при x = 0.
Такая функция есть в системе Mathcad 11, но ее нет в предшествующих версиях
системы Mathcad. Однако, как показано на рис. 1.43 (часть документа снизу), такую функцию несложно задать с помощью функции if. Заодно на рис. 1.43 снизу
показано восстановление сигнала по его отсчетам на основе теоремы Котельникова. Примечательно, что функция sinc(x) = sin(x)/x имеет максимум при x = 0 и колебательно спадает в обе стороны, что чем то напоминает поведение некоторых
вейвлетов.
Рисунок 1.43 показывает, что даже при небольшом числе отсчетов (в нашем
случае их 11) восстановление сигнала (или, можно сказать, его интерполяция)
происходит вполне прилично, хотя и не идеально. Интерполирующая кривая получается довольно плавной и непрерывной и точно проходит через точки исходных отсчетов. Увы, злополучный эффект Гиббса (колебания интерполирующей
кривой, не присущие исходному сигналу) и здесь имеет место. Его причиной, как
всегда, является ограниченное число выборок. При увеличении числа выборок
точность восстановления можно существенно улучшить, что часто и делается на
практике.
К примеру, популярные сейчас оптические компакт-диски содержат высококачественные записи речи и музыки в цифровой форме. Высшая частота звуковых
сигналов 20 кГц. Частота дискретизации их 44,1 кГц (более 44000 выборок в секунду). Каждая выборка представляется (квантуется) с числом уровней 216 = 65536
(разрядность квантования 16 бит). Полученный поток цифровых данных и записывается в двоичном виде на оптический диск. В итоге компакт-диск при лазерном считывании информации позволяет воспроизводить сколько угодно раз звуки
62
1.6. Оконное преобразование Фурье
любимых певцов и оркестров с невиданным ранее качеством. Более того, возможна их многократная перезапись без малейшей потери качества.
1.6. Оконное преобразование Фурье
1.6.1. Ограничения и недостатки преобразования Фурье
Вейвлет-преобразования в понимании, к сожалению, существенно сложнее,
чем преобразования Фурье. Поэтому для практического применения вейвлетов
важно четко понять отличия между этими преобразованиями. Основополагающее
различие — потеря информации и времени существования частотных компонент
сигнала при обычном фурье-преобразовании мы уже отмечали.
В основе представления периодического сигнала рядом Фурье лежит соотношение:
N
y (t ) ~
∑c e
itn
n
,
(1.16)
n=0
где i — мнимая единица. Функция y(t) представляется суммой произведений синусоид, представленных членом, на коэффициенты Фурье cn. Они вычисляются как:
cn =
1
2π
2π
∫ y(t )e
-itn
dt .
(1.17)
0
Коэффициенты Фурье — комплексные числа. Они представляют набор
(спектр) гармонических сигналов, называемых гармониками. Число n — номер
гармоники (0, 1, 2, ...). Теоретически ряд Фурье имеет бесконечное число членов
(гармоник), но на практике оно всегда конечно и равно N. Поэтому ряд (1.16) записывается как приближенный. Гармоники, представляющие собой синусоиды с
разной частотой, кратной частоте первой гармоники, и разной фазой, образуются
умножением сn на eitn.
С позиций точного представления преобразованием Фурье произвольных сигналов и функций можно отметить целый ряд его недостатков:
• неприменимость к анализу нестационарных сигналов;
• преобразование Фурье даже для одной заданной частоты требует знание
сигнала не только в прошлом, но и в будущем, что является теоретической
абстракцией;
• в условиях практически неизбежного ограничения числа гармоник или
спектра колебаний точное восстановление сигнала после прямого и обратного преобразований Фурье теоретически (и тем более практически) невозможно, в частности, из-за появления эффекта Гиббса;
• базисной функцией при разложении в ряд Фурье является гармоническое
(синусоидальное) колебание, которое математически определено в интервале времени от −∞ до +∞ и имеет неизменные во времени параметры;
• численное интегрирование во временной области от −∞ до +∞ при прямом
преобразовании Фурье (ППФ) и от −∞ до +∞ в частотной области при обратном преобразовании Фурье (ОПФ) встречает большие вычислительные
трудности;
63
Глава 1. Функции, ряды и преобразования Фурье
• отдельные особенности сигнала (например, разрывы или пики) вызывает
незначительные изменения частотного образа сигнала во всем интервале
частот от −∞ до +∞, которые «размазываются» по всей частотной оси, что
делает их обнаружение по спектру практически невозможным;
• ясно, что такая плавная базисная функция, как синусоида, в принципе вообще не может представлять перепады сигналов с бесконечной крутизной,
хотя такие сигналы (например, прямоугольные импульсы) применяются
весьма широко;
• единственным приспособлением к представлению быстрых изменений сигналов, таких как пики или перепады, является резкое увеличение числа
гармоник, которые оказывают влияние на форму сигнала и за пределами
локальных особенностей сигнала;
• по составу высших составляющих спектра практически невозможно оце-
Рис. 1.44. Спектральный анализ и синтез синусоидального сигнала с небольшими
ступеньками при переходе через нуль
нить местоположение особенностей на временной зависимости сигнала и
их характер;
• для нестационарных сигналов (а таковых сейчас большинство) трудности
ППФ и ОПФ (и, соответственно, быстрого преобразования Фурье — БПФ)
многократно возрастают.
Небольшие разрывы (ступеньки) на синусоидальном или любом плавно изменяющемся сигнале трудно обнаружить в его Фурье-спектре, ибо они создают множество высших гармоник очень малой амплитуды — рис. 1.44. Сигнал здесь получен суммированием синусоиды с меандром, который моделируется выражением
вида 0.1*sign(sin(x)). Таким образом, ступенька имеет величину 0.1 от амплитуды
64
1.6. Оконное преобразование Фурье
синусоиды и видна на осциллограмме сигнала и его реставрации (для устранения
слияния кривые раздвинуты по вертикали).
Спектр таких сигналов (см. спектрограмму внизу рис. 1.44) содержит едва заметные высокочастотные составляющие спектра, по которым распознать локальную особенность сигнала и тем более ее место и характер практически невозможно. Составляющие спектра особенности как бы размазаны по оси частот.
1.6.2. Кратковременное (оконное) преобразование Фурье
Проблемы спектрального анализа и синтеза сигналов, ограниченных во времени, частично решаются переходом к так называемому кратковременному или оконному преобразованию Фурье. Идея этого преобразования очень проста — временной
интервал существования сигнала разбивается на ряд промежутков — временных
окон. В каждом промежутке вычисляется свое преобразования Фурье. Если в каком-то окне существовали частотные составляющие некоторого сигнала, то они
будут присутствовать в спектре. А если нет — будут отсутствовать. Таким образом,
можно перейти к частотно-временному представлению сигналов, которое является особым разделом техники обработки сигналов.
Кратковременное (оконное) преобразование выполняется с использованием
выражения:
A(ω ) =
∞
∫ y(t ) ⋅ w(t − b ) ⋅ e
−iωt
dt .
(1.18)
−∞
Рис. 1.45. Иллюстрация к технике оконного преобразования Фурье
Здесь, в отличие интеграла Фурье, функция y(t) под знаком интеграла дополнительно умножается на оконную функцию w(t – b). Параметр b окна задает его
сдвиг на временной оси. Обычно задается ряд фиксированных значений b в пределах полного окна. Например, для простейшего прямоугольного окна функция
w(t – b) в пределах окна дает 1, а за пределами окна просмотра — 0. При этом для
каждого окна мы получаем свой набор комплексных амплитуд сигнала в частотной области.
Сказанное поясняет рис. 1.45. Окно, показанное на временной зависимости
сигнала (слева) скачками перемещается и за некоторое число таких перемещений
позволяет «просмотреть» весь сигнал. В каждом окне выполняется свое спектральное разложение, так что вместо обычно одной спектрограммы мы теперь получает
набор спектрограмм, схематично показанный в правой части рис. 1.45 в виде прямоугольников.
Естественно, что поскольку каждое окно охватывает небольшой участок по
времени, точность описания локальных изменений сигнала может быть повышена. Часто используются окна Гаусса или иные окна, обеспечивающие малые иска-
65
Глава 1. Функции, ряды и преобразования Фурье
жения спектра из-за граничных явлений и уменьшающие проявление эффекта
Гиббса.
Казалось бы, раз оконное преобразование Фурье дает нам частотно-временное
представление сигналов, то достаточно им и ограничиться. И не нужно было открывать вейвлет-преобразования?
Однако ситуация не так проста! Она упирается в известный принцип неопределенности Гейзенберга. Согласно ему невозможно получить одновременно высокое
частотное и высокое временное разрешение. Выбирая окно с малой шириной по
времени, мы получаем высокое временное разрешение, но низкое частотное разрешение. Взяв окно с большой шириной во времени, получаем хорошее разрешение по частоте, но плохое во времени. Оконное преобразование оперирует с окнами, имеющими одинаковую ширину, а потому данное противоречие для него неразрешимо. Мы вернемся к этой проблеме после рассмотрения современных
методов представления спектра. А пока отметим еще один принципиальный недостаток оконного преобразования Фурье — в нем по-прежнему используется единственная базисная функция — синусоида со всеми ее отмеченными ранее недостатками.
1.6.3. Функции оконного спектрального анализа в пакете
Signal Processing СКМ Mathcad
Пакет Signal Processing популярной системы Mathcad имеет ряд функций оконного (короткого) спектрального анализа. Мы не рассматриваем этот пакет полностью, но отметим применение функций оконного спектрального анализа. Они позволяют разбить сигнал на диапазоны (окна) как без перекрытия, так и с перекрытием и выполнить спектральный анализ следующего типа:
pspectrum(x,n,r[,w]) — расчет средней спектральной мощности сигнала x;
cspectrum(x,n,r[,w]) — расчет кросс-спектра сигнала x;
Рис. 1.46. Сравнение специальных функций спектрального анализа пакета
Signal Processing СКМ Mathcad
66
1.6. Оконное преобразование Фурье
coherence(x,y,n,r[,w]) — расчет когерентности сигналов;
snr (x,y,n,r[,w]) — расчет отношения сигнал/шум для векторов x и y.
В этих функциях x и y — векторы с комплексными или вещественными элементами, n — число поддиапазонов входного сигнала (лежит в пределах от 1 до
длины вектора x), r — фактор перекрытия поддиапазонов (от 0 до 1) и w — код
окна, выбираемый следующим образом:
1. rectangular — прямоугольное окно;
2. tapreg rectangular — окно типа трапеции;
Рис. 1.47. Построение спектров радиоимпульса с помощью функций
CFFT и pspectrum
3.
4.
5.
6.
triangular — треугольное окно;
hanning — окно Хэннинга;
hamming — окно Хэмминга;
blackman — окно Блэкмана;
Рис. 1.46 дает сравнение этих функций при построении дискретных спектров
зашумленных сигналов.
1.6.4. Спектральный анализ с помощью функций
CFFT и pspectrum
Поскольку мощность сигнала пропорциональна его уровню, то построение
спектра спектральной мощности (СПМ) сигналов с помощью функции pspect-
67
Глава 1. Функции, ряды и преобразования Фурье
rum позволяет эффективно отсеивать составляющие спектра с малым уровнем —
например боковые лепестки радиоимпульсов. Это наглядно иллюстрирует
рис. 1.47, на котором задано построение радиоимпульса (пачки синусоидальных
колебаний) и построены спектры, вычисляемые функциями CFFT и pspectrum.
Нетрудно заметить, что боковые лепестки у основных спектральных линий, хорошо заметные в спектре, полученном функцией CFFT, практически отсутствуют в
спектре, созданном с помощью функции pspectrum.
1.7. Современные методы получения и визуализации
спектров
1.7.1. Спектры на основе оконного преобразование Фурье
Существенным недостатком спектров, полученных при обычном преобразовании Фурье, является их малая информативность. Локальные особенности сигналов, например короткие всплески или провалы, разрывы и ступеньки и т. д., ведут
к появлению в спектре высших гармоник с малой амплитудой, размазанных по
всей частотной оси. Определить по ним характер локальных особенностей довольно трудно.
Кардинальное решение этой задачи кроется в применении вейлет-преобразований, описанных в следующей главе. Но и на основе использовании фурье-преобразований также был предложен ряд современных методов спектрального анализа, позволяющих с высокой детальностью представлять спектры сложных сигналов. Ниже представлено описание методов и их реализаций в пакете Signal
Processing систем класса Mathcad. Нельзя не отметить, что некоторые из представлений спектра, обзорно представленных ниже, имеют определенные преимущества даже перед вейвлет-преобразованиями. Приходится сожалеть, что у нас практически нет литературы, описывающей и обосновывающей эти виды представления
спектров. А объем данной главы вынуждает ограничиться лишь обзорным описанием функций новых представлений спектра.
Одним из методов улучшенной визуализации спектра является короткое (оконное) преобразование Фурье. Оно реализуется функций stft(x[,n][,s][,w]), где
x — вектор данных действительных или комплексных;
n — число частот преобразования (по умолчанию 64);
s — число пропущенных при преобразовании периодов частоты дискретизации
(по умолчанию n/2);
w — индекс окна или вектор с его коэффициентами.
Окно можно задавать или вектором его коэффициентов или индексом для ряда
заранее определенных окон, реализованных в виде фильтра с КИХ:
1.
2.
3.
4.
5.
6.
rectangular — прямоугольное окно (по умолчанию);
tapreg rectangular — окно типа трапеции;
triangular — треугольное окно;
hanning — окно Хэннинга;
hamming — окно Хэмминга;
blackman — окно Блэкмана.
Формула для такого преобразования дана сверху на рис. 1.48 для сигнала, который представляет собой две пачки синусоидальных колебаний с разной частотой.
68
1.7. Современные методы получения и визуализации спектров
Рис. 1.48. Короткое (оконное) преобразование Фурье для двух пачек
синусоидальных колебаний (пример 1)
Рис. 1.49. Короткое (оконное) преобразование Фурье для сложного сигнала
с шумом (пример 2)
69
Глава 1. Функции, ряды и преобразования Фурье
В отличие от обычного преобразования Фурье функция x(τ) умножается на
окно w(τ – t), значение которого (в первом приближении) равно 1 в пределах окна
и 0 за его пределами. Это окно перемещается по временной оси без перекрытия, и
спектр по методу Фурье вычисляется в пределах каждого окна. Таким образом,
получается набор спектрограмм в плоскости время-частота — спектрограммы
представлены ниже для окон разной ширины. На спектрограммах можно четко
выделить спектральные линии для обеих пачек синусоидального сигнала. Отчетливо выделяются их длительность и длительность пауз между пачками.
На рис. 1.49 представлен результат анализа этим методом для более сложного
сигнала, имеющего к тому же шумовую компоненту.
Представление сигнала стало (особенно при малой ширине окна) намного более разнообразным, хотя по детальности трудно сравнимо со специальными приемами осуществления короткого преобразования в пакете Signal Processing Toolbox
для системы MATAB.
1.7.2. Времячастотное билинейное представление спектра
сигналов
Пакет SP имеет ряд специальных функций для детального билинейного времячастотного представления (или презентации) спектра сигналов:
timefreq(x,"t",f,s[,d]) — представление спектра сигнала на
время-частота;
timecorr(x,"t",f,s[,d]) — представление спектра сигнала на
время-корреляция;
timefreq(x,"custom",s,r,) — представление спектра сигнала на
время-частота с заданным пользователем типом представления;
timecorr(x,"custom",s,r) — представление спектра сигнала на
время-корреляция с заданным пользователем типом представления.
плоскости
плоскости
плоскости
плоскости
Здесь:
x — вектор с элементами вещественного типа;
t — строка, задающая тип представления (презентации) спектра;
f — целое число лагов для функции timecor или число частот для функции
timefreq, которое должно быть вычислено;
Рис. 1.50. Определения для времячастотных преобразований и представлений
сигнала
70
1.7. Современные методы получения и визуализации спектров
s — число шагов в виде целого числа, которое должно быть пропущено между
соседними вычислениями;
d — опционно заданный параметр, задающий фактор демпфирования для
представления Чои—Вильямса (равен 1 по умолчанию, игнорируется при других представлениях);
r — матрица с целочисленными элементами и с ядром представления
«custom», задаваемым пользователем.
Тип представления задается строкой t и может быть следующим:
wigner — представление Вагнера;
cone — коническое представление;
Рис. 1.51. Представление Вагнера (начало)
bornjordan — представление Борна—Жордана;
marghill — представление Маргенау—Хилла;
choiwill — представление Чои—Вильямса;
custom — представление пользователя.
В начале документа рис. 1.50 даны определения для времячастотных преобразований и представлений сигнала.
Поскольку все эти представления мы рассматриваем лишь как прелюдию к
вейвлет-анализу, ниже мы ограничимся только примерами их реализации без детального описания каждого из представлений. Такое описание заинтересованный
читатель найдет в справках по этим представлениям.
1.7.3. Представление Вагнера
Рисунок 1.51 иллюстрирует начало документа, поясняющего представление
Вагнера. В этом представлении используется ядро r(t,τ) в виде дельта-функции. На
71
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.52. Представление по Вагнеру
Рис. 1.53. Cпектрограмма, полученная
с помощью функции stft
рис. 1.51 представлено задание простого сигнала для представления и опредеРис. 1.54. Представление
лены фурье-преобразования C(t, ω).
Маргинау—Хилла для сложного
Конец документа с этим представлесигнала с шумом
нием дан на рис. 1.52. Здесь для представления использован сигнал, полученный из текстового файла batsig.txt. Такой сигнал при его считывании во времени представляет собой набор кодов. Временная зависимость сигнала представлена
на рис. 1.52 (график сверху).
График снизу рис. 1.52 представляет собой спектрограмму данного сигнала, соответствующую представлению Вагнера. Нетрудно заметить, что она имеет весьма
72
1.7. Современные методы получения и визуализации спектров
Рис. 1.55. Представление
Чои—Вильямса
Рис. 1.56. Представления
по Борну—Жордану и коническое
представление (конец документа)
замысловатый вид, соответствующий сложности сигнала. Вы можете сравнить эту
спектрограмму со спектрограммой, полученной с помощью функции stft. Эта
спектрограмма показана на рис. 1.53.
По детальности представления спектра эта спектрограмма заметно уступает
представленной на рис. 1.52.
1.7.4. Представление Маргинау—Хилла
Представление Маргинау—Хилла (с параметром «t» — «marghill») особенно эффектно в трехмерном пространстве. Это хорошо видно из рис. 1.54.
Спектр в данном случае напоминает горный ландшафт и отличается детальностью и выразительностью. Цветная функциональная окраска (увы, не видная на
рисунке в книге) дополнительно выявляет детали спектра.
1.7.5. Представление Чои—Вильямса
Представление Чои—Вильямса представлено на рис. 1.55 в двух вариантах. Они
показывают возможности управления детальностью спектрограмм.
Это представление также дает наглядное представление о сложности реальных
цифровых сигналов, к которым относится и сигнал от текстового файла, использованный в приведенных примерах.
1.7.6. Представление Борна—Жордана и коническое
представление
Еще два представления спектра сигнала представлены на рис. 1.56. Это представление Борна—Жордана и так называемое коническое представление. Детали
этих представлений описаны в электронной книге по пакету Signal Processing/
Эти представления также отличаются детальностью спектрограмм. Выбор ряда
представлений одного и того же сигнала (и, разумеется, разных сигналов) позволяет подбирать представления, наиболее подходящие для выявления тех или иных
73
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.57. Осциллограмма сигнала,
имеющего четыре аддитивные
косинусоидальные компоненты
с частотами 5, 10, 20 и 50 Гц
(время в миллисекундах)
Рис. 1.58. Осциллограмма сигнала,
имеющего четыре косинусоидальные
компоненты с частотами 30, 20, 10
и 5 Гц, присутствующими
в разное время
особенностей сигналов. Сложные представления сигналов лежат в основе техники
распознавания речи (звуковые сигналы) и изображений.
1.7.7. Трехмерное представление спектров Фурье
Некоторые программные средства дают возможность получения трехмерных
спектров, что особенно полезно при оценке частотно-временных методов представления сигналов, таких как оконное преобразование Фурье.
Для оценки возможностей трехмерного представления спектра рассмотрим
3D-спектрограмму сложного сигнала, содержащего 4 косинусоидальные компоненты с частотами 5, 10, 20 и 50 Гц, с единичными амплитудами и нулевыми фазами:
s(t) = cos(2π5t) + cos(2π10t) + cos(2π20t) + cos(2π50t)
Этот сигнал содержит четыре аддитивные компоненты и является стационарным сигналом. То, что этот сигнал не так уж и прост, свидетельствует осциллограмма сигнала, представленная на рис. 1.57. По виду осциллограммы трудно судить о том, какие компоненты и с какими частотами входят в этот сигнал. Разве
что бросается в глаза периодичность сигнала, связанная с первой частотной компонентой. Обычный спектр такого сигнала для нас уже тривиален — он просто
представляет собой четыре линии единичной высоты на частотной оси с указанными выше частотами
А теперь усложним задачу. Представим себе, что каждая из компонент (начиная с самой высокочастотной) на интервале времени 1000 мс существует всего по
250 мс. Таким образом, мы перешли от рассмотрения стационарного сигнала к
рассмотрению нестационарного сигнала. Временная зависимость нового сигнала
представлена на рис. 1.58.
Сравнение сигнала с осциллограммой рис. 1.58 с сигналом, осциллограмма которого дана на рис. 1.57, показывает, что мы имеем два абсолютно разных сигнала. Изменится ли от этого вид обычного спектра? Мы показали в этой главе чуть
выше, что он будет представлен четырьмя вертикальными линиями на частной
74
1.7. Современные методы получения и визуализации спектров
Рис. 1.59. 3D-спектр сигнала
при a = 0.01
Рис. 1.60. 3D-спектр сигнала
при a = 0.001
оси, хотя и меньшей высоты для второго сигнала, поскольку энергия каждой
частотной составляющей стала меньше.
Качественно вид спектра останется
прежним и по нему невозможно судить, в какие времена существует та
или иная частотная компонента сигнала.
А теперь рассмотрим 3D-спектры
такого сигнала с оконным преобразованием Фурье (1.18). Выберем хорошо
известное временное окно Гаусса
w (t ) = e
−
at 2
2
.
Рис. 1.61. 3D-спектр сигнала
при a = 0.0001
Это окно имеет колоколообразную временную зависимость, острота которой
задается параметром a. Чем больше a, тем уже пик зависимости w(t).
Рис. 1.59 показывает 3D-спектр для a = 0.01. Мы видим, что все компоненты
сигнала хорошо различаются по времени и удовлетворительно по частоте.
Теперь увеличим ширину окна, уменьшив a. Полученный при a = 0,001 спектр
показан на рис. 1.60. Становится отчетливо видно, что разрешение во времени заметно ухудшилось и появились признаки перекрытия фрагментов сигнала. В то
же время разрешение по частоте заметно улучшилось.
Пойдем дальше и построим 3D-спектр для a = 0.0001 — рис. 1.61. Теперь уже
разрешение по времени стало совершенно неудовлетворительным, а по частоте
стало еще лучше. Заметим, что при a→0 наш спектр во всех временных интервалах выродится в обычный спектр Фурье.
Итак, мы еще раз наглядно убедились в том, что в случае оконного преобразования Фурье действует принцип неопределенности, согласно которому улучшение
разрешения по одному параметру (частоте или времени) ведет к ухудшению разрешения по другому параметру. Можно предположить, что это противоречие разрешимо путем перехода к адаптивному оконному преобразованию, при котором
ширина окна адаптируется к особенностям сигнала, а число окон становится не
75
Глава 1. Функции, ряды и преобразования Фурье
Рис. 1.62. 3D вейвлет-спектрограмма сигнала из четырех косинусоид с разными
частотами, действующими в разные промежутки времени
вполне определенным. Однако при этом стоит весьма сложная задача выбора критерия адаптации и его реализации. Подавляющее большинство практических реализаций оконного преобразования Фурье базируется на применении окон одинаковой ширины и, таким образом, не решает проблему неопределенности частотного и временного разрешения.
1.7.8. Трехмерные вейвлет-спектрограммы
Альтернативой оконному преобразованию Фурье и заодно и его частному
виду — обычному преобразованию Фурье и стала разработка вейвлет-преобразования на основе нового и довольно представительного набора базисных функций,
порождающих вейвлеты. Это и является предметом рассмотрения в последующих
главах данной книги.
А в завершение этой главы мы, ради сравнения со спектрограммами оконного
преобразования Фурье, рассмотрим типичную трехмерную вейвлет-спектрограмму
для описанного чуть выше сигнала. Рис. 1.62 показывает такую спектрограмму.
Горизонтальная плоскость спектрограммы построена по осям SCALE (Масштаб) и TRANSLATION (Преобразованное время). Высота задается значениями
вейвлет-коэффициентов. Эти понятия мы рассмотрим подробно в главе 2. А пока
отметим, что вейвлет-спектрограмма выглядит куда более представительно, чем
обычные даже трехмерные спектрограммы оконного преобразования Фурье. В частности, можно четко локализовать места на спектрограмме, характерные для
каждой из четырех компонент сигнала. Это особенно заметно на участках спектрограммы, соответствующих представлению коэффициентов с малыми номерами
вейвлет-коэффициентов (малые значения SCALE). При больших номерах коэффициентов хорошо виден постепенный эффект сглаживания, находящий практическое применение для фильтрации сигналов, их сжатия (компрессии) и очистки
от шума.
ПРИМЕЧАНИЕ Несмотря на красоту (особенно в цвете) трехмерных спектрограмм на
практике они применяются редко. Это связано с громоздкостью таких
спектрограмм и необходимостью в специальном программном обеспечении для их построения.
76
Глава 2. Вейвлеты и вейвлет-преобразования
2.1. Некоторые математические понятия теории
вейвлетов
2.1.1. Наглядный пример вейвлет-преобразований с применением
вейвлета Хаара
Прежде, чем мы окунемся в море вейвлет-преобразований, рассмотрим наглядное представление о том, что такое вейвлет-преобразования [20]. Воспользуемся
для этого самым простым вейвлетом Хаара — рис. 2.1. Несмотря на свою простоту
и ряд недостатков, он имеет компактный носитель и обеспечивает возможность
точной декомпозиции и синтеза любого сигнала.
Рис. 2.1. Вейвлет Хаара (слева — аппроксимирующая функция, а справа —
детализирующая функция)
Вначале выполним декомпозицию сигнала. Для этого используются две функции вейвлетов Хаара. Одна это аппроксимирующая функция, которая у вейвлета
Хаара просто равна 1 на всем компактном носителе. А вот другая — детализирующая функция имеет значение +1 на первой половине носителя и –1 на второй половине (словом, на компактном носителе размещен один период меандра). Аппроксимирующая функция в данном случае указывает на усреднение значений
сигнала, а детализирующая задает порядок применения приращений сигнала,
причем ее значение +1 означает сложение, а –1 — вычитание.
Пусть имеется сигнал, представленный в виде вектора с целочисленными компонентами [9 7 3 5]. Это могут быть, например, значения пикселей некоторой
подстроки изображения. Разрешение в этом случае равно 4 (таково число элементов вектора) и поначалу обрабатывается весь вектор.
Перейдем к более грубому (вдвое меньшему) разрешению 2, для чего поделим
компактный носитель вейвлета вдвое и используем наш вейвлет дважды. Это значит, что мы должны вычислить среднее из каждой пары компонентов разделенного вдвое вектора сигнала. Получим вектор [8 4] с двумя детализирующими коэффициентами [1 –1]. Они представляют половинки от приращений уровня относительно среднего значения, т. е. (9 – 7)/2 = 1 и (3 – 5)/2 = –1.
Прибавив и отняв +1 от первого компонента вектора огрубленного сигнала —
числа 8, получим компоненты 9 и 7. Аналогично, прибавив и отняв –1 от второго
77
Глава 2. Вейвлеты и вейвлет-преобразования
компонента вектора огрубленного сигнала 4, получим 3 и 5, т. е. вторую пару компонентов исходного вектора.
Продолжим огрублять сигнал вдвое и перейдем к разрешению 1. Наш вектор
превратится в [6] с детализирующим коэффициентом 2. Его прибавление и вычитание дадут вектор [8 4].
Итак, для декомпозиции (разложения) исходного сигнала имеем:
Разрешение
Аппроксимирующие
коэффициенты
Детализирующие
коэффициенты
4
[9 7 3 5]
2
[8 4]
[1—1]
1
[6]
[2]
Таким образом, для представления сигнала достаточно хранить его грубое значение 6 и детализирующие коэффициенты 2, 1 и –1. Операции с ними задаются
видом вейвлета Хаара. Например, на уровне разрешения 1 он представляется двумя функциями — аппроксимирующей с уровнем 1 и детализирующей с уровнем
+1 на первой половине периода и –1 на второй половине периода (именно это задает вначале сложение, а затем вычитание детализирующего коэффициента).
В итоге, осуществляя композицию сигнала, мы точно восстанавливаем его значение, используя последний (самый грубый) аппроксимирующий коэффициент и
ряд детализирующих коэффициентов.
Процедуры изменения разрешения вдвое в ходе композиции и декомпозиции
реализуют так называемый диадический метод. Он является разновидностью более
общего кратномасштабного метода и лежит в основе устранения избыточности,
свойственной непрерывным вейвлет-преобразованиям (см. ниже).
Казалось бы, какой прок в таком представлении, коли число компонентов вектора осталось неизменным? Оказывается, прок есть, и весьма существенный.
Прежде всего, мы перешли от представления независимых значений сигнала к его
грубому приближению и приращениям. Это прекрасно соответствует нашим представлениям об обычных сигналах — осциллограммы их обычно представляются
некоторой сглаженной кривой, на которой видно множество отклонений от нее
(осцилляций). Переход к представлению сигнала в виде его грубой компоненты и
детализирующих компонент лежит в основе известной техники сжатия сигналов с
малыми потерями или даже без них (как в нашем примере).
Коэффициенты вейвлет-представления для большинства сигналов часто существенно меньшие числа, чем представления отсчетов сигналов. Для реальных сигналов многие коэффициенты по уровню оказываются настолько малыми, что их
можно отбросить. Это означает возможность значительного сокращения объема
информации о сигнале, выполнение его компрессии и очистки от шумов. Добавьте к этому, что сейчас есть множество куда более ценных и интересных вейвлетов,
чем вейвлет Хаара, что дает обширный выбор базисных функций, как для точного, так и приближенного представления любых сигналов.
Правда, точное представление могут давать только так называемые ортогональные вейвлеты. На определении ортогональности, как и многих иных свойств вейвлетов, мы остановимся в этой главе далее. Пока будем исходить из того, что такие вейвлеты есть. Кроме вейвлета Хаара, к ним относятся хорошо известные вейвлеты Добеши, для прямого и обратного преобразований которых Mathcad имеет
встроенные в ядро функции.
78
2.1. Некоторые математические понятия теории вейвлетов
2.1.2. Пространство сигналов и его базисы
В последнее время наметилась тенденция к использованию широкополосных
импульсных и цифровых сигналов (видеоимпульсная локация, видеосредства
компьютеров и т. д.), которые относятся к классу нестационарных. Параметры таких сигналов не являются постоянными, а меняются во времени. Здесь мы рассмотрим основные понятия, относящиеся к вейвлетам — средствам, перспективным для представления и обработки таких сигналов. Приведенная ниже сводка
математических понятий нужна тем, кто хочет достаточно глубоко вникнуть в теорию вейвлетов. Если пока вы такой цели перед собой не ставите, то можете смело
пропустить этот раздел и вообще бегло познакомиться с этой главой.
В математической теории сигналов принято считать, что они определены как
векторы в некотором пространстве. Не претендуя на строгость, можно считать,
что вектором является некоторый набор чисел, представляющих сигнал (см. наглядный пример, описанный выше).
Бесконечно-размерное пространство, часто используемое в теории вейвлетов,
называется гильбертовым пространством L2[R] (см. главу 1). Вейвлет-функции Ψ,
задающие грубое приближение сигналов (аппроксимацию) и принадлежащие пространству L2[R], принципиально должны иметь нулевое среднее значение (интеграл) и затухать на бесконечности. Именно это свойство побудило считать вейвлеты «короткими волнами».
Ввиду ограниченности действия вейвлетов они могут покрывать всю вещественную ось или ее достаточно большую часть только в том случае, если обладают
возможностью сдвига по этой оси. К этому стоит добавить возможность масштабирования (сжатия/растяжения), которое можно уподобить изменению частоты
гармоник в рядах Фурье, приближающих сигналы или функции. При наличии
этих свойств вейвлеты обеспечивают свое главное преимущество перед базисом на
основе синусоид — возможность представления локальных особенностей функций и сигналов.
Базисом векторного пространства V называют множество линейно независимых векторов, таких, что любой вектор из пространства V может быть записан в
виде их линейной комбинации. У векторного пространства может быть один базис или много базисов. Однако число векторов во всех базисах одинаково и называется размерностью векторного пространства. К примеру, в двухмерном пространстве базис состоит из двух векторов, в трехмерном — из трех.
2.1.3. Скалярное произведение функций
В дальнейшем мы часто будем использовать понятие скалярного произведения
функций. Поэтому дадим его общее определение. Пусть имеются две функции f(t)
и g(t), определенные в пространстве L2[a,b]. Тогда скалярное произведение обозначается как
b
f (t ), g (t ) =
∫ f (t )g * (t )dt .
a
Напомним, что L2[a, b] означает множество функций, интегрируемых с квадратом в интервале [a, b]. Знак * (иногда черточка над именем функции) означает
комплексное сопряжение для соответствующей функции — в нашем случае g(t).
79
Глава 2. Вейвлеты и вейвлет-преобразования
2.1.4. Норма функции
Для функции f в пространстве L2[R] существует понятие нормы функции:
f = f,f
12
.
Понятие нормы широко используется в доказательствах сходимости рядов Фурье и вейвлетов. Эти доказательства можно найти в специальной литературе [11,
12, 21—23]. Мы же будем считать, что для всех реально применяемых кусочно-непрерывных сигналов и функций сходимость указанных рядов обеспечивается.
2.1.5. Ортогональность и ортонормированность
Два вектора, например v и w, называются ортогональными, если
v, w =
∑ v w * = 0,
n
n
n
т. е. если их скалярное произведение равно нулю. Соответственно, две функции
являются ортогональными, если
b
f (t ), g (t ) =
∫ f (t )g * (t )dt
= 0.
a
Множество векторов называют ортонормированным, если все векторы попарно
ортогональны и имеют единичную длину, что записывается как:
vm , wn = δm,n .
Гильбертово пространство всегда имеет ортонормированнные базисы. Для него
справедливо выражение:
f
2
=
∫
2
f (x ) dx =
∑
2
f , en .
n
Аналогично множество функций называют ортонормированным, если:
b
∫ϕ
b
k
(t )ϕ *l (t )dt = 0, k ≠ l и
a
∫ {ϕ
(t )} dt = 1
2
k
.
a
Это можно записать в виде:
b
∫ϕ
k
(t )ϕ l* (t )dt = δ k,l .
a
В этих выражениях
1, k = l
— функция Кронекера.
δ k,l = 
0, k ≠ l
2.1.6. Базис Рисса
В гильбертовом пространстве могут быть и более общие семейства линейно независимых базисных векторов, называемых базисом Рисса (Riesz). Для них действует условие — неравенство:
80
2.2. Основы теории вейвлет-преобразований
α f
2
≤
∑
2
f , en
2
≤β f ,
n
где α > 0, β < ∞. Эти базисы являются безусловными, т. е. в них порядок размещения векторов может быть произвольным. Вейвлеты часто принадлежат к базису
Рисса, облегчающему доказательства полной реконструкции сигналов (и функций) на основе вейвлет-преобразований.
В данной книге представленные выше понятия используются только там, где
это принципиально необходимо. Большую часть последующего материала можно
понять, зная обычные курсы по теории сигналов и их обработке.
2.2. Основы теории вейвлет-преобразований
2.2.1. Идея вейвлет-преобразования
На основании понятия о векторном пространстве общепринятым подходом к
анализу таких сигналов s(t) стало их представление в виде взвешенной суммы простых составляющих — базисных функций ψk(t), помноженных на коэффициенты Ck:
s (t ) =
∑C ψ
k
k
(t ).
(2.1)
k
Т. к. базисные функции ψk(t) предполагаются заданными как функции вполне
определенного вида, то только коэффициенты Ck содержат информацию о конкретном сигнале. Таким образом, можно говорить о возможности представления
произвольных сигналов на основе рядов (2.1) с различными базисными функциями.
К примеру, ряд Фурье использует в качестве базисных функций синусоиды и
косинусоиды, представленные комплексной экспонентой eitk = cos(tk) + i ⋅ sin(tk):
s (t ) ~
∑C e
itk
k
.
(2.2)
k
Они предельно локализованы в частотной области (вырождаясь на спектрограмме в вертикальную линию), но очень плохо локализованы (точнее, вообще не
локализованы) во временной области. Коэффициенты Фурье-ряда (2.2) для произвольного сигнала s(t) вычисляются как:
Ck =
1
2π
2π
∫ s (t )e
−itk
dt .
0
Соответствующие формулы для периодических s(t) были приведены в главе 1.
Из сказанного ясно, что ряды Фурье плохо годятся для представления коротких
локальных особенностей сигналов и функций, таких как перепады и скачки.
Прямо противоположный пример — некая импульсная базисная функция
(функция Кронекера):
1, k = t
.
ψ k (t ) = δ k (t ) = 
0, k ≠ t
Она четко локализована во временной области и потому подходит для представления разрывов сигнала. Но эта базисная функция не несет никакой информации о частоте сигнала и потому плохо приспособлена для представления мед-
81
Глава 2. Вейвлеты и вейвлет-преобразования
ленно меняющихся сигналов на заданном отрезке времени и, тем более, периодических сигналов.
В этих показательных примерах базисные функции имеют один серьезный и
принципиальный недостаток — они не способны адаптироваться к локальным изменениям сигналов. Этот же недостаток проявляется у всех методов аппроксимации сигналов и функций, рассмотренных в главе 1, — от ряда Тейлора до рядов
Фурье.
Несколько особняком стоит преобразование Габора. Это оконное преобразование, в котором в качестве базовой функции была использована синусоида, пропущенная через окно Гаусса (гауссиана). Такие функции могут быть локализованы и
по частоте и по времени. Однако оказалось, что они в принципе не ортогональны
и унаследуют недостатки синусоиды в части представления локальных особенностей сигналов. При этом функции анализа оказываются плохо обусловленными,
что ведет к большим ошибкам в ходе преобразований, результаты которых «размазываются» как по всей частотной, так и пространственной областях.
Таким образом, назрела острая необходимость в создании нового математического аппарата приближения функций и сигналов, свободного от указанных недостатков. Им и стали вейвлеты и вейвлет-преобразования.
Термин вейвлет, введенный впервые специалистом по сейсмографии Морле (J.
Morlet), в переводе с английского wavelet означает «короткая или маленькая волна». Такие волны распространяются в объеме Земли при различных ударных воздействиях, например взрывах или землетрясениях. У нас термин wavelet изначально переводили как «всплеск», «выброс» и т. д. [15], что менее удачно, поскольку
большинство вейвлетов имеет временные зависимости с ярко выраженной колебательной компонентой (как и волны). Слова «всплеск» и «выброс» не отражают
факта осцилляций вейвлетов. Вейвлеты занимают промежуточное положение
между рассмотренными нами крайними случаями (синусоидой и импульсной
функцией) и образуют некоторый набор функций, удовлетворяющих сформулированным далее условиям, основанным на использовании представления сигнала в
виде (2.1).
Довольно грубо можно представить вейвлеты как некоторые волновые функции, способные осуществлять преобразование Фурье не по всей временной оси
(или оси x), а локально по месту своего расположения. Для этого вполне естественно, что кроме изменения «средней частоты» маленькие волны должны перемещаться к тому месту сигнала или функции, в котором должно осуществляться
«локальное преобразование Фурье» и масштабироваться. Хотя подобная интерпретация вейвлетов способна дать стимул к начальному пониманию сути вейвлет-преобразований, она является чрезмерно упрощенной и подчас даже принципиально ошибочной. Прежде всего, потому, что подавляющее большинство
вейвлетов не имеет ничего общего с модулированной по амплитуде синусоидальной волной. И свойства вейвлетов принципиально и сильно отличаются от
свойств синусоиды.
Базисными функциями вейвлетов могут быть различные функции, в том числе
близко или отдаленно напоминающие модулированные импульсами синусоиды,
функции со скачками уровня и т. д. Это обеспечивает различное представление
сигналов с локальными скачками и разрывами наборами вейвлетов того или иного типа и открывает простор в подборе наиболее походящих вейвлетов, исходя из
условий решаемых задач и делает такое решение отнюдь не тривиальным. К сожалению, почти все вейвлеты не имеют аналитического представления в виде одной
82
2.2. Основы теории вейвлет-преобразований
формулы, но могут задаваться итерационными выражениями, легко вычисляемыми компьютерами.
S. Wolfram — основатель корпорации Wolfram Research Inc. и создатель системы Mathematica [30] (лидера среди систем для аналитических вычислений) последние годы был занят удивительными исследованиями. Ему удалось показать и
зачастую доказать, что многие процессы в природе описываются не столько математическими выражениями, сколько программами. Подобными тем, что применяются в компьютерах. Вейвлеты, несомненно, пополняют копилку этих удивительных представлений. И это делает создание программных инструментальных
средств по вейвлетам и их применению столь же принципиально и практически
важным, как и само по себе фундаментальное открытия вейвлетов как особых
объектов математики.
ВНИМАНИЕ Методика проектирования вейвлетов рассматривается в конце этой главы. Пока мы будем считать, что вейвлеты уже существуют и мы можем
выбрать подходящий тип вейвлета для решения той или иной прикладной
задачи.
Вейвлеты характеризуются своим временным и частотным образами — рис. 2.1.
Временной образ определяется некоторой psi-функцией времени ψ(t ). А частотный
)
образ определяется ее Фурье-образом ψ(ω ) = F (ω ), который задает огибающую
спектра вейвлета. Фурье-образ определяется выражением:
F (ω ) =
∞
)
∫ ψ(t )e
−iωt
dt .
−∞
Для демонстрации этих параметров вейвлетов часто используется вейвлет типа
«мексиканская шляпа». Его временной образ, в отличие от подавляющего большинства других вейвлетов, описывается аналитическим выражением:
mhat (t ) = (1 − t 2 )e −t
2
2
.
Это выражение является второй производной гауссиана, в которой опущен не
имеющий принципиального значения числовой множитель. С помощью системы
Mathcad, имеющей оператор символьного преобразования → и средства построения графиков функций, нетрудно получить и представить графически временной
и частотный образ этого вейвлета (рис. 2.2). Иногда предпочитают перевернутый
вейвлет «мексиканская шляпа», у которого главный пик обращен вниз.
Хорошо видно, что данный вейвлет напоминает затухающее синусоидальное
колебание с некоторой «средней частотой» и площадью (над осью времени и под
ней), близкой к нулю. На самом деле точное нулевое значение площади (над и
под осью времени) — одно из важнейших условий, позволяющих отнести временную зависимость mhat(t) к вейвлетам. Если вейвлет в пространстве сужается, его
«средняя частота» повышается, спектр вейвлета перемещается в область более высоких частот и расширяется. Этот процесс можно считать линейным — если вейвлет сужается вдвое, то его средняя частота и ширина спектра возрастают также
вдвое.
Тут важно отметить, что невозможна хорошая локализация вейвлетов одновременно во временной и частотной областях. Однако было бы неверно оценивать
это обстоятельство как недостаток вейвлетов. Напротив, в сравнении с оконным
преобразованием Фурье, именно хорошая временная локализация вейвлетов дает
нужное средство для повышения частоты тех спектральных составляющих вейвле-
83
Глава 2. Вейвлеты и вейвлет-преобразования
Рис. 2.2. Временной и частотный образы вейвлета «мексиканская шляпа»
тов, которые и нужны для представления кратковременных локальных особенностей сигналов. Словом, ситуация, как в нашей модной песенке «что-то теряешь,
что-то находишь».
Даже интуитивно ясно, что совокупность волновых пакетов, напоминающих
модулированную импульсами синусоиду или подобных приведенному на рис. 2.2
вейвлету «мексиканская шляпа», способна хорошо отражать локальные изменения
сигналов. Однако вопрос о представлении произвольного сигнала в произвольно
заданном промежутке времени целым рядом разных по виду вейвлетов пока остается открытым. Он будет решен ниже и, в частности, с введением понятия кратномасштабного анализа.
Итак, с помощью вейвлетов сигнал представляется совокупностью волновых
пакетов — вейвлетов, образованных на основе некоторой исходной (базовой, образующей и т. д.) функции ψ 0 (t ). Эта совокупность, разная в разных частях временного интервала определения сигнала и корректируемая множителями, имеющими вид порой сложных временных функций, и представляет сигнал с той или
иной степенью детализации (рис. 2.3). Такой подход называют вейвлет-анализом
сигналов.
Рис. 2.3. Иллюстрация к вейвлет-синтезу сигнала
84
2.2. Основы теории вейвлет-преобразований
Число используемых при разложении сигнала вейвлетов задает уровень декомпозиции сигнала. При этом за нулевой уровень декомпозиции часто принимается
сам сигнал, а последующие уровни декомпозиции образуют обычно ниспадающее
вейвлет-дерево того или иного вида (иногда дерево задается «растущим» вверх).
Точность представления сигнала по мере перехода на более низкие уровни декомпозиции снижается, но зато появляется возможность вейвлет-фильтрации сигналов, удаления из сигналов шумов и эффективной компрессии сигналов. Иными
словами, становится возможной вейвлет-обработка сигналов.
ВНИМАНИЕ Вейвлет-составляющие сигнала даже внешне не имеют ничего общего с синусоидами, и они представлены сигналами подчас весьма сложного и, порою, не вполне понятного вида. Это, кстати, существенный недостаток
вейвлетов с позиции наглядного их понимания и представления. Он ликвидируется соответствующими инструментальными средствами, вошедшими в
пакет расширения Wavelet Toolbox системы MATLAB и в расширения по
вейвлетам различных СКМ.
Вполне очевидно, что для представления сигналов, как в локальных областях
их возмущений, так и во всем временном интервале изменения сигналов, надо
иметь возможность сжимать или растягивать вейвлеты и перемещать их по временной оси.
Прямое вейвлет-преобразование (ПВП), именуемое также непрерывным преобразованием, означает разложение произвольного входного сигнала по принципиально новому базису в виде совокупности волновых пакетов — вейвлетов, которые
характеризуются четырьмя принципиально важными свойствами:
• имеют вид коротких, локализованных во времени (или в пространстве)
волновых пакетов с нулевым значением интеграла;
• обладают возможностью сдвига по времени;
• способны к масштабированию (сжатию/растяжению);
• имеют ограниченный (или локальный) частотный спектр.
Этот базис может быть ортогональным (см. выше), что заметно облегчает анализ, дает возможность реконструкции сигналов и позволяет реализовать алгоритмы быстрых вейвлет-преобразований. Однако есть ряд вейвлетов, которые свойствами ортогональности не обладают, но которые тем не менее практически полезны — например, в задачах анализа и идентификации локальных особенностей
сигналов и функций.
2.2.2. Аппроксимирующая и детализирующая компоненты
вейвлет-анализа и синтеза сигналов
Одна из основополагающих идей вейвлет-представления сигналов заключается
в разбивке приближения к сигналу на две составляющие — грубую (аппроксимирующую) и утонченную (детализирующую) — с последующим их уточнением итерационным методом. Каждый шаг такого уточнения соответствует определенному
уровню декомпозиции и реставрации сигнала. Это возможно как во временной,
так и в частотной областях представления сигналов вейвлетами.
Такой подход нельзя назвать абсолютно новым. Он реализован давным-давно,
к примеру, в технике представления функций рядами Тейлора или Фурье, а также
в современной технике обработки изображений. В математике можно найти немало соотношений, по форме (но вовсе не по существу) напоминающих выражения
85
Глава 2. Вейвлеты и вейвлет-преобразования
для вейвлет-преобразований. Иногда это служит поводом к лжеоткрытию вейвлетов и вейвлет-преобразований на основании сходства некоторых интегральных
преобразований (типа преобразований Фурье) и математических выражений из
области вейвлет-преобразований. Обычно на такое сходство указывают не авторы
преобразований, а их поклонники.
Между тем новым в математике стало открытие целого класса функций, удовлетворяющих ряду особых и принципиально необходимых условий, способных
представлять произвольные функции, сигналы и изображения и обеспечивать повышенную в сравнении с рядами Фурье эффективность обработки последних.
В основе непрерывного вейвлет-преобразования НВП (или CWT — Continue
Wavelet Transform) лежит использование двух непрерывных и интегрируемых по
всей оси t (или x) функций:
∞
• вейвлет-функция psi ψ(t ) с нулевым значением интеграла ( ∫ ψ(е )dt = 0), опре−∞
деляющая детали сигнала и порождающая детализирующие коэффициенты;
• маштабирующая или скейлинг-функция phi ϕ(t ) с единичным значением
∞
интеграла ( ∫ ϕ(е )dt = 1), определяющая грубое приближение (аппроксима−∞
цию) сигнала и порождающая коэффициенты аппроксимации.
Аппроксимирующие phi-функции ϕ(t ) присущи далеко не всем вейвлетам, а
только тем, которые относятся к ортогональным. Такие вейвлеты мы рассмотрим
в дальнейшем, а пока остановимся только на свойствах детализирующей psi-функции ψ(t ) и на приближении ими локальных участков сигналов s(t).
Psi-функция ψ(t ) создается на основе той или иной базисной функции ψ 0 (t ), которая, как и ψ(t ), определяет тип вейвлета. Базисная функция должна удовлетворять всем тем требованиям, которые были отмечены для psi-функции ψ(t ). Она
должна обеспечивать выполнение двух основных операций:
• смещение по оси времени t — ψ 0 (t − b ) при b∈R;
t
 a
• масштабирование — a −1 2ψ 0   при a > 0 и a∈R+–{0}.
Параметр a задает ширину этого пакета, а b — его положение. В ряде литературных источников вместо явного указания времени t используется аргумент x, а
вместо параметров a и b используются имеющие тот же смысл иные обозначения.
Нетрудно убедиться в том, что следующее выражение задает сразу два этих свойства функции ψ(t ):
 t − b
ψ(t ) ≡ ψ(a, b, t ) = a −1 2ψ 0 
.
 a 
(2.3)
Итак, для заданных a и b функция ψ(t ) и есть вейвлет. Вейвлеты, обозначаемые
как ψ(t ), иногда называют «материнскими вейвлетами», поскольку они порождают
целый ряд вейвлетов определенного рода.
Вейвлеты являются вещественными функциями времени t и колеблются вокруг
оси t (или x). Параметр b в (2.3) задает положение вейвлетов, а параметр a — их
масштаб. Коэффициент a–1/2 обеспечивает нормирование энергии при изменении
масштаба. О вейвлетах, четко локализованных в пространстве (или во времени),
говорят, что они имеют компактный носитель.
86
2.2. Основы теории вейвлет-преобразований
Применительно к сигналам как функциям времени параметр b∈R задает положение вейвлета на временной оси, а параметр a — задает его масштабирование по
времени. Поскольку параметр масштаба a реально может быть только положительным и его нельзя брать равным нулю, то считается, что a∈R+–{0}. В дальнейшем мы будем опускать выражение –{0}, означающее исключение значения a = 0.
На рис. 2.4 показано построение вейвлета, уже известного нам под названием
«мексиканская шляпа». На этот раз «шляпа» представлена перевернутой сменой
знака у исходной временной функции. Для вычисления и построения графиков
этого вейвлета вновь использована популярная СКМ Mathcad.
Рис. 2.4. Иллюстрация к сдвигу и масштабированию вейвлета типа
«мексиканская шляпа»
На рис. 2.4 представлена базисная функция данного вейвлета и функция
ψ(a,b,t) для разных a и b, что иллюстрирует сдвиг вейвлета и его масштабирование. В Mathcad для обеспечения изменений a и b функцию ψ(a,b,t) приходится задавать в более полном виде, чем ψ(t), в котором зависимость ψ от a и b лишь подразумевается — см. (2.3).
В частотной области малые значения a соответствуют высоким частотам, а большие — низким частотам. Таким образом, операция задания окна, используемая
в оконном преобразовании Фурье, как бы заложена в самой базисной функции
вейвлетов. Это создает предпосылки их приспособления (адаптации) к сигналам,
которые могут быть представлены совокупностью вейвлетов.
2.2.3. Непрерывное прямое вейвлет-преобразование
Для определенности, пусть энергия сигнала s(t), равная
∫
R
s 2 (t )dt ,
87
Глава 2. Вейвлеты и вейвлет-преобразования
конечна в пространстве V сигнала с областью ограничения R. Прямое непрерывное
вейвлет-преобразование (ПНВП) сигнала s(t) задается, по формальной аналогии с
преобразованием Фурье, путем вычисления вейвлет-коэффициентов по формуле:
C (a, b ) = s (t ), ψ(a, b, t ) =
∞
∫ s (t )a
−∞
 t − b
ψ
 dt ,
 a 
−1 2
(2.4,a)
где обозначение K , K , введенное и поясненное в начале этой главы, означает
скалярное произведение соответствующих сомножителей. С учетом ограниченной
области определения сигналов и a,b∈R, a≠0:
C (a, b ) =
∫ s (t )a
R
 t − b
ψ
 dt .
 a 
−1 2
(2.4,b)
Итак, вейвлет-коэффициенты определяются интегральным значением скалярного произведения сигнала на вейвлет-функцию заданного вида. Выражение
(2.4,b) используется как основное для функции прямого непрерывного вейвлет-преобразования в пакете Wavelet Toolbox матричной системы MATLAB.
Прямое вейвлет-преобразование можно рассматривать как разложение сигнала
по всем возможным сдвигам и растяжениям/сжатиям сигнала s(t) или некоторой
произвольной функции. При этом параметры a и b могут принимать любые значения в пределах указанных выше областей их определения. Заметим, что прямое
преобразование Фурье также можно рассматривать как разложение по сдвигам
(имеется в виду фазовый сдвиг гармоник, задающих положение их графиков) и
растяжениям/сжатиям (определяемым значениями амплитуд гармоник), но применительно к одной функции (синусоиде), не очень удобной для представления
локальных особенностей сигналов.
ВНИМАНИЕ При вейвлет-преобразовании выбор типов вейвлетов намного более обширен, чем при преобразовании Фурье. В качестве вейвлет-функций могут использоваться ортогональные и биортогональные системы функций, функции, имеющие глобальный экстремум и быстрое затухание на бесконечности, и т. д. Основные требования к этим функциям обсуждались. Все это
дает обширные возможности для представления различных сигналов.
2.2.4. Примеры выполнения прямого вейвлет-преобразования
Для знакомства с техникой прямого вейвлет-преобразования удобна хорошо
известная у нас СКМ Mathcad, общение пользователя с которой происходит с помощью математически ориентированного языка общения и визуального программирования [26—28]. Рисунок 2.5 демонстрирует документ системы Mathcad 2001,
обеспечивающий создание вейвлета «мексиканская шляпа» и проведение прямого
вейвлет-преобразования для функции, которая имеет вид симметричных прямоугольных импульсов — меандра. Они создаются с помощью выражения s(t): =
sign(sin(0.04*t)), где sign — сигнум-функция sign(x) = 1 при x > 0, 0 при x = 0 и –1
при x < 0.
В представленном документе системы Mathcad вычисление вейвлет-коэффициентов C(a,b) выполняется стандартным оператором интегрирования, что придает документу прекрасную наглядность.
На другом рисунке (рис. 2.6) представлено прямое вейвлет-преобразование для
периодической функции синуса в кубе. Такая функция имеет ряд особенностей, в
88
2.2. Основы теории вейвлет-преобразований
частности, переходы производной через нуль в точках экстремумов и явные перегибы в моменты перехода функции через нуль.
Рис. 2.5. Прямое вейвлет-преобразование для периодических прямоугольных
импульсов — меандра
Рис. 2.6. Прямое вейвлет-преобразование для периодических прямоугольных
импульсов — меандра
89
Глава 2. Вейвлеты и вейвлет-преобразования
Итак, эти примеры столь же наглядны, сколь и малоэффективны — даже на
ПК автора этой книги с процессором Pentium III 600 МГц и оперативной памятью в 320 Мбайт время вычислений составляет до нескольких минут. Последнее
связано с тем, что вычисление определенных интегралов в СКМ Mathcad реализовано довольно сложным адаптивным методом интегрирования. Он, кстати, неплохо, но ужасно медленно справляется с вычислением определенных интегралов с
бесконечными пределами интегрирования, например такими как (2.4,а). Впрочем,
надо отметить, что это имеет место не всегда и нередки отказы от вычисления —
при этом Mathcad не выдает результат, а вычисляемое выражение окрашивается
красным цветом.
На практике для вейвлетов с компактным носителем нет никакой необходимости вычислять интегралы с бесконечными пределами. Можно учесть, что области
изменения параметров a и b ограничены. К примеру, тот же результат можно получить, интегрируя в пределах от –N до N. Это соответствует вычислению вейвлет-коэффициентов по формуле (2.4,b).
И еще одно важное обстоятельство. Практически невозможно вести вычисления с представленными непрерывными вейвлетами. На практике, так или иначе,
приходится задавать дискретные значения a и b, например, для графического
представления результатов вычислений, что и сделано в конце документов, представленных на рис. 2.5 и 2.6. Единственной специфической возможностью непрерывного преобразования в этих примерах, иногда ошибочно именуемого «дискретным», является практически произвольный (в пределах общих теоретических
допущений) выбор значений a и b. Практически он сделан таким, чтобы представить вейвлет-спектрограммы в этих примерах в наиболее наглядном (а точнее детальном) виде.
Непрерывное прямое вейвлет-преобразование обладает большой избыточностью, что и ведет к неоправданно большим затратам машинного времени на его
вычисления. Однако, как уже отмечалось, это преобразование, даже с вейвлетами,
не допускающими реконструкции сигналов, может использоваться для построения вейвлет-спектрограмм в плоскости «коэффициенты—время» (более точно, пожалуй, назвать эту плоскость «коэффициенты—сдвиг»). Такие спектрограммы и
представлены в Mathcad документах рис. 2.5 и 2.6. В данном случае спектрограммы строятся с применением контурных графиков с функциональной закраской
областей.
Вейвлет-спектрограммы являются своеобразными образами функций и сигналов. Пакет Wavelet Toolbox системы MATLAB имеет специальные средства для построения спектрограмм сигналов с существенно улучшенной визуализацией, синтезированных вейвлетами. Эти спектрограммы также представляют значения коэффициентов вейвлетов в плоскости масштаб (номера коэффициентов) — время.
Снизу вейвлет-спектрограммы расположены коэффициенты с малыми номерами,
дающие детальную картину сигнала, а сверху — с большими номерами, дающие
огрубленную картину сигнала. При этом их значения определяют цвет соответствующей (обычно достаточно малой) области спектрограммы.
Избыточность непрерывного вейвлет-преобразования в некотором смысле дискредитирует его на практике. К примеру, вейвлет-спектрограммы в зависимости
от их конкретной реализации, заданной соответствующими программными средствами, порой могут давать самую разнообразную окраску тех или иных локальных особенностей сигнала. Это может приводить к ошибочной интерпретации
рентгеновских снимков или снимков томографа в медицине, лжеоткрытиям ту-
90
2.2. Основы теории вейвлет-преобразований
манностей в астрофизике или к «обнаружению» полезных ископаемых по данных
геофизической разведки, на самом деле просто несуществующих.
Тем не менее вейвлет-спектрограммы являются важнейшим продуктом вейвлет-анализа сигналов и прекрасным дополнением к обычным спектрограммам на
основе оконного преобразования Фурье, которые, кстати говоря, в расширенном
варианте есть в пакете Signal Processing системы MATLAB. Вейвлет-спектрограммы сигналов (рис. 2.7) порой выделяют такие особенности сигналов, которые вообще незаметны на графиках сигналов и на Фурье-спектрограммах.
Рис. 2.7. Сигнал с особенностями и его вейвлет-спектрограмма
Чистым гармоническим сигналам соответствуют яркие горизонтальные полосы, где модуль некоторого коэффициента вейвлета велик. Локальным особенностям (нарушениям гладкости) отвечают вертикальные полосы, выходящие из точки, где находится особенность. Пикам сигналов соответствует сгущение светлых
областей вейвлет-спектрограмм, а впадинам — сгущение темных областей.
Чем резче выражена особенность сигнала, тем сильнее она выделяется на спектрограмме и тем выше уровни вейвлет-коэффициентов. Вейвлет-спектрограммы
отчетливо выделяют такие особенности сигнала, как небольшие разрывы, изменение знаков первой и второй производных, изменение частоты составляющих сигнала во времени и т. д. Словом, именно те особенности сигнала, которые плохо
выделяются на спектре фурье-сигнала, прекрасно видны на вейвлет-спектрограммах. Впрочем, вейвлет-спектрограммы по детальности представления особенностей сигнала могут уступать специальным методам представления спектров, отмеченным в главе 1.
Различия между обычными спектрограммами фурье-анализа и вейвлет-спектрограммами носят принципиальный характер. Обычные спектрограммы удобны
для обнаружения периодического стационарного компонента сигнала. Если такой
компонент гармонический сигнал, то для его представления достаточна всего
одна гармоника ряда Фурье.
При вейвлет-анализе даже гармонического сигнала нам придется использовать
множество вейвлетов, перекрывающих всю ось времени. Бесспорно, это может
показаться совершенно неоправданным усложнением для представленного весьма
частного случая — когда сигнал априорно известен как простая синусоида. В этом
случае преобразование Фурье просто означает представление синусоиды синусоидой! Однако если сигнал имеет локальные особенности, если он не периодичен и
не стационарен, то вейвлет-анализ и полученные по его результатам спектрограммы становятся именно тем инструментом исследования, к которым фурье-анализ
в классическом виде неприменим.
Большие уровни при вейвлет-анализе характерны только для коэффициентов
тех вейвлетов, которые располагаются вблизи той или иной локальной особенности функции. Это позволяет легко определять местоположение локальных особен-
91
Глава 2. Вейвлеты и вейвлет-преобразования
ностей, что практически невозможно при Фурье спектральном анализе. Таким образом, вейвлет-спектрограммы дают представление в амплитудно-временной области (если мы рассматриваем сигнал в виде временной функции).
ВНИМАНИЕ Вейвлет-анализ сигналов открывает принципиально новые возможности в
детальном анализе тонких особенностей сигналов. Это особенно важно для
звуковых сигналов и сигналов изображения, где именно такие особенности
подчас определяют качество их воспроизведения. Биология, картография,
медицина, акустика, астрономия и космос — все это именно те области,
где применение вейвлетов способно привести к новым открытиям, путем
выявления характерных особенностей сигналов и изображений, малозаметных на временных зависимостях сигналов и на их спектрах Фурье. Однако
пользоваться формально построенными спектрограммами, без тщательного
изучения причин возникновения тех или иных их особенностей, недопустимо, ибо может привести к «лжеоткрытиям».
2.2.5. Вейвлеты в частотной области
Мы уже говорили, что вейвлеты, будучи функциями времени, имеют свое час)
тотное представление, или фурье-образ ψ(ω ). Налагаемое на функцию ψ(t ) усло)
вие (нулевое значение интеграла) означает, что ψ(0 ) = 0. Последнее указывает на
то, что фурье-образ смещен по оси времени и будет расположен вокруг некоторой
ненулевой частоты ω 0, которую можно рассматривать как среднюю круговую частоту вейвлета.
В частотной области спектры многих вейвлетов напоминает всплеск, пик которого приходится на частоту ω 0 (рис. 2.2). Если приближенно трактовать вейвлет
как модулированную синусоиду, то ее частота и будет средней частотой вейвлета.
В общем же случае, когда временная зависимость вейвлетов далека от синусоидальной, определение средней частоты требует обработки сигнала и реализуется
итерационными методами — см. описание вейвлетов в конце этой главы.
Частотный образ вейвлетов роднит их с оконным преобразованием Фурье. Нетрудно понять, что, подобрав набор вейвлетов, можно осуществить синтез локальной особенности любой функции. Разница, однако, в том, что свойства окна присущи самим вейвлетам, вследствие их частотной локализации, применение вейвлетов не ограничено фиксированными областями пространства или времени
окна и, главное, существует обширный выбор вейвлетов для наиболее подходящего представления тех или иных функций. В их числе есть ортогональные вейвлеты, для которых возможность реставрации функций и сигналов после прямого и
обратного преобразований теоретически обоснована и строго доказана.
Частотное (спектральное) представление вейвлетов имеет важное значение и в
определении фильтрующих свойств вейвлет-преобразований и основанном на них
алгоритме быстрого вейвлет-преобразования (БВП). Нетрудно заметить, что есть
прямая связь между временным и частотным представлением вейвлетов. Так, малые значения параметра a, характеризующие быстрые процессы в сигналах, соответствуют высоким частотам, а большие значения (соответствующие медленным
изменениям сигнала) — низким частотам.
ВНИМАНИЕ Временное и частотное представление вейвлетов — это две стороны одной
медали, имя которой — вейвлет. Они образуют неразлучную пару и могут
легко преобразовываться друг в друга. И каждое такое преобразование имеет свои достоинства и недостатки.
92
2.2. Основы теории вейвлет-преобразований
Основанные на частотном подходе вейвлет-преобразования с помощью фильтров будут описаны далее.
2.2.6. Обратное непрерывное вейвлет-преобразование
Обратное непрерывное вейвлет-преобразование (ОНВП) осуществляется по формуле реконструкции во временной области, которая имеет ряд форм, зависящих
как от математической стилистики записи, так и (что более важно) от определения областей существования сигнала. В работе [11] формула реконструкции для
произвольной функции f представлена в виде:
∞ ∞
dadb
f , ψa,b ψa,b ,
2
a
−∞ −∞
f = C ψ−1 ∫
∫
(2.5)
где
ψa,b (x ) = a
−1 2
 x − b
ψ
.
 a 
Обратите внимание на несколько непривычную запись интеграла в (2.5), которая
часто используется в работе [11] и в других работах западных авторов. Непривычно
записаны и параметры масштаба и сдвига (их индексы не надо отождествлять со степенями). Здесь параметры сдвига и сжатия меняются непрерывно вдоль R с ограничением a ≠ 0. Постоянная C ψ в (2.5) зависит только от ψ и определяется как:
2
∞
∞ )
ψ (ξ )
2
−1
)
C ψ = 2 π ∫ dξ ψ(ξ ) ξ = 2 π ∫
dω.
−1
−∞
−∞ ω
(2.6)
Выше приведены две формы записи выражения (2.6) для C ψ — одна соответствует стилистике [11], другая более привычна для наших читателей. Обе формы записи абсолютно идентичны. Считается, что C ψ < ∞, поскольку в ином случае выражение для f не имеем смысла.
Если ψ является вещественной функцией, то оказывается справедливым следующее, более строгое, чем (2.6), выражение:
∞
0
0
−∞
2
−1
2
−1
)
)
C ψ = 2 π ∫ dξ ψ(ξ ) ξ = 2 π ∫ dξ ψ(ξ ) ξ < ∞.
(2.7)
В этом случае
∞
∞
da
db f , ψa,b ψa,b .
2 ∫
a
0
−∞
f = C ψ−1 ∫
(2.8)
Читатель, заинтересовавшийся подобными математическими выкладками, может обратиться к работам [1—12], где приведен еще целый ряд формул реконструкции. В частности, можно найти соответствующие формулы для так называемых «аналитических» f и ψ и даже для разных на этапах разложения и реконструкции сигналов функций ψ.
В практическом аспекте интерес представляют лишь те формулы реконструкции, которые используются в конкретных программных инструментальных средствах, реализующих прямое и обратное вейвлет-преобразования. Так, ниже пред-
93
Глава 2. Вейвлеты и вейвлет-преобразования
ставлена формула реконструкции сигнала s(t) в том виде, который использован в
пакете расширения системы MATLAB 6.0/6.1/6.5 — Wavelet Toolbox (напоминаем,
что он выбран в качестве основного для практического описания вейвлетов):
s (t ) =
1
Kψ
∫ ∫
R+
R
 t − b  dadb
,
C (a, b )a −1 2ψ

 a  a2
(2.9)
где K ψ — константа, определяемая функций ψ. Нетрудно понять, что здесь
K ψ = C ψ и несколько иначе обозначены пределы интегрирования (с учетом области R и исключения отрицательных и нулевых значений параметра масштаба a, которые для целей практики не интересны).
Основной задачей теории вейвлет-преобразований является доказательство
того, что прямое и обратное вейвлет-преобразования способны обеспечить реконструкцию сигнала, причем точную или хотя бы приближенную, локальную или
для сигнала в целом на заданном промежутке времени. Учитывая нулевое значение интеграла для функции ψ(t ) и то, что не все вейвлеты являются ортогональными, можно допустить, что эти преобразования не всегда способны восстановить любой сигнал в целом. Именно это и строго доказано в работах [11, 12].
Несколько парадоксально выглядят утверждения, что произвольный сигнал с
отличным от нуля интегральным значением может быть восстановлен с помощью
вейвлетов с нулевым интегральным значением. Однако, как показано И. Добеши
в [11], это строго имеет место, если выражение для C ψ принадлежит (с некоторыми ограничениями) норме L1(R).
Разумно считать, что вейвлет-преобразование на основе только детализирующей
ортогональной вейвлет-функции ψ(t ) способно восстановить (реконструировать) по
крайней мере тонкие детали временной зависимости сигнала s(t). Для восстановления полной формы сигнала приходится прибегать к применению еще одной временной функции ϕ(t ), называемой аппроксимирующей или «отцовским вейвлетом» —
тут явный намек на то, что без существования папаши материнский вейвлет не способен воспроизвести потомство, полноценно представляющее функцию или сигнал.
Причины, порождающие необходимость в использовании этой функции, и ее
роль будут подробно рассмотрены чуть ниже — при описании кратномасштабного
анализа. Вейвлеты, которые допускают применение такого анализа и обеспечивают полную реконструкцию сигнала, являются ортогональными вейвлетами. Пока
именно они являются наиболее важным типом вейвлетов, способных полноценно
приближать произвольные функции и сигналы.
ВНИМАНИЕ Далеко не все типы вейвлетов гарантируют точную реконструкцию сигналов в
целом и даже таковую вообще. Тем не менее применение и таких вейвлетов
может быть полезно для выявления тонких особенностей сигналов или изображений, которые хорошо согласуются с определенными типами вейвлетов.
Обратное вейвлет-преобразование (2.9) не целесообразно выполнять прямо по
представленным формулам с помощью СКМ, подобных Mathcad. Мы уже убедились
в том, что куда более простое прямое вейвлет-преобразование выполняется крайне
неэффективно и медленно. Намного более сложное обратное вейвлет-преобразование без специальных приемов выполнять «в лоб» неразумно. Эффективные приемы
быстрого вейвлет-преобразования, к которым, прежде всего, относятся быстрые алгоритмы Малла, мы рассмотрим в этой главе несколько позже. Они реализованы в
виде встроенных функций в ряд инструментальных пакетов расширения СКМ по
вейвлетам и также будут рассмотрены ниже — в последующих главах книги.
94
2.2. Основы теории вейвлет-преобразований
2.2.7. Сравнение различных представлений сигналов
Мы уже отмечали, что вейвлет-анализ не использует амплитудно-частотную
область для визуального представления спектров сигналов, как это имеет место
при спектральном анализе Фурье. Вместо нее используется область время (точнее
сдвиг) — масштаб (см. выше).
Теперь мы можем наглядно отобразить различные виды представлений сигналов в ходе тех или иных их преобразований — рис. 2.8. Здесь показаны виды представления сигналов не только с помощью вейвлет-преобразования, но и с помощью других видов преобразования сигналов, описанных в главе 1.
На рис. 2.8 представлены следующие наиболее известные формы представления сигналов:
• Time Domain — временное представление (по Шеннону);
• Frequency Domain — частотное представление (по Фурье);
Рис. 2.8. Различные представления сигналов
• STFT — кратковременное (оконное) быстрое преобразование Фурье;
• Wavelet — вейвлет-преобразование.
Нетрудно заметить, что вейвлет-преобразование отличается наиболее сложной
и гибкой структурой представления сигналов в плоскости «Масштаб—Время»
(Scale—Time). Это открывает возможности более полного и тонкого вейвлет-анализа сигналов, по сравнению с другими известными видами их анализа. При этом
особенности сигналов привязаны к временной шкале.
2.2.8. О скорости вычислений при вейвлет-преобразованиях
Порой может возникнуть сакраментальный вопрос: чем же, с точки зрения затрат машинного времени, вейвлет-преобразования лучше, чем преобразования
Фурье? На этот вопрос ответить однозначно нельзя. Тем не менее, важно учитывать следующие обстоятельства:
• вейвлет-преобразование открывает принципиально новые возможности в
обработке сигналов и изображений, и в этом случае затраты времени на
вычисления отходят на второй план (особенно с учетом постоянного роста
производительности компьютеров);
95
Глава 2. Вейвлеты и вейвлет-преобразования
• некоторые вейвлеты (например, Хаара) являются намного более простыми
функциями, чем синусоидальная функция, и в этом случае затраты времени на вейвлет-преобразования могут быть заметно ниже, чем на преобразования Фурье, где вычисления множества трансцендентных тригонометрических функций всегда требуют значительных затрат времени;
• большинство вейвлетов представлено вещественными функциями, так что
отсутствует необходимость привлечения для их вычисления аппарата комплексных чисел, затрудняющего вычисления;
• для ряда типов вейвлетов имеются быстрые алгоритмы вейвлет-преобразования, при реализации которых затраты времени (как и при реализации
БПФ) кардинально уменьшаются.
В то же время еще раз подчеркнем, что большинство вейвлетов описываются
итерационными выражениями, которые, в целом, сложнее синусоиды, но, как
правило, легче вычисляются численными методами, реализованными в компьютерных программах.
2.3. Кратномасштабный анализ
2.3.1. Первое понятие об ортогональных вейвлетах
Если желательно выполнение прямого и обратного вейвлет-преобразований,
особенно с применением быстрых алгоритмов таких преобразований, нужно
иметь вейвлеты на основе ортогональных базисных функций. К таковым относится,
в частности, уже хорошо нам знакомый ряд функций
1, cos(x), sin(x), cos(2x), sin(2x), ..., cos(nx), sin(nx), ...,
которые, при x = 2πft, образуют гармоники ряда Фурье для периодических сигналов. На промежутке 2π этот ряд обладает свойством ортогональности — интеграл от произведения любых двух функций этого ряда равен нулю. Именно это
свойство лежит в основе строгого математического доказательства того факта, что
ряд Фурье способен представлять с заданной погрешностью любой сигнал s(t),
удовлетворяющий условиям Дирихле. Детали этого доказательства можно найти в
учебниках по математике, например в [21].
В ортонормированном пространстве есть много и других классических ортогональных базисов (и многочленов) — Эрмита, Лагерра и др. Среди вейвлетов также
заметное место занимают ортогональные и биортогональные вейвлеты, отличающиеся рядом выгодных качеств. Главные среди них — возможность восстановления
(реконструкции) не только локальных особенностей произвольного сигнала s(t),
но и сигнала в целом, а также возможность осуществления быстрых вейвлет-преобразований.
Вейвлет, как уже отмечалось, представляет собой функцию одного аргумента
(хотя могут существовать и многомерные вейвлеты), определенную в области R,
которая, будучи подверженной фундаментальной операции сдвига и двухэлементного растяжения, порождает ортогональный базис L2(R). В дискретном представлении, которое мы обсудим позже, это означает, что функция ψj,k: = 2k/2ψ(2k – j), j,
k∈Z образует полную ортонормированную систему для L2(R). Ограничения, представленные условием j, k∈Z, где {Z = ...—1, 0, 1, 2, ...} — множество целых чисел,
96
2.3. Кратномасштабный анализ
диктуются практическими соображениями. А теперь дадим определение ортогонального вейвлета.
Определение
Функция ψ∈L2(R) называется ортогональным вейвлетом, если семейство {ψjk},
определяемое формулой ψj,k: = 2k/2ψ(2k – j), j, k∈Z, является ортонормированным
базисом в пространстве L2(R), т. е.
ψ jk , ψlm = δ jl ⋅ δ km , j , k , l , m ∈ Z ,
1 длШ j = k
— функция Кронекера, причем любая функция
δ jk = 
0 длШ j ≠ k
f∈L2(R) может быть представлена рядом
где
f (x ) =
∞
∑c
jk
ψ jk (x ),
j ,k = −∞
который сходится в L2(R).
Функция Хаара H: = X[0,1/2] – X[1/2,1] — простейший пример ортогонального вейвлета. Функция phi у него имеет значение 1 в интервале [0, 1] и 0 за пределами
этого интервала — рис. 2.1. Функция psi имеет вид прямоугольных импульсов —
меандра (значение 1 в интервале [0, 0.5[ и –1 в интервале [0.5, 1]). Вейвлеты Хаара
хорошо локализованы в пространстве, но плохо локализованы в частотной области, поскольку меандр имеет широкий спектр частот (теоретически бесконечный).
Пример применения вейвлета Хаара для декомпозиции и синтеза вектора данных
мы уже рассмотрели в начале этой главы.
Ингрид Добеши первая предложила ортогональные вейвлеты, сосредоточенные
на конечном интервале времени. К тому же эти вейвлеты имеют хорошо локализованный спектр в частотной области. «Ложкой дегтя» оказывается отсутствие у
этих вейвлетов симметрии. Об усовершенствованных вейвлетах Добеши, названных койфлетами и имеющих лучшую симметрию, можно прочитать в [18]. Все эти
вейвлеты реализуются итерационными формулами.
Детально свойства вейвлетов Хаара, Добеши и других ортогональных вейвлетов
мы опишем подробно несколько позже. Сейчас для нас главное то, что такие вейвлеты существуют и способны точно представлять сигналы на нулевом уровне реконструкции, и то, что они имеют алгоритм быстрых вейвлет-преобразований.
Ортогональные вейвлеты, как отмечалось, характеризуются двумя функциями —
вейвлет-функцией (psi) и масштабирующей функцией (phi). Их можно наблюдать
и исследовать в окне GUI пакета Wavelet Toolbox, впрочем, как и другие типы
вейвлетов. Ближе к концу этой главы описана методика создания ортогональных
вейвлетов.
2.3.2. Диадное вейвлет-преобразование непрерывных сигналов
Мы уже убедились в том, что непрерывное вейвлет-преобразование требует больших вычислительных затрат при его проведении. Поэтому для практического
его применения необходима дискретизация значений a и b. Для избежания избыточности вейвлет-преобразований можно задавать дискретные значения a и b на
некотором множестве Z = {...–1, 0, 1, ...} равные:
a = 2 j и b = k2 j ,
97
Глава 2. Вейвлеты и вейвлет-преобразования
где j и k — целые числа, хотя возможны и иные способы задания дискретных значений a и b. Параметр j, иногда обозначаемый в литературе как m, называется параметром масштаба.
Подобная дискретизация является наиболее распространенной, а сетка дискретизации называется диадической. Соответственно это преобразование принято
называть диадным (dyadic) вейвлет-преобразованием. Ее важной особенностью является исключение перекрытия носителей вейвлетов, т. е. устранение избыточности в ходе вейвлет-преобразований. Простейший пример диадного преобразования на основе вейвлета Хаара был дан в начале этой главы.
Выделение диадного преобразования в отдельный класс оправдано тем, что и
непрерывное вейвлет-преобразование на практике используется в том или ином
дискретном варианте. Но при этом не накладывается особых ограничений на характер дискретизации параметров a и b и он может быть иным, чем в приведенном выше случае. Например, часто используется равномерный ряд значений a и b.
В отличие от дискретного вейвлет-преобразования непрерывных сигналов, имеющего большую избыточность, диадное преобразование такой избыточности не
имеет. Это означает, что компактные носители вейвлетов плотно укладываются на
оси t (или x) не перекрываясь.
Итак, при дискретных значениях a и b вейвлет-функция может быть представлена в виде:
ψ j ,k (t ) = a0− j 2ψ(a0− j t − k ).
(2.10)
Условие, что множество {ψj,k}j,k∈Z образует ортонормированную систему, означает, что любая функция f∈L2(R) может быть представлена рядом:
f =
∑
j ,k ∈Z
f , ψ j ,k ∑
ψ j ,k .
(2.11)
Тогда выражение (2.11) рассматривается как наложение вейвлетов ψj,k, создающее функцию f.
Разложение (2.11) чисто внешне напоминает разложение в ряд Фурье для функции f∈ L2(R) по экспоненциальным функциям ek: = eik. Но есть и серьезные отличия. Экспоненциальная функция этого вида имеет глобальный носитель. Таким
образом, все члены разложения Фурье зависят от значения f в точке x. Вейвлеты
обычно имеют или компактный носитель, или экспоненциальный порядок убывания на бесконечности. Итак, только члены разложения (2.11), соответствующие
ψj,k с j, 2–k в окрестности точки x, вносят наибольший вклад в функцию в этой
окрестности. Разложение (2.11) в этом смысле локально. Другое важное свойство
вейвлет- разложения, не присутствующее напрямую в разложении Фурье, заключается в том, что коэффициенты вейвлет-разложения обычно несут всю необходимую информацию, чтобы установить, находится ли функция f в гладком пространстве.
Итак, прямое дискретное вейвлет-преобразование (ПДВП) сводится в вычислению коэффициентов C(a,b) по формуле (2.4), естественно, с подстановкой дискретных значений a и b, т. е., в конечном счете:
C ( j , k ) = d j ,k =
∞
∫a
−∞
98
−j 2
0
ψ(a0− j t − k )s (t )dt .
(2.12)
2.3. Кратномасштабный анализ
Здесь C(j,k) = dj,k — детализирующие коэффициенты для вейвлет-декомпозиции сигнала уровня k (оба обозначения этих коэффициентов равноценны). Теперь
эти коэффициенты дискретны, т. е. вычисляются для заданных j и k.
Обратное дискретное вейвлет-преобразование (ОДВП) для непрерывных сигналов задается формулой:
s (t ) =
1
Cψ
∑ ∑ C ( j , k )a
−j 2
0
ψ(a0− j t − k ).
(2.13)
j ∈Z k ∈Z
В пакете Wavelet Toolbox осуществляется нормировка базовых функций в частотной области таким образом, что C ψ = 1. При этом окончательная формула реконструкции сигнала на основании (2.13) записывается в виде:
s (t ) =
∑ ∑ C ( j , k )ψ
j ,k
(t ).
(2.14)
j ∈Z k ∈Z
Было доказано [11, 12], что для ортогональных вейвлетов возможно точное
восстановление сигнала, именуемое реставрацией, после прямого и инверсного
дискретного вейвлет-преобразований с использованием дополнительно аппроксимации сигнала с помощью phi-функции. В ином случае восстановление дает близкий к исходному сигналу s(t) приближенный сигнал, причем близость понимается
в смысле обеспечения минимума среднеквадратической погрешности восстановления.
Итак, диадное вейвлет-преобразование имеет характерную иерархическую
структуру, которая может быть представлена ее деревом. При фиксированном индексе разрешения j вейвлеты имеют одинаковые масштабы и лишь дискретно
сдвигаются во времени. При увеличении разрешения на 1 величина сдвига уменьшается вдвое и вейвлеты сжимаются. Нечто похожее есть и у рядов Фурье, но только в их случае каждому уровню разрешения соответствует пара гармонических
функций, сдвинутых на полпериода.
Любопытно, что и ряд Фурье можно рассматривать как грубое (нулевое) представление сигнала константой (значением «нулевой» гармоники) функции. Первое приближение — это сумма константы с первой гармоникой. Затем приближение постепенно улучшается увеличением числа членов ряда — учетом дополнительных гармоник. В принципе любое конечное число членов ряда Фурье можно
считать за начальное приближение определенного уровня, а дополнительное число членов за уточнение (детализацию) сигнала или функции. При дискретном
вейвлет-преобразовании также нет явно нулевого представления сигнала. Чаще
всего в качестве его берется представление для j = 0, но может браться иное значение j от –∞ до –1.
Описанный подход имеет особое значение для применения вейвлет-преобразований в графике. Он позволяет реализовать постепенное во времени формирование рисунков путем вейвлет-синтеза изображений. Это важно для передачи рисунков по Интернету, когда постепенная обрисовка рисунков позволяет отказаться от их использования (например, просмотра или использования в качестве
гиперссылки) задолго до того, как вся информация о рисунке будет передана по
каналу связи.
Диадное вейвлет-преобразование часто называют дискретным. Однако такая
подмена формулировки не совсем корректна. Правильнее говорить о диадном
преобразовании как об особой разновидности непрерывного вейвлет-преобразования, позволяющей устранить избыточность последнего. Не стоит проводить па-
99
Глава 2. Вейвлеты и вейвлет-преобразования
раллели между диадным вейвлет-преобразованием и дискретным преобразованием Фурье.
Завершая описание диадного вейвлет-преобразования, стоит упомянуть еще
один особый тип вейвлетов — фреймы. Вейвлет-фреймы используют кратное двум
масштабирование, но непрерывные сдвиги. Таким образом, они сохраняют избыточность, присущую непрерывному преобразованию, но в гораздо меньшей мере,
чем при этом преобразовании. Можно сказать, что вейвлет-фреймы занимают
промежуточное положение между диадным и непрерывным вейвлет-преобразованиями. В описанные далее пакеты расширения вейвлет-фреймы как самостоятельный класс вейвлетов не включены, так что мы ограничимся лишь упоминанием
о них. При необходимости соответствующие им инструментальные средства легко
получить небольшой модификацией средств непрерывного вейвлет-преобразования.
2.3.3. Практические примеры вейвлет-преобразований в среде
Mathcad
Нетрудно догадаться, что представленный выше материал будет не слишком
понятен многим читателям без практических примеров осуществления вейвлет-преобразований. Еще совсем недавно для этого нужно было иметь доступ к
большой ЭВМ и недюжинные способности к программированию этих самых вейвлет-преобразований. Однако в наши дни мощные персональные компьютеры
стали общедоступными, а для современных систем компьютерной математики
(СКМ) уже создано множество программ для реализации вейвлет-преобразований.
СКМ Mathcad стали первыми массовыми системами такого рода, в ядро которых были включены функции прямого и обратного дискретного вейвлет-преобразования, названные функциями волновых преобразований. В них пока используется единственный тип вейвлета — Добеши порядка 4 (DB4 или db4), что не мешает строить интересные практические примеры на выявление свойств
вейвлет-преобразований. При этом реализация этих примеров не требует никаких
дополнительных средств, а благодаря высокой скорости исполнения функций
ядра можно получить вполне приличную эффективность вычислений.
В ядро систем Mathcad (начиная с версии Mathcad 8) включены следующие две
функции для вейвлет-преобразований:
• wave(V) — дискретное (диадное) вейвлет-преобразование действительных
чисел (вектор V должен содержать 2n действительных значений, где n — целое число);
• iwave(V) — обратное вейвлет-преобразование относительно преобразования wave (V — вектор, с числом элементов 2n).
Рис. 2.9 показывает пример осуществления прямого дискретного вейвлет-преобразования для прямоугольного импульса. Для наглядности результаты преобразования представлены в виде графиков пяти первых вейвлет-коэффициентов. Нетрудно убедиться, что для этого типа вейвлета коэффициенты представлены прямоугольными (или ступенчатыми) волнами разной амплитуды, длительности и
формы.
Некоторые детали разложения сразу бросаются в глаза:
• очевидно, что форма вейвлет-коэффициентов благоприятна для синтеза
скачков и импульсов, содержащих скачки;
100
2.3. Кратномасштабный анализ
• вейвлет-коэффициенты представляют собой прямоугольные колебания с
явно кратной частотой осцилляций;
• число максимально возможных уровней разложения Nlevels невелико и оно
вычисляется в документе рис. 2.9;
• вейвлет-коэффициенты хранятся в матрице и их всегда можно выделить
(например, для построения графиков отдельных коэффициентов или организации обработки и реконструкции сигналов).
Вторая часть документа, представленная на рис. 2.10, демонстрирует простую
технику удаления части коэффициентов путем обнуления соответствующих ячеек
Рис. 2.9. Пример вейвлет-декомпозии для прямоугольного импульса
(начало документа)
матрицы вейвлет-коэффициентов. Это позволяет ограничить число используемых
коэффициентов значением L и тем самым менять уровень композиции (реконструкции) сигнала. Из представленного рисунка видно, что ограничение уровня реставрации ведет к появлению характерных для эффекта Гиббса выбросов в местах,
где сигнал имеет скачки уровня. Чем ближе уровень реставрации к максимальному значению Nlevels, тем точнее реставрация. Рис. 2.10 дает временные зависимости реставрированного сигнала для трех уровней L = 3, 5 и 8.
Теперь рассмотрим несколько более сложный сигнал — импульс с крутыми нарастанием и спадом и линейно растущей вершиной (линейным трендом в формулировке, принятой в анализе временных рядов). Такой сигнал можно рассматривать как суперпозицию прямоугольного и пилообразного сигналов. Здесь (см.
рис. 2.11) вновь построены пять вейвлет-коэффициентов, представляющих декомпозицию сигнала.
Тут любопытно отметить, что несмотря на отсутствие линейных трендов у самих вейвлет-коэффициентов линейно нарастающая часть импульса приближается
превосходно, без малейших намеков на ступенчатость рис. 2.12. Здесь показано
восстановление сигнала для трех уровней L = 3, 6 и 8.
101
Глава 2. Вейвлеты и вейвлет-преобразования
А теперь рассмотрим вейвлет-преобразования для еще одного характерного
сигнала — радиоимпульса, представляющего собой вырезку синусоидального сиг-
Рис. 2.10. Пример реконструкции сигнала — прямоугольного импульса
(конец документа)
Рис. 2.11. Пример декомпозиции импульса с линейно нарастающей вершиной
(начало документа)
102
2.3. Кратномасштабный анализ
Рис. 2.12. Пример реставрации импульса с линейно нарастающей вершиной
(конец документа)
нала. Соответствующий документ с прямым вейвлет-преобразованием представлен на рис. 2.13. По-прежнему для данного типа вейвлета коэффициенты представляют собой прямоугольные формы.
Несмотря на такую форму вейвлет-коэффициентов они весьма недурно воспроизводят довольно сложный сигнал в виде радиоимпульса. Это видно из окон-
Рис. 2.13. Пример декомпозиции радиоимпульса (начало документа)
103
Глава 2. Вейвлеты и вейвлет-преобразования
чания документа рис. 2.14, представленного на рис. 2.13. Здесь реконструированный сигнал дан для уровней реконструкции L = 3, 5 и 8.
Итак, мы проиллюстрировали процесс дискретных вейвлет-преобразований
для трех видов сигналов, тех же, что рассматривались в главе 1. Все они представ-
Рис. 2.14. Пример реконструкции радиоимпульса (конец документа)
ляют трудности для стандартного преобразования Фурье из-за наличия скачков.
Тем не менее во всех случаях простейшие функции преобразований (для всего одного типа вейвлета из многих десятков известных типов) дали вполне приличные
результаты.
В некоторой мере мы даже преуспели в выделении вейвлет-коэффициентов и в
удалении части из них, что, по существу, означает осуществление процесса вейвлет-фильтрации. Последняя, естественно, сопровождается некоторыми искажениями — отличиями реконструированного сигнала от оригинального. Порою весьма заметными. Это хорошо видно во всех временных диаграммах реставрированного сигнала для различных уровней реставрации.
Поскольку вейвлеты Добеши относятся к ортогональным, можно ожидать возможности точного восстановления произвольного сигнала. Разумеется, мы не можем воспроизвести весь бесконечный набор произвольных сигналов. Но приведем
наглядный пример — вейвлет-преобразование для 512 точек сложного сигнала,
представляющего собой смесь импульса с наклонной спадающей верхушкой, меандра с переменной частотой, синусоиды с нарастающей частотой и шумовой
компоненты, созданной генератором случайных чисел (функция rnd в системе
Mathcad). Этот пример дан на рис. 2.15.
На этом рисунке показан как график реконструированного сигнала, так и исходный сигнал. Нетрудно заметить, что, несмотря на сложный и даже случайный
104
2.3. Кратномасштабный анализ
Рис. 2.15. Вейвлет-преобразования для сложного сигнала
(не детерминированный) характер исходного сигнала, связанный с наличием шумовой компоненты и потому исключающий его точное аналитическое описание,
графики исходного и восстановленного сигналов практически совпадают и их
пришлось искусственно сдвинуть относительно друг друга. Совпадают и графики
на небольшом отрезке времени (снизу рис. 2.15). Этому не стоит удивляться —
вычисленная максимальная среднеквадратическая погрешность ничтожно мала —
менее 6 ⋅ 10–15.
В заключение надо отметить, что в данных функциях системы Mathcad точной
реконструкции соответствует максимальный уровень реконструкции, а не нулевой
(к примеру, как в большинстве других СКМ). Это обстоятельство не принципиально, но при практическом использовании описанных функций о нем просто
надо помнить.
2.3.4. Кратномасштабный анализ
Мы уже знаем, что возможно представление сигнала на основе суммирования
его грубого представления с детализирующими локальными представлениями сигнала в его разных местах. Для реализации этой важной возможности существует
ряд вейвлетов, относящихся к ортогональным. Их можно создать, в общем случае,
базируясь на представлении пространства сигналов V в виде системы вложенных
подпространств V j , отличающихся друг от друга только перемасштабированием
независимой переменной. Основанный на этом анализ называется кратномасштабным анализом (multiresolution analysis) — КМА. Иногда его называют и многомасштабным анализом, что, возможно, и точнее с позиции перевода этого термина.
Этот вид анализа базируется на следующих исходных предпосылках:
• пространство сигналов V может быть разбито на иерархически вложенные
подпространства V j , которые не пересекаются и объединение которых дает
в пределе L2(R);
105
Глава 2. Вейвлеты и вейвлет-преобразования
• для любой функции s (t ) ∈V j ее сжатая версия принадлежит пространству
V j −1;
• существует такая функция ϕ(x ) ∈V 0, для которой ее сдвиги ϕ 0, j (t ) = ϕ (t − k )
при k ∈ Z образуют ортонормированный базис пространства V 0.
Так как функции ϕ 0,k (t ) образуют ортонормированный базис пространства V 0,
то функции
ϕ j ,k (t ) = 2 − j 2 ϕ (2 − j t − k )
(2.15)
образуют ортонормированный базис пространства V j . Таким образом, мы подошли к важному уточнению понятия о масштабирующей функции для дискретного
вейвлет-преобразования непрерывного сигнала, называемой отцовским вейвлетом. Эти функции называются масштабирующими именно потому, что они создают свои масштабированные версии в пространстве сигнала. При этом сигнал s(t)
может быть представлен множеством последовательных приближений sj(t) в субпространствах V j .
Переменная j (нередко обозначаемая как m) в рамках такой трактовки называется масштабным коэффициентом. Поскольку дерево декомпозиции сигнала при
вейвлет-преобразовании принято отсчитывать вниз (хотя и не всегда), то можно
сказать, что сигнал s(t) есть предел аппроксимации s j (t ) ∈V j при j→ –∞, т. е.
s (t ) = lim s j (t ).
j → −∞
В соответствии с этим при больших j мы получаем грубые приближения сигнала, а при малых — точные. Приближение (аппроксимация) сигнала соответствует
итерационной формуле:
∑ C ( j , k )ϕ (t ),
(t ) = 2 ∑ h ϕ (2t − k ),
s j (t ) =
(2.16)
j ,k
j
ϕ 0,0
причем
(2.17)
k
k
где hk — некоторая последовательность. Сумма приближенной и детализирующей
компонент, в конечном итоге, и дает исходный сигнал с тем или иным приближением — (2.16) и (2.17). В качестве стартового значения J часто берут 0, но, в принципе, начинать итерационный процесс приближения можно и при других значениях J.
В общем случае реконструкция сигнала на n-м уровне разрешения jn задается
выражением:
s (t ) =
∞
∑a
k = −∞
j n ,k
ϕ j n , k (t ) +
∞
∞
∑ ∑d
j ,k
ψ k (t ),
(2.18)
j = j n k = −∞
где через a обозначены коэффициенты аппроксимации, а через d — детализирующие коэффициенты.
Кратномасштабное представление лежит в основе многих применений вейвлет-анализа и вейвлет-преобразований. Например, применительно к сигналам
изображений оно означает представление изображений последовательностью образов с разной степенью их детализации. При этом для создания грубого образа
сигнала служит функция ϕ(t ), а уточнение этого образа достигается с помощью
вейвлет-функций или вейвлет-коэффициентов.
106
2.3. Кратномасштабный анализ
Первым типом вейвлета, на котором была теоретически доказана возможность
кратномасштабного анализа (КМА), был вейвлет Хаара, упомянутый чуть выше.
На его примере было показано, что в ходе прямого и обратного диадного вейвлет-преобразования возможно полное восстановление сигнала, если для целых k
существуют такие коэффициенты {hk }, которые удовлетворяют решению функционального уравнения
t
ϕ  =
 2
2 ∑ hk ϕ (t − k ).
(2.19)
k
Это функциональное уравнение является одним из важнейших в теории вейвлет-анализа и именуется как уравнение масштабирования или уравнение уточнения
(refinement equation). Для функции Хаара нетрудно найти, что коэффициенты
h1 = h2 = 1 2 . Для других ортогональных вейвлетов эти коэффициенты были также вычислены (как это делается, мы рассмотрим чуть ниже в этой главе).
Уравнение масштабирования (2.19) может иметь и несколько иные формы записи. Например, в пакете Wavelet Toolbox оно задано в виде (x = t для временных
зависимостей):
1 x
ϕ  =
2  2
∑ ω ϕ (x − n ) , причем (ω
n
n ∈Z
)
n n ∈n
.
(2.20)
Нетрудно подметить, что вместо коэффициентов hk здесь использованы коэффициенты ωn и несколько иная нормировка. Это, разумеется, не принципиально,
поскольку учитывается в конечных алгоритмах вейвлет-анализа и реализующих их
вычислениях.
2.3.5. Кратномасштабный вейвлет-анализ в пакете Wavelet Toolbox
Пожалуй, наиболее полные средства кратномасштабного вейвлет-анализа дает
пакет расширения системы MATLAB 6/6.1/6.5 — Wavelet Toolbox. Этот пакет
представляет собой мощную и вполне завершенную математическую компьютерную лабораторию, позволяющую выполнять все виды вейвлет-анализа как в
командном режиме, так и с помощью средств интерфейса пользователя (GUI).
Данный пакет, впервые описанный в [25], мы рассмотрим далее в главах 3 и 4,
а пока ограничимся полученным в нем рисунком 2.16, который наглядно отображает его возможности в проведении анализа и реконструкции одномерных сигналов.
Как хорошо видно из рис. 2.16, основой вейвлет-приближения одномерного
сигнала s является получаемый в ходе прямого вейвлет-преобразования набор коэффициентов прямого вейвлет-преобразования — аппроксимирующих ai и детализирующих di (показаны коэффициенты с индексами i от 1 до 5). На рис. 2.16
первые представлены слева под временной зависимостью сложного сигнала, а
вторые — справа. Сверху справа построена также вейвлет-спектрограмма данного
тестового сигнала — cfs.
Полезно обратить внимание на то, что «дерево» (или порядок следования) коэффициентов, дающий улучшение приближения, в данном пакете является ниспадающим, за нулевой уровень точной реконструкции сигнала принят сам сигнал.
Чем меньше номера коэффициентов, тем ближе реконструированный сигнал к
оригиналу.
107
Глава 2. Вейвлеты и вейвлет-преобразования
Рис. 2.16. Иллюстрация вейвлет-приближения для случая одномерного сигнала
Просмотр рис. 2.16 полезен в том смысле, что он позволяет понять, какими
временными зависимостями характеризуются коэффициенты аппроксимации и
детализации. Хорошо видно, что коэффициенты аппроксимации действительно
являются грубыми (как бы сглаженными) копиями сигнала, тогда как детализирующие коэффициенты лишь выделяют локальные особенности сигнала. Узреть
прямую связь между видом детализирующих коэффициентов и видом сигнала s
может только очень опытный пользователь, много раз применявший вейвлет-технологию для обработки разных сигналов.
2.3.6. Точное и грубое разрешение
Дискретизация параметра a = 2j по существу означает возможность управления
разрешением сигнала в ходе вейвлет-преобразований. Значения параметров масштаба a и разрешения 1/a представлены ниже.
J
10
9
…
2
1
0
–1
–2
–3
Масштаб
1024
512
…
4
2
1
1/2
1/4
1/8
Разрешение
1/210
1/29
…
ј
Ѕ
1
2
4
8
Здесь еще раз уместно напомнить, что в разных программных средствах знак
параметра масштаба J (т. е. направление роста разрешения) может иметь разную
трактовку — вплоть до диаметрально противоположной. Естественно, что в каждом конкретном программном средстве эта трактовка должна быть единственной
в пределах того или иного средства для осуществления вейвлет-преобразований.
В пакетах расширения систем компьютерной математики часто фигурирует некоторый уровень преобразований (например, максимальный в пакете расширения
108
2.4. Частотный подход и быстрое вейвлет-преобразование
по вейвлетам системы MATLAB), при достижении которого дальнейшее изменение уровня становится нецелесообразным, поскольку погрешность преобразований падает до уровня погрешности машинных расчетов.
2.4. Частотный подход и быстрое
вейвлет-преобразование
2.4.1. Частотный подход к вейвлет-преобразованиям
Хотя при восстановлении сигналов в ходе вейвлет-преобразований можно наглядно пользоваться временными функциями — вейвлетами, они применяются
скорее для демонстрации сущности вейвлет-декомпозиции и реставрации сигналов, чем для практической работы по обработке и представлению реальных сигналов. Она же обычно базируется на особой трактовке вейвлет-преобразований в частотной области и позволяет плодотворно использовать хорошо разработанный и
давно известный аппарат частотной фильтрации (см. главы 1—3 книги [28]) и методы быстрого вейвлет-преобразования (БВП). Они основаны на пирамидальном
алгоритме Малла и прореживании спектра вейвлетов по частоте.
Вначале рассмотрим частотный подход чисто умозрительно и без строгих доказательств. В соответствии с этим подходом, частотная область вейвлетов может
быть разбита на две составляющие — низкочастотную и высокочастотную. Их частота раздела равна половине частоты дискретизации сигнала. Для их разделения
достаточно использовать два фильтра с одинаковой граничной частотой — низкочастотный Lo и высокочастотный Hi, ко входам которых подключается сигнал s.
Фильтр Lo дает частотный образ для аппроксимации (грубого приближения) сигнала, а фильтр Hi — для его детализации. Полосы частот пропускания фильтров
будем считать равными, что соответствует делению общей полосы частот сигнала
на 2.
Пожалуй, главным выводом из теории вейвлет-преобразований является вывод
о соответствии вейвлет-коэффициентов коэффициентам передаточной характеристики этих фильтров. Другими словами, коэффициенты фильтров Hi и Lo и есть
детализирующие коэффициенты вейвлет-декомпозиции сигналов и их коэффициенты аппроксимации.
Поскольку фильтры передают только половину всех частотных компонент сигнала, то не попавшие в полосу прозрачности компоненты могут быть безболезненно удалены. По аналогии с казней каждого десятого в провинившихся войсковых
подразделениях Древнего Рима, эта операция получила название «децимация».
В количественном отношении ей придается более общий смысл. Так, децимация
вдвое обозначается как ↓2 и означает удаление половины отсчетов. Если просто
сложить полученные на выходах фильтров сигналы, то получится исходный сигнал, т. е. будет иметь место полная реконструкция сигнала на ее начальном уровне.
Однако Lo фильтр можно, в свою очередь, разложить на два фильтра и снова
подвергнуть спектры этих новых фильтров операции децимации. Это означает изменение уровня реконструкции, которое можно представить деревом реконструкции (что будет сделано позднее). Таким образом, может быть сформирована система вейвлет-фильтров, реализующих операцию декомпозиции сигнала того или
иного уровня.
109
Глава 2. Вейвлеты и вейвлет-преобразования
Подобные операции, в конце концов, сокращают спектр соответствующих
компонентов сигнала, что лежит в основе приближенного представления сигнала
на разных уровнях декомпозиции сигнала. Такое представление необходимо, например, для реализации операций сжатия сигналов и их очистки от шума. Операция последовательной разбивки Lo фильтров и постепенного огрубления сигнала
была предложена Малла и известна как алгоритм Малла (в его французской фамилии Mallat буква «t» не читается).
Возникает законный вопрос, почему именно НЧ-фильтр удостоен операции
деления? Можно сказать, что это следствие устоявшейся практики применения
радиотехнических сигналов — основные частотные компоненты их расположены
обычно в низкочастотной области спектра. Считается, что именно она несет больше информации, чем высокочастотная (уточняющая) область. Разумеется, принимать это за абсолютную истину не стоит — в наше время есть виды сигналов, где
это допущение попросту неверно. И, как станет ясно из дальнейшего, возможно
деление полос и ВЧ-фильтров, порождающее особые, так называемые «пакетные»
вейвлеты.
2.4.2. Основы вейвлет-фильтрации
Теперь рассмотрим сказанное более подробно. Так, вполне очевидно, что каждый ортогональный вейвлет имеет свой Фурье-образ. В ряде работ, включая опи)
сание пакета Wavelet Toolbox, было показано, что Фурье-образ ψ(ω ) можно представить реализацией двух фильтров — низкочастотного H (ω ) и согласованного с
ним высокочастотного фильтра:
G (ω ) = − e −iω H (ω + π ).
При этом Фурье-образ вейвлета имеет вид:
)
)
ψ(2ω ) = G (ω )ϕ (ω ).
(2.21)
(2.22)
В пакете Wavelet Toolbox задан ряд свойств базовых фильтров H (ω ) со следующими их характеристиками:
• фильтры имеют тип ФНЧ с импульсной характеристикой класса FIR
(КИХ);
• длина вектора коэффициентов фильтра равна 2N;
• сумма коэффициентов фильтра равна 1;
• норма вектора коэффициентов фильтра равна 1 2.
Количественные данные по вейвлет-фильтрам в пакете Wavelet Toolbox системы MATLAB нетрудно проверить с помощью соответствующих простых команд
командного режима работы. Например, для вейвлета Добеши db4, после его загрузки командой load, имеем:
>>load db4
>>db4
db4 =
0.1629
0.5055
0.4461
-0.0198
-0.1323
0.0218
0.0233
-0.0075
>>length(db4)
ans =
8
110
2.4. Частотный подход и быстрое вейвлет-преобразование
>>sum(db4)
ans =
1.0000
>>norm(db4)
ans =
0.7071
2.4.3. Квадратурные фильтры
Для обоснования частотного подхода рассмотрим весьма важное для него понятие о квадратурных фильтрах (КФ). Кратномасштабный анализ основан на двух
хорошо известных методах обработки сигналов, заимствованных из теории фильтрации сигналов:
• разложение сигнала по поддиапазонам (subband decomposition) при помощи
квадратурных зеркальных фильтров (quadrature mirror filters);
• пирамидальное представление (pyramid representation) [24].
Первый метод возник из потребностей обработки звуковых сигналов, а второй — из обработки сигналов изображения.
Пусть имеется некий обобщенный сигнал в виде последовательности чисел
x = {xn }nn == ∞−∞ . Для сглаживания сигнала, подавления шума и других целей часто используют фильтры, базирующиеся на операции свертки:
yn =
∑h x
k
n−k
.
(2.23)
k
Сигнал y = { yn }nn == ∞−∞ получается «локальным усреднением» сигнала x с помощью
набора «весов» h = {hk }. Используя понятия частотного анализа, можно записать
Y (ω ) = H (ω )X (ω ),
(2.24)
или, что принято в анализе цифровых сигналов, в терминах z-преобразования
Y (z ) = H (z )X (z ).
(2.25)
*
Транспонированный фильтр h состоит из тех же коэффициентов, что и фильтр
h, но переставленных в обратном порядке. В частотной области транспонированный фильтр записывается как H (ω ). Коэффициенты всех сигналов и фильтров
предполагаются вещественными. Величина X (ω ) характеризует распределение
энергии сигнала по частотам ω ∈ (− π , π ).
А теперь попробуем найти два фильтра, которые позволяли бы разложить сигнал на две частотные компоненты — высокочастотную X H (z ) и низкочастотную
X G (z ), их проредить операцией децимации ↓2, а затем, с помощью транспонированных фильтров, точно восстановить по этим данным исходный сигнал. Этот,
давно известный прием можно применять неоднократно, что и лежит в основе
быстрых алгоритмов преобразования Фурье и алгоритмов вейвлет-преобразований
для приближенного представления сигналов. Если спектр сигнала ограничен, то
разумно сделать полосы пропускания фильтров равными половине общей полосы
частот спектра сигнала — другими словами граничная частота фильтров должна
быть равна половине частоты квантования сигналов.
Пусть теперь вектор Y (z ) перед кодированием прореживается вдвое, а перед
восстановлением исходного сигнала доводится до исходной длины вставкой нулей между соседними значениями его элементов. При этом z-преобразование из
111
Глава 2. Вейвлеты и вейвлет-преобразования
Y (z ) превращается в (Y (z ) + Y (− z )) / 2. Подставим сюда (2.25) для каждого из фильтров и получим z-преобразования компонент перед восстановлением
X H (z ) → (H (z )X (z ) + H (− z )X (− z )) / 2
X G (z ) → (G (z )X (z ) + G (− z )X (− z )) / 2.
z-преобразования транспонированных фильтров имеют вид H (z −1 ) и G (z −1 ). Сигнал восстановится с их помощью точно, если:
X (z ) = (H (z −1 )H (z ) + G (z −1 )G (z ))X (z ) / 2 +
(H (z −1 )H (− z ) + G (z −1 )G (− z ))X (− z ) / 2.
Тогда условия точного восстановления (perfect reconstruction, PR) будут иметь
вид:
H (z −1 )H (z ) + G (z −1 )G (z ) = 2
H (z −1 )H (− z ) + G (z −1 )G (− z ) = 0.
В матричной форме они записываются так:
(
)
M (z ) M (z −1 )
t
2 0 
= 
 = 2E ,
0 2 
где
 H (z ) G (z ) 
M (z ) = 
.
 H (− z ) G (− z )
Подставив z = eiω , получим условия на ДПФ искомых фильтров:
2
2
H (ω ) + G (ω ) ≡ 2,
(2.26)
H (ω )H (ω + π ) + G (ω )G (ω + π ) = 0.
(2.27)
Если
2
2
H (ω ) + H (ω + π ) ≡ 2,
то, положив
G (ω ) = − e −iω H (ω + π ),
мы видим, что (2.26) выполняется.
Фильтры H и G (или L), удовлетворяющие условию (2.26), называются квадратурными зеркальными фильтрами — КЗФ (quadrature mirror filters, QMF). Понятие о
них широко используется и в технике вейвлет-преобразований и составляет основу быстрого вейвлет-преобразования (БВП).
Итак, для ряда типов вейвлетов частотное представление открывает возможности использования быстрого вейвлет-преобразования, в основе которого лежит
известный принцип «разделяй и властвуй» — т. е. дели спектр на две составляющие и прореживай их по частоте. Его последовательное применение по существу
и есть пирамидальный алгоритм Maлла, дающий приближения сигнала с уменьшающейся по мере удаления от вершины дерева детальностью представления сигнала.
112
2.4. Частотный подход и быстрое вейвлет-преобразование
2.4.4. Быстрое вейвлет-преобразование и алгоритм Малла
Для ортогональных вейвлетов существует быстрое вейвлет-преобразование (Fast
Wavelet Transform), называемое также алгоритмом Маллa (Mallat algorithm). Оно реализует основанный на фильтрации итерационный алгоритм, причем число итераций N может быть произвольным.
Прежде всего отметим, что быстрое вейвлет-преобразование можно осуществлять, вычисляя аппроксимирующие и детализирующие коэффициенты в формуле
реконструкции (2.18) по формулам:
a j +1,k =
∑h a
m
m
j ,2 k +m
a0,k =
при
и d j +1,k =
∑g
m
a j ,2 k +m ,
m
∫ f (t )ϕ(t − k )dt .
Классическая схема Малла, однако, предполагает рекурсивное применение
процедуры реконструкции сигнала в частотной области без явного вычисления a
и d. Коэффициенты фильтров при этом соответствуют приведенным ниже обозначениями:
Тип фильтра
НЧ
ВЧ
Декомпозиция
Lo_D
Hi_D
Реконструкция
Lo_R
Hi_R
Первый шаг алгоритма Малла поясняется следующей диаграммой вейвлет-декомпозиции сигнала:
→ Lo_D → ↓2 → cA1 (коэффициенты аппроксимации уровня 1)
s 
→ Hi_D → ↓2 → cD1 (детализирующие коэффициенты уровня 1)
Сигнал s подается на фильтры декомпозиции низких и высоких частот, после
чего с помощью операции децимации ↓2 (уменьшения числа частотных составляющих вдвое) можно получить коэффициенты аппроксимации на выходе фильтра
низких частот и детализирующие коэффициенты на выходе фильтра высоких частот. Далее этот алгоритм может быть продолжен по схеме:
→ Lo_D → ↓2 → cAj+1 (коэффициенты аппроксимации уровня j + 1)
cAj 
→ Hi_D → ↓2 → cDj+1 (детализирующие коэффициенты уровня j + 1)
В результате мы получим полный набор аппроксимирующих и детализирующих коэффициентов, вплоть до уровня декомпозиции j + 1. Это и есть вейвлет-декомпозиция сигнала. По этому набору коэффициентов мы может построить
вейвлет-спектрограмму сигнала, например для оценки его особенностей.
Теперь перейдем к диаграмме быстрой вейвлет-реконструкции. Используя операцию, обратную децимации, ↑2 (увеличение числа вдвое составляющих путем добавления нулевых компонентов вперемежку с имеющимися компонентами), можно получить диаграмму понижения уровня коэффициентов аппроксимации:
cAj → ↑2 → Lo_R →
 → функция wkeep → cAj-1
113
Глава 2. Вейвлеты и вейвлет-преобразования
cDj → ↑2 → Hi_R →
Рис. 2.17. Иллюстрация операции ↑, обратной децимации
Смысл операции ↑, обратной децимации, поясняет рис. 2.17.
Понижение уровня коэффициентов аппроксимации означает постепенное
приближение к исходному сигналу. В целом, несколько упрощенно (обозначение
i указывает на итерационный характер вычислений), процесс декомпозиции-реконструкции можно представить общей диаграммой вейвлет-преобразований:
→ Lo_D → ↓2 → cA →
s 
→ Hi_D → ↓2 → cD →
→ cA → ↑2 → Lo_R →
i
(+) → se
→ cD → ↑2 → Hi_R →
На рис. 2.18 представлена более наглядная диаграмма реализации быстрого
многошагового алгоритма Малла на основе вейвлет-фильтрации. Для наглядности
здесь сигнал представлен 1000 отсчетами и схематично показаны АЧХ фильтров.
Из этой диаграммы легко проследить за процессом декомпозиции вейвлет-филь-
Рис. 2.18. Структура многошагового алгоритма Малла при декомпозиции
и реставрации сигнала
тров и сигналов и затем за процессом
реставрации сигнала. ВЧ-фильтры обозначены как H, а НЧ-фильтры как L.
Итак, в результате этого процесса
исходный сигнал s раскладывается на
вейвлет-компоненты вплоть до заданного уровня декомпозиции, после чего,
в ходе реконструкции, восстанавливается до приближенного сигнала se→s.
Степень приближения зависит от уровня декомпозиции и реконструкции.
Нулевой уровень соответствует точному
114
Рис. 2.19. Структура
вейвлет-представления сигнала
2.5. Специальные вопросы вейвлет-преобразований
восстановлению сигнала (se = s). Рисунок 2.19 показывает обычную диаграмму
разложения (сверху вниз) и реконструкции (снизу вверх) сигнала s.
На этой диаграмме коэффициенты аппроксимации сигнала обозначены как A,
а детализирующие коэффициенты как D. Цифры указывают на уровень декомпозиции и реконструкции сигнала (нулевой уровень отдельно не указывается, это
есть сам сигнал s). Читатель легко найдет сходство между этой диаграммой и диаграммой вейвлет-преобразований в частотной области, представленной на
рис. 2.18. Диаграмму рис. 2.19 можно рассматривать как дерево декомпозиции
сигнала.
2.5. Специальные вопросы вейвлет-преобразований
2.5.1. Пакетные вейвлеты
Итак, при обычном алгоритме Малла на каждом шаге «отрезается» половина
НЧ-части диапазона сигнала. Напоминаем, что реализация алгоритма исходит из
бытующего представления о большей информационности низкочастотной части
спектра сигнала, что для многих видов сигнала (например, цифровых) не всегда
справедливо.
Р. Койфманом и М. Викерхаузером был предложен усовершенствованный алгоритм Малла, структура которого представлена на рис. 2.20. Здесь процесс «рас-
Рис. 2.20. Структура (дерево) вейвлет-представления сигнала для пакетных
вейвлетов
щепления» (splitting) дерева применен как для НЧ-, так и ВЧ-компонент сигнала.
При одном из вариантов такого алгоритма операция «расщепления» применяется к любой из получающихся ВЧ-компонент. Этой схеме можно дать истолкование применительно к вейвлетам. В этом случае происходит замена вейвлета ψ(t )
на два новых вейвлета:
ψ1 (t ) =
∑ h ψ(t − n ) и ψ (t ) = ∑ g ψ(t − n ).
n
2
n
И так далее. Новые вейвлеты тоже локализованы во времени (пространстве),
но на вдвое более широком отрезке, чем исходный вейвлет.
Можно нарисовать бинарное дерево разложения, и ему будет соответствовать
набор подпространств с базисами, построенными по аналогичному рецепту. Функции, порождающие эти базисы, называются вейвлет-пакетами (wavelet-packets).
Преобразование с помощью вейвлет-пакетов является адаптивным вейвлет-преобразованием, поскольку оно легко приспосабливается к особенностям сигнала и
115
Глава 2. Вейвлеты и вейвлет-преобразования
может успешно использоваться для компрессии сигналов и их очистки от шумов — см. ниже. В частности, имеется возможность отсечения части ветвей детализирующих коэффициентов дерева.
Достоинством (а в какой-то мере и недостатком) вейвлет-пакетов и адаптивных алгоритмов их реализации является отсутствие необходимости в обучении системы (характерном, например, для систем на основе нейронных сетей [36]) и
даже в оценке статистических характеристик сигналов. Все, что нужно, — это ввести оценку стоимости вейвлет-коэффициентов, мерой которой может служить энтропия — концентрация числа вейвлет-коэффициентов, требующихся для описания сигнала с некоторой заданной точностью (или погрешностью).
2.5.2. Дискретный вейвлет-анализ и временные ряды
Уже давно внимание математиков и ученых привлекают временные ряды. Напомним, что временным рядом называют совокупность некоторых значений (сигналов или данных) в отдельные моменты времени. Это могут быть температуры
воздуха, отмечаемые ежедневно, курс доллара или стоимость акций компаний Intel или Microsoft.
Основной задачей теории временных рядов является изучение их поведения во
времени и, что особенно желательно в сфере решения экономических задач, прогнозирования тех или иных событий, наподобие пресловутого «черного вторника», вмиг превратившего наш «серебряный» рубль в «деревянный». До сих пор
основным методом исследования таких рядов был статистический метод, который
лишь частично мог решать задачи предсказания.
В популярной литературе по временным рядам под компонентами детерминированного ряда часто предполагают выражения вида:
dt = trt + st + ct, где t = 1, 2, ..., N.
Первая составляющая является трендом, вторая сезонной составляющей и третья — циклической компонентой.
ВНИМАНИЕ В последние годы к указанным составляющим временных рядов стали добавлять новую составляющую — интервенцию, которая описывает резкие
изменения временного ряда в определенные (чаще всего довольно редкие) моменты времени.
Имеется много типов временных рядов. Ряды Фурье, к примеру, получили
признание как один из типов временных рядов, в частности, удобных для оценки
периодических изменений компонент временного ряда. Особенно велика роль
временных рядов в математической экономике, где на их основе возможно предсказание некоторых событий.
На наш взгляд, большие возможности в анализе временных рядов заложены в
дискретных и в диадных вейвлет-преобразованиях. По существу, дискретный сигнал, для обработки которого используются вейвлет-преобразования, представляет
собой типичный временной ряд. Он может содержать шумовые компоненты и
удовлетворять известным статистическим требованиям для временных рядов.
Следует отметить, что дискретное вейвлет-преобразование непрерывных сигналов и вейвлет-преобразование дискретных во времени сигналов, например временных рядов, далеко не одно и то же. Строго говоря, для дискретных сигналов
не существует базисных функций, масштабированные и смещенные версии которых дают базис пространства сигнала. Тем не менее алгоритм Малла на основе
116
2.5. Специальные вопросы вейвлет-преобразований
концепции вейвлет-фильтров применим для вейвлет-преобразований дискретных
во времени сигналов. Для лучшего знакомства с тонкостями применения такого
вида преобразований можно рекомендовать обращение к литературе [1—11].
Мощные средства выявления тонких локальных особенностей временных рядов (и представляющих их сигналов) и превосходная степень их визуализации —
все это позволяет надеяться на то, что уже в ближайшее время вейвлеты станут
одним из серьезных инструментов анализа временных рядов самого различного
назначения. По существу, для временных рядов в виде дискретных сигналов они
уже стали таковыми. И в следующей главе их возможности будут рассмотрены самым детальным образом.
Уже известен ряд успешных попыток применения вейвлетов для анализа временных рядов с целью предсказания таких событий, как возникновение землетрясений, цунами, обвалов в финансовой сфере, возможность проведения террористических актов (увы, даже подобных тем кошмарным событиям, которые произошли в США в очередной «черный вторник» 11 сентября 2001 года), последствия
бомбардировок в локальных конфликтах, при анализе томограмм в реальном масштабе времени в медицине и др.
2.5.3. Двумерные вейвлеты
Для работы с изображениями необходимо обрабатывать двумерные массивы
данных. Для общности пусть они по-прежнему задаются в пространстве V , но теперь как функции двух переменных x и y. Есть два основных способа осуществления вейвлет-преобразований такого сигнала:
• развертка двумерного массива в одномерный массив тем или иным способом и применение одномерных вейвлет-преобразований;
• применение специальных двумерных вейвлетов.
Первый способ не представляет особого интереса ввиду его очевидности. Поэтому рассмотрим более интересный второй способ. В этом случае вместо выражения для одномерной вейвлет-функции вида
 x − b
a −1 2ψ 0 
,
 a 
записанной с независимой переменной x, мы можем воспользоваться ее двумерным аналогом, учитывая, что теперь по каждому измерению (x и y) пространства
сигнала V имеются свои значения a и b. Обозначив их как a1 и a2, а также b1 и b2,
мы можем записать выражение для двумерного непрерывного вейвлета в виде:
1
 x − b1 y − b2 
2
ψ 0
,
 , где V = x , y ∈ R .
a2 
a1 ⋅ a2  a1
Для двумерного дискретного вейвлет-анализа непрерывных сигналов мы должны также задать условия дискретизации:
( j , k ) ∈ Z 2, a = 2 j , b = k 2 j = ka,
ψ j ,k = 2 − j 2 ψ(2 − jV − k ), ϕ j ,k = 2 − j ϕ (2 jV − k ).
Попробуем распространить описанные выше положения частотно-временного
представления вейвлет-анализа на случай сигналов в виде функций двух перемен-
117
Глава 2. Вейвлеты и вейвлет-преобразования
ных x и y. В данном случае можно воспользоваться тензорным произведением одномерных КМА и в качестве двумерной масштабирующей функции взять
Ф (x , y ) = ϕ (x )ϕ ( y ).
Тогда, с учетом известного соотношения для тензорного произведения, вместо
одного вейвлета теперь возникает три:
ΨLH (x , y ) = ϕ (x )ψ( y ), ΨHL (x , y ) = ψ(x )ϕ ( y ), ΨHH (x , y ) = ψ(x )ψ( y ).
Здесь по-прежнему L означает реализацию фильтра низких частот, H — реализацию фильтра высоких частот.
Скорректированные с учетом приведенных выше соотношений формулы для
вейвлет-преобразований двумерных сигналов и изображений используются во
всех описанных в данной книге инструментальных пакетах для осуществления
вейвлет-преобразований изображений.
2.5.4. Вейвлет-компрессия сигналов и изображений и их очистка
от шумов
Вейвлеты открывают новые и необычные подходы в сокращении избыточной информации и в очистке сигналов и изображений от шума. Суть одного из таких подходов заключается просто в ограничении уровня детализирующих коэффициентов.
При этом возможно как глобальное ограничение всех коэффициентов по уровню,
так и локальное ограничение. Более того, возможны разные типы порогов ограничения, например, мягкий в виде одной вертикальной ступеньки передаточной характеристики ограничения или жесткий в виде дополнительных горизонтальных полочек.
Их реализацию и графическое представление мы рассмотрим в следующей главе.
На практике при сжатии данных или очистке сигналов от шума мы почти всегда имеем дело только с частотными фильтрами. За счет выбора оптимального дерева для данного сигнала или класса сигналов иногда можно существенно (в несколько раз) повысить эффективность сжатия. Для выбора оптимального (или
квазиоптимального) дерева разработан ряд методов. Как отмечалось, некоторые
из них основаны на введении понятия энтропии, позволяющей оценить информативность набора коэффициентов.
Функция стоимости на основе понятия энтропии M имеет различные значения. Она большая, если вейвлет-коэффициенты получаются примерно одной величины, и мала, если они существенно отличаются. Это значит, что любое усреднение коэффициентов увеличивает энтропию. Функция стоимости должна быть
аддитивной, что для сигнала x = s означает следующее:
M(0) = 0 и M ({xi }) =
∑ M (x ).
i
i
Под энтропией обычно понимается величина:
M =e
−
∑n p n log( p n )
2
, где pn = xn x
−2
.
При этом используется следующая стратегия: сначала строится полное дерево
разложения, затем снизу вверх анализируются пары узлов, имеющих общий корень. Если при переходе от корня к узлам энтропия не уменьшается, эта пара заменяется на корень. Возможен упрощенный вариант — подобрать оптимальный
уровень, т. е. высоту полного дерева, при которой энтропия минимальна.
118
2.6. Конструирование вейвлетов
2.6. Конструирование вейвлетов
2.6.1. Общий подход
Как уже отмечалось, большинство вейвлетов, к сожалению, не имеет единого
аналитического выражения. Рассмотрим схематично процесс конструирования
вейвлетов. Как нам известно, множество базисных функций образует вейвлет-базис. Рассмотрим базис {Ψik}, в котором каждая функция Ψik — это перенос
(Ψ(x)→Ψ(x + 1)) и растяжение (Ψ(x)→Ψ(2x)) той же функции прототипа Ψ, называемой родительским вейвлетом. Пусть:
∫ψ
jk
(x )ψlm (x )dx = δij δ km ,
(2.28)
и
ψ jk (x ) = 2 j 2 ψ(2 j x − k ).
(2.29)
j/2
Коэффициент 2 в (2.29) появляется из-за общего требования ортонормированности базиса.
Понятие вейвлета в общем случае (полагаем под независимой переменной x, в
частности x = t) проистекает из решения следующего функционального уравнения:
ϕ (x ) =
M −1
∑ c ϕ (2 x − k ),
k
(2.30)
k=0
где M — число ненулевых коэффициентов ck (M — произвольное число, называемое порядком вейвлета). Коэффициенты ck в уравнении (2.30) зависят от свойств
масштабирующей функции ϕ(x ). Вейвлет-функция, удовлетворяющая сформулированным для нее условиям, записывается в виде:
ψ (x ) =
1
∑ (−1) c
k
k = 2 −m
1− k
ϕ (2 x − k ).
(2.31)
Очевидно, чтобы сконструировать конкретный вейвлет, необходимо решить
уравнение масштабирования (2.30) для данного M и полученных вейвлет- коэффициентов ck. Коэффициенты ck зависят от следующих свойств масштабирующей
функции: требуется, чтобы интегрируемая масштабирующая функция была равна
единице:
∫ ϕ(x )dx
= 1.
(2.32)
Масштабирующая функция должна быть ортогональна по отношению к ее
операции сдвига:
∫ ϕ (x )ϕ (x − k )dx
= 1.
(2.33)
Важные свойства вейвлет-коэффициентов ck могут быть выведены из приведенных выше уравнений. Так, интегрирование выражения (2.30) с учетом (2.32)
дает:
M −1
∑c
k
= 2.
(2.34)
k=0
119
Глава 2. Вейвлеты и вейвлет-преобразования
Ортогональность масштабирующей функции к ее операции сдвига (2.33) имеет
вид:
M −1
∑ (−1) c
k
k=0
c
1 − k k − 2m
= 0.
(2.35)
Требование ортогональности (2.29) вейвлета (2.31) гарантирует, что:
M −1
∑c c
k=0
k k − 2l
= 2δ 0l .
(2.36)
Желательно, чтобы для некоторого p было справедливо следующее уравнение:
M −1
∑ (−1) c k
k
m
k
= 0, 1, K , p − 1.
(2.37)
k=0
Уравнение (2.37) вытекает из требования точной аппроксимации полиномов
степени p или меньшей линейной комбинацией ϕ(x) и ее операции сдвига. Из
(2.37) следует, что:
∫x
m
ψ(x )dx = 0, m = 0, 1K p − 1.
Альтернативно базису {Ψjk}, можно использовать ортонормированный базис
{ϕ(x), Ψjk}. На основании принципов кратномасштабного анализа можно восстановить любую функцию f(x) с помощью выражения:
f (x ) = f ϕ +
∑b
jk
ψ jk (x ).
(2.38)
j ,k
В нем первая составляющая f(x) — ее приближение (аппроксимация) f ϕ, а вторая — уточнение функции на основе ее детализирующих коэффициентов. Коэффициенты разложения bjk несут информацию о функции f около x = 2j и x = 2–jk.
2.6.2. Конструирование вейвлета Хаара
В качестве характерного и достаточно простого примера сконструируем простейший ортогональный вейвлет Хаара. Вычисление должно начинаться с функции ϕ0(x):
ϕ j (x ) =
M −1
∑c ϕ
k
k=0
j −1
(2 x − k ),
(2.39)
где j = 1, 2, ... Выражение (2.39) будет сходиться к воссоздаваемой масштабирующей функции ϕ(x) во всех двухэлементных точках x = k/2j.
Исходя из соображений традиционной нормировки, принятой в теории сигналов, имеем ck = 2hk и
ϕ j (x ) =
M −1
2 ∑ hk ϕ j −1 (2 x − k ).
k=0
Итак, целое число M определяет число коэффициентов hk, определенных на
ортогональном базисе:
hk =
при условии нормировки
120
2 ∫ ϕ (x )ϕ * (2 x − k )dx
2.6. Конструирование вейвлетов
∞
∫ ϕ(x )dx
= 1.
−∞
Поскольку масштабирующая функция известна, мы можем перейти к определению базисной функции («материнского вейвлета»):
ψ (x ) =
2 M −1
2
∑g
k
ϕ (2 x − k ),
k=0
g k = (−1)k h2M − k −1.
где
Вейвлет Хаара получается, если взять M = 1. Тогда он будет иметь два отличных от нуля коэффициента hk, равных 1 2, и масштабирующую функцию, определяемую из решения функционального уравнения
ϕ H (x ) = ϕ H (2 x ) + ϕ H (2 x − 1).
Решение этого функционального уравнения имеет вид:
ϕ H (x ) = θ(x )θ(x − 1),
где θ( x ) — функция Хевисайда, равная 1 при положительных x и 0 при отрицательных. Граничные условия, важные для реализации итерационного алгоритма реализации вейвлета Хаара имеют вид ϕ H (0 ) = 1 и ϕ H (1) = 0. Таким образом вид масштабирующей функции ϕ H (x ) вейвлета Хаара полностью определен. Она имеет
значение 1 в интервале x от 0 до 1 и 0 при любых других x.
Соответственно для psi-функции имеем:
ϕ H (x ) = θ(x )θ(2 x − 1) − θ(2 x − 1)θ(1 − x )
с граничными условиями
ψ H (0 ) = 1, ψ H (1 2 ) = −1 и ψт (1) = 0.
Следовательно, вейвлет Хаара имеет psi-функцию вида
 1, 0 ≤ x < 1 2,

ψ H (x ) = −1, 1 2 ≤ x < 1
 0,
otherwise

и phi-функцию вида
1, 0 < x < 1,
,
ϕ H (x ) = 
0, otherwise
где otherwise означает значения в ином случае.
Его масштабирующие и вейвлет-функции в дискретном варианте вычисляются
как:
ϕ j ,k = 2 j 2 ϕ (2 j x − k ) и ψ j ,k = 2 j 2 ψ(2 j x − k ).
К сожалению, вейвлет Хаара имеет целый букет недостатков. К примеру, он не
является гладким и его частотный спектр плохо локализован (интенсивность
спектра убывает как 1/f). Тем не менее это типичный ортогональный вейвлет и он
может широко применяться на практике, например для представления сигналов,
содержащих перепады уровня.
121
Глава 2. Вейвлеты и вейвлет-преобразования
2.6.3. Конструирование вейвлета Добеши 4
Из конструирования вейвлета Хаара может показаться, что существует определенный произвол в расчете коэффициентов фильтров вейвлетов. Однако это не
так и коэффициенты фильтров подчиняются жестким условиям. В 1987 году Ингрид Добеши сконструировала ортонормированный базис вейвлетов, который
остается ключевым и сегодня для многих вейвлет-приложений. В частности, она
использовала ϕ0(x) = ϕH(x), чтобы сконструировать вейвлеты порядка 4 и 6. Рассмотрим вывод коэффициентов для вейвлетов Добеши порядка 4 (M = 2) [18]. Это
«вполне полноценный» ортогональный вейвлет, который давно нашел себе место
в мире вейвлет-технологий.
Конструирование будем вести на основе уже известных нам функциональных
уравнений:
ϕ (x ) =
2 ∑ hk ϕ (2 x − k ), ψ(x ) =
2 ∑ g k ϕ (2 x − k ).
k
k
Из свойства ортогональности phi-функций
∫ ϕ (x )ϕ (x − m )dx
= δ 0m
можно найти уравнение, определяющее коэффициенты h
∑h h
= δ 0m ,
∑h h
= δ 0m .
k k + 2m
k
откуда:
k k + 2m
(2.40)
k
Далее из ортогональности psi- и phi-функций, выражаемой как
∫ ψ(x )ϕ(x − m )dx
= 0,
следует уравнение
∑h g
k
= 0,
k + 2m
k
решение которого есть:
g k = (−1)k h2M −1− k .
(2.41)
Таким образом, коэффициенты gk для вейвлетов однозначно определяются коэффициентами hk phi-функции.
Гладкость и знакопеременность вейвлета задается условием его ортогональности полиномам степени до M – 1:
∫ x ψ(x )dx
n
= 0, n = 0, 1, K , M − 1
что сводится к соотношению
∑k g
n
k
=0
k
или, с учетом (2.41):
∑ (−1) k h
k
k
n
k
= 0.
(2.42)
Условие нормировки phi-функции (равенство 1 интеграла с ней в качестве подынтегральной функции) задают еще одно условие для выбора коэффициентов h:
122
2.6. Конструирование вейвлетов
∑h
k
=
(2.43)
2.
k
Теперь для M = 2 запишем условия (2.40), (2.42) и (2.43) в явном виде:
h0h2 + h1h3 = 0,
h0 − h1 + h2 − h3 = 0,
− h1 + 2h2 − 3h3 = 0,
h0 + h1 + h2 + h3 =
2.
Эта система имеет следующие решения:
h3 =
1
1
(1 ± 3 ), h2 =
+ h3 ,
4 2
2 2
h1 =
1
1
− h3 , h0 =
− h3 .
2
2 2
К примеру, если в выражении для h3 использовать знак минус, то семейство
фильтров вейвлета Добеши 4 будет иметь чаще всего используемый вид:
h0 =
1
1
(1 + 3 ), h1 =
(3 + 3 ),
4 2
4 2
h2 =
1
1
(3 − 3 ), h4 =
(1 − 3 ).
4 2
4 2
В некоторых случаях нормировочный множитель 1 2 опускается, поскольку
его учет выполняется в других формулах.
Приведенные примеры конструирования вейвлетов, вероятно, могут представлять интерес для студентов, изучающих новые курсы по обработке сигналов и
изображений. Однако для практиков стоит просто просмотреть этот материал, положившись на высокий имидж математиков, ухитрившихся создать не только пару
рассмотренных выше простецких вейвлетов, но и десятки (а сейчас уже и сотни)
вейвлетов, куда более сложных и практически интересных.
2.6.4. Сравнение различных типов простых вейвлетов
Приведем вычисленные значения коэффициентов ck для вейвлетов Хаара и Добеши. Они представлены в таблице 2.1.
Таблица 2.1.
Коэффициенты вейвлетов Хаара и Добеши
Вейвлет
c0
с1
c2
с3
Хаара
1
1
Добеши-4*
0.25(1+ 3)
0.25(3+ 3)
0.25(3– 3)
0.25(1– 3)
Добеши-6
0.332671
0.806891
0.459877
–0.135011
c4
–0.085441
c5
0.035226
123
Глава 2. Вейвлеты и вейвлет-преобразования
* Нормировочный множитель 1 2 опущен. Заметим, что у уже примененного нами (в системе Mathcad) вейвлета DB4 масштабирующая функция не является гладкой. Она имеет
фрактальную структуру и всюду не дифференцируема. Тем не менее вейвлеты Добеши широко
используются при обработке и преобразовании изображений и при сжатии данных.
Из описанного следует, что процесс конструирования вейвлетов достаточно сложен для обычного пользователя, работающего в области прикладных наук. Это явно
хлеб для достаточно опытных математиков и научных работников, в совершенстве
владеющих математическим аппаратом. К счастью, что отмечалось, множество вейвлетов уже создано и их применение вполне возможно при решении множества прикладных задач. Рисунок 2.21 дает хорошее представление об основных типах вейвлетов, которые могут использоваться для выполнения одномерного анализа сигналов.
Рис. 2.21. Основные типы вейвлетов для одномерного вейвлет-анализа
Заметим, что многие из приведенных на рис. 2.21 вейвлетов имеют множество
вариантов. Большинство из этих вейвлетов имеет как вейвлет-функцию, так и
скейлинг-функцию, что делает возможным кратномасштабный и быстрый вейвлет-анализ. Подробное описание одной из наиболее полных «коллекций» вейвлетов, входящих в пакет расширения Wavelet Toolbox системы MATLAB, представлено ниже.
2.7. Вейвлеты в пакете Wavelet Toolbox СКМ MATLAB
2.7.1. Типы вейвлетов в пакете Wavelet Toolbox
Вейвлеты в пакете Wavelet Toolbox СКМ MATLAB принято классифицировать
по виду и особенностям образующей функции ψ 0 (t ) и по имени ученого, впервые
124
2.7. Вейвлеты в пакете Wavelet Toolbox СКМ MATLAB
предложившего тот или иной вейвлет. В этом разделе рассмотрено множество
вейвлетов, входящих в пакет Wavelet Toolbox. Полный список 15 базовых типов
вейвлетов, включенных в пакет Wavelet Toolbox, с указаниями их кратких обозначений (в апострофах) приведен ниже:
'haar' — Хаара
'db' — Добеши
'sym' — Симлета
'coif' — Койфлета
'bior' — биортогональный 'rbio' — обратный биортогональный
'meyr' — Мейера
'dmey' — дискретная аппроксимация вейвлета Мейера
'gaus' — Гаусса
'mexh' — мексиканская шляпа
'morl' — Морле
'cgau' — комплексный Гаусса (гауссиана)
'shan' — Шенона
'fbsp' — частотный B-сплайновый
'cmor' — комплексный Морле
Для получения справки по какому-либо типу вейвлета в командном режиме
работы MATLAB надо исполнить команду waveinfo('type'), указав тип вейвлета. Например, для вейвлета Хаара:
>> waveinfo('haar')
HAARINFO Information on Haar wavelet.
Haar Wavelet
General characteristics: Compactly supported
wavelet, the oldest and the simplest wavelet.
scaling function phi = 1 on [0 1] and 0 otherwise.
wavelet function psi = 1 on [0 0.5[, = -1 on [0.5 1]
and 0 otherwise.
Family
Haar
Short name
haar
Examples
haar is the same as db1
Orthogonal
yes
Biorthogonal
yes
Compact support
yes
DWT
possible
CWT
possible
Support width
1
Filters length
2
Regularity haar is not continuous
Symmetry
yes
Number of vanishing
moments for psi
1
Reference: I. Daubechies,
Ten lectures on wavelets,
CBMS, SIAM, 61, 1994, 194-202.
Мы постепенно познакомимся со всеми указанными типами вейвлетов, оценим их возможности и представим графики представляющих их функций.
2.7.2. Вейвлет-менеджер — wavemngr
Вейвлет-менеджер — это мощное средство, которое позволяет добавлять (с параметром'add'), удалять, сохранять или считывать новые вейвлеты, интересую-
125
Глава 2. Вейвлеты и вейвлет-преобразования
щие пользователя или создаваемые им. Вейвлет-менеджер представлен функцией
wavemngr, которая имеет следующие формы:
wavemngr(['add',]FN,FSN,WT,NUMS,FILE),
wavemngr(['add',]FN,FSN,WT,NUMS,FILE,B),
wavemngr(['add',]FN,FSN,WT,{NUMS,TYPNUMS},FILE),
wavemngr(['add',]FN,FSN,WT,{NUMS,TYPNUMS},FILE,B)
Входные параметры этой функции: FN — название семейства, FSN — короткое название семейства, WT — определяет тип вейвлета, NUMS — cписок параметров вейвлета, разделенных пробелами, заканчивающийся двумя звездочками
**, TYPNUMS — формат входного значения ('integer', 'real' или 'string', FILE —
имя MAT или m-файла, B — вектор нижней и верхней границы эффективной
поддержки вейвлетов. Значения параметра WT могут быть следующими:
•
•
•
•
•
WT
WT
WT
WT
WT
=
=
=
=
=
1,
2,
3,
4,
5,
для
для
для
для
для
ортогонального вейвлета;
биортогонального вейвлета;
вейвлета с масштабирующей функцией;
вейвлета без масштабирующей функции;
комплексного вейвлета без масштабирующей функции.
Эта функция выходных параметров обычно не имеет, за исключением следующих вариантов ее записи:
OUT1 = wavemngr('read') — возвращает названия всех семейств вейвлетов;
OUT1 = wavemngr('read',IN2) — возвращает названия всех вейвлетов
(IN2 — любое число);
OUT1 = wavemngr ('read_asc') — выводит на экран содержание всех файлов информации о вейвлетах в формате ASCII.
В следующем примере функция wavemngr считывает полные и краткие наименования всех типов вейвлетов, которые входят в пакет Wavelet Toolbox:
>> wavemngr('read')
ans =
===================================
Haar
haar
Daubechies
db
Symlets
sym
Coiflets
coif
BiorSplines
bior
ReverseBior
rbio
Meyer
meyr
DMeyer
dmey
Gaussian
gaus
Mexican_hat
mexh
Morlet
morl
Complex Gaussian
cgau
Shannon
shan
Frequency B-Spline
fbsp
126
2.7. Вейвлеты в пакете Wavelet Toolbox СКМ MATLAB
Complex Morlet
cmor
===================================
А в следующем примере выводится лист с перечнем всех вейвлетов
wavemngr('read',1)
ans =
===================================
Haar
haar
===================================
Daubechies
db
-----------------------------db1db2db3db4
db5db6db7db8
db9db10db**
===================================
Symlets
sym
-----------------------------sym2
sym3
sym4
sym5
sym6
sym7
sym8
sym**
===================================
Coiflets
coif
-----------------------------coif1
coif2
coif3
coif4
coif5
===================================
BiorSplines
bior
-----------------------------bior1.1bior1.3
bior1.5
bior2.2
bior2.4bior2.6
bior2.8
bior3.1
bior3.3bior3.5
bior3.7
bior3.9
bior4.4bior5.5
bior6.8
===================================
ReverseBior
rbio
-----------------------------rbio1.1rbio1.3
rbio1.5
rbio2.2
rbio2.4rbio2.6
rbio2.8
rbio3.1
rbio3.3rbio3.5
rbio3.7
rbio3.9
rbio4.4rbio5.5
rbio6.8
===================================
Meyer
meyr
127
Глава 2. Вейвлеты и вейвлет-преобразования
===================================
DMeyer
dmey
===================================
Gaussian
gaus
----------------------------gaus1
gaus2
gaus3
gaus4
gaus5
gaus6
gaus7
gaus8
gaus**
===================================
Mexican_hat
mexh
===================================
Morlet
morl
===================================
Complex Gaussian
cgau
----------------------------cgau1
cgau2
cgau5
cgau**
cgau3
cgau4
===================================
Shannon
shan
----------------------------shan1-1.5
shan1-1
shan1-0.5
shan1-0.1
shan2-3shan**
===================================
Frequency B-Spline
fbsp
-----------------------------fbsp1-1-1.5
fbsp1-1-1
fbsp2-1-0.5
fbsp2-1-0.1
fbsp1-1-0.5
fbsp2-1-1
fbsp**
===================================
Complex Morlet
cmor
-----------------------------cmor1-1.5
cmor1-1
cmor1-0.5
cmor1-0.5
cmor1-0.1
cmor**
cmor1-1
===================================
В последнем примере показано, как можно задать новый вейвлет с именем Leirina
>> wavemngr('add','Leirina','lei',1,'1 2 3 4 5','leirinaf');
Теперь можно проверить, что этот вейвлет вошел в общий список типов вейвлетов:
>> wavemngr('read')
128
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
При исполнении этой команды будет получен ранее приведенный список типов вейвлетов, дополненный новым:
Leirina
lei
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
2.8.1. Множество фильтров биортогонального вейвлета — biorfilt
Как было показано в теоретическом разделе этой главы, весьма плодотворным
в технике вейвлет-преобразований является частотный подход, основанный на
особенностях квадратурных фильтров. В пакет Wavelet Toolbox входит ряд функций для создания вейвлет-фильтров низких и высоких частот. Большинство таких
функций имеет имя в виде имени вейвлет-функции с буквой «f» в конце.
Обычно декомпозиция сигнала при вейвлет-преобразовании типа фильтрации
заключается в фильтрации сигнала двумя фильтрами — низкочастотным Lo и высокочастотным Hi. Каждый из фильтров представляет пару наборов коэффициентов разного уровня — аппроксимирующих коэффициентов R, грубо представляющих сигнал, и детализирующих коэффициентов D. Указанные выше функции и
служат для создания этих наборов коэффициентов.
Функция
[Lo_D,Hi_D,Lo_R,Hi_R] = biorfilt(DF,RF)
возвращает четыре фильтра, связанных с биортогональным вейвлетом:
Lo_D
Hi_D
Lo_R
Hi_R
—
—
—
—
узкополосный фильтр разложения;
широкополосный фильтр разложения;
узкополосный фильтр восстановления;
широкополосный фильтр восстановления.
Другой вариант этой функции
[Lo_D1,Hi_D1,Lo_R1,Hi_R1,Lo_D2,Hi_D2,Lo_R2,Hi_R2]=biorfilt(DF,
RF,'8')
возвращает восемь фильтров, первые четыре из которых связаны с вейвлет-разложением, следующие четыре связаны с вейвлет-восстановлением.
Из теории фильтрации сигналов хорошо известно, что если одни и те же фильтры с конечной импульсной характеристикой (КИХ или FIR) используются и для
разложения и для восстановления, то симметричное и точное восстановление невозможно. Исключением является фильтр Хаара. Следовательно, с биортогональными фильтрами используются два вейвлета вместо только одного:
~ используется в анализе, и коэффициенты сигнала s следую• один вейвлет ψ
щие: ~
c j ,k =
∫ s (k )ψ~
j ,k
(x )dx ;
• другой вейвлет ψ используется при синтезе: s =
∑ ~c
j ,k
ψ j ,k .
j ,k
Здесь и далее, как в оригинале, мы используем независимую переменную x
(при переходе во временную область t = x). Указанные два вейвлета взаимосвязаны в соответствии с выражениями:
129
Глава 2. Вейвлеты и вейвлет-преобразования
∫ ψ~
j ,k
(x )ψ j ′,k ′ (x )dx = 0 если j ≠ j′ и k ≠ k′
и
∫ϕ
0,k
(x )ϕ 0,k ′ (x )dx = 0 если k ≠ k′.
Следующий пример задает представление на одном графике четырех вейвлет-фильтров на основе биортогональных вейвлетов:
[Rf,Df] = biorwavf('bior3.5'); [Lo_D,Hi_D,Lo_R,Hi_R] =
biorfilt(Df,Rf);
subplot(221); stem(Lo_D); title('Dec. low-pass filter bior3.5');
subplot(222); stem(Hi_D); title('Dec. high-pass filter bior3.5');
subplot(223); stem(Lo_R); title('Rec. low-pass filter bior3.5');
subplot(224); stem(Hi_R); title('Rec. high-pass filter bior3.5');
Коэффициенты фильтров представлены линейчатыми диаграммами (рис. 2.22),
что позволяет легко сравнивать эти фильтры. Все строки этого примера, кроме наиболее важной первой, задают
построение линейчатых диаграмм в подокнах окна графики. Эти, как и другие подобные, графики получены с помощью средств графического интерфейса пользователя (GUI) системы
MATLAB 6/6.1.
Для более полной иллюстрации возможностей биортогональных вейвлетов
на рис. 2.23 представлены пары вейвлет-функций для вейвлетов bior1.5, bior2.4 и bior2.8.
Аналогичные пары вейвлет-функРис. 2.22. Графики коэффициентов
ций для вейвлетов bior3.3, bior3.7 и biчетырех фильтров биортогольного
or4.4 показаны на рис. 2.24.
вейвлета
Рис. 2.23. Пары вейвлет-функций для
вейвлетов bior1.5, bior2.4 и bior2.8
130
Рис. 2.24. Пары вейвлет-функций для
вейвлетов bior3.3, bior3.7 и bior4.4
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
Представленные вейвлеты дают разнообразные возможности для приближения
сигналов. Среди биортогональных вейвлетов есть вейвлеты с достаточно высокой
гладкостью, а есть и вейвлеты с резкими изгибами и острыми пиками вейвлет-функции.
2.8.2. Множество фильтров ортогонального вейвлета — orthfilt
Функция [Lo_D,Hi_D,Lo_R,Hi_R] = orthfilt(W) возвращает четыре фильтра ортогонального вейвлета, связанных с масштабирующим фильтром W. Выходные параметры функции задают:
•
•
•
•
Lo_D — узкополосный фильтр разложения;
Hi_D — широкополосный фильтр разложения;
Lo_R — узкополосный фильтр восстановления;
Hi_R — широкополосный фильтр восстановления.
Схему их вычисления можно найти в справке по этой функции. Для ортогонального вейвлета одно из фундаментальных соотношений — это соотношение со
сдвоенным масштабом
1 x
ϕ  =
2  2
∑ w ϕ (x − n ).
n
n ∈Z
Все фильтры, используемые функциями dwt и idwt, тесно связаны последовательностью (wn )n ∈Z . Если phi-функция имеет компактный носитель, то последовательность (wn) конечна и может рассматриваться как FIR-фильтр (с конечной импульсной характеристикой — КИХ).
Следующий пример командой load загружает вейвлет Добеши db8, строит его
график и графики коэффициентов фильтров (рис. 2.25):
load db8; w = db8;
subplot(321);plot(xval,psi); title('Wavelet');
subplot(322);stem(w); title('Original scaling filter');
[Lo_D,Hi_D,Lo_R,Hi_R] = orthfilt(w);
subplot(323); stem(Lo_D); title('Decomposition low-pass filter');
subplot(324); stem(Hi_D); title('Decomposition high-pass filter');
subplot(325); stem(Lo_R); title('Reconstruction low-pass filter');
subplot(326); stem(Hi_R); title('Reconstruction high-pass filter');
Рис. 2.26 показывает вид вейвлет-функции для вейвлетов Добеши db2—db10.
Нетрудно заметить, что гладкость вейвлетов Добеши возрастает по мере увеличения их номера. Одновременно растет и частота осцилляций.
Вейвлеты Добеши как наиболее типичные среди ортогональных вейвлетов широко используются в практике вейвлет-анализа и вейвлет-преобразований. Иногда
надо считаться с тем, что эти вейвлеты несимметричны, так что для них понятие
средней частоты не совсем корректно.
131
Глава 2. Вейвлеты и вейвлет-преобразования
Рис. 2.25. Графики вейлета Добеши db8 и коэффициентов производных
от него фильтров
Рис. 2.26. Вейвлет-функции для вейвлетов Добеши db2—db10
2.8.3. Фильтры ортогональных или биортогональных вейвлетов —
wfilters
Функция [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters ('wname') возвращает четыре фильтра, связанные с ортогональным или биортогональным вейвлетом,
указанным в строке 'wname'. Назначение выходных параметров здесь очевидно,
поскольку уже описывалось. В связи с этим ограничимся примером применения
функции wfilters для задания четырех типов фильтров на основе вейвлета Добеши db8:
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('db8');
subplot(221); stem(Lo_D); title('Decomposition low-pass filter');
subplot(222); stem(Hi_D); title('Decomposition high-pass
filter');
subplot(223); stem(Lo_R); title('Reconstruction low-pass filter');
subplot(224); stem(Hi_R); title('Reconstruction high-pass filter');
xlabel('The four filters for db8')
132
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
Представление их коэффициентов в виде диаграмм отсчетов представлено на
рис. 2.27.
Рис. 2.27. Представление коэффициентов фильтра вейвлета db8
2.8.4. Биортогональный сплайновый вейвлет-фильтр — biorwavf
Функция [RF,DF] = biorwavf(W) возвращает два масштабирующих фильтра,
относящихся к ортогональному wavelet, указанному в строке W. Строка W записывается в виде 'biorNr.Nd', где возможные комбинации Nr и Nd соответствуют
приведенным ниже данным:
Nr
Nr
Nr
Nr
Nr
Nr
=
=
=
=
=
=
1
2
3
4
5
6
Nd
Nd
Nd
Nd
Nd
Nd
=
=
=
=
=
=
1 , 3 or 5
2 , 4 , 6 or 8
1 , 3 , 5 , 7 or 9
4
5
8
Выходными аргументами является пара фильтров: RF — фильтр восстановления и DF — фильтр разложения. Пример:
wname = 'bior3.1';
[rf,rd] = biorwavf(wname)
rf =
0.1250
0.3750
0.3750
rd =
-0.2500
0.7500
0.7500
0.1250
-0.2500
Вейвлет-функции для биортогональных вейвлетов мы уже описывали — см.
рис. 2.23 и 2.24.
133
Глава 2. Вейвлеты и вейвлет-преобразования
2.8.5. Комплексный гауссовский вейвлет — cgauwavf
Функция [PSI,X] = cgauwavf(LB,UB,N,P) возвращает значения P-й производной комплексной функции Гаусса
F (x ) = C p e −ix e − x
2
в N-й точке регулярной сетки на интервале [LB,UB]. Здесь величина Сp такая, что
вторая норма P-й производной функции F(x) стремится к 1. Выходным аргументом является функция PSI, вычисленная на сетке X. Следующий пример строит
графики действительной и мнимой частей комплексного гауссова вейвлета (гауссиана) порядка 5 (рис. 2.28):
lb = -5; ub = 5; n = 1000; [psi,x] = cgauwavf(lb,ub,n,5);
subplot(211); plot(x,real(psi)); xlabel('Real part'), grid
subplot(212); plot(x,imag(psi)); xlabel('Imaginary part'), grid
2.8.6. Комплексный вейвлет Морле — cmorwav
Функция [PSI,X] = cmorwavf(LB,UB,N,FB,FC) возвращает значения комплексного вейвлета Морле, определенного положительным параметром ширины
полосы частот FB, центральной частотой wavelet FC и выражением:
PSI(X) = ((pi*FB)^(-0.5))*exp(2*i*pi*FC*X)*exp(-X^2/FB)
в N-точках регулярной сетки на интервале [LB,UB]. Выходным аргументом является вейвлет-функция PSI, вычисленная на сетке X. Приведенный ниже пример
строит графики действительной и мнимой частей комплексного вейвлета Морле с
заданными в первой строке параметрами (рис. 2.29):
fb = 0.75; fc = 1; lb = -4; ub = 4; n = 500;
[psi,x] = cmorwavf(lb,ub,n,fb,fc);
subplot(211); plot(x,real(psi)); xlabel('Real part'), grid
subpl+ot(212); plot(x,imag(psi)); xlabel('Imaginary part'), grid
Рис. 2.28. Графики действительной
и мнимой частей для комплексного
гауссова вейвлета порядка 5
134
Рис. 2.29. Графики действительной
и мнимой частей комплексного
вейвлета Морле
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
2.8.7. Вейвлет-фильтр Койфлета — coifwavf
Функция F = coifwavf(W) возвращает масштабирующий фильтр для вейвлета
Койфлета, определенного строкой W. Строка W задается как 'coifN', где N — целое число от 1 до 5. Пример:
>> wname = 'coif2';
f = coifwavf(wname)
f =
Columns 1 through 7
0.0116 -0.0293 -0.0476 0.2730 0.5747 0.2949 -0.0541
Columns 8 through 12
-0.0420 0.0167 0.0040 -0.0013 -0.0005
Вид вейвлет-функции для трех вейвлетов Койфлета показан на рис. 2.30.
Рис. 2.30. Вейвлет-функции для вейвлетов Койфлета порядка 1, 2 и 3
2.8.8. Вейвлет-фильтр Добеши — dbaux и dbwavf
Вейвлеты Добеши — одни из самых известных. Госпожа Ингрид Добеши внесла огромный вклад в создание теории вейвлетов. Функция W = dbaux(N,SUMW) — возвращает масштабирующий фильтр Добеши порядка N, при
этом sum(W) = SUMW. Возможные значения для N — 1, 2, 3, ... Вычисление порядка N масштабирующего фильтра Добеши W выполняется за два шага:
1. Вычисление параметра P (в оригинале именуемого «Lagrange a trous») симметричного фильтра длиной (4N–1) и определенного как
P=[a(N) 0 a(N–1) 0 ... 0 a(1) 1 a(1) 0 a(2) 0 ... 0 a(N)],
где
1

 − i


2
i = − N +1
N
∏
a(k ) =
i ≠k
N
∏ (k − i )
для k = 1, K , N .
i = − N +1
i ≠k
2. Извлечение квадратного корня. При этом, если W является масштабирующим фильтром Добеши «dbN» sum√2, то W — квадратный корень P: P =
conv(wrev(w),w), где W — фильтр длиной 2N.
Вычисление масштабирующего фильтра Добеши «dbN» требует извлечения
корня полинома степени 4N. Нестабильность в вычислениях может проявляться
при очень большом N.
135
Глава 2. Вейвлеты и вейвлет-преобразования
Функция F = dbwavf(W) возвращает масштабирующий фильтр, связанный с
wavelet Добеши, определенным строкой W, где W = 'dbN' и N = 1, 2, 3, ..., 45.
Пример:
wname = 'db6';
f = dbwavf(wname)
f =
Columns 1 through 8
0.0789
0.3498
0.5311
-0.0918
0.0689
0.0195
Columns 9 through 12
-0.0223
0.0004
0.0034
0.2229
-0.1600
-0.0008
2.8.9. Частотный B-сплайновый вейвлет — fbspwavf
Функция [PSI,X] = fbspwavf(LB,UB,N,M,FB,FC) возвращает значения комплексной частоты B-сплайнового вейвлета, определенного порядком M (целое
число 1 ≤ M), шириной полосы частот FB, центральной частотой wavelet FC. Функция PSI вычисляется, используя следующее выражение:
PSI(X) = (FB^0.5)*((sinc(FB*X/M).^M).*exp(2*i*pi*FC*X))
в N-точках регулярной сетки в интервале [LB,UB]. FB и FC должны быть такие,
что FC > FB/2 > 0. Выходными аргументами являются вейвлет-функция PSI, вычисленная на сетке X. Пример, приведенный ниже, строит графики действительной и мнимой частей комплексного вейвлета Морле с заданными в первой строке
параметрами (рис. 2.31):
Рис. 2.31. Графики действительной и мнимой частей частотного
B-сплайнового вейвлета
m = 3; fb = 1; fc = 0.75; lb = -10; ub = 10; n = 500;
[psi,x] = fbspwavf(lb,ub,n,m,fb,fc);
subplot(211); plot(x,real(psi));
xlabel('Real part'), grid; subplot(212)
plot(x,imag(psi)); xlabel('Imaginary part'), grid
136
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
2.8.10. Гауссовый вейвлет — gauswavf
Функция [PSI,X] = gauswavf(LB,UB,N,P) возвращает значения P-й производной функции Гаусса
F (x ) = C p e − x .
2
в N-точках регулярной сетки для интервала [LB,UB]. Значение Cp такое, что
2-норма P-й производной функции F стремится к 1. Построение графика
(рис. 2.32) гауссового вейвлета (гауссиана) порядка 10 представлено следующим
примером:
lb = -5; ub = 5; n = 1000;
[psi,x] = gauswavf(lb,ub,n,10);
plot(x,psi); grid
2.8.11. Вейвлет «мексиканская шляпа» — mexihat
Функция [PSI,X] = mexihat(LB,UB,N) возвращает значения вейвлета, известного под образным названием «мексиканская шляпа», в N-точках регулярной
сетки X на интервале [LB,UB]. Выходными аргументами является вейвлет-функция PSI, вычисленная на сетке X:
−x
 2 14 
ψ (x ) = 
π  1 − x2 e 2 .
 3

(
)
2
Эта функция (тут она дана без упрощений, использованных в начале этой главы) пропорциональна второй производной гауссовой функции плотности вероятности. Вид этого вейвлета (рис. 2.33) позволяет наблюдать следующий пример:
lb = -6; ub = 6; n = 500;
[psi,x] = mexihat(lb,ub,n); plot(x,psi)
Обратите внимание на то, что иногда вейвлет-функцию такого вейвлета изображают в перевернутом виде.
Рис. 2.32. График Гауссового вейвлета
10-го порядка
Рис. 2.33. График вейвлета
«мексиканская шляпа»
137
Глава 2. Вейвлеты и вейвлет-преобразования
2.8.12. Вейвлет-функция Мейера — meyer и meyeraux
Вейвлет-функции Мейера определены в частотной области следующим образом:
−
3
4π
π
  2π
^ (ω ) = (2 π ) 2 eiω sin  v 
≤ ω ≤
ψ
ω − 1 
 3
 2  2π
3
1
−
3
8π
π
  4π
^ (ω ) = (2 π ) 2 eiω cos v 
≤ ω ≤
ψ
ω − 1 
 3
 2  4π
3
1
2 π 8π
^ (ω ) = 0 ω ∉  ; 
ψ
 3 3 
v (a ) = a 4 (35 − 84a + 70a 2 − 20a 3 ) a ∈[0, 1]
Соответствующая масштабирующая функция есть:
ψ(ω ) = (2 π )
−
1
2
ω ≤
2π
3
−
3
4π
π
  2π
^ (ω ) = (2 π ) 2 eiω cos v 
≤ ω ≤
ψ
ω − 1 
 3
 2  2π
3
1
^ (ω ) = 0 ω >
ψ
4π
3
Функция [PHI,PSI,T] = meyer(LB,UB,N) возвращает масштабирующую
функцию и вейвлет-функцию Мейера, вычисленную в N-точках регулярной сетки
в интервале [LB,UB]. Переменная N должна быть степенью числа 2. Выходными
параметрами являются масштабирующая функция PHI и вейвлет-функция PSI,
вычисленные на сетке T. Если требуется в качестве выходного параметра получить
только одну из перечисленных функций, то требуется четвертый аргумент:
[PHI,T] = meyer(LB,UB,N,'phi') или [PSI,T] = meyer(LB,UB,N,'psi')
Следующий пример строит графики вейвлета Мейера и его масштабирующей
функции (рис. 2.34):
lb = -5; ub =
[phi,psi,x] =
subplot(211),
subplot(212),
10; n = 1024;
meyer(lb,ub,n);
plot(x,psi); title('Meyer wavelet')
plot(x,phi); title('Meyer scaling function')
Если использовать функцию Y=meyeraux(x), можно вычислять дополнительную функцию, которая описывается полиномом 35x4 – 85x5 + 70x6 – 20x7.
2.8.13. Вейвлет Морле — morlet
Функция [PSI,X] = morlet(LB,UB,N) возвращает значения вейвлета Морле
в N точках регулярной сетки на интервале [LB,UB]. Выходными аргументами является вейвлет-функция PSI, вычисленная на сетке X и сетка X:
ψ(x ) = e
138
−
x2
2
cos(5x ).
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox
Рис. 2.34. График вейвлета Мейера
Рис. 2.35. График вейвлета Морле
Для построения графика этой функции (рис. 2.35) можно использовать следующий пример:
lb = -5; ub = 10; n = 512;
[psi,x] = morlet(lb,ub,n);
plot(x,psi), title('Morlet wavelet')
2.8.14. Обратный биортогональный вейвлет-фильтр — rbiowavf
Функция [RF,DF] = rbiowavf(W) возвращает два масштабирующих фильтра,
связанных с биортогональным вейвлетом, определенным строкой W. W = 'rbioNr.Nd', где возможные значения для Nr и Nd: следующие
Nr
Nr
Nr
Nr
Nr
Nr
=
=
=
=
=
=
1
2
3
4
5
6
Nd
Nd
Nd
Nd
Nd
Nd
=
=
=
=
=
=
1 , 3, 5
2 , 4 , 6, 8
1 , 3 , 5 , 7, 9
4
5
8
Выходными аргументами являются два фильтра: фильтр разложения RF и
фильтр восстановления DF. Пример:
[rf,df] = rbiowavf('rbio3.1')
rf =
-0.2500 0.7500 0.7500 -0.2500
df =
0.1250 0.3750 0.3750 0.1250
2.8.15. Вейвлет-фильтр Шеннона
Функция [PSI,X] = shanwavf(LB,UB,N,FB,FC) возвращает значения комплексного вейвлета Шеннона, определенного параметром ширины полосы частот
FB, центральной частотой FC и выражением:
PSI(X) = (FB^0.5)*(sinc(FB*X).*exp(2*i*pi*FC*X))
139
Глава 2. Вейвлеты и вейвлет-преобразования
в N точках регулярной сетки на интервале [LB,UB]. Причем FB и FC должны
быть такими, что FC > FB/2 > 0. Выходным аргументом является wavelet-функция
PSI, вычисленная на сетке X.
2.8.16. Масштабирующие фильтры вейвлета Симлета — symaux и
symwavf
Функция W = symaux (N,SUMW) возвращает масштабирующий фильтр Симлета порядка N, такой что SUM(W) = SUMW. N принимает следующие возможные
значения 1, 2, 3, ... Симлет-вейвлет — это наименьший асимметричный вейвлет
Добеши. Пример, представленный ниже, в особых комментариях не нуждается:
>> wdb6 = dbaux(6)
wdb-6 =
Columns 1 through 8
0.0789
0.3498
0.5311
0.2229
-0.0918
0.0689
0.0195
Columns 9 through 12
-0.0223 0.0004 0.0034 -0.0008
-0.1600
F = symwavf (W) возвращает масштабирующий фильтр, связанный с Симлет-вейвлетом, определяемым строкой W, где W ='symN'. N принимает значения
2, 3, ..., 45.
>> w = symwavf('sym5')
w =
Columns 1 through 8
0.0138
-0.0149
-0.1240
0.5115
0.1410
-0.0277
Columns 9 through 10
0.0209 0.0193
0.0117
0.4483
2.9. Сравнение вейвлетов разного типа
Сейчас выбор вейвлетов довольно обширен. Как было только что показано, только в пакете Wavelet Toolbox 2.0/2.1/2.2 представлено полтора десятка базовых
типов вейвлетов и множество вариантов для ряда базовых типов вейвлетов. Однако необоснованное применение того или иного типа вейвлета способно привести
к разочарованию. Поэтому ниже обобщены основные свойства вейвлетов различного типа. Их учет позволяет подбирать наиболее подходящие типы вейвлетов для
решения конкретных задач обработки сигналов и изображений.
Такой выбор надо рассматривать как «пробу пера». Разумеется, при решении
серьезных задач в области обработки сигналов и изображений необходимо применение хотя бы нескольких типов вейвлетов с последующим сравнением результатов и выбором наилучших из них.
2.9.1. Грубые (Crude) вейвлеты
К «грубым» вейвлетам относятся вейлеты Гауссова типа (gaus), Морле (morlet)
и «мексиканской шляпы» (mexihat). Они обладают минимумом свойств, которыми
140
2.9. Сравнение вейвлетов разного типа
должны обладать вейвлеты, обеспечивающие полноценные возможности в технике преобразования сигналов:
•
•
•
•
•
•
•
функция phi у них отсутствует;
анализ не является ортогональным;
функция psi не имеет компактного носителя;
возможность реконструкции не гарантирована;
возможна непрерывная декомпозиция;
главные свойства: симметричность, функция psi задается явно;
быстрые алгоритмы преобразований и точная реконструкция невозможны.
2.9.2. Бесконечные регулярные вейвлеты
К бесконечным регулярным вейвлетам принадлежат вейвлеты Мейера (meyr).
Они имеют следующие свойства:
•
•
•
•
•
имеют функцию phi и их анализ ортогональный;
функции psi и phi не определены явно;
функции psi и phi не имеют компактного носителя;
вейвлеты симметричны и регулярны в бесконечности;
быстрый алгоритм преобразований не поддерживается.
У этих вейвлетов возможны следующие методы анализа:
• непрерывные преобразования;
• дискретные преобразования, но без FIR-фильтров.
Еще один вейвлет этого типа — дискретный вейвет Мейера (dmey). Его свойства:
• аппроксимация фильтром класса FIR;
• поддержка непрерывного и дискретного преобразований.
2.9.3. Ортогональные вейвлеты с компактным носителем
К этим вейвлетам относятся вейвлеты Добеши (dbN), Симлета (symN) и Койфлета (coifN). Их основные свойства:
•
•
•
•
функция phi имеется и анализ относится к ортогональному типу;
функции имеют определенное число моментов исчезновения;
функции psi и phi имеют компактный носитель;
возможны непрерывные преобразования и дискретные преобразования с
применением быстрого вейвлет-преобразования;
• обеспечивается принципиальная возможность реконструкции сигналов и
функций.
Некоторые трудности: недостаточная периодичность. Специфические проблемы:
• вейвлеты dbN несимметричны;
• вейвлеты symN: близки с симметричным;
• вейвлеты coifN: отсутствие симметрии, функций phi и psi, наличие моментов исчезновения.
141
Глава 2. Вейвлеты и вейвлет-преобразования
2.9.4. Биортогональные парные вейвлеты с компактным
носителем
К ним относятся B-сплайновые биортогональные вейвлеты (biorNr.Nd и rbioNr.Nd). Они имеют следующие свойства:
• функция phi имеется и анализ относится к биортогональному типу;
• обе функции psi и phi для декомпозиции и реконструкции имеют компактный носитель;
• phi и psi для декомпозиции имеют моменты исчезновения;
• psi и phi для реконструкции могут иметь периодичность.
Возможные виды анализа — непрерывное преобразование и дискретное преобразование с использованием алгоритма быстрого вейвлет-преобразования.
Наиболее существенные достоинства: симметрия с фильтрами, желаемые свойства для разложения и восстановления разделены, возможно их хорошее распределение. Наиболее существенные трудности: отсутствие ортогональности.
2.9.5. Комплексные вейвлеты
К комплексным относится довольно большая группа вейвлетов: Гаусса (cgauN), Морле (cmorFb-Fc), Шенона (shanFb-Fc) и частотные B-сплайновые вейвлеты (fbspM-Fb-Fc). Они обладают минимальными свойствами:
•
•
•
•
•
функция phi отсутствует;
анализ не ортогональный;
функция psi не имеет компактного носителя;
свойства реконструкции не гарантируются;
возможен анализ типа комплексной декомпозиции.
Трудности применения: быстрый алгоритм и реконструкция невозможны.
Итак, мы рассмотрели множество вейвлетов, входящих в пакет расширения
Wavelet Toolbox системы MATLAB 6.0/6.1/6.5. Эти вейвлеты (или их большинство) входят и в состав пакетов расширения других СКМ, например Mathcad или
Mathematica.
ВНИМАНИЕ Обилие классов вейвлетов и их конкретных реализаций в каждом классе
позволяет легко использовать для решения каждой практической задачи
наиболее подходящий тип вейвлета. По-видимому, в настоящее время создание новых типов вейвлетов рационально только при решении новых и довольно специфических задач и при условии, что для этого не удается подобрать подходящий тип вейвлета из числа описанных.
2.10. Примеры вейвлет-обработки данных, сигналов и
изображений
2.10.1. Вейвлет- и вейвлет/медианное сглаживание
Одной из перспективных областей применения вейвлет-преобразований является вейвлет-сглаживание данных и зашумленных зависимостей. В этой главе рассмотрим эту возможность, используя только встроенные в ядро системы Mathcad
функции wave и iwave, реализующие работу с вейвлетами Добеши четвертного
142
2.10. Примеры вейвлет-обработки данных, сигналов и изображений
порядка. Это отнюдь не гладкие вейвлеты и сглаживаемые с их помощью функции имеют признаки фрактальных структур, что, конечно, не способствует наилучшему сглаживанию. Поэтому наряду со сглаживанием вейвлетами разумно
применять дополнительное сглаживание каким-либо другим методом сглаживания.
Рисунок 2.36 показывает применение вейвлет и вейвлет/медианного сглаживания на примере сглаживания нестационарного сигнала в виде сильно зашумленной синусоиды с падающей во времени частотой.
Рис. 2.36. Пример вейвлет- и вейвлет/медианного сглаживания
Само по себе прямое и обратное вейвлет-преобразования свойствами сглаживания не обладают, поскольку идеально восстанавливают исходный произвольный
сигнал независимо от его формы. Для осуществления вейвлет-сглаживания надо
уменьшить число используемых при синтезе сигнала вейвлет-коэффициентов.
В нашем случае это достигается снижением уровня преобразований с максимального уровня 8 до 6.
На рис. 2.36 показаны следующие графики (сверху вниз):
• исходный зашумленный сигнал;
• сглаженный вейвлетами сигнал с уровнем преобразования 6;
• сигнал, сглаженный только методом скользящей медианы с помощью
функции medsmoot;
• сигнал, сглаженный комбинированным методом;
• исходный сигнал без шума.
Можно заметить, что как вейвлет, так и медианное сглаживания сами по себе
достаточно эффективны, но не избавляют полностью полученный сигнал от высокочастотных компонент как шума, так и самих вейвлет-коэффицициентов. Комбинированный метод сглаживания дает лучшие результаты — высокочастотные
«пички» при нем сглажены. Объективную оценку сглаживания может дать только
оценка соответствия результатов сглаживания с результатами представления исходной зависимости. В правой части рис. 2.36 представлены результаты вычисления суммарной (по всем точкам) среднеквадратической погрешности между сгла-
143
Глава 2. Вейвлеты и вейвлет-преобразования
женной и идеальной кривыми сигнала. Хорошо видно, что минимальную погрешность обеспечивает комбинированный вейвлет/медианный метод сглаживания.
2.10.2. Комбинированное сглаживание вейвлетами и фильтром
«скользящее среднее»
Рассмотрим еще один пример комбинированного сглаживания, который представлен на рис. 2.37. Тут задан нестационарный сигнал еще более сложной зависимости — в виде сильно зашумленной синусоиды с растущими во времени амплитудой и частотой. Вначале сигнал обрабатывается с помощью вейвлет-преобразований с уровнем 7 (при максимальном уровне 9), а затем явно реализованным
фильтром типа «скользящее среднее».
Рис. 2.37. Пример сглаживания нестационарного сигнала вейвлетами и фильтром
«скользящее среднее»
Высокая степень сглаживания в данном примере вполне очевидна. Можно отметить, что сглаживание является одновременно и эффективным средством очистки сигнала от шума.
Примененная реализация фильтра не учитывает необходимость смены выражений для сглаживания в концевых точках, что ведет к росту погрешности вблизи от
них. Впрочем, при использовании этого метода при поточной информации данный недостаток не сказывается.
2.10.3. Вейвлет-сплайновое сглаживание
Сплайны также могут использоваться, наряду с вейвлетами, для сглаживания
сложных зависимостей. На рис. 2.38 представлен документ, в котором сглаживанию подвергается нестационарный сигнал в виде искаженной (возведением в кубическую степень) синусоиды с нарастающим периодом и амплитудой, имеющий
шумовую компоненту. Такой сигнал имеет характерную уплощенную область в
моменты перехода синусоиды через нуль.
Нетрудно заметить, что эта особенность прослеживается и после сглаживания.
Для эффективного сглаживания сплайнами нужно правильно подобрать началь-
144
2.10. Примеры вейвлет-обработки данных, сигналов и изображений
Рис. 2.38. Пример вейвлет-сплайнового сглаживания нестационарного сигнала
ную точку отсчета и шаг вывода кривой. Рисунок 2.38 показывает еще одну иногда полезную возможность — инверсию сглаженного сигнала во времени.
В заключении еще раз отметим, что в данных примерах использовались довольно грубые вейвлеты, с явно выраженной фрактальной структурой.
2.10.4. Вейвлет-обработка и компрессия изображения
Для многих вейвлет-обработка изображений кажется настолько сложной, что
ее нереально выполнять в системе Mathcad. Тем более что в ядре системы имеется
всего две функции — для прямого и обратного преобразований одномерного массива, тогда как даже монохромные рисунки представляются двумерными массивами. Ниже представлен документ, который показывает что вейлет-обработка изображений вполне возможна в системе Mathcad, даже без применения специальных
пакетов расширения.
На рис. 2.39 представлено начало документа, в котором выполняется прямое
двумерное вейвлет-преобразование сигнала изображения, которое хранится в графическом файле формата BMP и задается число (в процентах) удаляемых вейвлет-коэффициентов thres. Идея преобразования достаточно проста — двумерный массив изображения M развертывается в одномерный и задается функция
двумерного вейвлет-преобразования wave2D. После этого мы получаем матрицу
вейвлет-коэффициентов N.
Для пояснения смысла вейвлет-преобразований в левой части рис. 2.39 представлена исходная матрица изображения M и матрица вейвлет-коэффициентов N.
Элементы матрицы M — целые числа от 0 до 255, которые характеризуют яркость
каждой точки изображения — от черного цвета 0 до белого 255. Элементы матрицы N — вейвлет-коэффициенты, которые представляют собой по существу временные зависимости.
Следующая часть документа (рис. 2.40) демонстрирует технику компрессии
изображения и его восстановления. Здесь после вычисления вспомогательных
функций задается вычисление порога th. Если какой-то вейвлет-коэффициент
имеет абсолютное значение меньше th, ему просто задается нулевое значение.
145
Глава 2. Вейвлеты и вейвлет-преобразования
Рис. 2.39. Прямое вейвлет-преобразование изображения из графического файла
Рис. 2.40. Обратное вейвлет-преобразование изображения с компрессией
В результате получается разреженная матрица N, файл которой можно подвергнуть эффективной компрессии любым архиватором.
На рис. 2.41 построено исходное изображение (по матрице M) и изображение,
полученное в результате вейвлет-преобразований и компрессии (по матрице M1).
Нетрудно заметить, что несмотря на высокую степень компрессии (использовалось только 5% ненулевых вейвлет-коэффициентов, что соответствует степени
идеализированной компрессии 20) изображение достаточно отчетливо, хотя и
146
2.10. Примеры вейвлет-обработки данных, сигналов и изображений
имеет заметные погрешности в сравнении с оригиналом. Помимо огрубления передачи полутонов заметны светлые точки на наиболее темных участках изображения. Это типичное проявление эффекта Гиббса, жесткости примененных вейвлетов DB4 и резкого порога удаления вейвлет-коэффициентов.
Рис. 2.41. Исходное (слева) и преобразованное (справа) изображения
при степени компрессии 20
Указанные погрешности изображения заметно уменьшаются при уменьшении
степени компрессии. На рис. 2.42 показано сравнение оригинального изображения с изображением, в котором сохранено только 20% коэффициентов (идеализированная степень сжатия 5). В этом случае разницу в изображениях приметить довольно трудно.
Рис. 2.42. Исходное (слева) и преобразованное (справа) изображения
при степени компрессии 5
В главе 5 мы рассмотрим более совершенные способы обработки и компрессии
изображений, основанные на применении более совершенных для решения этой
задачи вейвлетов и более тонких методов удаления вейвлет-коэффициентов.
А пока лишь отметим, что реальная степень сжатия изображений, конечно, меньше приведенных идеализированных оценок. Надо считаться с затратами памяти
на реализацию алгоритмов сжатия, а также с тем, что для представления вейвлет-коэффициентов необходимо представление чисел в формате плавающей точки, требующее повышенных затрат памяти.
147
Глава 2. Вейвлеты и вейвлет-преобразования
2.10.5. Двумерные способы декомпозиции изображений
Реализация быстрых алгоритмов обработки изображений часто базируется на
фильтровых способах с применением одной матрицы, хранящей изображение.
Один из наиболее часто применяемых способов фильтровой обработки изображений представлен на рис. 2.43.
Вначале матрица (двумерный
массив) изображения обрабатывается НЧ- и ВЧ-фильтрами с равной
граничной частотой L1 и H1. Матрица делится на две части, в которой размещены подверженные фильтрации фрагменты изображения.
Затем фрагмент L1 делится на два
фрагмента L2 и H2 и так далее.
Структура матрицы и хранящихся в
ней фрагментов изображений представлена на рис. 2.43.
Еще один пример такого рода, с
показом реальных фрагментов преРис. 2.43. Способ фильтровой обработки
образуемого изображения, представизображения — Original Image
лен на рис. 2.44. Изображение в
этом случае рассматривается как
функция двух переменных f(x,y), формула декомпозиции изображения представлена на рисунке сверху.
Разумеется, есть и другие способы декомпозиции изображений, например
основанные на пакетных вейвлетах. Мы рассмотрим их в главах 3 и 4.
Рис. 2.44. Пример двумерной вейвлет-декомпозиции изображений
148
Глава 3. Работа с Wavelet Toolbox
в командном режиме
3.1. Краткая характеристика пакета расширения
Wavelet Toolbox
3.1.1. Назначение пакета Wavelet Toolbox
Пакет расширения систем MATLAB 6.0/6.1/6.5 Wavelet Toolbox 2/2.1/2.2 —
одно из новейших и мощных инструментальных средств для изучения, создания и
применения вейвлетов и проведения вейвлет-преобразований. Пакет представляет
пользователю обширные и одновременно уникальные возможности для работы с
вейвлетами, причем как в командном режиме, так и с помощью специальных
средств графического интерфейса пользователя (GUI) данного пакета. По обилию
типов вейвлетов и функций для обработки сигналов, а также по числу весьма поучительных и наглядных примеров в фирменном описании этот пакет является
лучшим среди пакетов расширения для СКМ в этой области (пакеты расширения
по вейвлетам есть и в новых реализациях СКМ Mathcad и Mathematica).
В этой главе вначале описываются средства, используемые в командном режиме работы. Пакет Wavelet Toolbox предоставляет:
• инструментальные средства для вейвлет-анализа и синтеза сигналов и изо•
•
•
•
•
•
•
бражений;
множество уже встроенных вейвлетов разного типа, в том числе пакетных;
возможность задания своего вейвлета с заданными свойствами;
средства обработки сигналов и изображений;
средства для непрерывного и дискретного вейвлет-анализа;
средства очистки сигналов от шума и специальной обработки;
средства обработки и компрессии сигналов изображений;
мощные средства визуализации вейвлетов и всех операций с ними.
Указанные средства предоставляются как на уровне функций, выполняемых из
командной строки или программных модулей, так и на уровне хорошо проработанного и удобного графического интерфейса пользователя (GUI).
3.1.2. Справка по пакету в командном режиме
Для получения общей справки по пакету или по функции с заданным именем
name_function нужно использовать команду:
help wavelet или help name_function
При исполнении первой команды выводится сообщение о версии пакета и
список функций, которыми пакет дополняет систему MATLAB:
>> help wavelet
Wavelet Toolbox
Version 2.2 (R13SP1) 22-Aug-2003
Wavelet Toolbox GUI (Graphical User Interface).
149
Глава 3. Работа с Wavelet Toolbox в командном режиме
wavemenu
— Start Wavelet Toolbox graphical user
interface tools.
Wavelets: General.
biorfilt
— Biorthogonal wavelet filter set.
centfrq
— Wavelet center frequency.
dyaddown
— Dyadic downsampling.
dyadup
— Dyadic upsampling.
intwave
— Integrate wavelet function psi.
orthfilt
— Orthogonal wavelet filter set.
qmf
— Quadrature mirror filter.
scal2frq
— Scale to frequency.
wavefun
— Wavelet and scaling functions.
wavefun2
— Wavelets and scaling functions 2-D.
wavemngr
— Wavelet manager.
wfilters
— Wavelet filters.
wmaxlev
— Maximum wavelet decomposition level.
Wavelet Families.
biorwavf
— Biorthogonal spline wavelet filters.
cgauwavf
— Complex Gaussian wavelet.
cmorwavf
— Complex Morlet wavelet.
coifwavf
— Coiflet wavelet filter.
dbaux
— Daubechies wavelet filter computation.
dbwavf
— Daubechies wavelet filters.
fbspwavf
— Complex Frequency B-Spline wavelet.
gauswavf
— Gaussian wavelet.
mexihat
— Mexican Hat wavelet.
meyer
— Meyer wavelet.
meyeraux
— Meyer wavelet auxiliary function.
morlet
— Morlet wavelet.
rbiowavf
— Reverse Biorthogonal spline wavelet
filters.
shanwavf
— Complex Shannon wavelet.
symaux
— Symlet wavelet filter computation.
symwavf
— Symlet wavelet filter.
Continuous Wavelet: One-Dimensional.
cwt
— Real or Complex Continuous wavelet
coefficients 1-D.
Discrete Wavelets: One-Dimensional.
appcoef
150
— Extract 1-D approximation coefficients.
3.1. Краткая характеристика пакета расширения Wavelet Toolbox
detcoef
— Extract 1-D detail coefficients.
dwt
— Single-level discrete 1-D wavelet
transform.
dwtmode
— Discrete wavelet transform extension mode.
idwt
— Single-level inverse discrete 1-D wavelet
transform.
upcoef
— Direct reconstruction from 1-D wavelet
coefficients.
upwlev
— Single-level reconstruction of 1-D wavelet
wavedec
— Multi-level 1-D wavelet decomposition.
waverec
— Multi-level 1-D wavelet reconstruction.
wenergy
— Energy for 1-D wavelet decomposition.
wrcoef
— Reconstruct single branch from 1-D wavelet
decomposition.
coefficients.
Discrete Wavelets: Two-Dimensional.
appcoef2
— Extract 2-D approximation coefficients.
detcoef2
— Extract 2-D detail coefficients.
dwt2
— Single-level discrete 2-D wavelet
dwtmode
— Discrete wavelet transform extension mode.
idwt2
— Single-level inverse discrete 2-D wavelet
upcoef2
— Direct reconstruction from 2-D wavelet
transform.
transform.
coefficients.
upwlev2
— Single-level reconstruction of 2-D wavelet
decomposition.
wavedec2
— Multi-level 2-D wavelet decomposition.
waverec2
— Multi-level 2-D wavelet reconstruction.
wenergy2
— Energy for 2-D wavelet decomposition.
wrcoef2
— Reconstruct single branch from 2-D wavelet
coefficients.
Wavelets Packets Algorithms.
bestlevt
— Best level tree (wavelet packet).
besttree
— Best tree (wavelet packet).
entrupd
— Entropy update (wavelet packet).
wenergy
— Energy for a wavelet packet decomposition.
wentropy
— Entropy (wavelet packet).
wp2wtree
— Extract wavelet tree from wavelet packet
151
Глава 3. Работа с Wavelet Toolbox в командном режиме
tree.
wpcoef
— Wavelet packet coefficients.
wpcutree
— Cut wavelet packet tree.
wpdec
— Wavelet packet decomposition 1-D.
wpdec2
— Wavelet packet decomposition 2-D.
wpfun
— Wavelet packet functions.
wpjoin
— Recompose wavelet packet.
wprcoef
— Reconstruct wavelet packet coefficients.
wprec
— Wavelet packet reconstruction 1-D.
wprec2
— Wavelet packet reconstruction 2-D.
wpsplt
— Split (decompose) wavelet packet.
Discrete Stationary Wavelet Transform Algorithms.
iswt
— Inverse discrete stationary wavelet
transform 1-D.
iswt2
— Inverse discrete stationary wavelet
swt
— Discrete stationary wavelet transform 1-D.
swt2
— Discrete stationary wavelet transform 2-D.
transform 2-D.
De-noising and Compression for Signals and Images.
ddencmp
— Default values for de-noising or
thselect
— Threshold selection for de-noising.
wbmpen
— Penalized threshold for wavelet 1-D or 2-D
compression.
de-noising.
wdcbm
strategy.
wdcbm2
— Thresholds for wavelet 1-D using Birge-Massart
— Thresholds for wavelet 2-D using BirgeMassart strategy.
wden
— Automatic 1-D de-noising using wavelets.
wdencmp
— De-noising or compression using wavelets.
wnoise
— Generate noisy wavelet test data.
wnoisest
— Estimate noise of 1-D wavelet coefficients.
wpbmpen
— Penalized threshold for wavelet packet de-
wpdencmp
— De-noising or compression using wavelet
noising.
packets.
152
wpthcoef
— Wavelet packet coefficients thresholding.
wthcoef
— Wavelet coefficient thresholding 1-D.
wthcoef2
— Wavelet coefficient thresholding 2-D.
wthresh
— Perform soft or hard thresholding.
3.1. Краткая характеристика пакета расширения Wavelet Toolbox
wthrmngr
— Threshold settings manager.
Tree Management Utilities.
allnodes
— Tree nodes.
cfs2wpt
— Wavelet packet tree construction from
coefficients.
depo2ind
— Node depth-position to node index.
disp
— Display information of WPTREE object.
drawtree
— Draw wavelet packet decomposition tree
(GUI).
dtree
— Constructor for the class DTREE.
get
— Get tree object field contents.
ind2depo
— Node index to node depth-position.
isnode
— True for existing node.
istnode
— Determine indices of terminal nodes.
leaves
— Determine terminal nodes.
nodeasc
— Node ascendants.
nodedesc
— Node descendants.
nodejoin
— Recompose node.
nodepar
— Node parent.
nodesplt
— Split (decompose) node.
noleaves
— Determine nonterminal nodes.
ntnode
— Number of terminal nodes.
ntree
— Constructor for the class NTREE.
plot
— Plot tree object.
read
— Read values in tree object fields.
readtree
— Read wavelet packet decomposition tree from
a figure.
set
— Set tree object field contents.
tnodes
— Determine terminal nodes (obsolete — use
LEAVES).
treedpth
— Tree depth.
treeord
— Tree order.
wptree
— Constructor for the class WPTREE.
Wpviewcf
— Plot wavelet packets colored
write
— Write values in tree object fields.
wtbo
— Constructor for the class WTBO.
wtreemgr
— NTREE object manager.
coefficients.
General Utilities.
153
Глава 3. Работа с Wavelet Toolbox в командном режиме
wcodemat
— Extended pseudocolor matrix scaling.
wextend
— Extend a Vector or a Matrix.
wkeep
— Keep part of a vector or a matrix.
wrev
— Flip vector.
wtbxmngr
— Wavelet Toolbox manager.
Other.
wvarchg
— Find variance change points.
Wavelets Information.
waveinfo
— Information on wavelets.
Demonstrations.
wavedemo
— Wavelet Toolbox demos.
See also WAVEDEMO.
Пример получения справки по функции centfrq представлен ниже:
>> help centfrq
CENTFRQ Wavelet center frequency.
FREQ = CENTFRQ(‘wname’) returns the center frequency in
hertz of the wavelet function ‘wname’ (see WAVEFUN).
For FREQ = CENTFRQ(‘wname’,ITER), ITER is the number
of iterations used by the WAVEFUN function to compute
the wavelet.
[FREQ,XVAL,RECFREQ] = CENTFRQ(‘wname’,ITER, ‘plot’)
returns in addition the associated center frequency based
approximation RECFREQ on the 2^ITER points grid XVAL
and plots the wavelet function and RECFREQ.
See also SCAL2FRQ, WAVEFUN, WFILTERS.
Еще одна полезная команда
type name_function
выводит MATLAB-коды m-файла, задающего функцию с именем name_function.
Вывод для многих функций оказывается довольно громоздким, но это единственная возможность детально познакомиться с реализаций заданной функции.
3.1.3. Техническая документация по пакету Wavelet Toolbox
Техническая документация по пакету расширения Wavelet Toolbox представлена
электронной и обычной книгами «Wavelet Toolbox. For Use with MATLAB. User
Guide». Для версии пакета 2.0 объем книги составляет 941 стр., объем PDF-файла
электронной версии книги около 13.8 Мбайт.
Версия пакета 2.0 является основной, и ей посвящен последующий материал
этой и следующей глав. Отличия версий 2.1 и 2.2 от версии 2.0 отмечены в конце
этой главы.
154
3.2. Основные функции вейвлет-анализа
3.2. Основные функции вейвлет-анализа
3.2.1. Центральная частота — centfrq
Мы уже отмечали важность понятия центральной частоты вейвлетов, которая
определяет положение пика Фурье — образа вейвлета на оси частот. Как правило,
эта частота вычисляется итерационным методом. Она определяет пик спектрального образа вейвлета.
Функция FREQ = centfrq('wname') возвращает центральную частоту (в Гц)
вейвлет-функции с именем 'wname'. Другой вариант этой функции FREQ =
centfrq('wname',ITER) возвращает центральную частоту вейвлет-функции с
дополнительным аргументом ITER — числом итераций, выполненных функцией
wavefun, которая используется для вычисления вейвлета.
Следующий пример задает вейвлет Добеши типа db2, вычисляет его центральную частоту при 16 итерациях и строит графики вейвлета и синусоиды (рис. 3.1),
имеющей ту же частоту, что и центральная частота вейвлета:
wname = 'db2'; iter = 16;
cfreq = centfrq(wname,iter,'plot');
cfreq =
0.6667
Рис. 3.1 дает наглядное представление о различии базовых функций в Фурье-преобразовании (синусоида) и в вейвлет-преобразовании (в данном случае
вейвлет Добеши db2).
Рассмотрим еще один особенно характерный пример. Здесь задано вычисление
центральной частоты так называемого гауссова комплексного вейвлета cgau6, который можно и впрямь трактовать как вырезку окном Гаусса синусоидального
сигнала с частотой, равной средней частоте вейвлета:
wname = 'cgau6'; cfreq = centfrq(wname,16,'plot')
cfreq =
0.6000
Рис. 3.1. Графики вейвлета Добеши db2
и синусоиды с частотой, равной
средней частоте вейвлета
Рис. 3.2. Графики комплексного
гауссова вейвлета cgau6 и синусоиды
с частотой, равной средней частоте
вейвлета
155
Глава 3. Работа с Wavelet Toolbox в командном режиме
Вычисление средней частоты также сопровождается автоматическим построением сравнительных графиков вейвлета и синусоиды — рис. 3.2.
Приведенные примеры дают наглядное представление о том, как можно трактовать тот или иной вейвлет. Однако проще всего это сделать, используя GUI-пакет, который мы рассмотрим несколько позже.
3.2.2. Уменьшение размера матрицы вдвое — dyaddown
В ходе осуществления кратномасштабного вейвлет-анализа приходится то и
дело уменьшать или увеличивать вдвое размеры матрицы X со значениями сигнала. Вектор X рассматривается как частный случай матрицы X. Функция Y = dyaddown(X,EVENODD) возвращает масштабированную (уменьшенную вдвое) версию матрицы X. Причем матрица Y может содержать четные или нечетные элементы матрицы X в зависимости от значения положительной переменной
EVENODD:
• если EVENODD — четное, то Y(k) = X(2k);
• если EVENODD — нечетное, то Y(k) = X(2k + 1).
Функция Y = dyaddown(X) аналогична функции Y = dyaddown(X,0). А функция
Y= dyaddown(X,EVENODD,'type') или
Y = dyaddown(X,'type',EVENODD), где type — r, c или m,
возвращает масштабированную версию матрицы X, сжатую по строкам (r), столбцам (c) или и по строкам, и по столбцам (m) в зависимости от значения переменной type. Пример:
s = (1:2)’*(1:3)
dec = dyaddown(s,0,’c’)
der = dyaddown(s,1,’r’)
dem = dyaddown(s,1,’m’)
s =
1
2
3
2
4
6
2
3
dec =
2
4
der =
1
dem =
1
3
3.2.3. Увеличение размера матрицы вдвое — dyadup
Функция Y = dyadup(X,EVENODD), в отличие от рассмотренной выше функции, возвращает дополненную нулями версию матрицы X. Другими словами, она
увеличивает размер вектора вдвое. Нулевые элементы могут быть четными или нечетными в зависимости от значения переменной EVENODD:
156
3.2. Основные функции вейвлет-анализа
если число EVENODD — четное, то Y(2k – 1) = X(k), Y(2k) = 0;
если EVENODD — нечетное, то Y(2k – 1) = 0, Y(2k) = X(k).
Функция Y = dyadup(X) эквивалентна функции Y = dyadup(X,1).
Y = dyadup(X,EVENODD,'type') или Y = dyadup(X,'type',EVENODD) возвращает масштабированную матрицу X, дополненную нулями по столбцам или по
строкам или и по столбцам, и по строкам, в зависимости от значения переменной
type. Приведенный ниже пример в особых комментариях не нуждается:
s = (1:3)’*(1:2)
der = dyadup(s,1,’r’)
doc = dyadup(s,0,’c’)
dem = dyadup(s,1,’m’)
s =
1
2
2
4
3
6
der =
0
0
1
2
0
0
2
4
0
0
3
6
0
0
doc =
1
0
2
2
0
4
3
0
6
0
0
0
0
0
0
1
0
2
0
0
0
0
0
0
0
2
0
4
0
0
0
0
0
0
0
3
0
6
0
0
0
0
0
0
dem =
3.2.4. Интеграл от вейвлет-функции — intwave
Функция [INTEG,XVAL] = intwave('wname',PREC) вычисляет интеграл INTEG вейвлет-функции ψ (от –∞ до значения XVAL = x):
157
Глава 3. Работа с Wavelet Toolbox в командном режиме
x
∫ ψ( y )dy.
−∞
Функция ψ( y ) аппроксимируется на сетке из 2PREC точек, где PREC — положительное целое число, а 'wname' — символьный аргумент (строка символов), содержащий имя вейвлета.?Результат INTEG — вещественный или комплексный
вектор, в зависимости от типа вейвлета.
[INTEG,XVAL] = intwave('wname')
Функция [INTEG,XVAL] = intwave('wname') эквивалентна
[INTEG,XVAL] = intwave('wname',8).
Для биортогонального вейвлета применяется функция
[INTDEC,XVAL,INTREC] = intwave('wname',PREC),
которая возвращает интегралы INTDEC и INTREC для вейвлет-функции разложения и вейвлет-функции восстановления соответственно.
Следующий пример строит график вейвлета Добеши db2 и интеграла от него
(рис. 5.12):
wname = 'db2'; [phi,psi,xval] = wavefun(wname,7);
subplot(211); plot(xval,psi); title('Wavelet');
[integ,xval] = intwave(wname,7);
subplot(212); plot(xval,integ); title('Wavelet integrals');
Рис. 3.3. Графики вейлета Добеши db2 и интеграла от него
3.2.5. Масштабирование к частоте — scal2frq
Функция F = scal2frq(A,'wname',DELTA) — возвращает псевдочастоты, соответствующие масштабированию, задаваемому в A, вейвлет-функции 'wname' и
выборочному периоду DELTA.
Следующий пример задает вейвлет Добеши db10 и строит его спектрограмму:
wname = ‘db10’; A = -64; B = 64; P = 224;
delta = (B-A)/(P-1); t = linspace(A,B,P);
omega = 5; x = cos(omega*t); freq = omega/(2*pi);
158
3.2. Основные функции вейвлет-анализа
scales = [0.25:0.25:3.75];
TAB_PF = scal2frq (scales,wname,delta);
[dummy,ind] = min(abs(TAB_PF-freq));
freq_APP = TAB_PF(ind); scale_APP = scales(ind);
str1 = [‘224 samples of x = cos(5t) on [-64,64] — ‘ ...
‘True frequency = 5/(2*pi) =~ ‘ num2str(freq,3)];
str2 = [‘Array of pseudo-frequencies and scales: ‘];
str3 = [num2str([TAB_PF’,scales’],3)];
str4 = [‘Pseudo-frequency = ‘ num2str(freq_APP,3)];
str5 = [‘Corresponding scale = ‘ num2str(scale_APP,3)];
figure; cwt(x,scales,wname,’plot’); ax = gca; colorbar
axTITL = get(ax,’title’); axXLAB = get(ax,’xlabel’);
set(axTITL,’String’,str1)
set(axXLAB,’String’,[str4,’ — ‘ str5])
clc ; disp(strvcat(‘ ‘,str1,’ ‘,str2,str3,’ ‘,str4,str5))
Как нетрудно заметить, большая часть этого примера задает строковое обрамление графика, который представлен на рис. 3.4.
Рис. 3.4. Спектрограмма вейвлета Добеши db10, построенная
с масштабированием к частоте функцией scal2frq
Помимо графика данный фрагмент программы выводит следующие данные:
224 samples of x = cos(5t) on [-64,64] — True frequency =
5/(2*pi) =~ 0.796
Array of pseudo-frequencies and scales:
4.77
0.25
2.38
0.5
1.59
0.75
1.19
1
0.954
0.795
0.681
0.596
0.53
0.477
0.433
0.397
1.25
1.5
1.75
2
2.25
2.5
2.75
3
159
Глава 3. Работа с Wavelet Toolbox в командном режиме
0.367
3.25
0.341
3.5
0.318
3.75
Pseudo-frequency = 0.795
Corresponding scale = 1.5
3.2.6. Вейвлет и масштабирующие функции — wavefunavefun
Функция wavefun возвращает аппроксимацию вейвлет-функции 'wname' и
связанную с ней масштабирующую функцию, если последняя существует. Положительное число ITER определяет число итераций. Для ортогонального вейвлета
эта функция задается в следующем виде:
[PHI,PSI,XVAL] = wavefun('wname',ITER)
Она возвращает масштабирующую и вейвлет-функцию в 2ITER точках сетки
XVAL. Для биортогонального вейвлета эта функция задается в виде:
[PHI1,PSI1,PHI2,PSI2,XVAL] = wavefun('wname',ITER)
Функция wavefun возвращает масштабирующую и вейвлет-функции для разложения (PHI1, PSI1) и восстановления (PHI2, PSI2).
Для вейвлетов без масштабирующей функции (Морлета, комплексного вейвлета и т. д.) применяется следующая форма функции:
[PSI,XVAL] = wavefun('wname',ITER)
Приведенный ниже пример показывает итерационный процесс (10 итераций)
приближения к вейвлету типа sym2 — рис. 3.5:
iter = 10; wav = 'sym2';
for i = 1:iter
[phi,psi,xval] = wavefun(wav,i);
plot(xval,psi);
hold on
end
title(['Approximations of the wavelet ',wav, ...
' for 1 to ',num2str(iter),' iterations']);
hold off
Рис. 3.5. Итерационное уточнение (аппроксимация) вейвлета sym2
160
3.3. Утилиты управления построением деревьев
Выбранный для иллюстрации вейвлет типа sym2 имеет довольно тонкую структуру, напоминающую фрактальную кривую. Тем не менее из рис. 3.5 хорошо видно, что десятка итераций процесса аппроксимации вполне достаточно для его
представления в окончательном виде.
3.2.7. Максимальный уровень вейвлет-разложения — wmaxlev
Функция L = wmaxlev(S,'wname') возвращает максимальный уровень разложения сигнала или изображения размера S, используя wavelet, определенный в
строке 'wname'. Приведем примеры применения этой простой функции:
s = 2^10; w = 'db1'; l1 = wmaxlev(s,w)
l1 =
10
w = 'db7'; l2 = wmaxlev(s,w)
l2 =
6
Напоминаем, что максимальный уровень разложения сигнала задает такой уровень, при котором погрешность аппроксимации сигнала или функции становится
меньше погрешности представления чисел в системе MATLAB.
3.3. Утилиты управления построением деревьев
3.3.1. Обзор утилит управления построением деревьев
В пакет Wavelet Toolbox включено довольно много утилит для построения деревьев вейвлет-преобразований. Они предназначены, в основном, для построения таких деревьев в примерах, реализованных на основе GUI-пакета и в составе ряда
функций пакета. Самостоятельно эти утилиты применяются редко, но такое применение не исключено — особенно для утилит, строящих завершенные графики
деревьев и иных графических объектов. Такие утилиты рассматриваются более подробно.
Набор утилит для управления построением деревьев представлен ниже:
Allnodes — создает дерево узлов;
depo2ind — определяет местоположение узла по отношению к его индексу;
drawtree — дает построение дерева разложения пакетного вейвлета с соответствующим обрамлением в окне GUI;
dtree — конструктор для класса DTREE;
Get — дает получение компонентов дерева;
ind2depo — задает индекс узла по отношению к глубине его позиции;
isnode — возвращает логическую единицу, если узел существует, и логический нуль, если он не существует;
stnode — определяет индексы для терминальных узлов;
leaves — определяет терминальные узлы;
nodeasc — задает инцедентность узла;
nodedesc — задает потомки данного узла;
nodejoin — задает восстановление узла;
nodepar — задает родительский узел;
nodesplt — задает узел разложения;
161
Глава 3. Работа с Wavelet Toolbox в командном режиме
noleaves — определяет число нетерминальных узлов;
ntnode — возвращает количество терминальных узлов;
ntree — задает конструктор класса NTREE;
plot — строит график объекта дерева;
read — считывает значение в поле объекта дерева;
readtree — считывает декомпозицию дерева пакетного вейвлета с фигуры;
set — задает установки содержания полей объекта дерева;
tnodes — определяет терминальные узлы;
treedpth — возвращает глубину дерева;
treeord — возвращает порядок дерева;
wptree — заадает конструктор класса WPTREE;
wpviewcf — строит коэффициенты пакетных вейвлетов в цвете (вейвлет-спектрограмму);
write — записывает значения в поле объекта дерева;
wtbo — задает конструктор для класса WTBO;
wtreemgr — задает менеджер объекта NTREE.
Напоминаем, что команда help name_function позволяет вывести описание
каждой из этих функций, при замене name_function на имя конкретной функции. В большинстве описаний функций можно найти демонстрационные примеры на их применение. Некоторые примеры показаны ниже.
3.3.2. Построение дерева разложения пакетного вейвлета —
drawtree
Одна из важных утилит drawtree(T) строит дерево пакетного вейвлета T, а
функция F = drawtree(T) строит дерево пакетного вейвлета и графическую метку. Эти построения происходят в окне GUI и обеспечены соответствующими возможностями, например, в построении графика сигнала (функции), просмотра
временных диаграмм в узлах дерева, установкой параметров и т. д.
Приведем пример построения дерева функции sin(x)/x с уровнем 3 декомпозиции и на основе вейвлета Добеши db4:
x = 6*pi*[0.001:0.005:1]; y=sin(x)./x;
t = wpdec(y,3,'db4'); fig = drawtree(t);
Получаемое при этом окно для просмотра пакетных вейвлетов показано на
рис. 3.6.
3.3.3. Построение дерева — plot
Функция plot(T) строит график дерева и график вейвлетов в указанных на
этом дереве узлах. Пример такого построения:
load noisbloc; x = noisbloc;
t = wpdec(x,3,'db4'); plot(t)
Построенные графики представлены на рис. 3.7.
Активизируя те или иные узлы дерева (рис. 3.7, слева), можно наблюдать построение в них временных зависимостей для декомпозиции сигнала (рис. 3.7,
справа).
162
3.3. Утилиты управления построением деревьев
Рис. 3.6. Пример применения утилиты drawtree
Рис. 3.7. Пример применения утилиты
plot
Рис. 3.8. Построение дерева пакетного
вейвлета
3.3.4. Построение цветной вейвлет-спектрограммы — wpviewcf
Функция wpviewcf(T,CMODE) строит коэффициенты пакетных вейвлетов в
цвете, причем возможно задание до 8 режимов (числами от 0 до 1). В следующем
примере:
x = sin(8*pi*[0:0.005:1]); t = wpdec(x,3,'db1');
plot(t); wpviewcf(t,1);
вначале функцией plot строится дерево пакетного вейвлета и временные зависимости в узлах — рис. 3.8.
Затем функция wpviewcf строит спектрограмму, показанную на рис. 3.9, для
значения параметра CMODE = 1. К сожалению, цвета спектрограммы при ее печати в книге отсутствуют и заменяются оттенками серого цвета, что делает спектрограмму блеклой.
163
Глава 3. Работа с Wavelet Toolbox в командном режиме
Рис. 3.9. Пример построения цветной спектрограммы
3.4. Основные утилиты
В этом разделе рассматриваются четыре функции, в оригинале названные
основными утилитами. Эти функции не имеют прямого отношения к вейвлетам,
но они полезны для некоторых операций с ними.
3.4.1. Кодированная версия матрицы — wcodemat
Утилита Y = wcodemat(X,NBCODES,OPT,ABSOL) возвращает кодированную
версию входной матрицы X, если ABSOL = 0, или ABS(X), если ABSOL — ненулевой аргумент, с использованием первых NBCODES целых чисел. Кодирование
может быть выполнено построчно (OPT = 'row' or 'r'), по столбцам (OPT = 'col'
или 'c') или глобально (OPT = 'mat' or 'm').
Кодирование выполняется на равномерной сетке между минимальным и максимальным значениями каждой строки или столбца матрицы соответственно.
Y = wcodemat(X,NBCODES,OPT) эквивалентна Y =
wcodemat(X,NBCODES,OPT,1).
Y = wcodemat(X,NBCODES) эквивалентна Y =
wcodemat(X,NBCODES,'mat',1).
Y = wcodemat(X) эквивалентна Y = wcodemat(X,16,'mat',1).
3.4.2. Утилита расширения — wextend
Утилита расширения Y = wextend (TYPE,MODE,X,L[,LOC]) служит для расширения X в соответствии с типом расширения TYPE:
1, '1', '1d' или
2, '2', '2d' или
'ar' или 'addrow'
'ac' или 'addcol'
164
'1D' — 1D-расширение;
'2D' — 2D-расширение;
— добавление строк;
— добавление столбцов.
3.4. Основные утилиты
Допустимые режимы расширения (MODE) приведены ниже:
'zpd' — нулевое расширение;
'sp0' — гладкое расширение нулевого порядка;
'spd' (или 'sp1') — гладкое расширение первого порядка;
'sym' — симметричное расширение;
'ppd' — периодическое расширение (1);
'per' — периодическое расширение (2).
Если TYPE = {1, '1', '1d' or '1D'}:
LOC = 'l' (or 'u') — для расширения влево или вверх;
LOC = 'r' (or 'd') — для расширения вправо или вниз;
LOC = 'b' — для расширения в обе стороны;
LOC = 'n' — левое расширение.
Пример расширения вектора:
>> x = [1 2 3]
>> xextzpd1 = wextend('1','zpd',x,2)
x =
1
2
3
xextzpd1 =
0
0
1
2
3
0
>> xextper = wextend('1D','per',x,2)
xextper =
3
3
1
2
3
3
0
1
2
Пример расширения матрицы:
>> X = [1 2 3;4 5 6]
>> Xextzpd = wextend(2,’zpd’,X,2)
X =
1
2
3
4
5
6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
3
0
0
0
0
4
5
6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Xextzpd =
>> Xextsym = wextend(‘2D’,’sym’,X,2)
Xextsym =
5
4
4
5
6
6
5
2
1
1
2
3
3
2
2
1
1
2
3
3
2
5
4
4
5
6
6
5
5
4
4
5
6
6
5
2
1
1
2
3
3
2
165
Глава 3. Работа с Wavelet Toolbox в командном режиме
3.4.3. Извлечение — wkeep
Для вектора X функция Y = wkeep(X,L,OPT) извлекает вектор Y из вектора X.
Длина вектора Y задается параметром L. Если OPT = 'c' ('l', 'r', соответственно), Y
– центральная часть (левая или правая, соответственно) вектора X.
Функция Y = wkeep(X,L,FIRST) возвращает вектор X(FIRST : FIRST + L – 1).
Функция Y = wkeep(X,L) эквивалентна Y = wkeep(X,L,'c').
Примеры извлечения элементов вектора даны ниже:
>> x = 1:8; y = wkeep(x,4,’c’)
y =
3
>> y =
y =
3
>> y =
y =
3
>> y =
y =
1
>> y =
y =
6
4
5
wkeep(x,3)
6
4
5
wkeep(x,3,’c’)
4
5
wkeep(x,3,’l’)
2
3
wkeep(x,3,’r’)
7
8
Для матрицы X функция Y = wkeep(X,S) извлекает центральную часть матрицы X. Размер матрицы Y задается вектором S.
Функция Y = wkeep(X,S,[FIRSTR FIRSTC]) извлекает часть матрицы X размера S, начиная с элемента матрицы X(FIRSTR,FIRSTC).
Примеры извлечения части матрицы:
>> m = magic(4)
m =
16
2
3
13
5
11
10
8
9
7
6
12
4
14
15
1
>> y = wkeep(m,[2 3])
y =
5
11
10
9
7
6
3.4.4. Разворот вектора — wrev
Утилита Y = wrev(X) осуществляет разворот вектора X. Например:
>> X = [5 3 1]; Y = wrev(X)
Y =
1
3
5
>> Y=wrev(X')
Y =
166
3.5. Прочие функции
1
3
5
В этом примере вектор-строка превращается в вектор-столбец.
3.5. Прочие функции
3.5.1. Обратное нестандартное БПФ — instdfft
Функция [X,T] = instdfft(XHAT,LOWB,UPPB) возвращает нестандартное обратное БПФ (IFFT) для параметра XHAT на регулярной сетке на интервале
[LOWB,UPPB]. Выходными аргументами является сигнал X, вычисленный на интервале T следующим образом T = LOWB + [0 : n – 1]*(UPPB–LOWB)/n, где n —
длина параметра XHAT.
3.5.2. Нестандартное прямое БПФ — nstdfft
Функция [XHAT,OMEGA] = nstdfft(X,LOWB,UPPB) возвращает нестандартное
одномерное прямое БПФ ( FFT) для сигнала X на регулярной сетке [LOWB,UPPB]
с числом измерений, равным степени 2. Выходной аргумент XHAT — сдвинутое
БПФ по X, вычисляемое в интервале OMEGA, который задается как OMEGA = [–n :
2 : n – 2] / (2*(UPPB — LOWB)), где n = length(X). Выходные векторы XHAT и OMEGA
также имеют размер n. Используется для аппроксимации коэффициентов непрерывного разложения Фурье методом БПФ, прямое применение которого возможно только для дискретного преобразования Фурье. Обратная функция instdfft
позволяет восстановить сигнал по его нестандартному разложению.
3.5.3. Точки оценки — wvarchg
Функция [PTSOPT,KOPT,T_EST] = wvarchg (Y,K,D) возвращает точки оценки сигнала Y для j точек с j = 1, 2, ..., K–1. Целое число KOPT определяет число
точек (0 KOPT < K–1). Вектор PTS_OPT содержит соответствующие точки. Если
KOPT = 0, PTS_OPT = [] (пустое множество). Целое число D – это минимальная
задержка между двумя точками. K и D должны быть числами, такими что 1 < K
<< length(Y) и 1 D << length(Y).
Функция wvarchg(Y,K) эквивалентна wvarchg(Y,K,10).
Функция wvarchg(Y) эквивалентна wvarchg(Y,6,10).
3.6. Непрерывное одномерное вейвлет-преобразование
3.6.1. Функция одномерного непрерывного
вейвлет-преобразования — cwt
Непрерывное одномерное вейвлет-преобразование (НВП 1D) лежит в основе
применения вейвлетов в технике обработки сигналов. Уже само по себе (без реконструкции) оно используется для анализа сигналов и выявления их локальных
особенностей. Это преобразование реализуется функцией cwt, которая используется в следующих формах:
167
Глава 3. Работа с Wavelet Toolbox в командном режиме
COEFS = cwt(S,SCALES,'wname') — возвращает коэффициенты непрерывного прямого вейвлет-преобразования вещественного или комплексного сигнала S в
вещественном положительном SCALES. Строка 'wname' задает имя вейвлета;
COEFS = cwt(S,SCALES,'wname','plot') — возвращает вейвлет-коэффициенты и создает график вейвлет-коэффициентов;
COEFS = cwt(S,SCALES,'wname',PLOTMODE) — возвращает коэффициенты и
строит их график с использованием настроек цвета PLOTMODE, приведенных
ниже:
• 'lvl' — окраска шаг за шагом;
• 'glb' — окраска с учетом всех коэффициентов;
• 'abslvl' или 'lvlabs' — окраска шаг за шагом с использованием абсолютных значений коэффициентов,
• 'absglb' или 'glbabs' — окраска с масштабированием и с использованием абсолютных значений коэффициентов;
COEFS = cwt(S,SCALES,'wname',PLOTMODE,XLIM) — возвращает и строит
график цветных коэффициентов непрерывного wavelet-преобразования с использованием переменных настройки PLOTMODE и XLIM.
3.6.2. Вейвлет-спектрограмма синусоиды
Вейвлет-анализ открывает уникальные возможности в распознавании тонких
особенностей сигналов и функций. Необходимость в этом возникает повсеместно
в акустике при анализе качества звука, в биологии при распознании тонкой
структуры клеток, в медицине при анализе рентгеновских снимков, в геофизике
при изучении карт залежей полезных ископаемых и во многих других областях науки и техники.
Рассмотрим данную возможность на нескольких характерных примерах. В приведенном ниже примере строится график функции sin(t) и с помощью функции
cwt создается вейвлет-спектрограмма этого сигнала (рис. 3.10):
t = linspace(-6,6,2048); s = sin(t);
subplot(211), plot(t,s); title('function s(t)')
subplot(212), c = cwt(s,1:1:16,'sym4','abslvl',[100 400]);
title('Wavelet spectr s(t) ')
Напоминаем, что спектрограмма представляет собой зависимость коэффициентов вейвлет-представления (масштаба) от времени. Нетрудно заметить, что для
этой простой функции полезна оценка лишь младших вейвлет-коэффициентов,
заданных параметром 1:1:16 (выводятся коэффициенты от 1 до 16 с шагом 1). При
этом спектрограмма синусоиды особой выразительностью не отличается. Тем не
менее на ней отчетливо выделяются переходы сигнала через нуль и экстремальные
точки. Благодаря этому явно выделяется периодичность синусоидальной функции
как чередование темных и светлых областей. Переходы от темного к светлому и
наоборот различны для четных и нечетных коэффициентов.
Некоторое четко видимое усложнение спектра по краям — краевые разрывы,
чуть «украшающие» вейвлет-спектрограмму, — трактуются как вызванные ограниченной во времени областью существования сигнала. Коэффициенты с номерами
около 40 и выше практически бесполезны. В целом спектрограмма синусоиды выглядит маловыразительно. Это и понятно — синусоидальная функция не имеет
ярко выраженных особенностей, за исключением краевых разрывов, что было отмечено. Заметим, что на графике обычного спектра Фурье эта функция вообще не
168
3.6. Непрерывное одномерное вейвлет-преобразование
Рис. 3.10. График сигнала sin(t) и его вейвлет-спектрограммы
показывает каких-либо особенностей — она представлена просто вертикальной
чертой с абсциссой, равной ее частоте, и ординатой, заданной амплитудой синусоиды.
ВНИМАНИЕ Для построения эффектных вейвлет-спектрограмм наряду с функциями
командного режима работы можно воспользоваться входящими в соcтав
MATLAB утилитами, построенными на основе графического интерфейса
пользователя UGI. В них имеется как масса готовых интересных примеров
на построение вейвлет-спектрограмм, так и возможность загрузки своих
функций для этого.
3.6.3. Вейвлет-спектрограмма слегка искаженной функции синуса
А теперь чуть усложним функцию и представим себе, что она описывает сигнал вида sin(t) + 0.1.*sin(t).^3. Это означает, что к функции синуса добавлена небольшая компонента в виде степенной функции (кубической) синуса. Составим
программу построения графика этой функции и спектрограммы на основе первых
64 вейвлетов:
t = linspace(-6,6,2048);
s = sin(t)+0.1.*sin(t).^7;
subplot(211), plot(t,s); title('function s(t)')
subplot(212), c = cwt(s,1:2:64,'sym4','abslvl',[100 400]);
title('Wavelet spectr s(t) ')
Полученные при этом графики функции и вейвлет-спектрограммы представлены на рис. 3.11. Спектрограмма буквально преобразилась на наших глазах, несмотря на то что на глаз заметить расхождение графика новой функции от простой синусоиды невозможно!
На этот раз отчетливо видны многие особенности данной функции, в том числе совсем незаметные на ее графике. Например, переход функции через 0 при
169
Глава 3. Работа с Wavelet Toolbox в командном режиме
Рис. 3.11. График слегка искаженной синусоиды и ее вейвлет-спектрограмма
t = 0 на ее графике происходит очень плавно и не выявляет ровным счетом ничего заметного. Однако темные вертикальные полосы на спектрограмме при переходе функции через 0 явно показывает на то, что здесь не все так просто. Вейвлет-спектрограмма отчетливо выделяет все особенности функции в точках перегиба. Светлые столбы спектрограммы отчетливо выделяют экстремуму функции,
но и между ними хорошо видны представления каких-то на первый взгляд непонятных локальных особенностей данной функции.
В этом примере хорошо видно, что увеличение числа вейвлет-коэффициентов
уже не бесполезно — картина спектра для больших по номеру коэффициентов выглядит более стабильной, чем для малых. Тем не менее и здесь увеличение числа
коэффициентов примерно выше 40 перестает влиять на вид спектра.
3.6.4. Вейвлет-представление сигнала с разрывами и шумом
Еще в одном примере строится график синусоиды с двумя разрывами по вертикали и наложенным на нее шумом, а также и ее вейвлет-спектрограмма
(рис. 3.12):
[x,s] = wnoise(3,10,5);
subplot(311), plot(x); title('Clear signal');
axis([0,1000,-15,10])
subplot(312), plot(s); title('Signal+noice');
axis([0,1000,-15,10])
subplot(313), c = cwt(s,1:1:40,'sym4','abslvl',[100 400]);
title('Wavelet spectr s(t) ')
В этом примере используется функция генерации ряда тестовых сигналов wnoise, которая подробно описана в конце этой главы. Вейвлет-спектрограмма сигнала (рис. 3.12. снизу), несмотря на его сильное искажение шумами, в своей верхней
части отчетливо показывает наличие двух разрывов. В нижней части спектрограммы видна весьма сложная структура вейвлет-спектра шумов. Этот пример являет-
170
3.6. Непрерывное одномерное вейвлет-преобразование
Рис. 3.12. Графики синусоиды с разрывами, сигнала с шумом на ее основе
и его спектрограммы
ся наглядным свидетельством высокой разрешающей способности вейвлетов при
выявлении тонкой структуры сигналов.
3.6.5. Вейвлет-анализ реальных звуковых сигналов
А теперь построим временную диаграмму и вейвлет-спектрограмму реального
звукового сигнала, загружаемого из файла mtlb с выборкой в 110 отсчетов:
load mtlb; v=mtlb(1:110); lv = length(v);
subplot(211), plot(v); title('Sound signal.');
set(gca,'Xlim',[0 110]); [c,l] = wavedec(v,5,'sym2');
cfd = zeros(5,lv); subplot(212)
ccfs = cwt(v,1:128,'sym4','plot');
title('Continuous Transform, absolute coefficients.')
colormap(pink(64)); ylabel('Scale')
Как нетрудно заметить — см. рис. 3.13, вейвлет-спектрограмма при такой выборке дает прекрасный образ сигнала с мельчайшими его деталями. Из-за малости
выборки видна дискретность спектрограммы, хотя и используются непрерывные
вейвлеты. Спектрограмма состоит как бы из квадратиков.
Изменив число выборок на 1010, можно получить те же графические зависимости, показанные на рис. 3.14. Здесь прекрасно выделяются частотные компоненты звукового сигнала, имеющие разные частоты. Так, в нижней части отчетливо видны частые изменения яркости спектрограммы, указывающие на наличие
периодических высокочастотных компонент, тогда как в верхней части изменения
яркости менее частые, соответствующие более низкочастотным компонентам.
Хотя в данном случае спектрограмма по-прежнему довольно детальна, появляется ощущение, что эта детальность в большом интервале времени все же хуже,
чем в малом интервале. Это можно было бы и предвидеть — ведь вейвлеты прин-
171
Глава 3. Работа с Wavelet Toolbox в командном режиме
Рис. 3.13. График звукового сигнала t и его вейвлет-спектрограмма
при 110 выборках
Рис. 3.14. График звукового сигнала и его вейвлет-спектрограмма
при 1010 выборках
ципиально приспособлены к деталировке локальных изменений сигнала, занимающих небольшие промежутки времени.
ПРИМЕЧАНИЕ Как показывают приведенные примеры, вейвлет-спектрограммы наиболее
пригодны для анализа тонкой структуры сигналов, содержащих резкие
скачки, переходы производных через нуль и т. д. К таким сигналам сейчас
относятся звуковые сигналы речи и музыки и сигналы изображений.
172
3.7. Дискретное одномерное вейвлет-преобразование
3.7. Дискретное одномерное вейвлет-преобразование
3.7.1. Нахождение вейвлет-коэффициентов одномерного
преобразования — appcoef
Как уже отмечалось в главе 2, наряду с непрерывным вейвлет-преобразованием
существует дискретное вейвлет-преобразование. Его главным достоинством является наличие эффективных алгоритмов быстрого вейвлет-преобразования, которое отчасти напоминает быстрое преобразование Фурье. В частности, для быстрого вейвлет-преобразования (БВП) может эффективно использоваться пирамидальный алгоритм с прореживанием по частоте, хорошо знакомый специалистам в
области БПФ. Благодаря этому появляется возможность анализа больших выборок за вполне приемлемое для практических целей время. Правда, надо помнить,
что эти возможности реализуются не для всех типов вейвлетов.
Функция для нахождения одномерных коэффициентов аппроксимации appcoef
имеет ряд форм. Рассмотрим варианты данной функции.
A = appcoef(C,L,'wname',N) возвращает коэффициенты аппроксимации на
уровне N, используя структуру вейвлет-разложения [C,L], 'wname' — строка, содержащая имя конкретного вейвлета, уровень N должен быть целым числом, таким что 0 ≤ Ν ≤ length(L)–2.
A = appcoef(C,L,'wname') — возвращает коэффициенты аппроксимации на последнем уровне: length(L)–2.
Вместо указанного имени вейвлета в
качестве входного аргумента могут
быть заданы фильтры:
A = appcoef(C,L,Lo_R,Hi_R) или
A = appcoef(C,L,Lo_R,Hi_R,N), где
Lo_R — узкополосный фильтр восстановления, Hi_R — широкополосный
фильтр восстановления.
Следующий пример задает построение временной зависимости звукового
сигнала из файла mtlb и графиков перРис. 3.15. График звукового сигнала
вого и третьего коэффициентов вейвлеs(t) и его вейвлет-коэффициентов
та Добеши db1 — рис. 3.15:
load mtlb; s = mtlb (1:900);
[c,l] = wavedec(s,3,'db1');
ca3 = appcoef(c,l,'db1',3);
subplot(311), plot(1: length (s),s);
subplot(312), plot(1: length (c),c);
subplot(313), plot(1: length (ca3),ca3);
3.7.2. Функция нахождения одномерных детализирующих
коэффициентов — detcoef
Функция detcoef служит для вычисления детализирующих коэффициентов
для одномерных сигналов. Рассмотрим ее основные формы.
173
Глава 3. Работа с Wavelet Toolbox в командном режиме
D = detcoef(C,L,N) — возвращает детализирующие коэффициенты на уровне N из структуры вейвлет-разложения [C,L]. Уровень N должен быть целым числом, таким, что 1 ≤ Ν ≤ NMAX, где NMAX = length(L)–2.
D = detcoef(C,L) — возвращает детализирующие коэффициенты на последнем уровне NMAX.
Если N является вектором целых чисел, таким что 1 ≤ N(j) ≤ NMAX, то функция
DCELL = detcoef(C,L,N,'cells') возвращает массив ячеек, где DCELL{j}
содержит детализирующие коэффициенты N(j).
Если length(N) > 1, то функция
DCELL = detcoef(C,L,N) эквивалентна DCELL = detcoef(C,L,N,'cells').
DCELL = detcoef(C,L,'cells') эквивалентна DCELL =
detcoef(C,L,[1:NMAX]).
Наконец, функция [D1, ... ,Dp] = detcoef(C,L,[N(1), ... ,N(p)])
возвращает детализирующие коэффициенты на уровне [N(1), ..., N(p)].
В приведенном ниже примере из файла vonkoch загружается сложный сигнал
(отрезок фрактальной кривой, состоящей из множества ступенек — в том числе
мелких), после чего строится его график и две спектрограммы — дискретного и
непрерывного вейвлет-преобразований (используются вейвлеты типа sym2):
load vonkoch; vonkoch=vonkoch(1:510); lv = length(vonkoch);
subplot(311), plot(vonkoch);title('Analyzed signal.');
set(gca,'Xlim',[0 510]);
[c,l] = wavedec(vonkoch,5,'sym2');
cfd = zeros(5,lv);
for k = 1:5
d = detcoef(c,l,k); d = d(ones(1,2^k),:);
cfd(k,:) = wkeep(d(:)',lv);
end
cfd = cfd(:); I = find(abs(cfd)<sqrt(eps));
cfd(I)=zeros(size(I)); cfd = reshape(cfd,5,lv);
subplot(312), colormap(pink(64));
img = image(flipud(wcodemat(cfd,64,'row')));
set(get(img,'parent'),'YtickLabel',[]);
title('Discrete Transform, absolute coefficients.');
ylabel('level');
subplot(313); ccfs = cwt(vonkoch,1:32,'sym2','plot');
title('Continuous Transform, absolute coefficients.')
colormap(pink(64)); ylabel('Scale')
Полученные при исполнении этого примера графические представления даны
на рис. 3.16.
Нетрудно заметить, что все, даже мельчайшие, детали сложной временной зависимости фрактальной кривой отчетливо выделяются на спектрограмме как непрерывного, так и дискретного преобразования. Последнее выполняется заметно
быстрее, но все же по детальности представления сигнала уступает непрерывному
вейвлет-преобразованию.
174
3.7. Дискретное одномерное вейвлет-преобразование
Рис. 3.16. Графики фрактального сигнала и его вейвлет-спектрограммы,
полученные при дискретном и непрерывном преобразованиях
3.7.3. Одноуровневое дискретное одномерное
вейвлет-преобразование
Для проведения одноуровневого дискретного одномерного вейвлет-преобразования служит функция dwt. Рассмотрим формы ее применения.
[cA,cD] = dwt(X,'wname') — возвращает вектор коэффициентов аппроксимации cA и вектор детализирующих коэффициентов cD, полученных в результате
разложения исходного вектора X. Строка 'wname' задает имя используемого вейвлета.
[cA,cD] = dwt(X,Lo_D,Hi_D) — возвращает векторы вейвлет-разложения,
используя в качестве входных аргументов низкочастотный Lo_D и высокочастотный Hi_D фильтры разложения равной длины.
Пусть lx — длина вектора X и lf = длина векторов фильтров Lo_D и Hi_D; тогда length(cA) = length(cD) = la, где la = ceil(lx/2), если DWT метод расширения extension mode is set to periodization. Для других методов расширения la = floor(lx + lf
– 1)/2).
Функция [cA,cD] = dwt(...,'mode',MODE) возвращает вейвлет-разложение
задаваемого пользователем метода расширения mode. mode — строка, содержащая
желаемый метод расширения.
В следующем примере с помощью генератора случайных чисел создается сигнал s и выполняется дискретное вейвлет-преобразование с вычислением коэффициентов аппроксимации и детализирующих коэффициентов для двух типов вейвлет (Хаара и Добеши db4):
randn('seed',1234567889); s = 2 + kron(ones(1,8),...
[1 -1]) + ((1:16).^2)/16 + 0.3*randn(1,16);
[ca1,cd1] = dwt(s,'haar');
subplot(311); plot(s); title('Original signal');
175
Глава 3. Работа с Wavelet Toolbox в командном режиме
subplot(323); plot(ca1); title('Approx. coef. for haar');
subplot(324); plot(cd1); title('Detail coef. for haar');
[Lo_D,Hi_D] = wfilters('haar','d'); [ca1,cd1] = dwt(s,Lo_D,Hi_D);
[ca2,cd2] = dwt(s,'db4');
subplot(325); plot(ca2); title('Approx. coef. for db4');
subplot(326); plot(cd2); title('Detail coef. for db4');
Графики сигнала и полученных коэффициентов для этого примера представлены на рис. 3.17.
Рис. 3.17. График сигнала и его вейвлет-коэффициентов для двух типов
вейвлетов
Представленные графики при их внимательном изучении позволяют понять,
какие именно части сигнала представляются теми или иными коэффициентами.
3.7.4. Метод расширения вейвлет-преобразования — dwtmode
Функция dwtmode устанавливает метод расширения сигнала или изображения
для дискретного или дискретного пакетного вейвлет- преобразования. Методы
расширения предоставляют различные возможности решения проблемы граничных искажений при обрабтке сигналов и изображений.
Функции ST = dwtmode и ST = dwtmode('status') возвращают в выходной
параметр ST текущий метод. В виде ST = dwtmode('status','nodisp') функция возвращает в ST текущий метод без текста в командном окне MATLAB, а в
виде dwtmode('mode') устанавливает метод расширения прямого вейвлет-преобразования (DWT) соответственно строке 'mode':
• 'sym' — метод симметричного дополнения, т. е. граничные значения сим•
•
•
•
176
метрично дублированы (используется по умолчанию);
'zpd' — метод дополнения нулями;
'spd' или 'sp1' — метод гладкого дополнения первого порядка;
'sp0' — метод гладкого дополнения нулевого порядка;
'ppd' — метод периодического дополнения.
3.7. Дискретное одномерное вейвлет-преобразование
Метод, используемый по умолчанию, загружается из файла DWTMODE.DEF.
Функция dwtmode('save',MODE) сохраняет метод MODE как новый используемый по умолчанию метод в файле DWTMODE.DEF.
Для примера оценим текущий метод:
>> clear global; dwtmode
***************************************************
**
DWT Extension Mode: Symmetrization
**
***************************************************
Изменим метод:
>> dwtmode('per')
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
WARNING: Change DWT Extension Mode
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
************************************************
**
DWT Extension Mode: Periodization
**
************************************************
Нетрудно заметить, что после этой команды выдается два сообщения — предупреждение о замене текущего метода на заданный новый и сообщение об установке заданного метода. Вернемся к исходному методу:
>> clear global; dwtmode
***************************************************
**
DWT Extension Mode: Symmetrization
**
***************************************************
3.7.5. Одноуровневое обратное вейвлет-преобразование — idwt
Для выполнения одноуровневого одномерного обратного вейвлет-преобразования с заданным типом вейвлета ('wname') или пары фильтров восстановления
(Lo_R и Hi_R) служит функция idwt. Рассмотрим ее варианты:
X = idwt(cA,cD,'wname') — возвращает вектор восстановления одноуровневых коэффициентов аппроксимации X для входных векторов cA и cD, используя
тип вейвлета, заданный строкой 'wname';
X = idwt(cA,cD,Lo_R,Hi_R) — возвращает вектор восстановления, как описано выше, используя заданные фильтры. Lo_R — низкочастотный фильтр восстановления, Hi_R — высокочастотный фильтр восстановления;
X = idwt(cA,cD,'wname',L) и X = idwt(cA,cD,Lo_R,Hi_R,L) — возвращают
центральный блок результирующего вектора X функции idwt(cA,cD,'wname');
X = idwt(...,'mode',MODE) — возвращает вектор восстановления, используя метод расширения MODE;
X = idwt(cA,[],...) — возвращает вектор X для входного вектора cA;
X = idwt([],cD,...) — возвращает вектор X для входного вектора cD.
Теперь, имея средства прямого и обратного дискретного вейвлет-преобразований, мы можем оценить, насколько искажается сложный сигнал в этих, достаточно сложных, преобразованиях. В приведенном ниже примере создается сигнал,
представленный 16 отсчетами с шумовой компонентой, созданной с помощью генератора случайных чисел, после чего он подвергается вначале прямому (функция
177
Глава 3. Работа с Wavelet Toolbox в командном режиме
dwt — сигнал s), а затем обратному (функция idwt — сигнал ss) вейвлет-преобразованиям с использованием вейвлета Добеши типа db4:
randn('seed',123456789)
s = 2 + kron(ones(1,8),[1 —1]) + ((1:16).^2)/32 +
0.3*randn(1,16);
[ca1,cd1] = dwt(s,'db4');
subplot(221); plot(ca1); title('Approx. coef. for db4');
subplot(222); plot(cd1); title('Detail coef. for db4');
ss = idwt(ca1,cd1,'db4');
err = norm(s-ss); % Check reconstruction.
subplot(212); plot([s;ss-.1]');title('Original and reconstructed
signals');
xlabel(['Error norm = ',num2str(err)])
Результат (см. рис. 3.18) поразителен — погрешность реконструкции сигнала ничтожно мала и практически составляет около 5⋅10–12, что близко к точности машинных расчетов с вещественными числами «двойной» точности. Это связано с
тем, что данное преобразование для такого сигнала и выбранного типа вейвлета
теоретически обеспечивает точное его восстановление. Чтобы разделить слившиеся кривые сигнала s и результата его вейвлет-преобразований ss, пришлось при
построении графика искусственно сместить сигнал ss на величину 0.1 вниз.
Рис. 3.18. Пример задания случайного сигнала и его точной реконструкции
после прямого и обратного дискретных вейвлет-преобразований
А теперь проделаем еще один интересный эксперимент. Зададим вейвлет-фильтры Lo_R (ФНЧ) и Hi_R (ФВЧ) для вейвлета Добеши db4 и выполним реконструкцию ранее созданного сигнала с помощью этих фильтров с построением снова
графика сигнала до и после реконструкции в одном окне:
[Lo_R,Hi_R] = wfilters('db4','r'); ss = idwt(ca1,cd1,Lo_R,Hi_R);
plot([s;ss-.1]');
178
3.7. Дискретное одномерное вейвлет-преобразование
Полученный график сигнала до и после реконструкции будет абсолютно аналогичен представленному на рис. 3.18 снизу. Итак, несмотря на иной подход к реконструкции сигнала результат остался тем же.
ПРИМЕЧАНИЕ Как известно, в реальных условиях при ограничении числа гармоник точное восстановление случайного сигнала при использовании прямого и обратного преобразований Фурье невозможно в принципе. Как показывает
данный пример, вейвлет-преобразование способно обеспечить точную реконструкцию сигнала после его прямого и обратного преобразований.
Это, безусловно, является огромным принципиальным преимуществом
вейвлет-технологии обработки сигналов. Однако надо помнить, что не
все типы вейвлетов способны на это.
3.7.6. Прямое восстановление из одномерных
вейвлет-коэффициентов — upcoef
Функция Y = upcoef(O,X,'wname',N) возвращает вектор коэффициентов
восстановления за N шагов для вектора X. 'wname' — строка, содержащая имя
данного вейвлета. N должно быть только целым положительным числом. Если
O = 'a', то возвращаются коэффициенты аппроксимации. Если O = 'd', то возвращаются детализирующие коэффициенты.
Y = upcoef(O,X,'wname',N,L) возвращает коэффициенты восстановления за
N шагов для входного вектора X и выделяет центральный блок результирующего
вектора заданного размера L.
Вместо указания имени вейвлета в качестве входных величин можно задать
низкочастотный и высокочастотный фильтры восстановления. Тогда функции
восстановления имеют вид:
Y = upcoef(O,X,Lo_R,Hi_R,N) или Y = upcoef(O,X,Lo_R,Hi_R,N,L).
Функция Y = upcoef(O,X,'wname') эквивалентна Y =
upcoef(O,X,'wname',1).
Функция Y = upcoef(O,X,Lo_R,Hi_R) эквивалентна Y =
upcoef(O,X,Lo_R,Hi_R,1).
Следующий пример демонстрирует технику аппроксимации сигнала с применением вейвлет-коэффициентов и с построением их графиков (рис. 3.19) в одном
и том же масштабе с учетом сжатия вейвлетов (оно задается переменной essup с
начальным значением 10, которое каждый раз удваивается):
cfs = [1]; essup = 10; figure(1); N=6;
for i=1:N
rec = upcoef('a',cfs,'db8',i);ax = subplot(N,1,i); h =
plot(rec(1:essup));
set(ax,'xlim',[1 325]); essup = essup*2;
end
subplot(N,1,1); title(['Approximation signals, obtained
from a single ' ...
'coefficient at levels 1 to N'])
Другой пример демонстрирует технику аппроксимации сигнала с применением
вейвлет-коэффициентов и с построением их графиков в соответствующем изменяющемся масштабе по горизонтали — рис. 3.20 (он задается переменной essup с
начальным значением 10, которое каждый раз удваивается):
cfs = [1]; mi = 12; ma = 30; N=6;
179
Глава 3. Работа с Wavelet Toolbox в командном режиме
rec = upcoef('d',cfs,'db8',1);
figure(2); subplot(611); plot(rec(3:12));
for i=2:6
rec = upcoef('d',cfs,'db6',i);
subplot(N,1,i), plot(rec(mi*2^(i-2):ma*2^(i-2)))
end
subplot(N,1,1); title(['Detail signals obtained from a
single ' ...
'coefficient at levels 1 to N'])
Рис. 3.19. Аппроксимация сигнала с помощью вейвлет-коэффициентов
при одинаковом масштабе по горизонтали
Рис. 3.20. Представление сигнала по его вейвлет-коэффициентам при переменном
масштабе по горизонтали
180
3.7. Дискретное одномерное вейвлет-преобразование
3.7.7. Одноуровневое восстановление одномерного
вейвлет-разложения — upwlew
Функция [NC,NL,cA] = upwlev(C,L,'wname') задает одноуровневое восстановление для определенной структуры вейвлет-разложения [C,L], заменяя его новой структурой [NC,NL], и извлекает последний вектор аппроксимационных коэффициентов cA. При этом [C,L] — это разложение на уровне n = length(L)-2,
[NC,NL] — то же самое разложение на уровне n–1, и cA — вектор аппроксимационных коэффициентов на уровне n. 'wname' — имя заданного вейвлета, C — вектор первоначального вейвлет-разложения, L — соответствующий вектор учета.
Вместо указания имени вейвлета в качестве входных величин можно задать
низкочастотный и высокочастотный фильтры восстановления. Тогда функция
восстановления имеет вид: [NC,NL,cA] = upwlev(C,L,Lo_R,Hi_R). Пример на
применение функции upwlev дается в следующем разделе.
3.7.8. Многоуровневое одномерное вейвлет-разложение — wavedec
Функция wavedec выполняет многоуровневый одномерный вейвлет-анализ,
используя или вейвлет 'wname', или фильтры разложения Lo_D и Hi_D.
Ее вариант [C,L] = wavedec(X,N,'wname') возвращает вектора wavelet-разложения сигнала X на уровне N, используя wavelet 'wname'. N должно быть положительным целым числом. Выходная структура разложения содержит вектор
разложения C и вектор разложения L.
Функция [C,L] = wavedec(X,N,Lo_D,Hi_D) возвращает векторы разложения
для входных низкочастотного и высокочастотного фильтров разложения.
Ниже представлен пример на использование функции wavedec применительно
к сигналу, загруженному из файла sumsin (сумма синусов с разной частотой и амплитудой):
load sumsin; s = sumsin; [c,l] = wavedec(s,3,'haar');
subplot(311); plot(s); xlabel ('Original signal s.');
subplot(312); plot(c);
xlabel(['Coefs for approx. at level 3 and for det. at
levels 3, 2 and 1'])
[nc,nl] = upwlev(c,l,'db1'); subplot(313); plot(nc);
xlabel(['Coefs for approx. at level 2 and for det. at
levels 2 and 1'])
Пример строит временную зависимость сигнала и его вейвлет-разложения разного уровня.
3.7.9. Многоуровневое одномерное вейвлет-восстановление —
waverec
Функция waverec осуществляет многоуровневое одномерное вейвлет-восстановление, используя или вейвлет с именем 'wname', или фильтры восстановления Lo_D и Hi_D.
Функция X = waverec(C,L,'wname') восстанавливает сигнал X, в соответствии с многоуровневой вейвлет-структурой разложения [C,L] и заданным строкой
'wname' типом вейвлета.
Функция X = waverec(C,L,Lo_R,Hi_R) восстанавливает сигнал X, используя
фильтры восстановления Lo_D и Hi_D.
181
Глава 3. Работа с Wavelet Toolbox в командном режиме
В приведенном ниже примере для сигнала из файла leleccum выполнено восстановление этого сигнала по его вейвлет-разложению, после чего исходный и
восстановленный сигналы сопоставлены друг с другом:
load leleccum; s = leleccum(1:3920);
[c,l] = wavedec(s,3,'db5'); a0 = waverec(c,l,'db5');
err = norm(s-a0)
err =
1.6717e-009
Как нетрудно заметить, различие в использованных вариантах восстановления
достаточно малое.
3.7.10. Восстановление одиночной ветви из одномерных
вейвлет-коэффициентов — wrcoef
Функция wrcoef восстанавливает коэффициенты одномерного сигнала, используя векторы разложения (C и L) и заданный строкой 'wname' тип вейвлета или
фильтры Lo_R и Hi_R.
X = wrcoef('type',C,L,'wname',N) возвращает вектор восстановленных
коэффициентов, используя вектора разложения [C,L] на уровне N. Аргумент 'type'
определяет, в каком виде будут восстановлены аппроксимационные коэффициенты ('type' = 'a') или ('type' = 'd').
X = wrcoef('type',C,L,Lo_R,Hi_R,N) возвращает коэффициенты, как описано выше для фильтров восстановления.
X = wrcoef('type',C,L,'wname') и X = wrcoef('type',C,L,Lo_R,Hi_R)
возвращают коэффициенты максимального уровня N = length(L)–2.
Приведенный ниже пример задает загрузку сигнала sumsin из файла и обеспечивает реконструкцию вейвлетом Хаара 5-го уровня (рис. 3.21):
load sumsin; s = sumsin;
[c,l] = wavedec(s,5, 'haar'); a5 = wrcoef('a',c,l,'haar',5);
subplot(311); plot(s); xlabel ('Original signal s.');
subplot(312); plot(c); xlabel ('Coefs wavelet level 5');
axis([0,1000,-10,10])
subplot(313); plot(a5); xlabel(['Reconstructed signal'])
Из рис. 3.21 нетрудно заметить, что вейвлет Хаара в данном случае не обеспечивает приемлемой степени реконструкции низкочастотной синусоиды. Выходной сигнал имеет вид ступенчатой кривой, в которой угадывается низкочастотная
компонента сигнала. Высокочастотная компонента попросту отсеивается, т. е. реконструкция высокого уровня сопровождается эффектом фильтрации. Заменив во
второй строке имя вейвлета Хаара 'haar' на имя 'db10' (вейвлет Дебоши) и
снова пустив пример, получим результаты, приведенные на рис. 3.22.
Нетрудно заметить, что теперь низкочастотная компонента сигнала выглядит
как синусоидальная функция (за исключением небольшого участка в конце). Зато
высокочастотная компонента отсеяна. Вы можете сами попробовать в этом примере снизить уровень реконструкции — при нулевом уровне сигнал будет восстанавливаться полностью. Данные примеры показывают, что выбор типа вейвлетов
для решения тех или иных задач может иметь весьма важное значение.
182
3.8. Дискретное двумерное вейвлет-преобразование
Рис. 3.21. Сигнал в виде суммы синусов и его реконструкция вейвлетом Хаара
5-го уровня
Рис. 3.22. Сигнал в виде суммы синусов и его реконструкция вейвлетом
Дебоши db10 5-го уровня
3.8. Дискретное двумерное вейвлет-преобразование
Функции appcoef2, detcoef2, dwt2, dwtmode, idwt2, upcoef2, upwlev2,
wavedec2, waverec2, wrcoef2 по своему назначению аналогичны описанным
выше функциям для проведения одномерного дискретного вейвлет-преобразова-
183
Глава 3. Работа с Wavelet Toolbox в командном режиме
ния, но применяются для двумерного преобразования. На это указывает окончание имен функций в виде цифры 2. Ниже представлено подробное описание этих
функций, но без довольно громоздких графических диаграмм реализации их алгоритмов, которые можно найти в справке по этим функциям в формате HTML или
в документации в формате PDF. Практическое применение данных функций для
обработки изображений будут описано в конце этой главы. Здесь же мы приведем
простые численные примеры работы данных функций.
3.8.1. Нахождение вейвлет-коэффициентов двумерного
преобразования — appcoef2
Функция A = appcoef2 (C,S,'wname'[,N]) возвращает коэффициенты аппроксимации для двумерного преобразования уровня N, используя структуру вейвлет-декомпозиции [C,S], для вейвлета с именем 'wname'. Уровень преобразования N — целое число от 0 до size(S,1)-2.
Функция A = appcoef2(C,S,Lo_R,Hi_R) или A = appcoef2(C,S,Lo_R,Hi_R,N)
дает то же самое, но при использовании фильтров реконструкции — низкочастотного
Lo_R и высокочастотного Hi_R (см. функцию wfilters для более детального
знакомства).
Пример применения функции appcoef2:
load woman; [c,s] = wavedec2(X,2,'db1',2); sizex = size(X)
sizex =
256
256
s
s =
64
64
64
64
128
128
256
256
3.8.2. Функция нахождения двумерных детализирующих
коэффициентов — detcoef2
Функция D = detcoef2(O,C,S,N) возвращает детализирующие коэффициенты D уровня N для структуры вейвлет-декомпозиции [C,S] по горизонтали, вертикали и диагонали для O = 'h', 'v' или 'd', соответственно. Возможные значения N
были отмечены выше.
Функция [H,V,D] = detcoef2('all',C,S,N) возвращает все (горизонтальные H, вертикальные V и диагональные D) детализирующие коэффициенты уровня N.
D = detcoef2('compact',C,S,N) — возвращает детализирующие коэффициенты уровня N, записанные одной строкой. Функция detcoef2('a',C,S,N) эквивалентна detcoef2('all',C,S,N), а функция detcoef2('c',C,S,N) — detcoef2('compact',C,S,N).
Пример:
load woman; [c,s] = wavedec2(X,2,’db1’);
sizex = size(X)
sizec = size(c)
sizex =
256
256
184
3.8. Дискретное двумерное вейвлет-преобразование
sizec =
1
65536
s
s =
64
64
64
64
128
128
256
256
[chd2,cvd2,cdd2] = detcoef2(‘all’,c,s,2);
>> size(chd2)
ans =
64
64
size(cvd2)
ans =
64
64
size(cdd2)
ans =
64
64
3.8.3. Одноуровневое дискретное двумерное
вейвлет-преобразование — dwt2
Функция dwt2 — одна из важнейших в технике двумерного вейвлет-преобразования. В виде [cA,cH,cV,cD] = dwt2(X,'wname') она вычисляет матрицу cA
коэффициентов аппроксимации для дискретного двумерного вейвлет-преобразования (декомпозиции) матрицы X для вейвлета типа 'wname', а также матрицы
детализирующих коэффициентов cH, cV, and cD (по горизонтали, вертикали и
диагонали).
[cA,cH,cV,cD] = dwt2(X,Lo_D,Hi_D) — делает то же на основе фильтров
декомпозиции.
[cA,cH,cV,cD] = dwt2(...,'mode',MODE) — обеспечивает вейвлет-декомпозицию со спецификацией моды.
Пример на эту функцию дается в следующем разделе.
3.8.4. Одноуровневое дискретное двумерное обратное
вейвлет-преобразование — idwt2
Функция X = idwt2(cA,cH,cV,cD,'wname') для заданного вейвлета 'wname'
осуществляет одноуровневое дискретное обратное вейвлет-преобразование.
Смысл параметров этой функции был отмечен в описании предшествующей функции dwt2.
X = idwt2(cA,cH,cV,cD,Lo_R,Hi_R) — делает то же, используя в качестве
параметров фильтры.
С другими, менее распространенными формами записи функции idwt2 можно
познакомиться из справки по данной функции.
В следующем примере загружается изображение из файла woman, вычисляется
размер матрицы изображения X, затем выполняется прямое (функцией dwt2) и
обратное (функцией idwt2) дискретные двумерные вейвлет-преобразования для
вейвлета Добеши db8, после чего вычисляется наибольшая погрешность результата реконструкции оригинального сигнала:
185
Глава 3. Работа с Wavelet Toolbox в командном режиме
load woman;sX = size(X);
[cA1,cH1,cV1,cD1] = dwt2(X,'db8');
A0 = idwt2(cA1,cH1,cV1,cD1,'db8',sX);
max(max(abs(X-A0)))
ans =
6.5441e-010
Погрешность восстановления очень мала, так что в данном случае можно считать реконструкцию сигнала практически полной.
3.8.5. Прямое восстановление из двумерных
вейвлет-коэффициентов — upcoef2
Функция Y = upcoef2(O,X,'wname',N,S) — для вейвлета 'wname' вычисляет
коэффициенты N-го шага реконструкции для центральной части матрицы X размера S. Если O = 'a', создаются коэффициенты аппроксимации, иначе, если O =
'h' ('v' или 'd', соответственно), горизонтальные, вертикальные или диагональные
детализирующие коэффициенты, соответственно.
Y = upcoef2(O,X,Lo_R,Hi_R,N,S) — задает прямое восстановление по данным фильтров ВЧ и НЧ.
Y = upcoef2(O,X,'wname',N) или Y = upcoef2(O,X,Lo_R,Hi_R,N) — возвращает вычисленные результаты без всех усечений матрицы X.
Y = upcoef2(O,X,'wname') эквивалентно Y = upcoef2(O,X,'wname',1).
Y = upcoef2(O,X,Lo_R,Hi_R) эквивалентно Y =
upcoef2(O,X,Lo_R,Hi_R,1).
Следующий пример демонстрирует применение функции upcoef2:
load woman; [c,s] = wavedec2(X,2,'db4');
siz = s(size(s,1),:); ca1 = appcoef2(c,s,'db4',1);
a1 = upcoef2('a',ca1,'db4',1,siz);
chd1 = detcoef2('h',c,s,1); hd1 = upcoef2('h',chd1,'db4',1,siz);
cvd1 = detcoef2('v',c,s,1); vd1 = upcoef2('v',cvd1,'db4',1,siz);
cdd1 = detcoef2('d',c,s,1); dd1 = upcoef2('d',cdd1,'db4',1,siz);
Полученные коэффициенты вы можете просмотреть самостоятельно — ввиду
громоздкости вывода он не приводится.
3.8.6. Многоуровневое двумерное вейвлет-разложение — wavedec2
Функция [C,S] = wavedec2(X,N,'wname') возвращает вейвлет-декомпозицию уровня N матрицы X, используя вейвлет с именем 'wname'. Выходными аргументами являются вектор декомпозиции C и соответствующая учетная матрица S.
Функция [C,S] = wavedec2(X,N,Lo_D,Hi_D) дает тот же результат, используя коэффициенты НЧ Lo_D и ВЧ Hi_D фильтров декомпозиции.
Вектор C организован следующим образом
C = [ A(N) | H(N) | V(N) | D(N) | ...H(N–1) | V(N–1) | D(N–1) | ... | H(1) | V(1) | D(1) ],
где A, H, V, D — векторы-строки A — коэффициентов аппроксимации, H — горизонтальных, V — вертикальных, D — диагональных детализирующих коэффициентов.
186
3.8. Дискретное двумерное вейвлет-преобразование
Матрица S трактуется как: S(1,:) = число коэффициентов аппроксимации (N);
S(i,:) = число детализирующих коэффициентов (N – i + 2) для i = 2, ...N + 1 и
S(N + 2,:) = size(X).
3.8.7. Одноуровневое восстановление двумерного
вейвлет-разложения — upwlew2
Функция [NC,NS,cA] = upwlev2(C,S,'wname') обеспечивает одноуровневую вейвлет-реконструкцию на основе структуры [C,S], где С — вектор вейвлет-декомпозиции, S — учетная матрица возвращает новую структуру [NC,NS] и
последнюю матрицу коэффициентов аппроксимации сA.
Так как [C,S] — разложение на уровне n = size(S,1)-2, то [NC,NS] — то
же разложение на уровне n – 1, а сA — матрица коэффициентов аппроксимации
уровня n.
[NC,NS,cA] = upwlev2(C,S,Lo_R,Hi_R) — обеспечивает декомпозицию по
данным структуры [С,S] и фильтрам Lo_R и Hi_R реконструкции.
В следующем примере видна работа функций wavedec2 и upwlew2:
load woman; [c,s] = wavedec2(X,2,'db2'); sc = size(c); s
[nc,ns] = upwlev2(c,s,'db2'); snc = size(nc); ns
s =
66
66
66
66
129
129
256
256
ns =
129
129
129
129
256
256
3.8.8. Многоуровневое двумерное вейвлет-восстановление —
waverec2
Функция X = waverec2(C,S,'wname') обеспечивает многоуровневую двумерную вейвлет-реконструкцию для структуры [C,S] и вейвлета типа 'wname'.
Функция X = waverec2(C,S,Lo_R,Hi_R) задает реконструкцию, используя
заданные фильтры Lo_R и Hi_R.
Функция waverec2 является инверсной по отношению к функции wavedec2.
На этом основан приведенный ниже пример:
load leleccum; s = leleccum(1:3920); ls = length(s);
[c,l] = wavedec(s,3,'db4'); a0 = waverec(c,l,'db4');
err = norm(s-a0)
err =
1.0935e-009
3.8.9. Восстановление одиночной ветви из двумерных
вейвлет-коэффициентов — wrcoef2
Функция X = wrcoef2('type',C,S,'wname',N) вычисляет и возвращает
матрицу коэффициентов реконструкции уровня N по данным структуры декомпозиции [C,S] с вейвлетом 'wname'. Если 'type' = 'a', возвращаются коэффициенты
187
Глава 3. Работа с Wavelet Toolbox в командном режиме
аппроксимации, иначе, если 'type' = 'h', 'v' или 'd', — горизонтальные, вертикальные или диагональные детализирующие коэффициенты соответственно. Уровень
N задается целым числом — [0 N size(S,1) – 2], если 'type' = 'a' и [1 N size(S,1) –
2], если 'type' = 'h', 'v' или 'd'.
Функция X = wrcoef2('type',C,S,Lo_R,Hi_R,N) задает реконструкцию на
основе фильтров НЧ Lo_R и ВЧ Hi_R реконструкции.
Функция X = wrcoef2('type',C,S,'wname') или X = wrcoef2('type',C,S,Lo_R,Hi_R) задает реконструкцию коэффициентов с максимальным
уровнем N = size(S,1) – 2.
Примеры применения этой функции представлены ниже:
load woman; [c,s] = wavedec2(X,2,'sym5');
a1 = wrcoef2('a',c,s,'sym5',1); a2 = wrcoef2('a',c,s,'sym5',2);
hd2 = wrcoef2('h',c,s,'sym5',2); vd2 = wrcoef2('v',c,s,'sym5',2);
dd2 = wrcoef2('d',c,s,'sym5',2);
size(hd2)
ans =
256
256
size(vd2)
ans =
256
256
size(dd2)
ans =
256
256
3.9. Пакетные вейвлет-алгоритмы
Пакетный вейвлет-метод является обобщением вейвлет-преобразования и
предлагает более широкий спектр функции анализа сигналов. Функции пакетных
вейвлетов описывают исходный сигнал с помощью трех параметров: как позиции
и масштабирования, как для классического вейвлет-преобразования, так и частоты. Для данной ортогональной вейвлет-функции генерируется библиотека баз пакетных вейвлетов. Каждая из этих баз предполагает конкретный путь кодирования
сигнала и его точного восстановления. Пакетный вейвлет может также быть использован для многочисленных разложений исходного сигнала. Простые и эффективные алгоритмы существуют и для пакетного вейвлет-разложения, и для выбора
оптимального разложения.
3.9.1. Наилучшее дерево уровня — bestlevt
Функция bestlevt выполняет одно- или двумерный пакетный вейвлет-анализ. Она возвращает оптимальное полное поддерево исходного дерева относительно критерия типа энтропии. Причем результирующее полное дерево может быть
меньшей глубины, чем исходное.
T = bestlevt(T) возвращает модифицированное пакетное вейвлет-дерево T,
соответствующее наилучшему уровню разложения дерева.
[T,E] = bestlevt(T) возвращает наилучшее дерево уровня T и наилучшее
значение энтропии E. Причем оптимальная энтропия узла с индексом j – 1 — это
E(j).
188
3.9. Пакетные вейвлет-алгоритмы
Пример применения функции bestlevt представлен ниже (для сигнала из файла
noicedopp и вейвлета Добеши db1):
load noisdopp; x = noisdopp; wpt = wpdec(x,3,'db1');
wpt = wpsplt(wpt,[3 0]); plot(wpt);
blt = bestlevt(wpt); plot(blt);
Исходное дерево представлено на рис. 3.23 слева. Справа представлена временная зависимость сигнала в одном из терминальных (оконечных) узлов (3,1). Для
ее получения надо установить указатель мыши на нужном узле и щелкнуть левой
клавишей мыши. Эти графики получены функцией plot. Утилита wpsplt относится к утилитам управления построением деревьев и была описана выше.
Дерево, полученное с помощью функции bestlevt, показано на рис. 3.24,
слева. Оно действительно несколько короче дерева, показанного на рис. 3.23. Показана также временная зависимость сигнала в терминальном узле (3,0). Это —
очищенный от шума исходный сигнал, который можно наблюдать на вершине дерева — узел (0,0).
Рис. 3.23. Исходное дерево
Рис. 3.24. Дерево, построенное
функцией bestlevt
Этот пример иллюстрирует возможность очистки сигнала от шума. Рекомендуется просмотреть временные зависимости сигнала во всех узлах на левой ветви дерева — это позволяет оценить степень очистки сигнала от шума по мере увеличения уровня декомпозиции и реконструкции сигнала.
3.9.2. Наилучшее дерево по критерию энтропии — besttree
Функция besttree возвращает оптимальное поддерево исходного дерева относительно критерия типа энтропии. Результирующее дерево может быть намного
меньше, чем исходное.
T = besttree(T) возвращает наилучшее дерево T, соответствующее лучшему
значению энтропии.
[T,E] = besttree(T) возвращает наилучшее дерево T и наилучшее значение
энтропии E.
[T,E,N] = besttree(T) возвращает наилучшее дерево T, наилучшее значение энтропии E и вектор N, содержащий индексы соединенных узлов.
189
Глава 3. Работа с Wavelet Toolbox в командном режиме
Следующий пример строит исходное (аналогично рис. 3.21) и наилучшее
(рис. 3.25) дерево по критерию энтропии:
load noisdopp; x = noisdopp; wpt = wpdec(x,3,'db1');
wpt = wpsplt(wpt,[3 0]);plot(wpt)
bst = besttree (wpt); plot(bst);
Рис. 3.25. Дерево, построенное функцией besttree
На рис. 3.25 помимо дерева (слева) построена временная зависимость сигнала
в узлe (0,0). Фактически это исходный сигнал для данного и предшествующего
примеров.
3.9.3. Вычисление энтропии — wentropy
Функция E = wentropy(X,T,P) возвращает энтропию E для входного вектора
или матрицы X. В обоих случаях энтропия E — вещественное число, T — строка, в
которой задается тип энтропии. T = 'shannon', 'threshold', 'norm', 'log
energy', 'sure', 'user'. P — произвольный параметр, зависящий от значения T:
• если T = 'shannon' или 'log energy', то P — не используется;
• если T = 'threshold' или 'sure', P — пороговое значение и должно
быть положительным числом;
• если T = 'norm', то P — мощность и величина P должна быть такой, что
1 ≤ P;
• если T = 'user', P — строка, содержащая имя M-файла пользователя с
его собственной функцией энтропии с одним входом X.
E = wentropy(X,T) эквивалентна E = wentropy(X,T,0).
Примеры вычисления энтропии даны ниже:
x = randn(1,200); e1 = wentropy(x,'shannon')
e2 = wentropy(x,'log energy')
e3 = wentropy(x,'threshold',0.2)
e4 = wentropy(x,'sure',3)
e5 = wentropy(x,'norm',1.1)
e1 =
—72.0871
e2 =
—290.1447
190
3.9. Пакетные вейвлет-алгоритмы
e3 =
168
e4 =
—35.1299
e5 =
147.9605
3.9.4. Обновление энтропии — entrupd
Функция entrupd является одной из пакетных вейвлет-утилит:
T = entrupd(T,ENT) или T = entrupd(T,ENT,PAR) возвращает для заданного вейвлета пакетное дерево T, модифицируя дерево с учетом функции энтропии
ENT с оптимальным параметром PAR.
Для примера найдем энтропию для сигнала noisdopp для уровня 2 и вейвлета db2:
load noisdopp; x = noisdopp; t =
wpdec(x,2,'db2','shannon');
nodes = allnodes(t); ent = read(t,'ent',nodes);
ent'
ans =
1.0e+004 *
Columns 1 through 5
-5.8615
-6.8393
-0.0259
-7.8689
-0.0361
Columns 6 through 7
-0.0145 -0.0102
Теперь выполним обновление энтропии:
t = entrupd(t,'threshold',0.5);
nent = read(t,'ent');
nent'
ans =
937
491
296
243
156
157
152
3.9.5. Извлечение вейвлет-дерева из пакетного дерева — wp2wtree
Функция T = wp2wtree(T) возвращает модифицированное вейвлет-пакетное
дерево T, соответствующее wavelet-дереву разложения. Пример ее применения дан
ниже (см. рис. 3.26):
load noisdopp; x = noisdopp; wpt = wpdec(x,3,'db1');
wt = wp2wtree(wpt); plot(wt)
3.9.6. Пакетные вейвлет-коэффициенты — wpcoef
Функция X = wpcoef(T,N) возвращает коэффициенты, присоединенные к
узлу N вейвлет-пакетного дерева T. Если узел N не существует, то X = [ ] (пустой
вектор).
Функция X = wpcoef(T) эквивалентна X = wpcoef(T,0).
В приведенном ниже примере строится график временной зависимости исходного сигнала и графики двух пакетных вейвлет-коэффициентов (рис. 3.27):
load noisdopp; x = noisdopp; subplot(311); plot(x);
191
Глава 3. Работа с Wavelet Toolbox в командном режиме
title('Original signal');
cfs1 = wpcoef(wpt,[2 1]);
plot(cfs1); title('Packet
cfs2 = wpcoef(wpt,[2 2]);
plot(cfs2); title('Packet
wpt = wpdec(x,3,'db1');
subplot(312);
(2,1) coefficients');
subplot(313);
(2,2) coefficients');
Рис. 3.26. Дерево, построенное
функцией wp2tree, — слева
Рис. 3.27. Графики сигнала и двух его
пакетных вейвлет-коэффициентов
3.9.7. Сечение вейвлет-пакетного дерева — wpcutree
Функция T = wpcutree(T,L) возвращает фрагмент дерева T на уровне L.
[T,RN] = wpcutree(T,L) возвращает фрагмент дерева, как описано выше, и
вектор RN, содержащий индексы восстановленных узлов.
Следующий пример строит усеченное дерево пакетного вейвлета (рис. 3.28):
load noisdopp; x = noisdopp; wpt = wpdec(x,3,'db1');
nwpt = wpcutree(wpt,2); plot(nwpt)
Этот пример в особых комментариях не нуждается.
Рис. 3.28. Усеченное дерево, построенное функцией wpcutree, — слева
и сигнал в узле (2,3) — справа
192
3.9. Пакетные вейвлет-алгоритмы
3.9.8. Пакетное одномерное вейвлет-разложение — wpdec
Функция T = wpdec(X,N,'wname',E,P) возвращает вейвлет-пакетное дерево
T, соответствующее вейвлет-пакетному разложению вектора X на уровне N, для
данного вейвлета 'wname'. Строка E содержит тип энтропии и может принимать
следующие значения: E = 'shannon', 'threshold', 'norm', 'log energy',
'sure', 'user'. P — произвольный параметр. Его выбор поясняется ниже:
• если T = 'shannon' или 'log energy', то P — не используется;
• если T = 'threshold' или 'sure', P — пороговое значение и должно
быть положительным числом;
• если T = 'norm', то P — мощность и величина Р должна быть такой, что
1 ≤ P;
• если T = 'user', P — строка, содержащая имя M-файла пользователя с
его собственной функцией энтропии с одним входом X.
Функция T = wpdec(X,N,'wname') эквивалентна
T = wpdec(X,N,'wname','shannon').
В следующем примере строится дерево, аналогичное рис. 3.24:
load noisdopp; x = noisdopp;
wpt = wpdec(x,3,'db8','shannon'); plot(wpt)
Вы можете просмотреть это дерево самостоятельно и сигналы в его узлах.
3.9.9. Пакетное двумерное вейвлет-разложение — wpdec2
Функция T = wpdec2(X,N, 'wname' ,E,P) возвращает вейвлет-пакетное дерево T для матрицы разложения X и уровня N, с указанием имени данного wavelet
в строке 'wname'. Строка E содержит тип энтропии. P — произвольный параметр,
описанный выше.
Функция T = wpdec2(X,N,'wname') эквивалентна T =
wpdec2(X,N,'wname','shannon').
Просмотрите получаемое дерево при исполнении следующего примера:
load tire; t = wpdec2(X,2,'db4'); plot(t)
3.9.10. Пакетная вейвлет-функция — wpfun
Функция [WPWS,X] = wpfun('wname',NUM,PREC) возвращает пакет для данного вейвлета, заданного строкой 'wname' на двойном интервале 2-PREC. PREC
должно быть положительным целым числом. Выходная матрица WPWS содержит W
функций с индексами от 0 до NUM, сохраненными построчно [W0; W1; ... ; WNUM].
Выходной вектор X соответствует вектору сетки.
[WPWS,X] = wpfun('wname',NUM) эквивалентна [WPWS,X] =
wpfun('wname',NUM,7).
Схема вычисления пакетного вейвлета заметно облегчается при использовании
ортогонального вейвлета. Процесс вычислений начинается с задания двух фильтров h(n) и g(n) длиной 2N для данного вейвлета. Далее определяется последовательность функции (Wn(x),n = 0, 1, 2, ...):
W 2n (x ) =
2
∑ h(k )W (2 x − k ),
n
k = 0,K,2 N −1
где W0(x) = φ(x) — масштабирующая функция, W1(x) = ψ(x) — wavelet функция.
193
Глава 3. Работа с Wavelet Toolbox в командном режиме
Следующий пример строит графики вейвлетов Добеши db2 — рис. 3.29.
[wp,x] = wpfun('db2',3); plot(x,wp)
Рис. 3.29. Графики вейвлетов Добеши db2
Поупражняйтесь в построении каждого графика в своем подокне.
3.9.11. Перекомпонованный пакетный вейвлет — wpjoin
Функция wpjoin обновляет дерево пакетного вейвлета после перекомпоновки
узлов. Узлы нумеруются слева направо и сверху вниз.
T = wpjoin(T,N) возвращает модифицированное дерево пакетного вейвлета
T, соответствующее перекомпонованным узлам N.
[T,X] = wpjoin(T,N) также возвращает коэффициенты узлов.
T = wpjoin(T) эквивалентна T = wpjoin(T,0).
[T,X] = wpjoin(T) эквивалентна [T,X] = wpjoin(T,0).
Для оценки работы функции wpjoin просмотрите графики (деревья), которые
строит этот пример:
load noisdopp; x = noisdopp;
wpt = wpdec(x,3,'db1'); plot(wpt)
wpt = wpjoin(wpt,[1 1]); plot(wpt)
3.9.12. Восстановление коэффициентов пакетного вейвлета —
wprcoef
Функция X = wprcoef(T,N) возвращает восстановленные коэффициенты узла
N дерева пакетного вейвлета T.
Функция X = wprcoef(T) эквивалентна X = wprcoef(T,0).
Приведенный ниже пример строит график сигнала и графики двух восстановленных коэффициентов вейвлет-пакета (рис. 3.30):
load noisdopp; x = noisdopp; subplot(311); plot(x);
title('Original signal'); t = wpdec(x,3,'db1','shannon');
axis([0,1000,-10,10]); rcfs1 = wprcoef(t,[2 1]);
subplot(312); plot(rcfs1); title('Reconstructed packet (2,1)');
axis([0,1000,-4,4]); rcfs2 = wprcoef(t,[2 2]);
subplot(313); plot(rcfs2); title('Reconstructed packet (2,2)');
axis([0,1000,-2,2])
194
3.10. Дискретное стационарное вейвлет-преобразование
Рис. 3.30. Графики исходного сигнала и двух восстановленных коэффициентов
3.9.13. Пакетное вейвлет-восстановление — wprec и wprec2
Функция X = wprec(T) возвращает вектор восстановления X, соответствующий дереву одномерного пакетного вейвлета T.
Функция X = wprec2(T) возвращает матрицу восстановления X, соответствующую дереву двумерного пакетного вейвлета T.
Вы можете самостоятельно составить примеры на эти функции и изучить их
работу.
3.10. Дискретное стационарное вейвлет-преобразование
3.10.1. Дискретное стационарное одномерное
вейвлет-преобразование — swt
Обычное вейвлет-преобразование dwt осуществляется исходя из предпосылки
нестационарности сигнала. В специальном стационарном вейвлет-преобразовании
сигнал рассматривается как стационарный. Наиболее часто этот вид преобразования используется для очистки сигналов от шума.
Для обеспечения дискретного стационарного одномерного вейвлет-преобразования служит функция swt в ряде форм записи:
SWC = swt(X,N,'wname') — возвращает стационарное вейвлет-разложение
сигнала X на уровне N, используя вейвлет 'wname'. N должно быть строго положительным целым числом, и размер X должен быть кратным 2N.
SWC = swt(X,N,Lo_D,Hi_D) — возвращает стандартное wavelet-разложение
для входных низкочастотного и высокочастотного фильтров Lo_D и Hi_D. Выходная матрица SWC состоит из векторов-строк. Для 1 ≤ i ≤ N выходная матрица
195
Глава 3. Работа с Wavelet Toolbox в командном режиме
SWC(i,:) содержит детализирующие коэффициенты на уровне i, SWC(N+1,:) содержит аппроксимационные коэффициенты на уровне N.
[SWA,SWD]=swt(...) возвращает матрицу коэффициентов аппроксимации
SWA и матрицу детализирующих стационарных вейвлет-коэффициентов SWD. Коэффициенты располагаются построчно, для 1 ≤ i ≤ N выходная матрица SWA(i,:)
содержит аппроксимирующие коэффициенты на уровне i, а выходная матрица
SWD(i,:) содержит детализирующие коэффициенты на уровне i.
load noisbloc; s = noisbloc; swc = swt(s,3,'db1');
[swa,swd] = swt(s,3,'db1'); a0 = iswt(swc,'db1');
a0bis = iswt(swa,swd,'db1'); err = norm(s-a0)
errbis = norm(s-a0bis)
err =
9.6566e-014
errbis =
9.6566e-014
Малость погрешности представления сигнала не нуждается в комментариях.
3.10.2. Обратное одномерное стационарное дискретное
wavelet-преобразование — iswt
Обратное одномерное стационарное дискретное вейвлет-преобразование реализуется функцией iswt. Она имеет ряд форм:
X = iswt(SWC,'wname'), X = iswt(SWA,SWD,'wname') или X =
iswt(SWA(end,:),SWD,'wname') — восстанавливают сигнал X, основываясь на
многоуровневой стационарной структуре wavelet-разложения SWC или [SWA,SWD].
X = iswt(SWC,Lo_R,Hi_R), X = iswt(SWA,SWD,Lo_R,Hi_R) или
X = iswt(SWA(end,:),SWD,Lo_R,Hi_R) — восстанавливают сигнал, используя соответствующие фильтры.
Пример:
load nbarb1; swc = swt2(X,3,'sym4');
[ca,chd,cvd,cdd] = swt2(X,3,'sym4');
a0 = iswt2(swc,'sym4');
a0bis = iswt2(ca,chd,cvd,cdd,'sym4');
err = max(max(abs(X-a0)))
errbis = max(max(abs(X-a0bis)))
err =
2.3482e-010
errbis =
2.3482e-010
3.11. Удаление шумов и сжатие сигналов
3.11.1. Принципы очистки сигналов и шумов
Для удаления шумов и сжатия сигналов и изображений используется хорошо
известный из техники фильтрации прием — удаление высокочастотных составляющих из спектра сигнала. Однако применительно к вейвлетам есть еще один
путь — ограничение уровня детализирующих коэффициентов.
196
3.11. Удаление шумов и сжатие сигналов
Мы уже видели, что кратковременные особенности сигнала (а к ним можно
отнести и шумы в виде множества таких особенностей) создают детализирующие
коэффициенты с высоким содержанием шумовых компонент, имеющих большие
случайные выбросы значений сигнала. Задав некоторый порог для их уровня и
срезав по уровню детализирующие коэффициенты, можно уменьшить уровень
шумов. Но, пожалуй, самый интересный аспект этой проблемы заключается в
том, что уровень ограничения можно устанавливать для каждого коэффициента
отдельно, что позволяет строить адаптивные к изменениям сигнала системы очистки сигналов от шума на основе вейвлетов.
3.11.2. Генерация тестовых сигналов — wnoise
Функция X = wnoise(FUN,N) возвращает тестовый сигнал, заданный как функция входного аргумента FUN, на 2N сетке [0,1].
Функция [X,XN] = wnoise(FUN,N,SQRT_SNR) возвращает тестовый вектор X,
перемасштабированный следующим образом std(X) = SQRT_SNR. Возвращаемый
вектор XN содержит тот же тестовый вектор, но с добавленным белым шумом Гаусса N(0,1).
[X,XN] = wnoise(FUN,N,SQRT_SNR,INIT) — возвращает векторы X и XN, с
использованием для инициализации значения INIT. Возможны шесть типов тестовых сигналов, задаваемых значением FUN:
FUN
FUN
FUN
FUN
FUN
FUN
=
=
=
=
=
=
1
2
3
4
5
6
или
или
или
или
или
или
'blocks';
'bumps';
'heavy sine';
'doppler';
'quadchirp';
'mishmash'.
Следующий пример демонстрирует генерацию шести тестовых сигналов с помощью функции wnoise (рис. 3.31):
ind = linspace(0,1,2^10);
for i = 1:6
x = wnoise(i,10);
subplot(6,1,i), plot(ind,x)
end
В другом примере те же сигналы генерируются с наложенным на них шумом
(рис. 3.32):
ind = linspace(0,1,2^10);
for i = 1:6
[x, xn] = wnoise(i,10,2);
subplot(6,1,i), plot(ind,xn)
end
ВНИМАНИЕ Набор тестовых сигналов функции wnoice довольно ограничен. Однако с помощью встроенных математических функций системы MATLAB 6/6.1
можно создать тестовые сигналы практически любого вида.
3.11.3. Установка параметров по умолчанию — ddencmp
Функция [THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,IN2,X) возвращает параметры, используемые по умолчанию, для компрессии и удаления шумов, испо-
197
Глава 3. Работа с Wavelet Toolbox в командном режиме
Рис. 3.31. Шесть тестовых сигналов без шума
Рис. 3.32. Тестовые сигналы с шумом
льзуя вейвлеты, в том числе пакетные, для входного вектора или матрицы X. Матрица X может представлять собой одномерный или двумерный сигнал. Выходные
параметры этой функции следующие:
•
•
•
•
198
THR — пороговое значение;
SORH — установка жесткого порога;
KEEPAPP позволяет сохранить коэффициенты аппроксимации;
CRIT (используется только для пакетного вейвлета) — имя энтропии.
3.11. Удаление шумов и сжатие сигналов
Входной аргумент IN1 может принимать два значения:
• 'den' — для удаления шумов;
• 'cmp' — для сжатия (компрессии).
Аргумент IN2 принимает значение 'wv' для простого вейвлета или 'wp' — для
пакетного вейвлета. Заметим, что для простого вейвлета функция имеет три выходных параметра:
[THR,SORH,KEEPAPP] = ddencmp(IN1,'wv',X).
Для пакетного вейвлета функция использует четыре выходных параметра:
[THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,'wp',X).
Ниже приведены примеры применения данной функции для гауссовского шумового сигнала, заданного (в первой строке) генератором случайных чисел:
init = 2055415866; randn('seed',init); x = randn(1,1000);
[thr,sorh,keepapp] = ddencmp('den','wv',x)
[thr1,sorh1,keepapp1] = ddencmp('cmp','wv',x)
[thr,sorh,keepapp,crit] = ddencmp('den','wp',x)
thr =
3.8593
sorh =
s
keepapp =
1
thr1 =
0.7003
sorh1 =
h
keepapp1 =
1
thr =
4.2911
sorh =
h
keepapp =
1
crit =
sure
3.11.4. Выбор порога для удаления шумов — thselect
Функция THR = thselect(X,TPTR) возвращает пороговое значение для вектора X, используя правило выбора, определенное строкой TPTR:
•
•
•
•
TPTR
TPTR
TPTR
TPTR
=
=
=
=
'rigrsure'
'heursure'
'sqtwolog'
'minimaxi'
—
—
—
—
адаптивная установка порога по методу Штейна;
эвристический вариант порога по методу Штейна;
порог, равный sqrt(2*log(length(X)));
минимаксный порог.
Выбор порогового значения базируется на основной модели вида y = f(t) + e,
где е — белый шум N(0,1).
199
Глава 3. Работа с Wavelet Toolbox в командном режиме
Примеры применения данной функции даны ниже:
init = 2055415866; randn('seed',init);
x = randn(1,1000);
thr = thselect(x,'rigrsure')
thr1 = thselect(x,'sqtwolog')
thr2 = thselect(x,'heursure');
thr3 = thselect(x,'minimaxi')
thr =
1.8065
thr1 =
3.7169
thr3 =
2.2163
3.11.5. Штрафной порог для удаления шума — wbmpen
Функция THR = wbmpen(C,L,SIGMA,ALPHA) возвращает глобальный порог
THR для удаления шумов. Он получается из правила выбора вейвлет-коэффициентов с использованием «штрафного» метода Бирге-Массарта (Birge—Massart).
[C,L] — структура разложения сигнала или изображения, которая должна обрабатываться. SIGMA — стандартное отклонение белого шума Гаусса в данной модели.
ALPHA — параметр настройки для «штрафного» метода.
В приведенном ниже примере показана техника очистки сигнала (с файла noismima) от шума с построением графиков исходного сигнала и очищенного от шума
сигнала (рис. 3.33):
load noismima; x = noismima;
wname = 'sym6'; lev = 4; [c,l] = wavedec(x,lev,wname);
sigma = wnoisest(c,l,1); alpha = 1; thr =
wbmpen(c,l,sigma,alpha);
keepapp = 1; xd =
wdencmp('gbl',c,l,wname,lev,thr,'s',keepapp);
subplot(211), plot(x), title('Original signal');
axis([0,1000,-10,10])
subplot(212), plot(xd), title('De-noised signal');
axis([0,1000,-10,10])
Рекомендуется поэкспериментировать с этим примером, меняя уровень декомпозиции lev, параметр alpha и тип вейвлета. Это поможет оценить возможности
вейвлет-технологии очистки сигналов от шума.
3.11.6. Порог одномерного вейвлета — wdcbm
Функция [THR,NKEEP] = wdcbm(C,L,ALPHA,M) возвращает порог THR относительно некоторого уровня и число сохраненных коэффициентов NKEEP для сжатия или удаления шумов. Данная функция использует метод Бирге—Массарта.
[C,L] — структура вейвлет-разложения сигнала на уровне j = length(L)-2.
ALPHA и M должны быть вещественными числами больше 1. THR — вектор длины j, THR(i) содержит порог для уровня i.
NKEEP — вектор длины j, NKEEP(i) содержит число коэффициентов, которые
должны быть сохранены на данном уровне i.
200
3.11. Удаление шумов и сжатие сигналов
Рис. 3.33. Пример очистки сложного сигнала от шума
Параметры j, M и ALPHA определяют сам метод:
• На уровне j+1 все сохраняется.
• Для уровня i от 1 до j, ni самых больших коэффициентов сохранено с ni =
M (j + 2 – i)ALPHA. Типично ALPHA = 1.5 для сжатия и ALPHA = 3 для удаления шумов.
По умолчанию M = L(1), рекомендуемое значение для M от L(1) до 2*L(1).
Функция wdcbm(C,L,ALPHA) эквивалентна wdcbm(C,L,ALPHA,L(1)).
В следующем примере выполняется загрузка зашумленного сигнала, его очистка от шумов с компрессией и построение графиков исходного и очищенного сигналов (рис. 3.34):
load noismima; x = noismima;
wname = 'db8'; lev = 6; [c,l] = wavedec(x,lev,wname);
alpha = 2; m = l(1); [thr,nkeep] = wdcbm(c,l,alpha,m);
[xd,cxd,lxd,perf0,perfl2] =
wdencmp('lvd',c,l,wname,lev,thr,'h');
subplot(211), plot(x), title('Original signal');
axis([0,1000,-10,10])
subplot(212), plot(xd), title('Compressed signal');
axis([0,1000,-10,10])
xlab1 = ['2-norm rec.: ',num2str(perfl2)];
xlab2 = [' % —- zero cfs: ',num2str(perf0), ' %'];
xlabel([xlab1 xlab2]);
С этим примером также рекомендуется поэкспериментировать. Тем более что
из сравнения его результатов с результатами предшествующего примера (рис. 3.32)
видна разная степень и даже разный характер очистки одного и того же сигнала от
шума.
201
Глава 3. Работа с Wavelet Toolbox в командном режиме
Рис. 3.34. Пример очистки сложного сигнала от шума с компрессией
3.11.7. Удаление шумов и сжатие с использованием пакетного
вейвлета — wpdencmp
Функция wpdencmp для пакетного вейвлета аналогична wden и wdencmp.
В виде:
[XD,TREED,PERF0,PERFL2] = wpdencmp(X, SORH, N, 'wname', CRIT, PAR, KEEPAPP)
она возвращает сжатую и очищенную от шумов матрицу XD входного сигнала
X. Дополнительный выходной аргумент TREED является оптимальным деревом
вейвлет-разложения вектора XD. Выходные параметры PERFL2 и PERF0 — L2 нормы возврата и сжатия, подсчитанные в процентах. PERFL2 = 100 * (норму вектора
WP-коэффициентов XD/норму вектора WP-коэффициентов of X)2. Если X является одномерным сигналом, а вейвлет 'wname' задается ортогональным, то
2
100 XD
PERFL2 определяется как:
.
2
x
Пакетное вейвлет-разложение выполняется на уровне N и для заданного вейвлета 'wname'. Однако наилучшего разложения можно добиться, используя критерий энтропии CRIT и параметр PAR.
Функция
[XD,TREED,PERF0,PERFL2] = wpdencmp (TREE,SORH,CRIT,PAR,KEEPAPP)
аналогична описанной выше, но для преобразования использует напрямую разложение дерева пакетного вейвлета — TREE.
3.11.8. Порог коэффициентов пакетного вейвлета — wpthcoef
Функция
NT = wpthcoef(T,KEEPAPP,SORH,THR)
202
3.12. Удаление шумов при специальных порогах
возвращает новое дерево NT пакетного вейвлета с пороговыми коэффициентами,
полученными из дерева T. Параметр THR задает значение порога.
3.11.9. Одномерный порог вейвлет-коэффициентов — wthcoef
Функция NC = wthcoef('d',C,L,N,P) возвращает коэффициенты, полученные из структуры вейвлет-разложения [C,L] с помощью уровневой компрессии,
определенной в векторах N и P. N содержит детализирующие уровни, подвергающиеся компрессии, а P нижние коэффициенты в процентном соотношении, которые должны быть установлены как нулевые. Вектор N должен быть таким, что 1 ≤
N(i) ≤ length(L)–2.
NC = wthcoef('d',C,L,N) — возвращает коэффициенты, полученные из
структуры [C,L], устанавливая детальные коэффициенты вектора N как нулевые.
NC = wthcoef('a',C,L) — возвращает коэффициенты, полученные в результате установки нулевых коэффициентов аппроксимации.
NC = wthcoef('t',C,L,N,T,SORH) — возвращает коэффициенты, полученные из структуры wavelet-разложения [C,L] установкой гибкого (SORH = 's') или
жесткого (SORH = 'h') порога, определенного векторами N и T. [NC,L] — изменяемая структура вейвлет-разложения.
3.12. Удаление шумов при специальных порогах
3.12.1. Автоматическое одномерное удаление — wden
Функция [XD,CXD,LXD] = wden(X,TPTR,SORH,SCAL,N,'wname') возвращает
очищенный от шума сигнал XD, полученный ограничением вейвлет-коэффициентов преобразования входного сигнала X. При этом используется [CXD,LXD] —
структура вейвлет-разложения очищенного от шумов сигнала XD. Строка TPTR задает правило выбора порога:
• 'rigrsure' — использует алгоритм Штейна несмещенной оценки риска;
• 'heursure' — эвристический вариант предыдущего метода;
• 'sqtwolog' — для инверсного порога 2 log(. );
• 'minimaxi' — для минимального/максимального порога;
• SORH ('s' или 'h') — для гибкого или жесткого порога.
При параметре SCAL='one' предполагается, что s(n) = f(n) + e(n), где e(n) —
белый шум [0, 1].
Строка SCAL определяет мультипликативное пороговое перемасштабирование
(если шум вне пределов [0,1] или не белый):
• 'one' — отсутствие перемасштабирования;
• 'sln' перемасштабирование с использованием единственной оценки уровня шума, основанное на коэффициентах первого уровня;
• 'mln' для перемасштабирования с использованием оценки уровня шума, зависимой от уровня. 'wname' — строка с именем ортогонального вейвлета.
Функция [XD,CXD,LXD] = wden(C,L,TPTR,SORH,SCAL,N,'wname') возвращает те же выходные параметры, используя описанные выше параметры, однако
получая их напрямую из входной структуры [C,L] на уровне N для ортогонального
вейвлета с именем 'wname'.
203
Глава 3. Работа с Wavelet Toolbox в командном режиме
Основная модель для зашумленного сигнала имеет вид: s(n) = f(n) + σe(n) для
равномерных промежутков времени n.
В простейшем случае предположим, что e(n) — белый шум Гаусса N(0,1) и
уровень шума предположительно равен 1. Процедура удаления шума состоит в подавлении составляющей шума в сигнале s и восстановлении составляющей f и
включает в себя три шага:
1. Разложение. Выбор вейвлета и уровня декомпозиции N. Вейвлет-разложение
сигнала s на уровне N.
2. Детализация. Для каждого уровня от1 до N выбирается определенный порог
и применяется гибкий порог для детализирующих коэффициентов.
3. Восстановление. Вейвлет-восстановление, основанное на исходных коэффициентах аппроксимации на уровне N, модификация детальных коэффициентов на
уровнях от 1 до N.
Здесь следует подчеркнуть, что:
• Вектор детализирующих коэффициентов представляет собой суперпозицию
коэффициентов функций f и e, и разложение составляющей e приводит к
тому, что детализирующие коэффициенты являются стандартным белым
шумом Гаусса.
• Минимальный/максимальный и SURE методы выбора порога являются
наиболее традиционными и наиболее подходящими для случаев, когда малые составляющие функции f находятся в полосе шума. Два других метода
удаляют шум наиболее эффективно. Параметр 'heursure' является компромиссным между описанными методами.
На практике базовый метод не может использоваться напрямую. Приведем параметры для отклонений от базового метода. Для этого используется параметр
SCAL, который задает метод перемасштабирования порога.
• Если SCAL = 'one', то используется базовый метод.
• Вообще, можно игнорировать оценку уровня шума. При этом детализирующие коэффициенты CD1, по существу, являются коэффициентами шума со
стандартным отклонением, равным σ. Среднее абсолютное отклонение коэффициентов представляет собой устойчивую оценку σ. Использование устойчивой оценки является определяющим. Если scal = 'sln', то перемасштабирование порога выполняется с использованием единственной
оценки уровня шума на основании коэффициентов первого уровня.
• Если предположить, что шум e не является белым, то порог должен быть
перемасштабирован с использованием оценки уровня шума, зависимой от
уровня N. Такой метод реализован в M-файле wnoisest и использует оценку
σlev, изменяющуюся от уровня к уровню.
При SCAL = 'mln' происходит перемасштабирование порога с использованием оценки уровня шума, зависимой от уровня N.
Приведенный ниже пример показывает применение функции wden с разными
параметрами для очистки сложного импульсного сигнала с шумом, взятым из
файла noisbloc (рис. 3.35):
load noisbloc; x = noisbloc;lev = 8;
subplot(411), plot(x); ylabel ('Noisy signal');
axis([0,1000,-10,20])
xdh = wden(x,'heursure','s','one',lev,'sym8');
204
3.12. Удаление шумов при специальных порогах
subplot(412), plot(xdh); ylabel ('heuristic SURE');
axis([0,1000,-10,20])
xds = wden(x,'sqtwolog','s','sln',lev,'sym8');
subplot(413), plot(xds); ylabel ('Fixed form threshold');
axis([0,1000,-10,20])
xdm = wden(x,'minimaxi','s','sln',lev,'sym8');
subplot(414), plot(xdm); ylabel ('Minimax'); axis([0,1000,10,20])
Рис. 3.35. Примеры очистки сигнала от шума с помощью функции wden
Этот пример дает наглядное представление о том, насколько отличаются методы очистки сигналов от шума, доступные с помощью функции wden.
3.12.2. Удаление шума с сжатием — wdencmp
Функция
[XC,CXC,LXC,PERF0,PERFL2] = wdencmp('gbl', X, 'wname', N,THR,
SORH, KEEPAP)
возвращает очищенный от шума и сжатый вектор XC, полученный из исходного
сигнала X (входной сигнал может быть как одномерным, так и двумерным) с использованием положительного глобального порога THR. Дополнительные выходные аргументы [CXC,LXC] являются структурой вейвлет-разложения вектора XC.
PERF0 и PERFL2 — это L2 — нормы восстановления и сжатия в процентах. PERFL2
= 100 * (norm(CXC)/ norm(C))2, где norm — норма вектора, если [C,L] — это
структура разложения вектора X. Если сигнал X одномерный и вейвлет 'wname' ор2
100 XC
тогональный, то PERFL2 сокращается к
.
2
X
Вейвлет-разложение выполняется на уровне N. Строка 'wname' содержит имя
заданного вейвлета. SORH ('s' или 'h') используется для установки, соответствен-
205
Глава 3. Работа с Wavelet Toolbox в командном режиме
но, гибкого или жесткого порога. Если параметр KEEPAPP = 1, то коэффициенты
аппроксимации не могут ограничиваться, хотя в другом случае это возможно.
Функция wdencmp('gbl',C,L,'wname',N,THR,SORH,KEEPAPP) возвращает
те же выходные аргументы, используя описанные выше опции, однако получая их
напрямую из входной структуры [C,L] на уровне N для вейвлета 'wname'.
Для одномерного случая и параметра 'lvd' используются два варианта описываемой функции:
[XC,CXC,LXC,PERF0,PERFL2] = wdencmp('lvd',X,'wname',N,THR,SORH)
или
[XC,CXC,LXC,PERF0,PERFL2] = wdencmp('lvd',C,L,'wname',N,THR,SORH)
Эти функции возвращают те же выходные аргументы, используя описанные
выше параметры, но разрешают зависимый от уровня порог, содержащийся в векторе THR. Заметим, что, по сравнению с функцией wden, функция wdencmp является более гибкой и позволяет применить метод, задаваемый пользователем.
Для двумерного случая и параметра 'lvd' используются два варианта описываемой функции:
[XC,CXC,LXC, PERF0 ,PERFL2]= wdencmp('lvd',X,'wname',N,THR,SORH)
или
[XC,CXC,LXC,PERF0,PERFL2] = wdencmp('lvd',C,L,'wname',N,THR,SORH)
Выходной аргумент THR должен быть матрицей 3 × N, содержащей зависимый
от уровня порог в горизонтальном, вертикальном и диагональном направлениях.
Для сжатия используется процедура, содержащая три шага. Она описывалась
выше для функции wden. Пример применения функции wdencmp приведен ниже
(см. также рис. 3.36):
load noisbloc; x = noisbloc;
[thr,sorh,keepapp] = ddencmp('den','wv',x);
[XC,CXC,LXC, PERF0 ,PERFL2] =
wdencmp('gbl',x,'sym4',3,thr,sorh,keepapp);
subplot(211), plot(x); xlabel ('Noisy signal');
axis([0,1000,-10,20])
subplot(212), plot(XC); xlabel ('Clear signal');
axis([0,1000,-10,20])
Теперь оценим нормы восстановления и сжатия сигнала:
>>PERF0
PERF0 =
85.4406
>>PERFL2
PERFL2 =
96.9293
3.12.3. Оценка шума одномерных вейвлет-коэффициентов —
wnoisest
Функция STDC = wnoisest(C,L,S) для шумового сигнала возвращает оценку
стандартного отклонения детальных коэффициентов для уровня, заданного во
входном векторе S. [C,L] — входная структура вейвлет-разложения.
206
3.12. Удаление шумов при специальных порогах
Рис. 3.36. Очистка сигнала от шума с сжатием с помощью функции wdencmp
Если C является одномерным массивом ячеек, то STDC = wnoisest(C) возвращает вектор, причем STDC(k) является оценкой стандартного отклонения для
C{k}.
Если C является матрицей, то STDC = wnoisest(C) возвращает вектор, причем STDC(k) является оценкой стандартного отклонения для C(k,:).
Пример оценки стандартного отклонения случайного сигнала дан ниже:
init = 123456789; randn('seed',init); x = randn(1,1000);
[c,l] = wavedec(x,2,'db3'); wnt1=wnoisest(c,l,1:2)
wnt1 =
0.9722
0.9836
3.12.4. Штрафной порог для удаления шумов пакетного
вейвлета — wpbmpen
Функция THR = wpbmpen (T,SIGMA,ALPHA) возвращает глобальный порог
THR для удаления шумов. THR получается по правилу выбора коэффициентов пакетного вевлета с использованием метода Бирге—Массарта. Параметр T — дерево
пакетного вейвлета, соответствующее пакетному вейвлет-разложению сигнала или
изображения для удаления шумов. SIGMA — стандартное отклонение в модели
удаления шума по Гауссу. ALPHA — параметр настройки для штрафного компонента.
В следующем примере сигнал, генерируемый функцией wnoise с номером 2,
подвергается очистке от шума:
[x, xn] = wnoise(2,10,2); wname = 'sym8';
lev = 3; tree = wpdec(xn,lev,wname);
det1 = wpcoef(tree,2); sigma = median(abs(det1))/0.6745;
alpha = 2; thr = wpbmpen(tree,sigma,alpha);
keepapp = 1; xd = wpdencmp(tree,'s','nobest',thr,keepapp);
207
Глава 3. Работа с Wavelet Toolbox в командном режиме
subplot(311), plot(x); title('Original signal');
axis([0,1000,-2,8])
subplot(312), plot(xn); title('Signal with noise');
axis([0,1000,-2,8])
subplot(313), plot(xd); title('De-noised signal');
axis([0,1000,-2,8])
На рис. 3.37 показан исходный сигнал без шума и с шумом, а также частично
очищенный от шума вейвлет-фильтрацией сигнал.
Рис. 3.37. Пример очистки сигнала от шума с помощью функции wpdencmp
Рекомендуется поэкспериментировать с этим примером, изменяя вид входного
сигнала, тип вейвлета, уровень декомпозиции сигнала lev и параметр alpha. Это
позволит оценить реальные возможности очистки тех или иных сигналов от шума,
обеспечиваемые с помощью технологии вейвлетов.
3.12.5. Установка гибкого или жесткого порогов — wthresh
Функция Y = wthresh(X,SORH,T) задает вид порога при подавлении шумов
путем ограничения вейвлет-коэффициентов. Она возвращает гибкий ytsoft
(SORH = 's') или жесткий ythard (SORH = 'h') порог (thersold) T для входного
вектора или матрицы X.
Приведенный ниже пример показывает вид зависимости y(x) при отсутствии
порога, при твердом и при мягком порогах (рис. 3.38):
y = linspace(-1,1,100); thr = 0.4;
ythard = wthresh(y,'h',thr); ytsoft = wthresh(y,'s',thr);
subplot(131), plot(y); title('No thersold ')
subplot(132), plot(ythard); title('thard thersold')
subplot(133), plot(ytsoft); title('tsoft thersold')
208
3.13. Вейвлет-обработка изображений
Рис. 3.38. Типы порогов: отсутствие порога, твердый порог и мягкий порог
3.12.6. Управление параметрами порога — wthrmngr
Функция THR = wthrmngr(OPTION,METHOD,VARARGIN) возвращает глобальный порог или зависимый от уровня OPTION порог. VARARGIN зависит от параметра OPTION и METHOD. Значения параметров можно найти в справке по этой
функции.
3.13. Вейвлет-обработка изображений
В этом разделе мы перейдем к обработке изображений, для чего, естественно,
придется применять функции двумерных вейвлет-преобразований.
3.13.1. Дискретное стационарное двумерное
вейвлет-преобразование — swt2
Дискретное прямое стационарное двумерное вейвлет-преобразование реализуется функцией swt2. Она используется в следующих формах:
SWC = swt2(X,N,'wname') или [A,H,V,D] = swt2(X,N,'wname') — возвращает стационарное вейвлет-разложение сигнала X на уровне N, используя вейвлет
'wname'. N должно быть строго положительным целым числом и size(X,1) и
size(X,2) должны быть кратны 2N. Выходной трехмерный массив [A,H,V,D] содержит коэффициенты аппроксимации на уровне i в матрице A(:,:,i), а матрицы H(:,:,i), V(:,:,i) и D(:,:,i) содержат детальные коэффициенты на уровне i (горизонтальные, вертикальные и диагональные).
Функция SWC = [H(:,:,1:N); V(:,:,1:N); D(:,:,1:N); A(:,:,N)] или
SWC = swt2(X,N,Lo_D,Hi_D) или [A,H,V,D] = swt2(X,N,Lo_D,Hi_D) — возвращает стандартное вейвлет-разложение для входных фильтров разложения —
низкочастотного Lo_D и высокочастотного Hi_D.
Функция swt2 играет ключевую роль в обработке изображений на основе вейвлет-преобразования. Ниже приводится пример, иллюстрирующий это. Он состоит из трех частей:
• загрузка изображения из файла facets и его вывод на просмотр;
209
Глава 3. Работа с Wavelet Toolbox в командном режиме
• визуализация декомпозиции изображения;
• просмотр коэффициентов декомпозиции до уровня k.
Листинг примера с краткими комментариями:
load facets; nbcol = size(map,1);
cod_X = wcodemat(X,nbcol);
subplot(221); image(cod_X)
% Visualize the original image.
title(‘Original image’); colormap(map)
[ca,chd,cvd,cdd] = swt2(X,3,’sym4’);
for k = 1:3
Visualize the decomposition.
cod_ca = wcodemat(ca(:,:,k),nbcol);
cod_chd = wcodemat(chd(:,:,k),nbcol);
cod_cvd = wcodemat(cvd(:,:,k),nbcol);
cod_cdd = wcodemat(cdd(:,:,k),nbcol);
decl = [cod_ca,cod_chd;cod_cvd,cod_cdd];
subplot(2,2,k+1); image(decl) % Сoefs. of the
decomposition at level k.
title([‘SWT dec.: approx. ‘,
‘and det. coefs (lev.
‘,num2str(k),’)’]);
colormap(map)
end
Полученное при запуске этого примера изображение представлено на рис. 3.39.
Рис. 3.39 наглядно иллюстрирует суть декомпозиции изображений разного
уровня.
Рис. 3.39. Пример декомпозиции изображения
210
3.13. Вейвлет-обработка изображений
3.13.2. Обратное стационарное двумерное дискретное
вейвлет-преобразование — iswt2
Следующие функции обеспечивают обратное стационарное двумерное дискретное вейвлет-преобразование:
X = iswt2(SWC,'wname'), X = iswt2(A,H,V,D,'wname') или X =
iswt2(A(:,:,end),H,V,D,'wname') восстанавливают сигнал X, основываясь на
многоуровневой стационарной структуре вейвлет-разложения SWC или [A,H,V,D];
X = iswt2(SWC,Lo_R,Hi_R), X = iswt2(A,H,V,D,Lo_R,Hi_R) или X =
iswt2(A(:,:,end),H,V,D,Lo_R,Hi_R) — восстанавливают сигнал, используя
соответствующие фильтры.
В следующем примере выполняется загрузка файла изображения nbarb1 и оценивается погрешность после прямого swt2 и обратного iswt2 двумерных вейвлет-преобразований:
load nbarb1; swc = swt2(X,3,'sym4');
[ca,chd,cvd,cdd] = swt2(X,3,'sym4');
a0 = iswt2(swc,'sym4'); a0 = iswt2(ca,chd,cvd,cdd,'sym4');
err = max(max(abs(X-a0)))
errbis = max(max(abs(X-a0bis)))
err =
2.3482e-010
errbis =
2.3482e-010
Малая величина погрешности указывает, что изображение восстанавливается с
очень высокой точностью. Поэтому мы не приводим восстановленное изображение – оно абсолютно точно соответствует оригиналу.
3.13.3. Двумерный порог вейвлет-коэффициентов — wthcoef2
Для 'type' = 'h' ('v' или 'd') функция
NC = wthcoef2('type',C,S,N,T,SORH)
возвращает горизонтальные, вертикальные и диагональные коэффициенты, полученные из структуры разложения [C,S] с использованием гибкого (SORH = 's')
или жесткого (SORH = 'h') порогов, определенных в векторах N и T. Вектор N
должен быть таким, что 1 ≤ N(i) ≤ size(S,1)–2.
Для 'type' = 'h' ('v' или 'd') функция
NC = wthcoef2('type',C,S,N)
возвращает горизонтальные, вертикальные и диагональные коэффициенты, полученные из структуры разложения [C,S], устанавливая детализирующие коэффициенты вектора N как нулевые.
Функция
NC = wthcoef2('t',C,S,N,T,SORH)
возвращает коэффициенты, полученные из структуры wavelet-разложения [C,S]
установкой гибкого (SORH = 's') или жесткого (SORH = 'h') порога, определенного векторами N и T. [NC, S] — изменяемая структура wavelet-разложения.
3.13.4. Порог двумерного вейвлета — wdcbm2
Функция [THR,NKEEP] = wdcbm2(C,S,ALPHA,M) возвращает порог THR относительно некоторого уровня и число сохраненных коэффициентов NKEEP для сжа-
211
Глава 3. Работа с Wavelet Toolbox в командном режиме
тия или удаления шумов. Данная функция использует метод Бирге—Массарта.
[C,L] — структура вейвлет-разложения сигнала на уровне j = size(S,1)-2.
ALPHA и M должны быть вещественными числами больше 1. THR — матрица
размера 3 × j, THR(:,i) содержит порог для уровня i в трех направлениях: вертикальном, горизонтальном и диагональном.
NKEEP — вектор длины j, NKEEP(i) содержит число коэффициентов, которые
должны быть сохранены на данном уровне i. Типично значение ALPHA = 1.5 для
сжатия и ALPHA = 3 для удаления шумов. По умолчанию M = prod(S(1,:)), рекомендуемое значение для M от prod(S(1,:)) до 6*prod(S(1,:)).
Функция wdcbm2(C,S,ALPHA) эквивалентна wdcbm2(C,S,ALPHA,prod(S(1,:))).
3.13.5. Создание архива отпечатков пальцев
Одним из ярких примеров применения техники сжатия изображений, ставшим
уже классическим, является создание архивов отпечатков пальцев для криминалистических отделов милиции и полиции. Подобные отделы завалены сотнями тысяч и миллионов отпечатков пальцев. К сожалению, их сканирование ведет к появлению больших графических файлов, для хранения которых требуется множество файловых серверов.
Таким образом, актуальна разработка методов компрессии подобных изображений. Тут мы сталкиваемся именно с тем случаем, когда вполне допустима некоторая потеря точности изображения при условии, что она минимальна для линий,
по которым производится идентификация отпечатков пальцев. Качество самих отпечатков может сильно разниться в зависимости от применяемых красителей,
плотности прижатия пальца к листу бумаги и т. д.
Обработка снимков по вейвлет-технологии сжатия информации дала прекрасные результаты, и это стало одним из первых серьезных применений данной технологии. Приведенный ниже пример иллюстрирует несколько упрощенную программную реализацию данной технологии:
load detfingr; nbc = size(map,1); wname = 'sym4'; lev = 3;
[c,s] = wavedec2(X,lev,wname); alpha = 1.5; m =
2.7*prod(s(1,:));
[thr,nkeep] = wdcbm2(c,s,alpha,m);
[xd,cxd,sxd,perf0,perfl2] =
wdencmp('lvd',c,s,wname,lev,thr,'h');
colormap(pink(nbc)); subplot(221), image(wcodemat(X,nbc)),
title('Original image'); subplot(222),
image(wcodemat(xd,nbc)),
title('Compressed image'); xlab1 = ['2-norm rec.:
',num2str(perfl2)];
xlab2 = [' % — zero cfs: ',num2str(perf0), ' %']; xlabel([xlab1
xlab2])
На рис. 3.40 показаны исходный отпечаток пальца (из файла detfinger), его вид
после вейвлет-преобразования и сжатия изображения в десятки раз. Нетрудно заметить, что при такой степени сжатия качество снимка остается хорошим и он
мало отличается от исходного.
212
3.13. Вейвлет-обработка изображений
Рис. 3.40. Пример сжатия изображения — отпечатка пальца
Сходная с описанной ситуация наблюдается в медицинских учреждениях, работающих с множеством снимков органов человеческого тела, в службах разведки
полезных ископаемых, в картографических отделах и в других организациях, широко использующих технику фотографии.
3.13.6. Очистка изображения от шума
Функции wpbmpen и wpdencmp могут использоваться для очистки искаженных
шумом изображений. Приведенный ниже фрагмент программы обеспечивает очистку изображения, загруженного из файла noisewom:
load noiswom; nbc = size(map,1); wname = ' coif4';
lev = 2; tree = wpdec2(X,lev,wname);
det1 = [wpcoef(tree,2) wpcoef(tree,3) wpcoef(tree,4)];
sigma = median(abs(det1(:)))/0.6745;
alpha = 1.1; thr = wpbmpen(tree,sigma,alpha); keepapp = 1;
xd = wpdencmp(tree,'s','nobest',thr,keepapp);
colormap(pink(nbc));
subplot(221), image(wcodemat(X,nbc)); title('Original image')
subplot(222), image(wcodemat(xd,nbc)); title('De-noised image')
Исходное (слева) и очищенное от шума (справа) изображения, полученные при
исполнении этого примера, представлены на рис. 3.41.
С этим примером также полезно поэкспериментировать. В частности, задайте
выходные параметры функции в полной форме и найдите нормы восстановления
и сжатия изображения.
Рис. 3.41. Пример очистки от шума изображения с помощью функции wpdencmp
213
Глава 3. Работа с Wavelet Toolbox в командном режиме
3.14. Пакет расширения Wavelet Toolbox 2.1/2.2
3.14.1. Новые возможности пакета Wavelet Toolbox 2.1
С версиями системы MATLAB 6.1/6.5 поставляется слегка обновленный пакет
расширения Wavelet Toolbox 2.1. В нем всего три небольших изменения:
• улучшена реорганизация и изменение пользователем GUI меню;
• добавлена новая функция disp для отражения информации о деревьях пакетных вейвлетов;
• добавлена новая функция wavefun2, возвращающая массивы масштабирующей функции и трех вейвлет-функций для двумерных вейвлетов и
строящая их графики.
Документация по пакету Wavelet Toolbox 2.1 несколько переработана
(PDF-файл подрос до 15 Мбайт, зато число страниц описания уменьшилось до
891). Это говорит о некотором увеличении графической части описания и сокращении его текстовой части. В частности, значительно расширено число диаграмм,
описывающих реализации быстрых алгоритмов Малла и структур вейвлет-обработки сигналов (во временной и в частотной областях).
3.14.2. Новая функция disp
Новая функция disp(T) позволяет получить информацию о двумерных вейвлетах, представленных объектом T, например:
>> x = rand(1,500);
t = wpdec(x,2,’db2’);
disp(t)
Wavelet Packet Object Structure
=================================
size of initial data
: [1 500]
order
: 2
depth
: 2
terminal nodes
: [3 4 5 6]
----------------------------------------------------Wavelet Name
: db2
Low Decomposition filter
: [-0.1294
0.2241
0.8365
0.483]
High Decomposition filter : [ —0.483
0.8365
—0.2241
—0.1294]
Low Reconstruction filter : [ 0.483
0.8365
0.2241
—0.1294]
High Reconstruction filter : [-0.1294
—0.2241
0.8365
—0.483]
-----------------------------------------------------Entropy Name
: shannon
Entropy Parameter
: 0
214
3.14. Пакет расширения Wavelet Toolbox 2.1/2.2
3.14.3. Новая функция wavefun2
Новая функция wavefun2 служит для получения массивов поверхностей масштабирующей функции W и трех поверхностей детализирующей функции W1, W2 и
W3 для двумерных ортогональных вейвлетов. Кроме того, эта функция возвращает
двумерный массив XYVAL из 2ITER × 2ITER, представляющий тензорное произведение (XVAL,XVAL). Здесь положительное число ITER определяется числом
итераций в ходе аппроксимации.
Функция используется в нескольких формах:
[S,W1,W2,W3,XYVAL] = wavefun2('wname',A,B) — где A и B —положительные
числа, что эквивалентно [S,W1,W2,W3,XYVAL] = wavefun2('wname',max(A,B)).
Результатом работы функции является получение указанных выше массивов и построение поверхностей для масштабирующей функции и трех детализирующих функций;
[S,W1,W2,W3,XYVAL] = wavefun2('wname',0) — эквивалентно заданию
функции [S,W1,W2,W3,XYVAL] = wavefun2('wname',4,0);
[S,W1,W2,W3,XYVAL] = wavefun2('wname') — эквивалентно заданию функции [S,W1,W2,W3,XYVAL] = wavefun2('wname',4).
Следующий пример иллюстрирует применение функции wavefun2 (рис. 3.42):
iter = 4; wav = 'sym4'; [s,w1,w2,w3,xyval] = wavefun2
(wav,iter,0);
Как видно из рис. 3.42, функция wavefun2 дает наглядное представление о
скейлинг-функции и вейвлет-функциях двумерных вейвлетов, которые представляются уже не одномерными графиками, а поверхностями.
Рис. 3.42. Представление масштабирующей функции и трех вейвлет-функций
двумерного вейвлета
215
Глава 3. Работа с Wavelet Toolbox в командном режиме
3.14.4. Новые возможности пакета Wavelet Toolbox 2.2
С версией MATLAB 6.5 Service Pack 1.0 стал поставляться пакет расширения
Wavelet Toolbox 2.2. В пакет введено несколько новых средств:
cfs2wpt — новая функция для построения объекта типа пакетного дерева;
wenergy и wenergy2 — новые функции для вычисление энергии, представленной детализирующими коэффициентами одномерных и двумерных объектов;
wentropy — усовершенствованная функция вычисления энтропии;
wavefun2 — усовершенствованная функция, описанная выше, с возможностью
перемножения графиков.
wavread и auread — MATLAB функции прямой загрузка файлов с расширением wav и au стали возможными в GUI пакета Wavelet Toolbox.
С полным синтаксисом функции cfs2wpt можно познакомиться по справке
на нее. Ниже представлен пример применения этой функции (рис. 3.43):
>> load noiswom; t = wpdec2(X,2,'sym4');
cfs = read(t,'allcfs'); noisyCfs = cfs +
40*rand(size(cfs));
noisyT = cfs2wpt('sym4',size(X),tnodes(t),4,noisyCfs);
plot(noisyT)
Рис. 3.43. Построение пакетного дерева функцией cfs2wpt
В целом можно отметить, что изменения в пакете Wavelet Toolbox 2.2 носят
скорее косметический, чем принципиальный характер.
216
Глава 4. Работа с GUI пакета Wavelet Toolbox
4.1. Графический интерфейс пользователя — GUI
4.1.1. Вызов окна GUI пакета Wavelet Toolbox — wavemenu
Большинство вейвлет-преобразований, описанных в предшествующей главе, в
пакете Wavelet Toolbox поддерживается не только в командном режиме, но и с помощью утилит, реализованных с применением специального графического интерфейса пользователя — Graphic User Interface, или GUI. Для доступа к нему достаточно в командном окне системы MATLAB исполнить команду wavemenu. Появится окно со списком разделов вейвлет-преобразований — рис. 4.1.
Рис. 4.1. Окно GUI пакета Wavelet Toolbox
ВНИМАНИЕ Рис. 4.1 показывает окно GUI пакета Wavelet Toolbox внутри окна командного режима работы системы MATLAB. Полное описание пользовательского интерфейса системы MATLAB можно найти в ряде книг, например в
[29, 30]. Однако даже знакомства с рис. 4.1 достаточно, чтобы ввести
команду wavemenu и приступить к работе со средствами пакета Wavelet
Toolbox.
Как видно из рис. 4.1, список разделов в окне GUI соответствует общепринятой
классификации вейвлетов в пакете расширения Wavelet Toolbox и областей их применения, которые мы рассмотрели выше в главе 3. Для выбора нужного раздела
достаточно активизировать мышью соответствующую кнопку с выбранной темой.
4.1.2. Визуализация вейвлетов — окно Wavelet Display
Знакомство с GUI пакета начнем с действия кнопки Wavelet Display. Нажатие
этой кнопки выводит окно просмотра вейвлетов, показанное на рис. 4.2. В данном
случае в этом окне просматриваются данные о вейвлете Хаара — первом и, пожа-
217
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.2. Окно просмотра вейвлетов Хаара
луй, самом простом вейвлете из всех ныне известных. Его роль мы неоднократно
отмечали.
Как вытекает из теоретического анализа вейвлетов (глава 2), вейвлеты этого
типа характеризуются масштабирующей функцией phi (она имеет значение 1 при
x от 0 до 1 и 0 при других значениях x) и вейвлет-функцией psi (в виде меандра), а
также коэффициентами НЧ- и ВЧ-фильтров декомпозиции и реконструкции. Все
эти данные и приведены в основной — левой части окна. Графики функций, разумеется, даны несколько приближенно и у них перепады с бесконечно большой
крутизной представлены перепадами с конечной крутизной из-за погрешностей
построения графиков видеосистемой ПК.
Коэффициенты фильтров соответствующих вейвлетов отображаются вертикальными линиями со светлым кружком на них. Высота центра кружка соответствует значению соответствующего коэффициента. Нетрудно заметить, что вейвлеты
Хаара имеют всего по два коэффициента каждого фильтра, линии которых расположены по краям окон просмотра. Функции phi и psi этого вейвлета прекрасно
приспособлены для учета резких перепадов и ступенек сигналов.
В этом окне имеется возможность выбора типа вейвлета из открывающегося
списка в правом верхнем углу окна, а также уровня декомпозиции и степени итерационного уточнения (Refinement). В правой части окна имеется 4 кнопки следующего назначения:
Display — запуск просмотра данных о выбранном вейвлете;
Name wavelets — просмотр информации о вейвлете с именем Name;
Wavelets — просмотр общей информации о вейвлетах;
Close — закрытие окна контроля вейвлетов.
Теперь познакомимся с другим широко распространенным вейвлетом — Добеши. Окно Wavelet Display с данными вейвлета Добеши db8 показано на рис. 4.3.
Для данного вейвлета (dbN) число коэффициентов всех фильтров равно 2N. Вейвлет Добеши явно неплохо приспособлен для представления сигналов сложной
218
4.1. Графический интерфейс пользователя — GUI
формы. Эти вейвлеты, однако, имеют характерную асимметрию — нарастание
psi-функции растянуто по сравнению со спадом. Поэтому нельзя говорить о какой-то определенной частоте волн, но можно говорить о средней их частоте. Хорошо видно, что вейвлеты этого типа имеют компактный носитель, т. е. быстро
нарастают и быстро спадают.
Рис. 4.3. Окно просмотра вейвлетов Wavelet Display с данными
о вейвлете Добеши db8
Другим важным типом вейвлетов являются комплексные вейвлеты. Они характеризуются следующими параметрами:
•
•
•
•
действительной частью функции psi;
мнимой частью функции psi;
модулем функции psi;
фазой функции psi.
Для примера на рис. 4.4 представлены данные по комплексному вейвлету Морлета 1-1.5. Основную часть окна занимает представление отмеченных выше функций. Полезно отметить, что представление этих вейвлетов существенно отлично
от вейвлетов Добеши. В частности, действительная и мнимая части psi-функции
этих вейвлетов отличаются хорошей симметрией.
Рассмотрим еще один довольно распространенный вейвлет — биортогональный. На рис. 4.5 представлены данные о таком вейвлете bior2.4. Эти вейвлеты характеризуются парой phi-функций и парой psi-функций, которые (вместе с парами фильтров) и представлены на рис. 4.5. Эти функции имеют хорошую симметрию, но они не гладки и напоминают по виду фрактальные кривые.
В правом нижнем углу окна графиков вейвлета имеется кнопка View Axes, активизация которой вызывает появление окна с тем же нажатием, также видимого
в правом нижнем углу всего окна. Это окно имеет кнопки, расположение которых
соответствует расположению графиков вейвлета. Активизируя ту или иную кнопку, можно вызвать график на просмотр в увеличенном виде, выделить его часть и
219
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.4. Окно просмотра вейвлетов Wavelet Display с данными
о комплексном вейвлете Морлета 1-1.5
Рис. 4.5. Окно просмотра вейвлетов Wavelet Display с данными
о биортогональном вейвлете bior2.4
с помощью кнопок панели инструментов под окном графики — рис. 4.6. Назначение ее кнопок несложно и в особом указании не нуждается.
С другими типами вейвлетов, подробно описанных в конце главы 2, можно
также познакомиться с помощью этого окна. Органы управления окном интуитивно понятны, и мы не будем их описывать более детально.
220
4.1. Графический интерфейс пользователя — GUI
Рис. 4.6. Детальный просмотр биортогонального вейвлета bior2.4
ВНИМАНИЕ Окно Wavelet Display дает возможности детального изучения свойств всех
видов вейвлетов, включенных в состав пакета Wavelet Toolbox, что позволяет детально ознакомиться с их свойствами и особенностями, которые
полезно использовать на практике.
4.1.3. Доступ к демонстрационным примерам — wavedemo
Еще одним важным средством освоения пакетов расширения СКМ MATLAB
являются демонстрационные примеры. Обилие таких примеров облегчает знакомство с возможностями этой системы и полезно для ее освоения. Команда wavedemo, введенная в командной строке MATLAB, вызывает появление небольшого
окошка (рис. 4.7) с меню демонстрационных примеров.
В этом окне представлено следующее меню:
• Command line mode — примеры работы в командном режиме;
• GUI mode — доступ к GUI-средствам, описанным выше;
• Short 1D scenario — слайдовая демонстрация возможностей одномерного
вейвлет-преобразования;
• Close — закрытие окна.
Мы уже неоднократно демонстрировали
возможности
использования
средств пакета Wavelet Toolbox в
командном режиме. Рассмотренные
примеры полезно дополнить теми, доступ к которым дает позиция Command
line mode меню демонстрационных
примеров. Активизируя кнопку меню
Command line mode, можно вывести
еще одно окно, показанное на рис. 4.8.
Рис. 4.7. Окно меню демонстрационных
примеров пакета Wavelet Toolbox
221
Глава 4. Работа с GUI пакета Wavelet Toolbox
Нетрудно заметить, что многие из примеров в
этом окне те же самые, что и в окне GUI пакета.
4.1.4. Работа с демонстрационными
примерами
По ходу описания вейвлет-технологии мы рассмотрим многие примеры применения вейвлетов,
в том числе доступные из перечня в окне рис. 4.1.
Пока ограничимся первым примером Wavelet 1D.
Он дает хорошее представление об использовании
одномерных ортогональных вейвлетов. При запуске этого примера появляется его окно, позволяющее просмотреть отдельные слайды этого примера. Рис. 4.9 показывает один из таких слайдов — на нем показан исходный сигнал и его
Рис. 4.8. Окно
грубое (аппроксимация) и детальное приближедемонстрационных примеров
ния, представленные коэффициентами первого
пакета Wavelet Toolbox
уровня a1 и d1. Такое представление сигналов является его декомпозицией.
Реконструкция сигнала, как уже отмечалось, сводится к объединению его грубой и детальной компонент, то есть, попросту говоря, к сложению a1 и d1. Это
представлено на другом слайде данного примера — рис. 4.10. Чем ниже уровень
декомпозиции, тем более детальным является реконструированный сигнал. При
нулевом уровне реконструкции она абсолютно точна.
Следующий слайд (рис. 4.11) демонстрирует уже реконструкцию сигнала третьего уровня. На нем представлены графики сигнала и четырех коэффициентов a3
и d1, d2 и d3. Внимательный просмотр исходного и реконструированного сигнала
показывает наличие видимых на глаз, хотя и не очень сильных, различий.
Рис. 4.9. Сигнал и вейвлет-коэффициенты a1 и d1
222
4.1. Графический интерфейс пользователя — GUI
Рис. 4.10. Сигнал и результаты его реконструкции первого и нулевого уровней
Рис. 4.11. Сигнал и вейвлет-коэффициенты разного уровня
Заключительный кадр слайд-шоу данного примера приведен на рис. 4.12. Здесь
в увеличенном масштабе показаны сам сигнал и результат его реконструкции нулевого уровня. Нетрудно заметить, что, несмотря на весьма сложный характер
сигнала (не периодический, имеющий как медленные, так и очень быстрые компоненты), реконструированный сигнал ничем не отличается от оригинала. Это
еще раз подтверждает уже отмеченное уникальное свойство ортогональных вейвлетов — возможность точной реконструкции сигналов произвольного вида.
223
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.12. Сигнал и результат его реконструкции нулевого уровня
Собственно говоря, все представленное мы уже рассмотрели, используя в
командном режиме функции пакета Wavelet Toolbox. Однако демонстрационные
примеры даны в красочном обрамлении и виде слайд-шоу, облегчающем понимание довольно сложной теоретически и достаточно простой практически вейвлет-технологни обработки сигналов. В частности, последний пример хорошо иллюстрирует справедливость теоретических положений вейвлет-преобразований.
Как нетрудно заметить, в окне под рисунками каждого слайда имеется окошко
с листингом программного фрагмента, осуществляющего то или иное действие.
Казалось бы логичным иметь возможность копирования этих фрагментов для составления своих программ. Но, увы, MATLAB 6/6.1/6.5 такой возможности в явной форме не предоставляет. Мало того, что окно демонстрационных примеров
не имеет обычного меню, в нем нельзя вывести контекстное меню правой клавиши мыши.
Однако разработчиков этих примеров можно все же «обвести вокруг пальца».
Так, автором был испытан следующий прием копирования программных фрагментов — вначале нужный фрагмент (полностью или частично без комментариев) выделяется мышью при нажатой левой клавише. Затем при нажатии клавиш Shift и
Del фрагмент переносится в буфер с его исчезновением в окне. Нажатие клавиш
Shift и Ins позволяет вернуть фрагмент на место или (уже в окне командного режима или в окне редактора Word 95/97/2000) тем же самым приемом поместить в
строку ввода для исполнения.
4.1.5. Просмотр примера Short 1D scenario
Полное и весьма наглядное представление о возможностях одномерного вейвлет-преобразования дает пример Short 1D scenario. Он использует окно GUI и
дополнительную панель управления слайд-шоу — рис. 4.13.
Этот слайд демонстрирует уже обсуждавшуюся проблему — вейвлет-декомпозиции сложного сигнала (на этот раз это сигнал типа «визг» с шумами). Этот сиг-
224
4.1. Графический интерфейс пользователя — GUI
Рис. 4.13. Один из слайдов примера Short 1D scenario
нал представлен грубой аппроксимацией a5 и пятью детальными коэффициентами от d1 до d5. Используется вейвлет sym4. Показ слайдов сопровождается выводом панели с комментариями — она видна внизу рис. 4.13.
Поскольку детали вейвлет-декомпозиции и вейвлет-реконструкции сигналов
мы уже неоднократно обсуждали, опустим ряд слайдов и покажем сразу слайд
рис. 4.14, на котором представлен результат аппроксимации сигнала пятого уровня и его очистки от шума. К сожалению, из-за черно-белой печати рисунков отличить сигнал от его аппроксимации трудно.
Рис. 4.14. Пример аппроксимации сигнала и его очистки от шума
225
Глава 4. Работа с GUI пакета Wavelet Toolbox
Можно заметить, что вейвлет-преобразование чуда в очистке сигналов от шума
не делает. Чем выше степень очистки, тем хуже воспроизведение быстрых компонент сигнала. В частности, в начале процесса нарастания амплитуды сигнала во
времени расхождение между реконструированным и оригинальным сигналами весьма заметно, тогда как в конце этого процесса оно резко уменьшается.
4.1.6. Демонстрационные примеры GUI
Окно GUI имеет стандартное меню. На рис. 4.15 это окно показано с открытой
позицией File. Нетрудно заметить, что эта позиция позволяет загружать как отдельные сигналы, вейвлет-коэффициенты и данные декомпозиции сигналов, так и
полные примеры применения вейвлет-технологии. На рис. 4.15 показано и открытое подменю с примерами раздела Wavelet 1D. Видно, что только в этом (одном из
многих) разделе имеется список из более чем 30 демонстрационных примеров.
Рис. 4.15. Загрузка примеров из раздела Wavelet 1D в окне GUI
4.2. Выявление особенностей функций и сигналов
4.2.1. Вейвлет-представление скачка уровня
В радиотехнике, космических системах связи, в ядерной физике и во многих
других областях науки и техники важное значение имеет анализ тонких особенностей сигналов. Эту тему мы уже поднимали в начале главы 2 и частично в главе 3,
а теперь выборочно рассмотрим на весьма наглядных примерах, реализованных в
GUI пакета Wavelet Toolbox. Начнем с непрерывных и одномерных вейвлетов, как
наиболее приспособленных для анализа тонких особенностей сигналов. В титульной строке окна GUI каждого примера можно найти название раздела, из которого взят пример.
На рис. 4.16 показан один из интересных демонстрационных примеров представления сигнала в виде скачка. Здесь дан случай декомпозиции сигнала пятого
уровня и, помимо сигнала и результата его реконструкции, представлено вей-
226
4.2. Выявление особенностей функций и сигналов
влет-дерево реконструкции. Оно содержит набор коэффициентов аппроксимации
и детальных коэффициентов, соединенных стрелками, отражающими ход реконструкции.
Как видно из рис. 4.16, реконструкция с декомпозицией сигнала пятого уровня
дает не самые хорошие результаты — реконструированный сигнал заметно отличается от исходного. Однако (и вы можете сами это проверить) реконструкция нулевого уровня точно воспроизводит ступенчатый сигнал. Рис. 4.17 наглядно показывает, как с понижением уровня реконструкции улучшается приближение сигнала в виде одиночной ступени.
Рис. 4.16. Пример декомпозиции и реконструкции пятого уровня для сигнала
в виде одиночного скачка
Рис. 4.17. Демонстрация реконструкции сигнала в виде ступенек
227
Глава 4. Работа с GUI пакета Wavelet Toolbox
Мы будем еще не раз обращаться к демонстрационным примерам из окна таких
примеров и из окна GUI по мере обсуждения возможностей вейвлет-технологии.
4.2.2. Обнаружение скачков во времени
Рис. 4.18 показывает пример вейвлет-анализа линейно нарастающего и затем
линейно спадающего сигнала (треугольного). Весь «фокус» в том, что этот сигнал
имеет в середине стадий нарастания и спада едва заметные горизонтальные «разрывы» или «полочки». Еще одна особенность такого сигнала (на этот раз четко видная
на его графике) — это разрыв первой производной сигнала в его середине — иными
словами, это переход от нарастания к спаду. Наконец, к особенностям сигнала относятся и его концевые точки — за их пределами сигнал не определен.
Рис. 4.18. Анализ особенностей сигнала с горизонтальными разрывами
Как видно из рис. 4.18, все эти особенности находят самое четкое выражение
на спектрограмме. Особенно это заметно на линиях локализации экстремумов Local Maxima Lines (внизу рис. 4.18). Эти линии создаются специальным алгоритмом, позволяющим четко выделять максимумы и минимумы светимости вейвлет-спектра. Еще одна интересная возможность анализа спектров — анализ прямо значений вейвлет-коэффициентов.
4.2.3. Анализ функций и сигналов по фазовому сдвигу
GUI-интерфейс пакета Wavelet Toolbox открывают огромные возможности в
экспериментировании с сигналами разных видов и с различными вейвлетами.
При этом можно составить классификацию тех или иных признаков сигнала.
В этом нетрудно убедиться на еще одном примере анализа сложного сигнала,
представленном на рис. 4.19. Здесь дано сопоставление двух методов анализа, названных анализом по модулю и по фазовому углу вейвлет-коэффициентов (см. панель управления справа). Эти методы возможны при использовании комплексных
одномерных вейвлетов.
228
4.2. Выявление особенностей функций и сигналов
Рис. 4.19. Анализ сложного сигнала методами по модулю и по углу
До сих пор мы не обращали внимание на фазовый спектр вейвлетов. Но в данном примере изучается достаточно сложная функция, имеющая ряд особенностей.
Некоторые из них могут существенно выделяться, если наряду с визуализацией
значений коэффициентов по модулю выполнить ее с учетом фаз коэффициентов.
Это и делается в данном примере. Степень визуализации вейвлет-коэффициентов
в данном случае в особых комментариях не нуждается! Однако отметим, что нередко анализ изменения фазового угла вейвлет-коэффициентов способен существенно повысить степень обнаружения особенностей различных сигналов и функций. Так, в последнем примере видно прекрасное выделение сингулярности функции в центре ее графика.
4.2.4. Анализ скачка по частоте синусоиды
При осуществлении тональной манипуляции возникают скачки по частоте синусоидального сигнала с равной амплитудой в разных частях временного интервала. Это означает, что сигнал является явно нестационарным. Такие скачки трудно
обнаружить при обычном спектральном анализе, поскольку они ведут просто к
некоторому переносу спектральной линии с одной частоты на другую. Сам переходной процесс «размазывается» по всему спектру. Рис. 4.20 дает пример вейвлет-анализа скачка синусоиды по частоте.
Нетрудно заметить, что скачок частоты хорошо выделяется при больших номерах вейвлет-коэффициентов, кстати, как и периодичность низкочастотной составляющей сигнала. Периодичность высокочастотной составляющей лучше выделяется при малых номерах коэффициентов. Это и понятно — они выявляют детальную
картину временной зависимости сигнала. Любопытно, однако, наличие разных зон
нечувствительности к синусоидальному сигналу (ровный черный цвет).
Полезно обратить внимание на опции вывода разных графиков Selected Axes:
Coefficients — вывод коэффициентов (спектрограммы);
Coefficients Line — вывод линии значений уровня коэффициентов;
Maxima Line — вывод линии выделения экстремумов.
229
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.20. Анализ скачка частоты синусоиды
На рис. 4.20 задан вывод первых двух графиков, что привело к представлению
спектрограммы в увеличенных размерах и в более детальном виде.
4.2.5. Вейвлет-анализ фрактальной кривой
Комплексные непрерывные вейвлеты также обладают превосходными возможностями в анализе тонких особенностей сложных сигналов. Это демонстрирует
рис. 4.21, на котором показаны два способа анализа фрагмента фрактальной кривой. Нетрудно заметить, что ее тонкие особенности прекрасно локализуются как
на уровне представления вейвлет-коэффициентов, так и спектрограмм сигнала.
Рис. 4.21. Анализ особенностей фрактальной кривой с помощью непрерывных
комплексных вейвлетов
230
4.3. Применение дискретных вейвлетов
С рядом других примеров анализа тонких особенностей сигналов с помощью
непрерывных вейвлетов вы можете ознакомиться самостоятельно. Напоминаем,
что окна GUI имеют меню со стандартными возможностями загрузки не только
демонстрационных примеров, но и разных видов сигналов, записи создаваемых
изображений и вейвлет-коэффициентов и другие возможности.
4.2.6. Анализ функций и сигналов с помощью пакетных вейвлетов
Пакетные вейввлеты также могут использоваться для анализа сигналов.
Рис. 4.22 дает пример работы с сигналом, представляющим сумму двух синусоид с
сильно разнящейся частотой.
Рис. 4.22. Пример анализа сигнала в виде суммы двух синусоид пакетным
вейвлетом
Основная особенность GUI при работе с такими вейвлетами — вывод дерева
преобразований и возможность просмотра формы сигнала в любом, намеченным
мышью, узле дерева. Основные особенности применения пакетных вейвлетов связаны с возможностью обрезания ветвей дерева преобразований и выбора оптимального дерева. Реализуются эти возможности чаще всего при решении задач очистки сигналов от шумов и их компрессии. Соответствующие средства управления
процессом преобразований представлены на панели управления справа окна GUI
(рис. 4.22).
4.3. Применение дискретных вейвлетов
4.3.1. Обработка сигнала с шумом
Одномерные дискретные вейвлеты наиболее приспособлены для анализа сложных сигналов, нередко искаженных шумом. В отличие от непрерывных вейвлетов
231
Глава 4. Работа с GUI пакета Wavelet Toolbox
дискретные вейвлеты используют быстрые алгоритмы вейвлет-разложения и реконструкции сигналов. Их дискретность, в частности при построении спектрограмм, перестает играть огрубляющую роль, если число отсчетов сигналов составляет сотни и тысячи.
Рис. 4.23 демонстрирует возможности вейвлет-обработки сигнала с шумом с
помощью средств GUI. Для обработки используются одномерные дискретные
вейвлеты (wavemenu 4 File.4 Wavelet 1-D) Сверху панели управления можно сменить тип вейвлета и с помощью кнопки анализа Analyze выполнить разложение
для выбранного типа вейвлета.
Рис. 4.23. Вейвлет-обработка сложного сигнала
Под кнопкой анализа расположены еще 4 важные кнопки:
•
•
•
•
Statistics — вывод окна с данными статистики;
Histograms — вывод окна с гистограммами;
Comptess — вывод окна компрессии сигнала;
De - noise — вывод окна очистки сигнала от шума.
Обратите внимание также на кнопку More Display Options (дополнительные параметры дисплея). Она открывает панель параметров дисплея, которая позволяет
уточнить многочисленные настройки дисплея. С этой панелью вы можете познакомиться самостоятельно (настройки дисплея настолько совершенны, что менять
их без особой надобности не стоит).
4.3.2. Статистическая обработка сигналов
Кнопка Statistics открывает окно с данными статистики выбранного сигнала
или его вейвлет-представления — рис. 4.24 для сигнала рис. 4.23. В этом окне
имеется представление сигнала и обычная и кумулятивная гистограммы отсчетов
сигнала. Подобная статистика может быть получена также для синтезированного
сигнала, его аппроксимации и детального представления (по детализирующим коэффициентам). Соответствующие параметры представлены в правой части окна
статистики.
232
4.3. Применение дискретных вейвлетов
Рис. 4.24. Окно с данными статистики сигнала
Более детальные статистические данные могут быть получены с помощью окна
гистограмм, которое открывается при щелчке мышью на кнопке Histograms —
рис. 4.25. Гистограммы дают расширенную картину статистики сигналов и их вейвлет-разложений, поскольку позволяют оценивать статистические характеристики
не только сигнала, его аппроксимации и деталей, но и отдельных вейвлет-коэффициентов. Это может иметь существенное значение в том случае, когда данные
спектрограмм не могут быть истолкованы однозначно и нужно обращаться к более тонкой материи — анализу (в том числе статистическому) вейвлет-коэффициентов.
Рис. 4.25. Окно с гистограммами
233
Глава 4. Работа с GUI пакета Wavelet Toolbox
ВНИМАНИЕ Статистическая обработка сигналов и данных их вейвлет-преобразований
открывает возможности углубленной оценки сигналов. Она особенно полезна
в тех случаях, когда результаты вейвлет-анализа оказываются не вполне
очевидными или когда они засорены случайными погрешностями или шумами.
4.3.3. Компрессия сигналов
Функции компрессии сигналов мы уже рассматривали применительно к
командному режиму работы. Кнопка Compession в окне GUI (рис. 4.23, например) открывает окно компрессии выбранного сигнала, показанное на рис. 4.26.
В этом окне можно выбрать тип сигнала и тип вейвлета, а также указать способ
компрессии — с установкой глобального порога ограничения вейвлет-коэффициентов или локального (адаптивного). Рис. 4.26 соответствует установке глобального порога.
Рис. 4.26. Сжатие сигнала с глобальной установкой порога
Более высокую степень компрессии обеспечивает установка локальных порогов. Такой случай представлен на рис. 4.27. В левой части окна пунктирными линиями показаны пороги ограничения (индивидуальные) для каждого коэффициента. В правой части окна можно выставить ряд параметров компрессии, смысл
которых был описан при описании функций компрессии для командного режима
В заключение отметим, что данные о компрессии (нормах восстановления и
сжатия) также сообщаются в указанных окнах.
4.4.4. Очистка сигнала от шума
Мы провели серьезный обзор возможностей очистки сигналов от шума на
уровне использования функций пакета Wavelet Toolbox, доступных для работы в
командном режиме MATLAB. Остается продемонстрировать возможности в этом
GUI пакета. Щелчок мышью на кнопке De-noise открывает окно очистки сигналов от шума — рис. 4.28. Это окно во многом напоминает окно компрессии сиг-
234
4.3. Применение дискретных вейвлетов
Рис. 4.27. Сжатие сигнала с локальной установкой порогов
Рис. 4.28. Очистка сигнала от шума при гибком пороге
налов. И это естественно — как компрессия, так и очистка сигналов реализуются
в сущности одними и теми же методами и подчас общими функциями.
В этом окне мы найдем все возможности и методы очистки сигналов от шума,
которые уже упоминались. Так, на рис. 4.28 установлен мягкий тип порога soft,
при котором на передаточной характеристике имеется горизонтальная ступень.
В окне вы найдете выпадающий список типов шумового обрамления сигналов и
ползунковые регуляторы для индивидуального задания порогов каждого из вейвлет-коэффициентов.
235
Глава 4. Работа с GUI пакета Wavelet Toolbox
О том, насколько установка порога влияет на очистку сигнала от шума, показывает рис. 4.29. Он отличается от рис. 4.28 только тем, что теперь установлен
другой типа, порога — жесткий (hard).
Рис. 4.29. Очистка сигнала от шума при жестком пороге
Большое число типов вейвлетов и их подвидов, широкие возможности регулировки порогов и выбора степени декомпозиции и реконструкции сигналов, а также различные методы подавления шумов позволяют добиваться прекрасных результатов в решении этой актуальной проблемы.
4.4.5. Очистка сигналов от шумов с помощью стационарных
вейвлетов
Стационарные вейвлеты в ряде случаев представляют собой превосходные
средства для решения задач, связанных с очисткой сигналов от шумов. Ограничимся наглядным примером этого, представленным на рис. 4.30.
Как видно их этого примера, стационарные вейвлеты хорошо разделяют сигнал
от шума и позволяют легко выделять обе составляющие сигнала — оригинальный
сигнал и шум.
4.4.6. Оценка плотности сигналов
До сих пор мы рассматривали сигналы (непрерывные или дискретные), которые представлялись временными зависимости. Но есть сигналы, которые могут
иметь множество значений в каждый момент времени. Для таких сигналов основным понятием является плотность — т. е. число отсчетов сигнала в заданный промежуток времени. Вполне возможно представление и обработка таких сигналов с
помощью вейвлетов. Это иллюстрирует рис. 4.31.
236
4.3. Применение дискретных вейвлетов
Рис. 4.30. Очистка сигнала от шума с помощью стационарных вейвлетов
Рис. 4.31. Оценка плотности сигнала
4.4.7. Регрессия по результатам оценки плотности сигналов
В физике, в химии и в других науках для уменьшения погрешностей экспериментальных данных часто создаются большие массивы таких данных, которые затем статистически обрабатываются. Одним из видов такой обработки является
регрессия (см. ее описание в главе 1). Ее применение на основе вейвлетов иллюстрирует пример на рис. 4.32.
237
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.32. Проведение регрессионного анализа
В этом виде обработки данных вейвлеты используются для предварительной
очистки данных от шума, под которым обычно подразумеваются случайные отклонения данных от их точных величин. Сама по себе регрессия также является
средством очистки данных от шума, но менее мощным, чем технология очистки
сигналов от шума, реализованная вейвлетами.
4.4.8. Расширение и экстраполяция сигналов
Сигналы обычно заданы на некотором промежутке времени и в некотором интервале значений. Иногда важное значение имеет расширение сигналов в ту или
иную сторону, например, вправо, влево, вверх или вниз или сразу по ряду направлений. Эта операция называется расширением сигналов. Частным случаем расширения является экстраполяция сигналов. Операция расширения задается в разделе
Extension окна GUI щелчком мышью на кнопке Signal Extension. В появившемся
окне надо выбрать подходящий пример и (это главное) выбрать тип расширения с
помощью открывающегося меню Extension Mode.
На рис. 4.33 дан пример для типа расширения Smooth (сглаживание). В этом
случае используется операция сглаживания для вектора данных и осуществляется
наилучшая линейная интерполяция.
Еще один пример для типа расширения Periodic представлен на рис. 4.34.
В этом случае кривая сигнала повторяется в заданную сторону (или стороны) как
периодическая кривая. С другими методами расширения сигналов вы можете познакомиться самостоятельно.
ПРИМЕЧАНИЕ Представляется, что представленные примеры на расширение не носят
законченного характера. В частности, возможности экстраполяции и
тем более прогноза сигналов выглядят рудиментарно. Это указывает на
необходимость дальнейших исследований в этой области.
238
4.5. Вейвлет-обработка изображений
Рис. 4.33. Пример расширения — экстраполяции
Рис. 4.34. Пример периодического расширения
4.5. Вейвлет-обработка изображений
4.5.1. Двумерное вейвлет-разложение и реконструкция
изображений
Двумерные вейвлеты, естественно, являются основой для анализа и реконструкции изображений. Множество примеров решения этой задачи можно найти в
разделе, который открывается активизацией кнопки Wavelet-2D в разделе Two Dimensional GUI. На рис. 4.35 показан первый из этих примеров.
239
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.35. Пример вейвлет-разложения и реконструкции плиты с изображением
магической матрицы
Этот пример не случайно дан первым. На нем дается реальное изображение попавшей к нам из древности каменной плиты с рисунком магического квадрата. Исходное изображение в левом верхнем углу панели изображений подвергается вейвлет-разложению на отдельные сегменты прямоугольной формы, представленные в
правом нижнем углу. Это делает операция прямого двумерного вейвлет-преобразования dwt, рассмотренная нами. Операция обратного двумерного вейвлет-преобразования idwt осуществляет реконструкцию изображения, которая представлена
изображением, показанным в левом нижнем углу панели изображений.
Центральным моментом демонстрации является возможность просмотра любого участка декомпозиции изображения с помощью последнего окна — в правом
верхнем углу панели изображений. Для этого достаточно мышью выделить фрагмент декомпозиции изображения и щелкнуть мышью на кнопке Visualize (визуализация). Кнопка Full Size позволяет вывести изображение в максимальном размере, а кнопка Reconstruct — вывести в максимальном размере реконструированное изображение.
Элементы управления декомпозицией и реконструкцией в правой части окна
практически аналогичны таковым для окна одномерного вейвлет-преобразования.
Поэтому детального разбора они не требуют. Множество других примеров на применение двумерных вейвлетов разного типа позволяет углубиться в особенности
их применения. Мы не будем лишать читателя удовольствия просмотреть эти примеры самостоятельно.
4.5.2. Двумерное пакетное вейвлет-разложение и реконструкция
изображений
Двумерные пакетные вейвлеты также могут успешно использоваться для двумерного разложения и реконструкции изображений с использование для этого деревьев декомпозиции и реконструкции. Ограничимся одним примером такого
рода, представленным на рис. 4.36.
240
4.5. Вейвлет-обработка изображений
Рис. 4.36. Пример пакетного вейвлет-разложения и реконструкции изображения
Возможности демонстрационного окна тут несколько иные. Центральное место занимает показ дерева декомпозиции изображения. Элементы в правой части
окна позволяют выбирать различные типы дерева, осуществлять анализ, компрессию и очистку изображения от шума (если загруженное изображение имеет шум).
Активизируя любой узел дерева, можно под ним наблюдать соответствующий
фрагмент изображения.
Рис. 4.37 демонстрирует еще один пример работы с двумерным пакетным вейвлет-преобразованием. Здесь уже дано другое изображение — женского лица, несколько искаженного шумом, а также иное вейвлет-дерево. В остальном работа с
этим примером та же, что и с предыдущими.
Рис. 4.37. Еще один пример пакетного вейвлет-разложения
и реконструкции изображения
241
Глава 4. Работа с GUI пакета Wavelet Toolbox
С другими примерами такого рода вы можете ознакомиться сами.
ПРИМЕЧАНИЕ Как и в случае командного режима работы, обработка изображений
средствами пакета Wavelet Toolbox едва ли носит завершенный характер и предназначена не столько для практической обработки сигналов и
изображений, сколько для знакомства с математическими алгоритмами
ее и их совершенствования. Для практического применения вейвлет-преобразований в этой области следует использовать специализированные
графические пакеты, например CorelDRAW 9/10.
4.5.3. Компрессия изображения и очистка его от шума
Для компрессии изображения и его очистки от шума GUI предоставляет ряд
возможностей. Одна из них — кнопка Compress в окне демонстрации пакетных
вейвлетов — рис. 4.37. Щелкнув на ней мышью, можно получить окно компрессии и очистки изображения от шума, показанное на рис. 4.38.
Активизировав в этом окне кнопку Compress, можно очистить изображение от
шума и заодно провести его компрессию. Степень очистки изображения и компрессии во многом определяется установкой порога (с помощью ползункового переключателя. Вы можете выбрать дополнительно метод очистки и получить остаток (погрешность) Residual. Окно с демонстрацией изображения, остатка и характеризующих его гистограмм (обычной и накопительной) показано на рис. 4.39.
Стационарные вейвлеты также хорошая основа для проведения очистки от шумов. Ограничимся примером этого, приведенным на рис. 4.40. Для запуска очистки от шума надо нажать кнопку De-noise. Хотя интерфейс окна рис. 4.40 заметно
отличается от представленного на рис. 4.38 (другой тип вейвлета), разобраться с
ним можно достаточно просто.
В целом надо отметить, что примеры очистки изображения с помощью GUI
носят скорее учебный, чем практический характер. Для практического примене-
Рис. 4.38. Пример компрессии и очистки изображения от шума
с помощью пакетного вейвлета
242
4.5. Вейвлет-обработка изображений
Рис. 4.39. Окно с остатком изображения и его гистограммами
Рис. 4.40. Пример очистки изображения от шума
с помощью стационарного вейвлета
ния реализованных методов очистки целесообразно использовать функции, реализующие очистку в командном режиме.
4.5.4. Расширение изображений
Подобно расширению сигналов возможно расширение изображений. Для этого
служит кнопка Image Extension в разделе Extension меню рис. 4.1. Она открывает
окно, представленное на рис. 4.41.
В данном случае выбран метод расширения Symmetric — симметричное расширение. Исходное изображение видно в выделенном прямоугольнике, расширенное
занимает все окошко с изображением. Смысл симметричного расширения, как и
243
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.41. Пример расширения изображения
других (например, периодического) вполне очевиден. Расширять изображение
можно влево, вправо, вверх или вниз или попарно в стороны или во все стороны.
ВНИМАНИЕ Следует обратить внимание на то, что расширение изображения не является его масштабированием. В ряде методов результатом расширения является не само изображение, а довольно хаотические линии его фрагментов.
4.6. Вейвлеты в пакете DSP
4.6.1. Интерполяция с применением вейвлет-преобразований
Небольшой набор средств для вейвлет-преобразований входит в пакет расширения Digital Signal Processing (DSP) системы MATLAB. Поскольку теория и практика вейвлет-преобразований уже была описана достаточно подробно, ограничимся несколькими примерами применения вейвлетов в этом пакете, имеющем свой
собственный GUI.
Начнем с примера синтеза сигнала, полученного из рабочего пространства, с
применением техники вейвлет-интерполяции. Этот простой пример представлен
на рис. 4.42. Под основной моделью дана подсистема задания вейвлет-коэффициентов. Представлена также осциллограмма реконструкции вейвлета.
В свете всего ранее описанного о вейвлетах этот пример кажется достаточно
очевидным.
4.6.2. Реконструкция сигнала на основе wavelet-преобразования
Более сложный пример реконструкции сигнала на основе вейвлет-преобразования представлен на рис. 4.43. Здесь преобразованиям подвергается сигнал в виде
зашумленной «синусоиды» с нарастающей амплитудой и периодом. Такой сигнал
неплохо представляет реальные сигналы в системах связи. Используется прямое и
обратное диадическое быстрое вейвлет-преобразование в частотной области на
основе применения банков вейвлет-фильтров. Таким образом, реализуется кратномасштабный вейвлет-анализ и синтез на основе пирамидального алгоритма Малла.
244
4.6. Вейвлеты в пакете DSP
Рис. 4.42. Пример восстановления сигнала на основе wavelet-интерполяции
Осциллограммы сигналов на входе и выходе, а также погрешность восстановления представлены на рис. 4.43.
Рис. 4.43. Пример вейвлет-преобразований для сложного сигнала
4.6.3. Моделирование трехканального wavelet-мультиплексора
Модель трехканального wavelet-мультиплексора (рис. 4.44) наглядно демонстрирует технику wavelet-преобразований сразу для трех видов сигналов.
Нетрудно заметить, что во всех случаях достигается великолепное восстановление исходной формы сигнала (см. соответствующие осциллограммы). При этом
погрешность восстановления ничтожно мала. Особенно впечатляет прекрасное
восстановление формы прямоугольных импульсов — случай, где фурье-преобразование дает откровенно плохие результаты из-за возникновения эффекта Гиббса в
моменты скачкообразного изменения сигнала.
245
Глава 4. Работа с GUI пакета Wavelet Toolbox
Рис. 4.44. Модель wavelet-мультиплексора
4.6.4. Вейвлет-очистка сигнала от шумов
В заключение приведем еще один пример эффективного применения wavelet-преобразований — для очистки сигнала от шума. Модель системы, выполняющей эту функцию, представлена на рис. 4.45.
С применяемыми в этой модели блоками и работой этой модели заинтересованный читатель может разобраться самостоятельно. Остается отметить, что в
комплексе программных средств MATLAB + Simulink есть немало потаенных
уголков, в которых затесались вейвлеты. Автор не гарантирует, что все они оказались открытыми.
Рис. 4.45. Пример применения wavelet-преобразований для очистки сложного
сигнала от шума
246
Глава 5. Вейвлеты в системе Mathcad
5.1. Функции вейвлет-преобразований пакета Numeric
Recipes
Разработчики системы Mathcad одними из первых ввели в нее средства для работы с вейвлетами. Как отмечалось в главе 1, в ядре системы имеются всего две
функции такого рода — для прямого и обратного вейвлет-преобразований с вейвлетами Добеши DB4. Остальные средства сосредоточены в пакетах расширения
системы, которые поставляются отдельно и перед использованием нуждаются в
обычной инсталляции их. Вместе с пакетами расширения инсталлируются и становятся доступными электронные книги по ним.
Пакет расширения системы Mathcad для реализации численных расчетов Numeric Recipes содержит восемь функций для вейвлет-преобразований:
wt1Daub4(v) — одномерное прямое дискретное вейвлет-преобразование вектора v, вычисляемое с использованием 4-коэффициентного вейвлет-фильтра Добеши;
iwt1Daub4(v) — одномерное обратное дискретное вейвлет-преобразование
вектора v, вычисляемое с использованием 4-коэффициентного вейвлет-фильтра
Добеши;
wtnDaub4(v, n) — n-мерное прямое дискретное вейвлет-преобразование вектора v, вычисляемое с использованием 4-коэффициентного вейвлет-фильтра Добеши;
iwtnDaub4(v, n) — n-мерное обратное дискретное вейвлет-преобразование
вектора v, вычисляемое с использованием 4-коэффициентного вейвлет-фильтра
Добеши;
wt1Pwt(v, w) — одномерное прямое дискретное вейвлет-преобразование вектора v, вычисляемое с использованием 4-, 12- и 20-коэффициентного вейвлет-фильтра Добеши (w задает порядок фильтра);
iwt1Pwt(v, w) — одномерное обратное дискретное вейвлет-преобразование
вектора v, вычисляемое с использованием 4-, 12- и 20-коэффициентного вейвлет-фильтра Добеши (w задает порядок фильтра);
wtnPwt(v, w, m) — n-мерное прямое дискретное вейвлет-преобразование вектора v, вычисляемое с использованием 4-, 12- и 20-коэффициентного вейвлет-фильтра Добеши (w задает значение по каждой размерности, m — порядок фильтра);
iwtnPwt(v, w, m) — n-мерное обратное дискретное вейвлет-преобразование
вектора v, вычисляемое с использованием 4-, 12- и 20-коэффициентного вейвлет-фильтра Добеши (w задает значение по каждой размерности, m — порядок
фильтра).
Примеры применения функций вейвлет-преобразований пакета Numeric Recipes в окне системы Mathcad 2001 представлены на рис. 5.1. Читателю, ознакомившемуся с главой 2 этой книги, будет интересно разобраться с этими примерами —
если у него, разумеется, установлен этот пакет расширения в среде Mathcad.
ВНИМАНИЕ Введение восьми функций по вейвлетам в пакет Numeric Recipes было промежуточным этапом расширения систем Mathcad в области вейвлет-преобразований. Гораздо большие возможности представляет специальный пакет расширения и Wavelet Extension Pack и электронная книга по нему,
ориентированные на системы Mathcad начиная с версии Mathcad 8.0.
247
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.1. Примеры работы с функциями вейвлет-преобразований пакета
Numeric Recipes
5.2. Пакет Wavelet Extension для системы Mathcad
5.2.1. Назначение пакета Wavelet Extension
В этой главе, в основном, описан пакет расширения систем класса Mathcad —
Wavelet Extension. Он содержит меньше функций, чем описанный выше пакет Wavelet Toolbox систем MATLAB 6.0/6.1/6.5. Однако благодаря известным преимуществам системы Mathcad в части визуального программирования и подготовки документов этот пакет дает в руки пользователя весьма совершенный инструмент для
работы с вейвлетами. Пакет Wavelet Extension и его электронная книга с таким же
названием инсталлируются без каких-то особенностей. При этом в перечень
встроенных функций системы Mathcad включается ряд функций этого пакета.
ВНИМАНИЕ Без инсталляции пакета применение электронной книги по нему и примеров, приведенных в этой главе, не имеет смысла, поскольку дополнительные
функции пакета будут восприниматься синтаксическим анализатором как
неопределенные и ошибочные.
Рис. 5.2 дает представление о разделах электронной книги данного пакета. Они
охватывают все наиболее важные разделы вейвлет-технологии обработки сигналов
и изображений.
5.2.2. Род вейвлет-преобразований и фильтры
В пакете Wavelet Extension вейвлеты имеют род — материнский или отцовский
(см. главу 2). Отцовский вейвлет это, в сущности, масштабирующая phi-функция,
а материнский — psi-функция. Существуют многочисленные семейства вейвлетов.
Каждое семейство, возглавляемое материнским и отцовским вейвлетами, имеет
248
5.2. Пакет Wavelet Extension для системы Mathcad
Рис. 5.2. Окна с содержанием электронной книги по пакету Wavelet Extension
большое количество своих потомков. Это расширяет возможности вейвлет-технологии обработки сигналов и изображений.
Перед тем как детально описать вейвлеты в данном пакете, необходимо ввести
понятие фильтра для конкретных семейств вейвлет-преобразования. Описанные
ниже функции создают коэффициенты ФНЧ с КИХ для конкретных семейств
вейвлетов в конкретных классах вейвлет-преобразований.
Понятие класс вейвлет-преобразований относится к системе всех вейвлет-преобразований, которые могут быть созданы любой из вышеупомянутых функций. Например, класс, созданный функцией coiflet(n), — это класс вейвлетов Койфлета.
Фраза семейство вейвлет-преобразований относится ко всем пакетам вейвлет-преобразования, которые связаны с отдельными классами вейвлет-преобразования и отдельными значениями n. Например: семейство daublet(12) — вейвлет-преобразования, основанные на 12-коэффициентном вейвлете Добеши c минимальной фазой.
Все аргументы функции — целые числа, описывающие отдельное семейство вейвлет-преобразования.
Основные функции вейвлет-фильтров пакета Wavelet Extension представлены
ниже:
daublet(n) — возвращает n-коэффициентный вейвлет Добеши c минимальной фазой и компактным носителем. Аргумент n — четные числа в диапазоне от 2
до 20. Эта функция возвращает n коэффициентов ФНЧ, используемых во всех алгоритмах вейвлет-преобразования.
symmlet(n) — возвращает n-коэффициентный вейвлет Добеши c наименьшей
асимметрией и компактным носителем. Аргумент n — четные числа в диапазоне
от 4 до 20. Функция возвращает n коэффициентов узкополосного фильтра, используемых в различных алгоритмах вейвлет-преобразования. Нужно заметить, что
фильтры daublet(n) и symmlet(n) одинаковы для n = 4 и n = 6.
coiflet(n) — возвращает n-коэффициентные вейвлеты типа coiflets с компактным носителем. Аргумент n — четные целые числа 6, 12, 18, 24, и 30. Эта
функция возвращает n коэффициентов ФНЧ, используемых в различных алгорит-
249
Глава 5. Вейвлеты в системе Mathcad
мах вейвлет-преобразования. Эти вейвлеты обладают простыми шаблонными
свойствами и, следовательно, особенно полезны при обработке непрерывных во
времени данных.
Bspline(m,n) — возвращает узкополосные фильтры ограниченного во времени
сплайнового биортогонального вейвлета Добеши. Допустимые пары m и n: находятся в пределах от (m n):=(1 1) до (m m):=(3 9). Первое число показывает степень
полинома для вейвлет-преобразования (вейвлет-преобразование для Bspline(2,6) имеет степень 1). Второе число показывает длину носителя вейвлет-преобразования (вейвлет-преобразование для Bspline(2,8) имеет более широкий носитель, чем вейвлет-преобразование для Bspline(2,6)).
Bspline — возвращает матрицу, состоящую из двух столбцов, первый из которых определяет коэффициенты узкополосного фильтра анализа, второй — коэффициенты узкополосного фильтра синтеза, используемые в различных алгоритмах
вейвлет-преобразования. Полезность применения вейвлетов этого типа в вейвлет-преобразованиях обусловлена их симметрией.
bl(n) — возвращает аппроксимацию узкополосного фильтра Battle-Lemarie
(или BL) вейвлет-преобразования, основанного на степени n основного B-сплайна. Это преобразование не ограничено во времени и, следовательно, связанный с
ним ФНЧ — это IIR-фильтр. Последнее означает, что конечная аппроксимация в
узкополосном фильтре должна быть сделана так, чтобы выполнить данное преобразование на компьютере. Из-за возможной погрешности округления функция bl
создает только BL-вейвлет-преобразование для степеней n от 0 до 6. В противном
случае будет сообщение об ошибке.
В отличие от преобразований для рассмотренных выше фильтров, BL-вейвлет-преобразования не могут привести к точному восстановлению сигналов.
Кроме того, BL-вейвлет-преобразования могут применяться только для функций
дискретного вейвлет-преобразования, а не для основных функций вейвлет-преобразования. Функция bl возвращает аппроксимацию узкополосного фильтра, используемую в различных алгоритмах вейвлет-преобразования. Количество коэффициентов в аппроксимации равно 40, когда n четное, и 39, если n нечетное. Следует отметить, что одно из преимуществ BL-вейвлет-преобразования заключается
в том, что оно относится к симметричному ортонормированному вейвлет-преобразованию.
5.2.3. Функции одномерного вейвлет-преобразования
Итак, основные фильтры пакета Wavelet Extension описаны. Приступим к описанию функций создания одномерного вейвлет. Ниже дан синтаксис этих функций:
wavelet(x,j,k,n,f,[o,[i]])
father(x,[j,k],s)
mother(x,[j,k],s)
dlwavelet(x,j,k,n,f,[o,[i]])
dlfather(x,[j,k],s)
dlmother(x,[j,k],s)
Все эти функции возвращают значение одномерного (1D) вейвлет-преобразования в любом масштабе и любой точке. Аргументы функций имеют следующее
назначение:
x — действительное число, обозначающее позицию, в которой возвращается
вейвлет-преобразование;
j — целое число, определяющее масштаб вейвлет-преобразования;
k — целое число, определяющее положение вейвлет;
250
5.2. Пакет Wavelet Extension для системы Mathcad
n — целое число, определяющее род вейвлет-преобразования;
f — семейство, которому принадлежит вейвлет-преобразование;
s — аргумент типа «строка», обозначающий фильтр, на котором основано вейвлет-преобразование;
о — (необязательный), целое число для ортонормированного семейства или
матрица целых чисел размерностью 1 × 2 для биортогонального семейства, определяющее смещение, соответствующее семейству f. Если аргумент не указан, то
берется смещение по умолчанию для семейства f;
i — (необязательный), принимает значение 0 или 1 для ортонормированного
семейства, или матрица размерностью 1 × 2, чьи элементы являются нулем или
единицей для биортогонального семейства. i определяет отмену коэффициентов
широкополосного фильтра, заданных по умолчанию для семейства f. Ноль не производит отмену, единица — производит. Если параметр не указан, отмены коэффициентов не происходит.
Теперь рассмотрим сами функции преобразования:
wavelet (x, j, k, n, f, [o [,] i)] — возвращает значение в точке x n-го
пакета вейвлет-преобразования в положении k и масштабе j, соответствующих
фильтру f. Аргумент f — обычно одна из встроенных вейвлет-функций, описанных
выше.
dlwavelet(x, j, k, n, f, [o [,] i)] — возвращает значение n-го двойного пакета вейвлет-преобразования в точке x для позиции k и масштаба j, соответствующих фильтру f. Для ортогональных семейств вейвлет-преобразования
функции wavelet и dlwavelet возвращают одинаковые результаты. Для биортогональных семейств вейвлет-преобразования функции wavelet и dlwavelet возвращают различные результаты.
Аргумент n определяет род вейвлет-преобразования: при n = 0 создается отцовский вейвлет, при n = 1 — материнский, x указывает позицию вычисления вейвлета, j — масштабирующий параметр, k — параметр смещения. Аргументы o и i
обеспечивают максимальную гибкость при работе с фильтрами вейвлет-преобразования и определяются пользователем. Аргумент o влияет на расположение отцовского вейвлет-преобразования вдоль оси х, а аргумент i влияет на коэффициенты широкополосного фильтра, а следовательно, на симметрию материнского
вейвлет-преобразования относительно оси х.
5.2.4. Визуализация вейвлетов
Для понимания особенностей вейвлетов и оценки их пригодности для обработки тех или иных сигналов важное значение имеет визуализация вейвлетов, т. е. их
графическое представление. Ниже мы дадим лишь основы и отдельные примеры
визуализации вейвлетов, поскольку их набор весьма обширен. Пользователь может подобным образом просмотреть любой заинтересовавший его тип вейвлета.
Рис. 5.3 показывает, как можно создать отцовский и материнский 4-коэффициентные вейвлеты Добеши. Графики этих вейвлетов представлены на этом рисунке сверху.
Заметим, что двойной отцовский и материнский вейвлет для биортогонального
вейвлет-преобразования Bspline(3,7) могут быть созданы с использованием
функции dlwavelet. Это также показано на рис. 5.3, снизу.
Для упрощения процесса создания одномерных родительских вейвлетов используются функции father и mother, создающие отцовское и материнское вей-
251
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.3. Отцовские и материнские 4-коэффициентные вейвлеты Добеши (сверху)
и B-спрайновые вейвлеты типа Bspline(3,7) (снизу)
влет-преобразования. Функции dlfather и dlmother создают отцовское и материнское двойное вейвлет-преобразования. Простое и двойное вейвлет-преобразования отличаются для семейств биортогональных вейвлетов. Например,
существуют отцовское и материнское вейвлет-преобразования для фильтров Добеши 4, созданные с использованием этих функций — рис. 5.4. На этом рисунке
показаны также (снизу) отцовский и материнский B-сплайновые вейвлеты bs37.
Строковый аргумент s задает семейство вейвлетов и состоит из аббревиатуры и
чисел. Возможные значения аббревиатуры, указывающей тип вейвлета, следующие: d, daub, daublet, s, symm, symmlet, c, coif, coiflet, bl, bs, Bspline, haar. Числа,
следующие за аббревиатурой, должны указывать на определенный вейвлет-фильтр. Например, возможны следующие значения аргумента s: "d4" для daublet(4), "symm12" для symmlet(12), "bs33" для Bspline(3,3), "haar" для daublet(2).
Вейвлеты с большими числами в своих именах, такими как 20 или 30, являются относительно широкими и гладкими. Они удобны для представления функций
и сигналов с плавными изменениями уровня. Вейвлеты с маленькими числами,
такими как 4 или 6, являются более узкими и менее гладкими (и даже вообще не
гладкими). Их целесообразно применять для представления сигналов с резко выраженными локальными особенностями, например разрывами и перепадами,
присутствующими у импульсных сигналов.
Заметим, что аргументы j и k целочисленные, поскольку рассматривается дискретное вейвлет-преобразование. Если эти аргументы опущены, то они принимают
нулевые значения. Большие значения j делают вейвлет более широким, изменение
k меняет положение вейвлета.
252
5.2. Пакет Wavelet Extension для системы Mathcad
Рис. 5.4. Отцовский и материнский вейвлеты Добеши 4
и B-сплайновые вейвлеты bs37
Результаты построения отцовского вейвлета Добеши 4 с различными значениями аргумента k приведены на рис. 5.5.
Рисунок 15.6 показывает отцовский вейвлет Добеши 4 с различными значениями аргумента j, задающего масштаб вейвлетов. Обратите внимание на то, что при
изменении масштаба меняется не только длительность вейвлета, но и его амплитуда. При этом чем длиннее становится вейвлет, тем меньше его амплитуда.
Отцовский и материнский вейвлеты Добеши 12 показаны на рис. 5.7. Там же
показаны отцовский и материнский 12-коэффициентные вейвлеты Добеши c наи-
Рис. 5.5. Отцовские вейвлеты Добеши 4 с различными значениями аргумента k,
задающими смещение
253
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.6. Отцовские вейвлеты Добеши 4 с различными значениями аргумента j,
задающего масштаб
Рис. 5.7. Отцовский и материнский вейвлеты d12 и s12
меньшей асимметрией и с компактным носителем. По сравнению с вейвлетами
Добеши 4 эти вейвлеты имеют существенно более гладкую psi-функцию и хорошо
подходят для приближения плавных функций.
Заметим, что B-сплайновые вейвлеты относятся к типу биортогональных вейвлетов. Отцовский и материнский вейвлеты могут иметь степень 0 (отцовский
вейвлет Хаара), степень 1 (функция типа треугольника) или степень 2 (квадратичная выпуклость). Различные пары двойных вейвлеты доступны для каждой пары
отцовского и материнского вейвлетов. Двойные вейвлеты имеют различную длину
носителя.
254
5.2. Пакет Wavelet Extension для системы Mathcad
Отцовский и материнский вейвлеты и их двойные вейвлеты могут быть обратимы. Возможно использовать функции father и mother в вейвлет-аппроксимации и двойные вейвлеты dlfather и dlmother для вычисления коэффициентов
вейвлетов.
5.2.5. Функции одномерного дискретного
вейвлет-преобразования
В пакете Wavelet Extension определен ряд функций прямого и обратного быстрого одномерного (1D) дискретного вейвлет-преобразования, составляющих фундаментальную основу вейвлет-преобразований. Различия между функциями состоят в используемых граничных условиях, которые описаны ниже.
Заданные программными блоками в файле wavedef.mcd функции MaxDWTLevel(a) и MaxDWTSLevel(a) для заданного вектора преобразуемых данных a возвращают соответственно максимальный допустимый уровень дискретного вейвлет-преобразования (DWT) и дискретного вейвлет-преобразования с симметричными граничными условиями (DWTS). Эти функции возвращают целые числа.
Для проверки ее работы создадим вектор случайных данных:
i := 0..383
vi := rnd(1)
и вычислим максимально допустимый уровень DWT для вектора v:
J := MaxDWTLevel(v)
J = 7
Аргументы описанных ниже функций дискретного вейвлет-преобразования
следующие:
a — вектор преобразуемых данных;
n — число уровней вейвлет-преобразования;
f — семейство, которому принадлежит вейвлет;
o — (произвольный), целое число для ортонормированного семейства или матрица целых чисел размерностью 1 × 2 для биортогонального семейства, дающее
смещение, соответствующее семейству f. Если значение o не определено, то оно
принимает значение смещения по умолчанию для семейства f.
i — (произвольный), принимает значение 0 или 1 для ортонормированного семейства, или матрица размерностью 1 × 2, чьи элементы являются 0 или 1, для
биортогонального семейства. Аргумент i определяет отмену коэффициентов широкополосного фильтра, заданных по умолчанию для семейства f. Ноль не производит отмену, единица — производит. Если параметр не указан, отмены коэффициентов не происходит.
Каждая из функций волнового преобразования возвращает вектор, состоящий
из преобразованных значений входного вектора. Так, функция
dwt(a,n,f,[o,[i]])
возвращает n-уровневое дискретное вейвлет-преобразование вектора a, используя вейвлет-фильтр f. Для периодических граничных условий значение rows(a)/2n
должно быть целым числом. Так как имеется ограничение на значения аргумента
уровня, Mathcad генерирует сообщение об ошибках, когда используется слишком
большое значение аргумента уровня. Так, запись w := dwt(c,7,daublet(8)) допустима, так как значение row(v)/27 = 3 — целое число. А вот запись w :=
dwt(v,9,daublet(8)) не допустима, так как значение row(v)/29 = 0.75 — не целое
число. В этом случае второй аргумент (цифра 9) будет выведен красным цветом.
Функция
255
Глава 5. Вейвлеты в системе Mathcad
idwt(a,n,f,[o,[i]])
возвращает n-уровневое обратное вейвлет-преобразование вектора a, используя
вейвлет фильтр f. Как и в случае с dwt функцией, rows(a) должно быть кратно
2n. Уровень n должен быть таким же, как и уровень функции dwt.
Функция idwt используется для восстановления исходного вектора из его преобразования — рис. 5.8.
Рис. 5.8. Пример прямого и обратного вейвлет-преобразования для вектора
из 384 случайных чисел, показывающий высокую точность реставрации
Полученный вектор равен исходному с точностью до погрешности округления.
Следует отметить, что теоретически вейвлет-преобразование на основе ортогональных вейвлетов гарантирует точное восстановление. На практике, однако, возникает небольшая ошибка из-за конечной точности вычислений на компьютере.
Функция
dwts(a,n,f)
возвращает прямое вейвлет-преобразование с симметричными граничными условиями, а функция
idwts(a,n,f)
возвращает обратное вейвлет-преобразование с симметричными граничными
условиями.
Преимущество граничных условий состоит в том, что они не имеют ограничений по паритету данных a. Однако симметричное вейвлет-преобразование требует
использования симметричного вейвлета. Это ограничивает выбор вейвлетов, которые можно применять с функциями dwts/idwts биортогональным сплайн-вейвлет Bspline(m,n), Battle-Lemarie-вейвлетs bl(n), вейвлет Хаара daublet(2).
При выполнении прямого и обратного симметричного вейвлет-преобразования
необходимо, чтобы соблюдалось условие length(a) > 2n. Тогда максимальный
уровень преобразования можно найти, используя функцию MaxDWTSLevel(a).
Теперь можно непосредственно выполнять вейвлет-преобразование для вектора данных нечетной длины. На рис. 5.9 приведен пример, показывающий, что
произвольный вектор нечетной длины может использоваться с симметричными
граничными условиями.
Рис. 5.9. Прямое и обратное преобразования с применением симметричного
вейвлета
256
5.2. Пакет Wavelet Extension для системы Mathcad
Как и в случае, описанном выше, симметричное вейвлет-преобразование также
теоретически дает точное восстановление. Когда используется аргумент уровня в
функциях dwts/idwts, который не удовлетворяет описанным выше ограничениям, появляется сообщение об ошибке.
Функция
dwti(a,n,f)
возвращает прямое интервальное вейвлет-преобразование, используя вейвлетs на
интервале, вытекающем из конструкций, взятых из Cohen, Daubechies и Vial, а
idwti(a,n,f) возвращает обратное интервальное вейвлет-преобразование, используя вейвлетов на интервале. Использование интервальных вейвлетов накладывает некоторые ограничения на длину данных. Для одномерных данных значение
length(a)/2n должно быть целым и должно выполняться соотношение
length(a)/2n>m при использовании функций symmlet(m) или daublet(m).
5.2.6. Одномерная вейвлет-аппроксимация
Функции waveapprox(y,J,K,filter) и wavedecomp(y,J,K,filter), описанные в этом разделе, определены в файле wavedef.mcd электронной книги по
применению Wavelet. Они не являются частью пакета Вейвлетs Extension Pack
DLL. Функции аппроксимируют или разлагают на составные части сигнал, используя наибольшие коэффициенты дискретного вейвлет-преобразования.
Аргументы этих функций следующие:
y — вектор действительных чисел, содержащий анализируемый сигнал;
J — целое число, определяющее уровень вейвлет-преобразования;
K — целое число, определяющее число используемых вейвлет коэффициентов;
filter — семейство вейвлет, используемое для вычисления dwt.
Ортогональная аппроксимация вейвлет-рядом непрерывного во времени сигнала расчетными соотношениями, приведенными на рис. 5.10.
В этих формулах J — число компонентов множества решений (или масштаб) и
k изменяется в диапазоне от 1 до N ⋅ 2 − j . j-я компонента имеет N ⋅ 2 − j коэффициентов. Коэффициенты S J ,k , d J ,k , K d1,k ,
являются
коэффициентами
вейвлет-преобразования,
а
функции
fatherJ ,k (t ) и motherj ,k (t ) — аппроксимирующими вейвлет-функциями.
На практике эти базовые формулы
напрямую не используются (как и интегралы Фурье). Вместо этого применяется дискретное вейвлет-преобразование (DWT), которое выполняет эти вычисления гораздо быстрее, чем в случае
вычислений по данным формулам. Однако они дают представление о математической сути вейвлет-аппроксимации.
Функция waveapprox(y, J, K,
filter) — возвращает аппроксимацию
вектора y, используя K наибольших коРис. 5.10. Формулы ортогональной
эффициентов
J-уровневого
вейвейвлет-аппроксимации
влет-преобразования с периодическими
257
Глава 5. Вейвлеты в системе Mathcad
граничным условиями, используя вейвлет filter. В процессе вейвлет-аппроксимации выполняется вейвлет-преобразование, коэффициенты сортируются по величине, и затем они добавляются в обратное вейвлет-преобразование в порядке уменьшения величины. Для отображения точности аппроксимации ошибка восстановления отображается на графике как дополнительные используемые коэффициенты.
Использование большего числа коэффициентов улучшает аппроксимацию и
уменьшает погрешность.
Функция wavedecomp(y, J, K, filter) — разлагает вектор y, используя
вейвлет filter, согласно K наибольшим коэффициентам уровня J dwt с периодическими граничными условиями. Функция возвращает вектор, содержащий K вложенных векторов. Каждый из векторов представляет собой один уровень вейвлет-аппроксимации начальной функции y. Например, элемент 0 — это IDWT из
наибольших коэффициентов.
В приведенном ниже примере (рис. 5.11) определена функция ramp, приведен программный модуль функции и осуществлена вейвлет-аппроксимация функции ramp.
Рис. 5.11. Вейвлет-аппроксимация пилообразной функции ramp
Пилообразный сигнал подвергается вейвлет-преобразованию, находятся коэффициенты, и обратное вейвлет-преобразование выполняется с использованием самых больших коэффициентов. Это все выполняется с использованием функции
waveapprox, определенной для наглядности в документе рис. 5.11.
Для осуществления вейвлет-декомпозиции и реконструкуции сигнала по этапам можно использовать часть документа, показанную на рис. 5.12.
Рис. 5.12. Задание вейвлет-декомпозиции и реконструкции функции
258
5.3. Одномерный кратномасштабный анализ
Рис. 5.13. Иллюстрация
вейвлет-декомпозиции функции
Рис. 5.14. Иллюстрация синтеза
исходного сигнала
Рис. 5.13 поясняет процесс вейвлет-декомпозици сигнала путем его разложения на вейвлеты разного уровня.
При суммировании этих коэффициентов видно, что сумма приближается к начальной функции. Результат поэтапного суммирования вейвлет-составляющих
сигнала показан на рис. 5.14.
Хорошо видно, как график суммы вейвлет-функций постепенно приближается
к графику синтезируемого пилообразного сигнала.
5.3. Одномерный кратномасштабный анализ
5.3.1. Функция кратномасштабного анализа
Как отмечалось в вводной части
данной главы, ортогональные вейвлеты
дают возможность осуществлять кратномасштабный анализ (multiresolution
analysis). На рис. 5.15 даны основные
соотношения для кратномасштабного
анализа, формула реконструкции произвольного сигнала и программный
модуль функции mra, осуществляющей
этот вид анализа.
Введенная на рис. 5.15 функция
mra(y,J,filter) выполняет кратномасштабный анализ и аппроксимацию
сигнала, используя уровень J функции
Рис. 5.15. Средства
кратномасштабного анализа
259
Глава 5. Вейвлеты в системе Mathcad
прямого вейвлет-преобразования dwt.
Она возвращает матрицу из (J + 1)
строк. Аргументы этой функции уже
обсуждались ранее. Нулевая строка
матрицы является гладкой компонентой, и i-я строка содержит (J + 1 – i)
детализирующих коэффициентов. Другими словами, строки матрицы упорядочены S J , D J , K D1. При этом SJ(t) и
Dj(t) известны как аппроксимирующие
и
детализирующие
коэффициенты
(функции) соответственно.
На рис. 5.16 представлено продолжение документа рис. 5.15. Здесь задан
Рис. 5.16. Задание сложного сигнала,
сложный сигнал, характерный для эфописывающего эффект Допплера,
фекта Допплера — изменения звука
и построение графика сигнала
при движении источника звука мимо
слушателя. Этот сигнал показателен
для вейвлет-анализа, поскольку он
имеет участки как высокочастотные,
так и низкочастотные с различной амплитудой.
Рис. 5.17 иллюстрирует декомпозицию исходного сигнала (верхний график). Показан ряд детализирующих
вейвлет-коэффициентов уровня от 1 до
6 и аппроксимирующий коэффициент
уровня 6. Здесь уместно отметить, что в
литературе и в других пакетах по вейвлетам нередко используется иной порядок коэффициентов — нулевые коэффициенты соответствуют идеально
точному приближению исходного сигнала или функции.
Рис. 5.17 весьма показателен. Нетрудно заметить, что аппроксимирующий коэффициент S6 и впрямь грубо
Рис. 5.17. Средства
напоминает выходной сигнал, особенно
кратномасштабного анализа
его низкочастотную компоненту. Что
касается детализирующих коэффициентов, то и они в чем-то напоминают сигнал,
но в локальном приближении. Чем меньше номер коэффициента, тем более высокочастотные области сигнала в его левой части приближаются соответствующим
коэффициентом. Отчетливо видно смещение этих коэффициентов (вейвлетов) по
оси времени и их масштабирование по средней частоте. Все это находится в хорошем соответствии с определениями вейвлетов в теоретической части этой главы.
5.3.2. Аппроксимация на основе кратномасштабного анализа
Ортогональная аппроксимация вейвлет-рядом непрерывного сигнала f(t) выражается выражением, приведенным на рис. 5.15. Члены в этой аппроксимирующей
260
5.3. Одномерный кратномасштабный анализ
сумме включают разложение сигнала
на ортогональные сигнальные компоненты S J (t ) и D J (t ) в различных масштабах j. Так как составляющие в различных масштабах представляют компоненты сигнала f(t) в различных
масштабах, вышеупомянутая аппроксимация называется кратномасштабной
(MRA). Ее средства, включая функцию
mrapprox для осуществления законченной кратномасштабной аппроксимации, представлены на рис. 5.18.
Функция mrapprox(y,J,filter) — возвращает матрицу, состоящую из (J + 1)
строк. Нулевая строка матрицы — аппроксимирующая компонента (в электронной книге по вейвлетам для системы Mathcad ее называют также гладкой
компонентой), и i-я строка содержит
сумму гладкой компоненты и подробных компонент начиная с DJ по D(J+1-i),
дающих кратномасштабную аппроксимацию с уровнем (J – i). Она может
быть представлена в виде, показанном
на рис. 5.18 — формула сверху.
Рис. 5.19 дает пример кратномасштабной аппроксимации сигнала с помощью функции mrapprox. Здесь представлен ряд аппроксимирующих коэффициентов с разными номерами.
Нетрудно заметить, что по мере роста
номера наблюдается падение точности
приближения сигнала. Оно проявляется в виде подавления высокочастотных
компонент сигнала.
Рис. 5.18. Средства
кратномасштабной аппроксимации
Рис. 5.19. Средства
кратномасштабной аппроксимации
5.3.3. Кратномасштабный анализ зашумленного сигнала
А как будет вести себя кратномасштабный вейвлет-анализ для сигналов с шумами? Для проверки этого подготовим тестовый сигнал на основе ранее рассмотренного сигнала с шумом — рис. 5.20.
Теперь выполним кратномасштабный анализ этого сигнала. Его результаты
представлены на рис. 5.21. Здесь показан исходный сигнал, 6 детализирующих коэффициентов и шестой аппроксимирующий коэффициент.
Из рис. 5.21 хорошо видно, что детализирующие коэффициенты с малыми номерами как бы «впитывают» в себя шум и высокочастотные компоненты сигнала.
Это позволяет использовать вейвлет-анализ для выделения из сигнала шума. При
этом детализирующие вейвлет-коэффициенты ведут себя как система фильтров
высоких частот, а аппроксимирующие коэффициенты как система фильтров низ-
261
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.20. Сигнал эффекта Допплера
с шумом
ких частот. Это создает предпосылки к созданию
специальных
фильтрующих
устройств.
5.3.4. Кратномасштабная
аппроксимация сигналов
с шумом
Рис. 5.21. Кратномасштабный
анализ (декомпозиция)
А как будет вести себя кратномасштабная аппроксимация для сигналов с шумом?
Ответ на этот вопрос (хотя бы частично)
дает рис. 5.22, на котором представлена
кратномасштабная аппроксимация сигнала, представленного на рис. 5.20.
Из рис. 5.22 можно сделать вывод, что
вейвлет-аппроксимация
зашумленного
сигнала позволяет получить разную степень очистки сигналов от шума. Это достаточно прозаический результат, если не
учитывать того обстоятельства, что при
разных видах очистки важное значение
играет степень подавления шума при заданной погрешности восстановления сигнала. К сожалению, оценки этого в пакете
Wavelet Extension нет.
5.4. Двумерное
вейвлет-преобразование
5.4.1. Функции создания
двумерных вейвлетов
Рис. 5.22. Кратномасштабная
аппроксимация зашумленного
Функции создания двумерных вейвлетов имеют в конце имени окончание «2d»
и представлены следующим набором:
wavelet2d
dlwavelet2d
father2d
mother2d
father2d
dlmother2d
262
5.4. Двумерное вейвлет-преобразование
Они возвращают значение двумерного (2D) вейвлет-преобразования в любом
масштабе и в любой точке. Эти функции, подробно описанные ниже, имеют следующие входные параметры:
x — действительное число, определяющее положение вдоль горизонтальной
оси, в котором вычисляется вейвлет;
y — действительное число, определяющее положение вдоль вертикальной оси,
в котором вычисляется вейвлет;
j — целое число, определяющее масштаб волнового преобразования;
kx — целое число, определяющее горизонтальное положение вейвлета,
ky — целое число, определяющее вертикальное положение вейвлета,
m — целое число, определяющее род вейвлета вдоль горизонтальной оси;
n — целое число, определяющее род вейвлета вдоль по вертикальной оси;
f — семейство, к которому принадлежит вейвлет;
s — аргумент строкового типа, обозначающий фильтр, на котором основан
вейвлет;
ds — аргумент строкового типа, определяющий либо горизонтальный, либо
вертикальный, либо диагональный материнский 2D-вейвлет.
Необязательный параметр o — целое число для ортонормированного семейства
или матрица целых чисел размерностью 1 × 2 для биортогонального семейства,
определяющие смещение, соответствующее семейству f. Если аргумент не указан,
то берется значение смещения по умолчанию для семейства f.
Другой необязательный параметр i определяет отмену (значение i = 1) коэффициентов широкополосного фильтра, заданных по умолчанию для семейства f. При
i = 0 отмена не производится. Если параметр не указан, отмены коэффициентов
не происходит. Двумерное вейвлет-преобразование создается путем тензорного
произведения горизонтального и вертикального одномерного вейвлет.
Теперь перейдем к детальному описанию указанных выше функций.
wavelet2d(x,y,j,kx,ky,m,n,f,[o,[i]]) — возвращает преобразованный
2D-вейвлет или вейвлет-пакет, определение которого и пример задания представлены на рис. 5.23.
В определении двумерного вейвлетагде Wn(x) — это n-й одномерный (1D) вейвлет или вейвлет-пакет семейства, описанного фильтром f. Когда оба аргументы m и n равны нулю, функция wavelet2d
создает отцовское вейвлет-преобразование. Когда или аргумент m, или n равна
нулю, функция wavelet2d создает материнское вейвлет-преобразование. Четыре возможных комбинации m и n приводят к четырем различным типам
2D-вейвлет-преобразований:
одному
отцовскому вейвлету и трем материнским вейвлетам.
dlwavelet2d(x,y,j,kx,ky,m,n,
f,[o,[i]]) — возвращает преобразованный двойной 2D-вейвлет, определение и построение которого представлены на рис. 5.24.
Рис. 5.23. Определение и задание
двумерного вейвлета
263
Глава 5. Вейвлеты в системе Mathcad
Изображенный на рис. 5.24 вейвлет
представляет собой двумерный 2D отцовский вейвлет при m и n, равных
нулю. При комбинациях m и n со значениями 0 и 1 получается 4 типа вейвлетов. Их можно получить также, используя следующий набор функций.
father2d(x,y,[j,kx,ky],s)
—
вычисляет значение в точке (x,y) отцовского вейвлета в масштабе j и с
центром в точке (kx,ky), используя семейство вейвлетов, заданное параметром s.
mother2d(x,y,[j,kx,ky],s)
—
вычисляет значение в точке (x,y) материнского вейвлета в масштабе j и с
центром в точке (kx,ky), используя семейство вейвлетов, заданное параметРис. 5.24. Определение и задание
ром s. Строковый аргумент s, определядвойного двумерного вейвлета
ющий семейство вейвлетов, состоит из
сокращений и чисел. Допустимы следующие сокращения для указания типа вейвлетов: d, daub, daublet, s, symm, symmlet,
c, coif, coiflet, bl, bs, Bspline, haar. Числа, следующие за сокращениями, должны
быть допустимыми значениями для вейвлет-фильтра. Например: "d4" для daublet(4), "symm12" для symmlet(12), "bs33" для Bspline(3,3) и "haar" для daublet(2). Аргументы j, kx и ky — произвольные, по умолчанию равные нулю.
lfather2d(x,y,[j,kx,ky],s) и dlmother2d(x,y,[j,kx,ky],s,ds) — создают двойные родительские вейвлеты. Строковый аргумент ds принимает значение «V» для вертикального, «H» для горизонтального и «D» для диагонального материнского вейвлетов.
На следующем примере (рис. 5.25) задано построение отцовского и трех материнских вейвлетов Хаара, известных также как Daubechies2 ("d2").
Графики этих вейвлетов показаны на рис. 5.26. Они дают наглядное представление о виде и характере составляющих 2D-вейвлетов.
2D-вейвлеты используются при обработке изображений, матриц и других двумерных данных. Свойства, которые делают вейвлеты привлекательными для анализа одномерных функций, сохранены и для двумерных функций. В частности,
2D-вейвлеты могут эффективно использоваться для кодирования изображений и
Рис. 5.25. Задание к построению отцовского и материнского 2D-вейвлетов
семейства Хаара
264
5.4. Двумерное вейвлет-преобразование
Рис. 5.26. Отцовский и материнский
2D-вейвлеты семейства Хаара
Рис. 5.27. Прямое двумерное
вейвлет-преобразование
сжатия данных, поскольку требует относительно малого числа коэффициентов
для представления изображения.
5.4.2. Двумерное дискретное вейвлет-преобразование
Двумерное (2D) дискретное вейвлет-преобразование (DWT) использует те же
функции, которые используются для вычисления одномерного вейвлет- преобразования. Заданная программным модулем функция MaxDWTLevel возвращает уровень вейвлета в виде целого числа. Аргументы описанных ниже функций аналогичны указанным выше. Каждая из DWT-функций возвращает матрицу, содержащую преобразованную входную матрицу. Основные функции DWT представлены
ниже.
dwt(a,n,f,[o,[i]]) — возвращает n-уровневое дискретное прямое вейвлетпреобразование матрицы a, используя вейвлет-фильтр f. Заметим, что rows(a)/2n и
cols(a)/2n должны быть целыми числами.
idwt(a,n,f,[o,[i]]) — возвращает n-уровневое обратное вейвлет-преобразование матрицы a, используя вейвлет-фильтр f. Снова rows(a)/2n и cols(a)/2n должны быть целые числа. Уровень n должен быть таким же, как и уровень dwt.
Функция idwt может быть использована для восстановления оригинала изображения из его dwt.
Пример быстрого вейвлет-преобразования для функции Vbox (определенной
как программный модуль) с использованием вейвлета Добеши ("d4") представлен
на рис. 5.27. Функция Vbox представляет довольно сложный рисунок, имеющий
детали в виде тонких и толстых линий.
На рис. 5.28 показано выполнение обратного вейвлет-преобразования, позволяющего осуществить вейвлет-реконструкцию оригинала. Восстановленное изображение представлено на рис. 5.28. Его сравнение с изображением, представлен-
265
Глава 5. Вейвлеты в системе Mathcad
ным на рис. 5.27, обнаруживает полную
тождественность исходного и преобразованного изображений.
Нетрудно заметить, что погрешность восстановления очень мала. Теперь вычислим максимальный уровень
DWT для изображения vbox. С помощью функции MaxDWTLevel (vbox)
можно вычислить максимальный уровень преобразования. В нашем случае
Рис. 5.28. Обратное двумерное
он равен 7. Оригинальное изображение
вейвлет-преобразование
имеет разрешение 128 × 128 пикселей,
и реконструкция изображения
так что наибольший допустимый уровень DWT равен log2(128) = 7, что совпадает с оценкой, представленной функцией MaxDWTLevel.
5.4.3. Двумерная вейвлет-аппроксимация и интерполяция
На рис. 5.29 представлено определение функции upsample2 (M), которая
обеспечивает удвоение размера изображения, хранящегося в матрице M. На
этом же рисунке показано маленькое
исходное изображение и увеличенное
функцией upsample2 изображение, которое используется как тестовое для
приведенных ниже примеров.
Рис. 5.30 дает определение двух
вспомогательных и основной функции
waveapprox2d для осуществления двумерной вейвлет-аппроксимации изображений. Эти функции определены в
файле wavedef.mcd электронной книги.
Они не являются частью самого по
себе пакета Wavelets Extension Pack.
Функция waveapprox2d аппроксимирует на составные части двумерные
Рис. 5.29. Определение и применение
объекты, используя наибольшие коэффункции upsample2
фициенты дискретного wavelet-преобразования.
Аргументы
основной
функции
2D-вейвлет-аппроксимации
waveapprox2d(y,J,n,filter) следующие:
y — матрица действительных чисел, содержащих анализируемый объект;
J — целое число, определяющее уровень wavelet-преобразования;
K — целое число, определяющее число используемых wavelet-коэффициентов
для восстановления объекта;
filter — семейство вейвлетов, используемое для вычисления функцией dwt.
2D-вейвлет-аппроксимация является прямым обобщением одномерной аппроксимации. Возможно описание 2D-функции как суммы 2D-вейвлетов с различными масштабами и положениями.
266
5.4. Двумерное вейвлет-преобразование
Приведем пример двумерной вейвлет-аппроксимации. В этом примере
вычисляется
вейвлет-аппроксимация
для изображения Vbox — рис. 5.31.
В первом случае с параметром J = 4
изображение существенно отлично от
оригинала. Но уже при J = 3 восстановленное изображение неотличимо от
оригинала.
Еще
одна
функция
wavedecomp2d(y, J, K, filter), также заданная программным модулем, разлагает матрицу y, используя вейвлет-фильтр filter, и возвращает вектор
из K вложенных матриц. Каждая из
этих матриц представляет собой один
уровень вейвлет-аппроксимации функции y. Например, элемент 0 — это
IDWT наибольших wavelet-коэффициентов. Суммирование элементов в порядке следования дает все более точную аппроксимацию функции y. Примеры на применение этой функции
можно найти в электронной книге по
пакету расширения Wavelet.
Рис. 5.30. Определение функций
двумерной вейвлет-аппроксимации
Рис. 5.31. Вейвлет-аппроксимация разного уровня
5.4.4. Двумерный кратномасштабный анализ
Для ортогональных двумерных вейвлетов также возможен кратномасштабный
анализ, в частности изображений. На рис. 5.32 представлено задание основной
функции такого анализа mra2d.
Функция
mra2d(y,J,filter)
возвращает вектор из (J + 1) вложенных матриц. Нулевой элемент вектора представляет собой гладкую компоненту, а его i-й элемент содержит (J + 1 – i)-й подробный элемент. Другими словами, элементы вектора следуют в порядке
S J , D J , K , D1. Каждый детализирующий элемент на уровне j представляет собой
сумму вертикального, горизонтального и диагонального подробных элементов на
уровне j.
267
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.32. Задание функции
кратномасштабного двумерного
анализа
Полный кратномасштабный 2D-анализ с уровнем J разбивает изображение
Рис. 5.33. Пример кратномасштабного
на 3J + 1 двумерные функции. Эти фунвейвлет-анализа изображения
кции можно определить как гладкое
изображение, вертикальное детальное
изображение, горизонтальное детальное изображение и диагональное детальное
изображение, соответственно. Эти изображения вместе с оригинальным изображением представлены на рис. 5.33.
Структура данных функции mra2d представляет собой вектор из (J + 1) вложенных матриц. Нулевой элемент — это гладкая компонента, другие J элементов — детализирующие компоненты D J , K , D1. Заметим, что коэффициенты S J ,
D j ,V , D j ,H , D j ,D могут быть также вычислены с помощью функций get_smooth2d и
get_detail2d.
5.4.5. Двумерная кратномасштабная аппроксимация
Двумерная кратномасштабная аппроксимация задается функцией mrapprox2d(y,J,filter) и уравнением реконструкции. Они представлены на
рис. 5.34.
Чтобы видеть, как аппроксимация множеством решений изменяется с увеличением уровня, вычислим и построим ее для ранее представленного изображения —
рис. 5.35. На полученном изображении легко наблюдать все большую подробность
в
последовательно
восстановленных
изображениях. Увеличивающаяся точность наиболее отчетлива видна в диагональных линиях. В конечном уровне получается точное восстановление оригинального изображения.
Приведенные примеры свидетельствуют о больших возможностях применения
вейвлет-преобразований в технике обраРис. 5.34. Функция и уравнение
ботки и представления реальных изобракратномасштабной
жений.
вейвлет-аппроксимации
268
5.5. Вейвлет-пакетные преобразования
Рис. 5.35. Полученное изображение для уровней приближения S0, S1, S2, S3
5.5. Вейвлет-пакетные преобразования
5.5.1. Функция пакетного вейвлет-преобразования wpt
Как отмечалось в главе 2, пакетные вейвлеты получаются, если процесс дробления в алгоритме Маллата применять не в отношении ФНЧ, а в отношении
ФВЧ. Это приводит к возникновению новых вейвлетов, которые и образуют пакетный вейвлет.
Функция
wpt(a, b, f, [o, [i]])
вычисляет 1D и 2D-пакетное вейвлет-преобразование для данных с периодическими граничными условиями. Здесь:
a — массив данных для преобразования;
b — скалярная величина, дающая число уровней вейвлет-преобразования, или
матрица из 2 или 3 столбцов, представляющая вейвлетt-пакетный базис, на котором вычисляется преобразование;
f — семейство, к которому принадлежит вейвлет.
Назначение параметров o и i уже отмечалось.
Рисунок 15.36 показывает применение функции wpt для создания таблицы вейвлет-пакетов. В качестве оригинального сигнала для преобразования
взята синусоида с линейно нарастающей частотой (ее график представлен
на рис. 5.36). Внизу представлен расчет
разности между нулевым уровнем разложения и самим сигналом. Эта разность равна 0, так что можно считать,
что данный уровень декомпозиции сигнала и есть сам сигнал.
Рис. 5.36. Создание таблицы
пакетного вейвлета для заданной
функции
269
Глава 5. Вейвлеты в системе Mathcad
5.5.2. Визуализация таблицы
пакетных вейвлетов
Визуализация таблицы пакетных
вейвлетов с разными уровнями декомпозиции представлена на рис. 5.37.
Каждый уровень приближения имеет N
коэффициентов и разделен на блоки
различного уровня. Уровень 0, как отмечено, воспроизводит первоначальный сигнал. Уровни от 1 до 6 отображены на рис. 5.37. Заметим, что низкочастотные коэффициенты показаны на
левой стороне таблицы, а высокочастотные — на правой. Wavelet-пакетный
коэффициент w j ,b ,k — это k-й коэффициент в b-м блоке j-й строки. Коэффициенты масштабируются с помощью
множителей — элементов вектора A.
Ось x показывает индекс коэффициента для каждого уровня.
Рис. 5.37. Визуализация таблицы
пакетных вейвлетов
5.5.3. Другие функции пакетных вейвлетов
Функция wpts(a,b,f) вычисляет 1D и 2D-пакетные вейвлет-преобразования
для данных с симметричными граничными условиями. Польза этих условий состоит в том, что они не имеют ограничений четности на данные a. Однако симметричное вейвлет-преобразование требует использования симметричных вейвлетов. Это ограничивает выбор вейвлетов, которые можно использовать совместно с
функцией wpts. К ним относятся биортогональные сплайновые вейвлеты Bspline(m,n), Battle-Lemarie вейвлеты bl(n) и вейвлеты Хаара daublet(2). Функция
wpti(a, b, f) осуществляет 1D- и 2D-пакетные преобразования, используя вейвлеты на интервале.
Рис. 5.38 показывает примеры применения функций wpts и wpti для обработки
шумового сигнала. Из них видно, что нулевой уровень вейвлет-декомпозиции
сигнала повторяет сигнал, что дает нулевую ошибку.
Рис. 5.38. Примеры применения функций wpts и wpti
5.5.4. Функции для работы с уровнями пакетного базиса
Функция create_level(n,d) создает d-мерный вейвлет-пакетный базис, охватывая систему всех вейвлет-пакетов уровня n. В двумерном случае вейвлет- пакеты уровня n производят одномерные (1D) вейвлет-пакеты в каждом направле-
270
5.5. Вейвлет-пакетные преобразования
нии. Результат, возвращенный уровень
create_level определяет это множество
двумерных (2D) вейвлет-пакетов, где нулевой столбец показывает уровни, столбец 1 — горизонтальные параметры колебаний, а столбец 2 — вертикальные
параметры колебаний.
Функция
wavebs(n,d)
создает
d-мерный вейвлет-пакетный базис с n
уровнями,
соответствующими
вейвлет-преобразованию. Так как материнский вейвлет представляет собой вейвлет-пакет с индексом 1, wavelet-базис
включает в себя пакет с индексом 1 на
каждом уровне в дополнение к отцовскому вейвлету (пакет с индексом 0) на
последнем уровне.
Примеры применения функций creРис. 5.39. Примеры применения
ate_level(n,d) и wavebs(n,d) предфункций create_level и wavebs
ставлены на рис. 5.39.
В двумерном случае вейвлет-базис на каждом уровне составлен из трех функций базиса: произведения материнского в x и материнского в y; произведения отцовского в x и материнского в y; произведения материнского в x и отцовского в y.
В конечном уровне мы должны прибавить произведение отцовского в х и отцовского в у для получения завершенного базиса.
5.5.5. Визуализация пакетного базиса матрицы
Функция pgridplot(b,n), определенная в электронной книге по пакету, создает наглядный график вейвлет-пакетного базиса матрицы b для уровней 0,
1, ... n. Параметр b представляет собой
1D-матрицу базиса вейвлет-пакета с
двумя столбцами. Для каждой строки
в матрице b нулевой столбец показывает уровни, а первый столбец отображает параметры колебания, которые
могут изменяться от 0 до 2n – 1 —
рис. 5.40.
Для просмотра графика нажмите
[Ctrl] T на клавиатуре или выберите
пункт Picture из меню Insert. График,
созданный функцией pgridplot, позволяет оценивать допустимость базиса. Чтобы некоторый выбранный базис был допустимым, необходимо и
достаточно, чтобы каждый столбец на
графике (показан ниже) был испольРис. 5.40. Примеры визуализации
зован, но и чтобы дважды не испольпакетного базиса матриц с помощью
функции pgridplot
зовался любой столбец.
271
Глава 5. Вейвлеты в системе Mathcad
5.5.6. Наилучший алгоритм нахождения базиса
Пакетные алгоритмы легко оптимизируются путем улучшения их структуры
(базиса или дерева). Функция best_basis(T,f) создает наилучший базис для
выбранного пакетного вейвлет-преобразования из вейвлет-пакетной таблицы T.
Базис считается наилучшим, если он минимизирует функцию стоимости f.
Типовая функция стоимости это функция энтропии entropy(x). В этой функции используется наилучший базисный алгоритм для выбора оптимального базиса
из вейвлет-пакетной таблицы, который автоматически осуществляет вейвлет-преобразование с учетом особенностей сигнала. Пример представления базиса с помощью описанной выше функции pgridplot(b,n) представлен на рис. 5.41.
Рис. 5.41. Пример улучшения базиса по критерию энтропии и визуализации
пакетного базиса с помощью функции pgridplot
Вы можете также извлечь наилучший базис с помощью функции extract basis(w,b). На рис. 5.41 показано определение функции энтропии и оценка погрешности реставрации для различных вариантов вейвлет-преобразований с использованием функции extract basis. Примененная для этого функция iwpt обратного пакетного вейвлет-преобразования будет описана далее в разделе,
посвященном обратным пакетным вейвлет-преобразованиям.
На рис. 5.42 показана еще пара примеров применения других алгоритмов улучшения базиса с применением иных критериев — на основе функций thresh и
abs (абсолютное значение). Задание этих функций приведено в этих примерах.
Функция basis_display2d(b) создает матрицу для графического представления двумерного (2D) наилучшего базиса b. Определение этой функции представлено на рис. 5.43.
272
5.5. Вейвлет-пакетные преобразования
Рис. 5.42. Пример улучшения базиса по критериям,
заданным функциями thresh и abs
Рис. 5.43. Определение функции basis_display2d
Для иллюстрации работы этой функции рассмотрим тестовый пример, приведенный на рис. 5.44. В нем дано представление заданной ранее (рис. 5.27) тестовой функции Vbox. Обратите внимание на применение в этом примере функции
scale, определение которой дано на рис. 5.33.
Если вы создаете документ с упомянутыми (или иными) функциями, определенными в виде программного модуля, то вы должны не забыть перенести их в
свой документ и расположить до их первого применения.
Рис. 5.44. Представление функции Vbox
273
Глава 5. Вейвлеты в системе Mathcad
Примеры применения функции best_basic для создания наилучшего пакетного вейвлет-базиса показаны на рис. 5.45.
Рис. 5.45. Примеры применения функции best_basic (начало)
Рис. 5.46. Примеры применения функции best_basic (конец)
274
5.6. Дискретные косинусные преобразования (DCT)
На рис. 5.46 представлен конец фрагмента документа, начало которого дано на
рис. 5.45. Эти примеры дают лишь отдельные фрагменты изображения, реставрируемого с применением алгоритма получения наилучшего базиса.
В конце фрагмента документа рис. 5.46 представлена оценка погрешности восстановления изображения, которую можно признать исчезающе малой.
5.5.7. Другие функции для работы с базисами
Отметим еще ряд функций, используемых при работе с базисами:
extract_basis(T,b) извлекает коэффициенты вейвлет-пакетного базиса T.
Она может использоваться как для двумерных, так и одномерных вейвлетов. Пример применения этой функции дан в конце рис. 5.46;
evalbs(w,b,f) — применяет скаляр или определенную массивом функцию f к
каждой полосе wavelet-пакетных коэффициентов в w с базисом b. Возвращаемое
значение — это матрица, чьи строки описывают полосу, к которой применялась
функция f;
applybs(w,b,f) — прикладывает определенную массивом функцию f к каждой полосе wavelet-пакетных коэффициентов в w с базисом b. Возвращаемое значение — это массив такой же размерности, как и w, чьи полосы были заменены
значением f на первоначальных полосах.
Для вычисления таблиц пакетных коэффициентов задана функция
evaltbl(T, f). Другая функция applytbl(T,f) прикладывает определенную
массивом функцию f к каждой полосе вейвлет-пакетной таблицы T. Возвращаемое значение — это новая вейвлет-пакетная таблица такой же размерности как и
T, чьи полосы являются результатом применения f к полосам T.
Примеры применения этих функций просты и потому не приводятся. Их можно найти в электронной книге по пакету Wavelet Extension Pack.
5.5.8. Обратные пакетные вейвлет-преобразования
По аналогии с преобразованиями Фурье вейвлет-преобразования могут быть
прямыми (рассмотрены выше) и обратными. Ряд функций служит для осуществления обратных пакетных преобразований. Ниже представлены эти функции.
iwpt(w,b,filter[,o[,i]]) — выполняет обратное пакетное вейвлет-преобразование массива данных w, базиса b (в виде матрицы с 2 или 3 столбцами, задающими таблицу базиса) и для фильтра filter. Пример применения данной функции дан в конце рис. 5.46.
iwpts(w,b,filter) — выполняет обратное wavelet-пакетное преобразование
данных с симметричными граничными условиями. Аргумент задания фильтра filter
должен быть симметричным фильтром, таким как bl или Bspline или daublet(2).
iwpti(w,b,filter) выполняет обратное пакетное вейвлет-преобразование,
используя вейвлеты на интервале. Аргумент filter должен быть интервальным фильтром от symmlet(4) до symmlet(16) или от daublet(4) до daublet(6).
5.6. Дискретные косинусные преобразования (DCT)
5.6.1. Основные определения DCT
Дискретное косинусное преобразование (DCT) — важное и широко используемое средство анализа сигнала и обработки изображения. DCT особенно ценно для
275
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.47. Определения дискретного
косинусного преобразования Фурье
кодирования и сжатия данных, оно составляет суть JPEG- и MPEG-алгоритмов для сжатия данных. Подобно дискретному преобразованию Фурье (DFT),
DCT определяет ортогональное преобразование, которое преобразует сигнал
из временной области в частотную. Однако, в отличие от преобразования ФуРис. 5.48. Определения функций
рье, DCT является преобразованием с
дискретного косинусного
действительными числами, не включапреобразования
ющем комплексные числа, усложняющие вычисления.
Косинусное преобразование Фурье (FCT) g(ω) сигнала f(t) задается в виде,
представленном на рис. 5.47.
Дискретное косинусное преобразование — дискретная версия этого уравнения.
Обычно используются 4 типа ортогональных дискретных косинусных преобразований: DCT-I, DCT-II, DCT-III и DCT-IV. В пакете Wavelet используются дискретные косинусные преобразования типа II и IV. На рис. 5.48 представлены определения программных модулей для функций, относящихся к этим преобразованиям.
Рассмотрим примеры использования этих преобразований. На рис. 5.49 представлены дискретные косинусные преобразования для косинусоидальной зависимости и для константы со значением, равным 2.
Оба косинусных преобразования показывают наличие характерного «звона».
5.6.2. Локальные косинусные преобразования
Для повышения эффективности представления функций при вейвлет-преобразованиях введены особые локальные косинусные преобразования. Их локальный
характер облегчает представление и преобразований функций, составленных из
отдельных «кусков», и позволяет надеяться на представление таких функций малым числом коэффициентов.
Функция lct(a,n,f) вычисляет n-уровневое локальное косинусное преобразование данных в a, используя так называемый тайпер данных f. Локальное косинусное преобразование по существу является версией блочного дискретного косинусного преобразования. В блочном преобразовании массив данных а разбивается
в последовательность блоков данных равного размера, которые затем индивидуа-
276
5.6. Дискретные косинусные преобразования (DCT)
Рис. 5.49. Примеры дискретного косинусного преобразования для косинусоиды
и константы
льно преобразуются в соответствии с типом IV DCT (рис. 5.50). Функция
cpt(a,n) — это сокращенная версия функции lct с тайпером типа trig (определен чуть ниже).
Рис. 5.50. Блоки дискретного косинусного преобразования типа IV
На рис. 5.51 показан сложный тестовый сигнал для демонстрации блочного
преобразования. Этот сигнал представляет собой 4 пачки синусоидальных колебаний с разной частотой, объединенных в одно колебание.
Результат блочного преобразования представлен на рис. 5.52 для двух блоков
уровня 0 и 1. Любопытно отметить, что наиболее информативная часть графиков,
представленных на рис. 5.52, приходится на моменты перехода пачек из одной в
другую.
Результат блочных преобразований может быть улучшен с помощью рассмотренных выше алгоритмов и функций для поиска лучшего базиса. Для блочного преобразования пример поиска и визуализации наилучшего базиса представлен на рис. 5.53.
Сравнение результатов такого поиска представлено на рис. 5.54. На нем же
обозначены пороги, используемые в процессе поиска.
277
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.51. Тестовый сигнал
для демонстрации блочного
преобразования
Рис. 5.52. Примеры блочного
преобразования
Рис. 5.53. Поиск и визуализация
наилучшего базиса при блочном
преобразовании
Рис. 5.54. Иллюстрация поиска
наилучшего базиса при блочном
косинусном преобразовании
5.6.3. Тайперы для локального
косинусного
преобразования
Отличием lct от других блочных
DCTs является то, что декомпозиция
данных не является простым разбиением части данных. Вместо этого используются специальные сглаживающие
окна, использующие так называемые
тайперы box, poly1, poly2, poly3, poly4 и
trig. Их аналитические описания представлены на рис. 5.55.
Как видно из рис. 5.55, тайперы отличаются прежде всего гладкостью и
шириной переходной области. Лишь у
одного тайпера box ширина переходной
области бесконечно мала.
278
Рис. 5.55. Задание тайперов для DCT
5.6. Дискретные косинусные преобразования (DCT)
5.6.4. Обратное локальное косинусное преобразование
В пакете Wavelet Extension имеется также функция обратного локального косинусного преобразования. Функция ilct(w,n,b,f) осуществляет обратное косинусное пакет-преобразование базиса локальных косинусных функций, содержащихся в косинусной packet-таблице w, описанной базисной матрицей b. Напомним, что результатом прямого локального косинусного преобразования lct
является косинусная пакетная таблица. Таблица несет в себе избыточное описание сигнала, часто бывает необходимо найти не избыточное множество коэффициентов из таблицы, а базис косинусных packet-коэффициентов.
Функция ilct(w,n,b) имеет аргумент n, который является числом уровней в
lct-функции. Он может быть больше чем число уровней, представленных в базисе b. Она также требует задания тайпера f, который используется в lct-функции.
Функция icpt является сокращенной версией функции ilct с заданным по умолчанию тайпером trig.
5.6.5. Использование тайперов в локальном косинусном анализе
Вы можете увидеть специфику использования тайперов с функцией lct, выполняя наилучшую базисную аппроксимацию сигнала, представленного на
рис. 5.56.
Следующий пример показывает, как можно восстановить сигнал, используя
только 20% коэффициентов из локального
косинусного
преобразования.
Пример использует сигнал с разрывами
(рис. 5.56), чтобы наглядно показать
точность восстановления сложных сигналов, трудно поддающихся точному
описанию с помощью рядов Фурье.
Начнем решение данной задачи с поиска наилучшего базиса — рис. 5.57.
Рис. 5.58 задает выделение и сортировку коэффициентов косинусных преобразований, завершая это вычислением обратного локального косинусного
Рис. 5.56. Тестовый сигнал для DCT
с тайперами
преобразования и оценкой ошибки реставрации сигнала. При этом используется тайпер trig.
Рис. 5.58 показывает результат восстановления исходной функции (она
также показана на рисунке пунктиром).
Приходится вновь констатировать, что,
как и в случае преобразований Фурье,
ограничение числа коэффициентов при
вейвлет-преобразовании (по аналогии с
ограничением числа гармоник) ведет к
заметному искажению исходной временной зависимости сигнала. Стало
Рис. 5.57. Поиск наилучшего базиса
быть, преимущества вейвлет-преобраи его визуализация для локального
зований в данном случае заключаются
косинусного преобразования
279
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.58. Поиск наилучшего базиса и его визуализация для локального
косинусного преобразования с тайпером trig
не в принципиальном и полном устранении недостатков преобразований Фурье, а
лишь в меньшей среднеквадратической погрешности восстановления функций (и
сигналов). График погрешности для приведенного примера дан на рис. 5.58, снизу.
Как и следовало ожидать, погрешность особенно велика в местах разрыва исходной функции. Тем не менее вычисление среднеквадратичной погрешности показывает, что даже в данном случае она невелика (около 0.4%).
Итак, если большинство коэффициентов удалено, то в восстановленной функции или в сигнале присутствует эффект, напоминающий эффект Гиббса, наблюдаемый при фурье-синтезе сигналов. Хотя не совсем верно приписывать обнаружение этого эффекта при вейвлет-синтезе сигналов Гиббсу, мы (хотя бы ради уважения к открывателю этого эффекта) оставим за ним это название и в случае
вейвлет-синтеза сигналов.
Если повторить эту же процедуру с тайпером box, эффект Гиббса также будет
проявляться — рис. 5.59. Однако в этом случае погрешность в точках разрыва сигнала оказывается заметно меньшей. Это связано с тем, что тайпер box лучше приспособлен для представления разрывов, чем другие тайперы, из-за своей малой по
длительности переходной области.
ПРИМЕЧАНИЕ Итак, к сожалению, можно констатировать, что эффект Гиббса не
удается подавить и при использовании вейвлет-преобразований сигналов, что указывает на фундаментальный характер данного эффекта,
существование которого в принципе, похоже, не зависит от базиса, на
основе которого осуществляется восстановление функций и сигналов.
Тем не менее восстановление сложных сигналов с помощью вейвлет-преобразований зачастую обеспечивается с заметно меньшей погрешностью, чем с помощью обычных фурье-преобразований.
280
5.7. Дополнительные возможности пакета Wavelet Extension
Рис. 5.59. Поиск наилучшего базиса и его визуализация для локального
косинусного преобразования с тайпером box
5.7. Дополнительные возможности пакета Wavelet Extension
5.7.1. Удаление шумов у сигналов установки ЯМР
Наряду с применением вейвлет-преобразований в технике интерполяции, аппроксимации и приближения сигналов возможно их применение в традиционных
для преобразований Фурье областях — фильтрации, обработке и сжатии сигналов
и изображений. При этом в силу локальности вейвлет-преобразований наилучшие
результаты можно ожидать при преобразованиях сложных сигналов.
Примером эффектной очистки реальных сигналов от шума является обработка
данных с установки для исследования ядерно-магнитного резонанса (ЯМР). Данные ее работы представлены в векторе nmr. На графике (рис. 5.60) отчетливо видна заметная шумовая компонента данных.
Рис. 5.60. Пример обработки данных от установки для исследования
ядерно-магнитного резонанса
281
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.61. Программный модуль функции waveshrink
С помощью функции waveshrink(y,filter), использующей для фильтрации
ограничение детализирующих коэффициентов, можно существенно уменьшить
уровень шумов, сохранив достаточно сложный характер сигнала от установки.
Желающие детально разобраться с алгоритмом очистки шума этим методом могут
рассмотреть программный модуль функции waveshrink, представленный на
рис. 5.61.
5.7.2. Адаптивные методы очистки от шума
Более сложные методы обработки сигнала могут базироваться на адаптивных
алгоритмах, предусматривающих выбор наилучшего базиса и отсечение части детализирующих коэффициентов в соответствии с особенностями сигнала. При этом
возможно задание различных типов порогов для отсечения вейвлет-коэффициентов. Они представлены на рис. 5.62 своими передаточными характеристиками.
Особое название получили два типа нелинейных порогов: «мягкий», или soft, с
горизонтальной зоной нечувствительности передаточной характеристики и «жест-
Рис. 5.62. Задание различных типов порогов
282
5.7. Дополнительные возможности пакета Wavelet Extension
Рис. 5.63. Задание сложного сигнала bumps и выполнение над ним прямого
вейвлет-преобразования
кий», или hard, — с горизонтальной зоной нечувствительности и двумя разрывами
по вертикали. Функция задания мягкого порога приведена на рис. 5.62, а жесткого порога задана в виде программного модуля.
Для демонстрации возможности очистки сигналов от шума с этими порогами
сформируем сложный сигнал bumps, как это показано на рис. 5.63.
Используя фильтр Койфлета coiflet, выполним прямое вейвлет-преобразование
с помощью функции dwt с выбором наилучшего базиса. Графики функции bumps
и прямого вейвлет-преобразования
представлены на рис. 5.64.
Для задания жесткого порога и
очистки сигнала от шума на его основе служат функции hard_shrink и
waveshrink_hard. Их программные
модули представлены на рис. 5.65.
Итак, все средства удаления шумов
представлены. На рис. 5.66 показаны
результаты очистки сигнала bumps с
шумами с помощью вейвлет-преобразования с «мягким» и «жестким» типами порогов. Большие возможности в
реализации этой операции дает выбор
Рис. 5.64. Задание сигнала bumps
с примесью шума и выполнение над ним
различных типов вейвлетов.
прямого вейвлет-преобразования
283
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.65. Задание программных
модулей функции hard_shrink
и waveshrink_hard
Рис. 5.66. Результаты очистки
зашумленного сигнала bumps
вейвлет-методами с разными типами
порогов и оптимизацией базиса
К сожалению, точно оценить степень очистки в данном примере не удается и
он носит чисто иллюстративный характер.
5.7.3. Времячастотные диаграммы
Вейвлет-анализ сигналов может эффективно использоваться для идентификации особенностей сложных сигналов и функций. Но для этого нужны соответствующие инструментальные средства, дающие наглядную визуализацию результатов вейвлет-анализа. К ним принадлежат времячастотные диаграммы.
Для построения таких диаграмм используется функция tfPlotFromWCT. Она
обеспечивает получение времячастотной диграммы с помощью пакетных вейвлетов. Пример построения такой диаграммы для зашумленного сигнала в виде синусоиды с повышающейся во времени частотой представлен на рис. 5.67.
Как видно из построенной диаграммы (рис. 5.67, снизу), она представляет собой набор прямоугольников, расположение и размеры которых задаются структурой вейвлет-коэффициентов, а их яркость задается значением коэффициентов.
К сожалению, техника времячастотной вейвлет-визуализации пакета Wavelet
Extension значительно уступает таковой для пакета расширения Wavelet Toolbox
системы MATLAB и даже описанной в главе 1 технике такой визуализации из пакета Signal Processing системы Mathcad. В электронной книге по пакету Wavelet
Extension имеется ряд других примеров с разными типами вейвлетов.
5.7.4. Компрессия изображений
Весьма актуальной является задача сжатия реального файла с изображением и
воспроизведения сжатого изображения. На рис. 5.68 представлены загрузка файла
с изображением командой READBMP, построение изображения по его матрице L
284
5.7. Дополнительные возможности пакета Wavelet Extension
Рис. 5.67. Пример построения времячастотной диаграммы зашумленной
синусоиды с нарастающей во времени частотой оптимизацией базиса
и выполнение wavelet-преобразований для двух случаев — выделение 10% и 1%
коэффициентов wavelet-разложения изображения. Отметим, что исходный файл
lena.bmp должен быть расположен в основной директории диска C.
Как видно из рис. 5.68, при использовании 10% коэффициентов (степень
компрессии 10) полученное изображение почти неотличимо от исходного. Но
Рис. 5.68. Пример компрессии и реставрации изображения
285
Глава 5. Вейвлеты в системе Mathcad
при использовании 1% коэффициентов (степень компрессии 100) искажения уже
довольно заметны. Тем не менее даже в этом случае можно рассмотреть лицо
юной дамы, портрет которой взят за основу преобразуемого изображения. Это
свидетельствует о высокой эффективности вейвлет-компрессии. Изображения с
выской степенью сжатия могут найти высокое применение — например для их
передачи по Интернету, в системах видеосвязи с ограниченной пропускной способностью и т. д.
5.7.5. Функции вставки и извлечения полос
Мы рассмотрели большинство встроенных функций пакета Wavelet Extension
Pack и ряд функций, заданных в электронной книге, сопровождающей этот пакет.
Для полноты картины его описания отметим еще ряд функций. Прежде всего это
функции (для одномерного и двумерного случаев) «вставки полосы»:
put_subband(w,l,n,y)
put_detail(w,l,y)
put_smooth2d(M,l,N)
put_smooth(w,l,y)
put_subband2d(M,,l,m,n,N)
put_detail2d(M,l,N,ds)
Эти функции заменяют определенные блоки wavelet packet-коэффициентов в
векторе w или матрице M содержимым вектора y или матрицы N в зависимости от
размерности функции. Такой блок коэффициентов именуется как полоса. Аргументы этих функции следующие:
w — одномерные (1D) коэффициенты wavelet packet-преобразования, M — двумерные (2D) коэффициенты wavelet packet-преобразования, l — уровень требуемого блока (полосы) коэффициентов, m и n — индексы требуемого блока коэффициентов и y — вектор новых значений для коэффициентов в блоке, N — матрица новых значений для коэффициентов в блоке и ds — строка, обозначающая
горизонтальную, вертикальную или диагональную материнскую полосу.
Есть также аналогичные функции для извлечения полосы:
get_subband(w,l,n)
get_detail(w,l)
get_smooth2d(M,l)
get_smooth(w,l)
get_subband2d(M,l,m,n)
get_detail2d(M,l,ds)
Рис. 5.69 иллюстрирует применение этих функций в двумерном варианте.
В нем из файла wavelet.prn используются данные для задания вектора v исходного
сигнала. Затем прямым дискретным вейвлет-преобразованием создается вектор w.
Из него с помощью функции get_subband извлекаются подполосы и полученному вектору вновь задается имя w. После этого с помощью функции get_smooth
создается еще один вектор wf со сглаженными данными. После обратного вейвлет-преобразования создается два новых вектора: х — со вставленными подполосами без сглаживания и xf — со сглаживанием. Рисунок снизу показывает графические зависимости исходного сигнала v и новых сигналов из векторов x и xf.
В другом случае (рис. 5.70) в качестве исходного сигнала берется нулевая матрица M. Путем манипуляций с субполосами массива случайных чисел N создается
два варианта матриц (M и M2), для которых строятся 3D-графики поверхностей,
представляющих значения элементов матриц. Они представлены снизу рис. 5.70.
5.7.6. Вейвлет-компрессия реальных звуковых сигналов
Mathcad с пакетом расширения Wavelet Extension Pack позволяет проверять эффективность вейвлет-преобразований на реальных сигналах. Рассмотрим доку-
286
5.7. Дополнительные возможности пакета Wavelet Extension
Рис. 5.69. Примеры выделения
и вставки подполос в одномерном
случае
Рис. 5.70. Примеры выделения
и вставки подполос в одномерном
случае
мент, в котором реализована вейвлет-компрессия звуковых сигналов и выполняется проверка эффективности такой компрессии. Начало этого документа представлено на рис. 5.71.
В этом примере используется имеющийся в электронной книге по вейвлетам
файл, который хранит массив с оцифрованным словом «Wavelet». Он загружается,
и строится осциллограмма сигнала.
Рисунок 5.72 показывает технику прямого и обратного вейвлет-преобразований
звукового сигнала. Прямое дискретное преобразование осуществляется с помощью функции dwt, а обратное дискретное преобразование с помощью функции
idwt. Для обеспечения компрессии методом отбрасывания части вейвлет-коэффициентов, значения которых оказались ниже порога thresh (определяемого через
проценты percent доли сохраненной энергии сигнала, используется функция Compress в виде программного модуля.
Рис. 5.71. Пример загрузки реального звукового сигнала и построения
его осциллограммы
287
Глава 5. Вейвлеты в системе Mathcad
Рис. 5.72. Прямое и обратное дискретные вейвлет-преобразования реального
звукового сигнала
На рис. 5.72 показаны 4 кнопки с изображением динамика. Каждая из них позволяет прослушать сигнал без компрессии и с тремя уровнями компрессии через
звуковую карту ПК и подключенные к ней громкоговорители. При компрессии в
10 раз (удалено 90% вевлет-коэффициентов) звук трудно отличить от оригинала
(без компрессии). При компрессии в 20 раз сжатие сигнала уже заметно, а при
компрессии в 100 раз сильно заметно, хотя и позволяет разобрать сигнал.
Следующая часть документа (рис. 5.73) содержит реализацию нескольких методов компрессии звуковых сигналов. В качестве критерия эффективности компрессии используется понятие концентрации энергии в спектре сигналов. Чем больше
энергии сигнала сохраняется в процессе компрессии, тем выше ее эффективность.
Сравнению подлежат следующие методы компрессии:
FFT — компрессия на основе быстрого преобразования Фурье;
DWT — вейвлет-компрессия путем простого удаления части коэффициентов;
Рис. 5.73. Компрессия звуковых сигналов разными методами
288
5.7. Дополнительные возможности пакета Wavelet Extension
WPT — вейвлет-компрессия с выбором наилучшего базиса;
LCT — вейвлет-компрессия с пороговым удалением вейвлет-коэффициентов.
На рис. 5.74 представлены данные об эффективности компрессии этими методами (для метода LCT они даны при двух значениях порога Threshold). По вертикали отложена эффективность компрессии, а по горизонтали степень компрессии
(ее значение 0,1 соответствует компрессии в 10 раз, 0,001 — в 100 раз и т. д.).
Рис. 5.74. Сравнение эффективности компрессии разными методами
Из рис. 5.74 видно, что при любой степени компрессии вейвлет-компрессия
превосходит по эффективности обычную компрессию на основе быстрого преобразования Фурье, которая базируется на удалении высших гармоник спектра сигнала. При этом наилучшие результаты дает вейвлет-компрессия с выбором наилучшего базиса. Отсюда можно сделать вывод о перспективности вейвлет-компрессии звуковых сигналов, хотя пока в реальной аппаратуре она широко не
используется.
5.7.7. Двумерная интерполяция
Помимо 2D-аппроксимации имеется возможность и двумерной интерполяции.
Для этого служат следующие функции:
waveterp2d(x,y,v,j,n,m,filter) — осуществляет периодическую wavelet
двумерную интерполяцию.
swaveterp2d(x,y,v,j,n,m,filter) — осуществляет симметричную wavelet-интерполяцию.
С достаточно простыми примерами применения этих функций можно ознакомиться в электронной книге по пакету Wavelet Extension Pack.
Итак, мы завершили рассмотрение пакета Wavelet Extension Pack и электронной книги по нему. Это рассмотрение было достаточно подробным и детальным,
хотя оно не претендует на исчерпывающую полноту. Пользователю, заинтересовавшемуся этим интересным пакетом расширения, рекомендуется внимательно
познакомиться со всеми примерами из электронной книги по данному пакету,
поскольку многие из них отличны от описанных в этой главе, а некоторые вообще
не упомянуты из-за ограниченного объема данной книги.
289
Глава 6. Работа с пакетом Wavelet Explorer
системы Mathematica
6.1. Пакет Wavelet Explorer
для СКМ Mathematica 4/4.1/4.2/5
6.1.1. Назначение и место пакета Wavelet Explorer
Система компьютерной математики Mathematica 4/5 [25, 31] является мировым
лидером среди систем символьной математики (компьютерной алгебры) и разделяет это лидерство с другой системой этого же класса Maple 8/9 [32]. Последние
версии Mathematica 4 и особенно Mathematica 5 содержат значительно усовершенствованные алгоритмы численных вычислений, что сделало их подлинно универсальными математическими системами, одинаково пригодными для выполнения
аналитических вычислений и численных расчетов.
Для систем Mathematica 4/4.1/5 разработано свыше двух десятков внешних пакетов расширения, среди которых видное место занимает пакет Wavelet Explorer,
содержащий средства вейвлет-технологии обработки сигналов и изображений.
Этот пакет выполнен как документ системы Mathematica и хранится в виде файла
Wavelets.m в директории MathApps. После инсталляции пакета все его функции
становятся определенными и доступными, а в справочной базе данных формируется раздел, соответствующий этому пакету расширения и представляющий собой
типичную электронную книгу c «живыми» примерами. Ниже дано полное описание пакета Wavelet Explorer системы Mathematica.
ВНИМАНИЕ Благодаря заданию пакета в виде файла (документа системы Mathematica)
возможно детальное знакомство с реализацией всех входящих в него функций. Для этого достаточно просмотреть файл Wavelets.m в любом текстовом редакторе, поддерживающем текстовый формат. Несомненно, что
такая возможность порадует тех специалистов, которые хотели бы всерьез освоить и усовершенствовать вейвлет-технологию обработки сигналов
и изображений.
6.1.2. Загрузка пакета Wavelet Explorer
Загрузка пакета расширения Wavelet Explorer осуществляется из командной
строки ввода системы командой:
Needs[«Wavelets`Wavelets`»]
Команда загрузки пакета Wavelet Explorer обязательно должна выполняться в
начале работы с любыми примерами этого пакета, иначе заданные в нем новые
функции нельзя использовать. Однако подготовленные с помощью его документы
можно просматривать в среде системы Mathematica и без пакета расширения Wavelet Explorer, но нельзя их модернизировать и запускать заново. По обилию функций, а главное, по возможностям графической визуализации их работы пакет
Wavelet Explorer уступает пакету Wavelet Toolbox системы MATLAB 6.0/6.1/6.5, но
тем не менее он содержит почти все возможности, необходимые для работы с вейвлетами и осуществления вейвлет-преобразований.
290
6.1. Пакет Wavelet Explorer для СКМ Mathematica 4/4.1/4.2/5
После загрузки пакета в окне справки системы Mathematica по пакетам расширения Add-ons в первом же окне четырехступенчатого тематического каталога появляется раздел Wavelet Explorer и раскрывается список разделов электронной
книги по этому разделу. На рис. 6.1 показан вид окна справки и электронной
книги по пакету Wavelet Explorer, открытых по разделу Introduction (Введение).
К сожалению, справка и электронная книга написаны на английском языке. Тем
не менее видно, что описание начинается с представления уже известных нам
данных о вейвлетах и их свойствах.
Рис. 6.1. Окно справки и электронной книги системы Mathematica 4
по разделу Introduction
Рубрикация электронной книги и ее теоретический материал в основном соответствует сведениям, представленным в главе 2 данной книги. Характер примеров
подобен описанным в главе 5, посвященной пакету расширения Wavelet Extension
Pack систем класса Mathcad. В связи с этим далее описываются только новые
функции, которые данный пакет добавляет к почти 2000 встроенных функций
ядра и встроенных пакетов расширения системы Mathematica 4/4.1/5. Пользование материалами этой главы предполагает знакомство читателя с СКМ класса
Mathematica, например, по книге [31].
Разработчики пакета Wavelet Explorer предупреждают, что при обработке на
нем изображений компьютер должен обладать достаточным резервом памяти и
достаточно мощным микропроцессором (Pentium II и выше). Следует, однако, помнить, что этот пакет рассчитан на отработку математических методов вейвлет-технологии, а не на реальную обработку сложных сигналов, тем более таких,
как высококачественные изображения, получаемые с помощью сканеров или
цифровых фото- и кинокамер.
291
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Работа с системой Mathematica описана в ряде книг [25, 36]. Система имеет
многооконный интерфейс (рис. 6.2) и простые правила работы. Спецификой системы является ввод аргументов функций в квадратных скобках и исполнение выражений в строках ввода нажатием одновременно клавиш Shift и Enter (клавиша
Enter используется для перевода строки).
Рис. 6.2. Работа с системой Mathematica
6.2. Задание вейвлетов в Wavelet Explorer
6.2.1. Основные типы вейвлет-фильтров
В пакете Wavelet Explorer вейвлеты задаются своими фильтрами. Основные
типы вейвлет-фильтров пакета Wavelet Explorer следующие:
HaarFilter[] — Хаара;
DaubechiesFilter[n] и DaubechiesFilter[n, prec] — Добеши;
LeastAsymmetricFilter[n] и LeastAsymmetricFilter[n, prec] — с минимальной
асимметрией;
CoifletFilter[n] и CoifletFilter[n, prec] — Койфлета;
ShannonFilter[kmax] — Шенона;
MeyerFilter[n, kmax] — Мейера;
SplineFilter[n, kmax] — сплайновый фильтр;
BiorthogonalSplineFilter[n, nt] — биортогональный сплайновый фильтр порядка
{n,nt}.
В фильтрах используются следующие параметры:
n — порядок фильтра;
prec — число знаков чисел после десятичной точки, с которыми идут вычисления коэффициентов фильтра;
292
6.2. Задание вейвлетов в Wavelet Explorer
kmax — индекс, начиная с которого стартует итерационный процесс определения фильтра.
Все приведенные выше функции создают списки коэффициентов того или
иного фильтра, которые можно вывести в строки вывода и использовать для проведения вейвлет-преобразований. Формат вывода следующий:
{{h–m, h–m+1,...,h–m–L–1}, –m},
где m≥0, –m — стартовый индекс и L — длина фильтра. Для асимметричных фильтров Добеши m = 0 и L = 2N, а для фильтров Койфлета m = N и L = 3N.
Хотя ограничений на порядок фильтров в пакете Wavelet Explorer не задано,
следует иметь в виду, что работа фильтров высокого порядка может быть неустойчивой и, как правило, требует задания большеого количества знаков для вычислений и их результатов — параметр prec (точность).
6.2.2. Примеры вычисления коэффициентов вейвлет-фильтров
Приведем достаточно простые примеры вычисления коэффициентов фильтров
для вейвлета Хаара, Добеши 4 и др. (обозначения вейвлетов и их параметры вполне очевидны):
Needs[«Wavelets`Wavelets`»]
HaarFilter[]
1  
 1
,

,0
2
2 

DaubechiesFilter[4]
{{0.230378, 0.714847, 0.630881,
-0.0279838, -0.187035, 0.0308414, 0.032883, -0.0105974}, 0}
DaubechiesFilter[5, 12]
{{0.160102, 0.603829, 0.724309, 0.138428, -0.242295,
-0.0322449, 0.0775715, -0.00624149, -0.0125808, 0.00333573}, 0}
Precision[%]
16
LeastAsymmetricFilter[11]
{{0.000489264, 0.000110535, -0.0063896, -0.00200347,
0.0430002, 0.0352668, -0.144602, -0.204655, 0.23769, 0.730344, 0.572023,
0.0971984, -0.0228327, 0.0699768, 0.0370374, -0.0240808, -0.00985793,
0.0065125, 0.000588353, -0.00173437, -0.0000387957, 0.000171722}, 0}
CoifletFilter[2]
{{-0.0727326, 0.337898, 0.852572, 0.384865, -0.0727326, -0.0156557}, -2}
CoifletFilter[2,18]
{{-0.072732619512526448, 0.337897662457481770, 0.85257202021160042,
0.384864846864857747, -0.072732619512526448, -0.0156557281357919925}, -2}
ShannonFilter[2]

2 1
2  
,
,
,0,−2
0,
2 π
 
 π
293
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
MeyerFilter[4, 4]
{{0.0284837, -0.135765, -0.0318665, 0.445203,
0.740179, 0.445203, -0.0318665, -0.135765,0.0284837}, -4}
SplineFilter[5, 4]
{{0.0294742, -0.129269, -0.03702, 0.442463,
0.747234, 0.442463, -0.03702, -0.129269, 0.0294742}, -4}
Биортогональный сплайновый фильтр возвращает коэффициенты без их преобразования в обычное десятичное число с плавающей точкой:
BiorthogonalSplineFilter[1, 3]


1
3
3
1    1
3
3
1 
,
,
,−
,
,
,
,−1 , 
−
, − 1 
2 2   4 2 4 2 4 2 4 2 

 2 2 2 2 2 2
Для вычисления их в форме числа с плавающей точкой можно воспользоваться
следующим выражением:
MapAt[N, #, {1}]& /@ %
{{{-0.353553, 1.06066, 1.06066, -0.353553},-1},
{{0.176777, 0.53033, 0.53033, 0.176777},-1}}
Эти примеры не требуют особых комментариев. Надо лишь отметить, что последние нули в результатах вычислений отсекаются.
Для преобразования НЧ-фильтра в ВЧ-фильтр можно использовать функцию
HighpassFilter[h]. Это демонстрирует следующий пример:
HighpassFilter[CoifletFilter[4]]
{{-0.000720549, 0.00182321, 0.00561143, -0.0236802, -0.0594344, 0.0764886,
0.417005, -0.812724, 0.38611, 0.0673726, -0.0414649, -0.0163873}, -6}
6.3. Вычисление масштабирующих и вейвлет-функций
6.3.1. Функции ScalingFunction и Wavelet
Для вычисления масштабирующих и вейвлет-функций в пакет Wavelet Explorer
включены следующие функции:
ScalingFunction[h, jmax] — вычисляет значение масштабирующей phi-функции
для k/2^jmax парных точек, используя фильтр h;
Wavelet[h, jmax] — вычисляет значение материнского вейвлета (psi- функции)
для k/2^jmax парных точек, используя фильтр h.
При вычислении масштабирующей функции можно задать ее интерполяцию в
области от tmin до tmax с помощью опции InterpolationDomain ->{tmin, tmax}.
Можно также применять опцию Interpolation -> True или False. При отказе от обратного преобразования используется опция InverseTransform -> False.
Следующий пример показывает задание масштабирующей функции для вейвлета LeastAsymmetricFilter с малой асимметрией и построение графика этой функции при аргументе, равном (2t – 1) и t:
phi = ScalingFunction[LeastAsymmetricFilter [5], 7,
Interpolation -> True]
294
6.3. Вычисление масштабирующих и вейвлет-функций
InterpolatingFunction[{{-100.,100.}},<>]
Plot[{phi[t], phi[2t-1]}, {t, 0, 8}, PlotRange -> All,
PlotLabel -> "phi(2t-1) и phi(t)"]
На рис. 6.3 показаны построения графиков масштабирующей функции для
этого примера. Хорошо видно перемещение графика функции phi(t) по оси времени и его сжатие во времени при использовании аргумента (2t – 1) вместо t.
Рис. 6.3. Две масштабирующие функции для вейвлета LeastAsymmetricFilter
Теперь рассмотрим задание функции psi(t) на примере вейвлета Добеши порядка 4:
d4= DaubechiesFilter[4]
{{0.230378, 0.714847, 0.630881,
-0.0279838, -0.187035, 0.0308414, 0.032883, -0.0105974},0}
psilist = Wavelet[d4, 10]; ListPlot[psilist, AxesLabel -> {"t",
"psi(t)"},PlotRange->All]
Построенный по этому примеру график зависимости psi(t) представлен на
рис. 6.4. Здесь отчетливо видно существенное ее отличие от модулированной синусоиды и резкая ее несимметрия нарастания и спада.
Следующие команды позволяют построить две функции psi(t) для вейвлета Добеши с разным расположением по оси t и разным параметром масштабирования:
psi = Wavelet[d4, 5, Interpolation -> True]
InterpolatingFunction[{{-100.,100.}},<>]
psi[0.5]
1.04365
Plot[{psi[t], psi[2t-2]}, {t, -1, 3}, PlotRange -> All,
PlotLabel -> "psi(t) and psi(2t-2)"]
Это иллюстрирует сдвиг и масштабирование для psi-функции данного вейвлета — рис. 6.5.
Характер перемещения и масштабирования psi-функции тот же, что и для рассмотренной выше phi-функции. Он соответствует свойствам вейвлетов, описанным в главе 2.
295
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.4. Функция psi(t) для вейвлета
Добеши порядка 4
Рис. 6.5. Демонстрация сдвига
и масштабирования для функция
psi(t) вейвлета Добеши порядка 4
6.3.2. Построение графиков функций для биортогонального
сплайнового вейвлета
Для построения масштабирующей и вейвлет-функции биортогонального
сплайнового вейвлета зададим такой вейвлет с именем b33 и вычислим его нормированные коэффициенты:
b33 = BiorthogonalSplineFilter[3, 3];
b33 = MapAt[N, #, {1}]& /@ b33
{{{0.0662913,
-0.198874,
-0.15468,
0.994369,
0.994369,
-0.15468,
-0.198874, 0.0662913}, -3}, {{0.176777, 0.53033, 0.53033, 0.176777}, -1}}
Теперь для построения графика одной из двух масштабирующей функции такого вейвлета (рис. 6.6) воспользуемся следующими командами:
ListPlot[ScalingFunction[b33, 7], PlotJoined -> True,
PlotRange -> All, PlotLabel -> "phi_b33(t)"]
Для построения графика одной из двух вейвлет-функций данного вейвлета зададим команды:
ListPlot[Wavelet[b33, 7], PlotJoined -> True, PlotRange -> All,
PlotLabel -> "psi_33(t)"]
Полученный при исполнении этих команд график представлен на рис. 6.7.
Как видно из рис. 6.6 и 6.7, представленные функции имеют очень сложную
структуру. Можно лишь поражаться, что математический объект такого вида можно использовать для анализа самых различных сигналов и функций.
Для построения графика второй масштабирующей функции надо использовать
функцию реверсирования Reverse в составе функции ScalingFunction. Это иллюстрирует следующая команда:
ListPlot[ScalingFunction[Reverse[b33], 7], PlotJoined ->
True, PlotRange -> All, PlotLabel -> "dual phi_33(t)"]
На рис. 6.8 показан график этой функции, построенный с помощью приведенной команды. На этот раз получаем удивительно гладкую и внешне простую функцию.
296
6.3. Вычисление масштабирующих и вейвлет-функций
Рис. 6.6. Первая масштабирующая
функция биортогонального
сплайнового вейвлета b33
Рис. 6.7. Вейвлет-функция
биортогонального сплайнового
вейвлета b33
Рис. 6.8. Вторая масштабирующая
функция биортогонального
сплайнового вейвлета b33
Рис. 6.9. Вторая вейвлет-функция
биортогонального сплайнового
вейвлета b33
Для построения графика второй из двух вейвлет-функций данного вейвлета
(рис. 6.9) зададим команду:
ListPlot[Wavelet[Reverse[b33], 7], PlotJoined -> True,
PlotRange -> All, PlotLabel -> "dual psi_33(t)"]
Как видно из рис. 6.8 и 6.9, вторая пара функций (масштабирующей и вейвлет-функции) отличается их высокой гладкостью.
6.3.3. Функция WaveletPacket для пакетных вейвлетов
Функция WaveletPacket[n, h, jmax] вычисляет значение пакетного вейвлета w_n
для k/2^jmax парных точек используя фильтр h. Параметр n задает номер вейвлета.
В приведенном ниже примере задается масштабирующая функция phi(t) =
w_0(t) для вейвлета Койфлета порядка 10 и строится ее график (рис. 6.10):
с10=CoifletFilter[10];
phi = WaveletPacket[0, c10, 7, Interpolation -> True];
Plot[phi[t], {t, -4, 4}, PlotRange -> All, Frame -> True,
Axes -> False, PlotLabel -> "Phi(t) для вейвлета Койфлета с n=10"]
297
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.10. Масштабирующая функция
для вейвлета Койфлета порядка 10
Рис. 6.11. Первый из вейвлетов
пакетного вейвлета на основе
фильтра Койфлета
Пример применения функции WaveletPacket для создания первого вейвлета c10
представлен ниже (рис. 6.11):
с10=CoifletFilter[10];
ListPlot[WaveletPacket[1, c10, 6], PlotRange -> {{-5, 5}, All},
PlotJoined -> True, Frame -> True, Axes -> False, PlotLabel ->
"w_1(t)"]
В данном случае построен первый вейвлет пакета, обозначенный как w_1(t).
Для построения второго вейвлета данного пакетного вейвлета с n = 2 (рис. 6.6)
можно использовать следующие команды:
ListPlot[WaveletPacket[2, c10, 6], PlotRange -> {{-5, 5}, All},
PlotJoined -> True, Frame -> True, Axes -> False, PlotLabel ->
"w_2(t)"]
Рисунок 6.12 показывает график второго вейвлета, обозначенного как w_2(t).
Рис. 6.12. Второй из вейвлетов пакетного вейвлета на основе фильтра Койфлета
6.3.4. Пример задания двумерного вейвлета Койфлета
Построим график поверхности, представляющей произведение phi(x) на phi(y),
для пакетного вейвлета Койфлета порядка n = 10 (рис. 6.13):
с10=CoifletFilter[10];
298
6.3. Вычисление масштабирующих и вейвлет-функций
phi = WaveletPacket[0, c10, 7, Interpolation -> True];
Plot3D[Evaluate[phi[x] phi[y]], {x, -4, 4}, {y, -4, 4},
PlotPoints -> 70, PlotRange -> All, Boxed -> False, Axes -> False]
Рис. 6.13. График произведения функций phi(x) и phi(y) в виде поверхности
Представленный в виде поверхности график произведения функций phi(x) и
phi(y) дает образное представление о них. Он иллюстрирует один из способов задания двумерного вейвлета, применяемого для обработки матриц изображений.
6.3.5. Функции MeyerPhi и MeyerPsi для вейвлетов Мейера
В отличие от вейвлетов Добеши вейвлеты Мейера и Шеннона и сплайновые
вейвлеты не имеют ограниченного носителя, имеют аналитические выражения и
могут задаваться прямо без рекурсивных процедур — см. главу 2 с подробным их
описанием.
Функции MeyerPhi[n, t, k] и MeyerPsi[n, t, k] — вычисляют функции phi(t) и
psi(t) для вейвлета Мейера порядка n с суммарными интервалами t с длиной
2Pi/(3k).
С помощью команды
Plot[Evaluate[MeyerPhi[2, t, 30]], {t, -6, 6},
PlotRange -> All, AxesLabel -> {"t", "Meyer phi_2(t)"}]
можно построить график функции phi(t) для вейвлета Мейера порядка 2. Он представлен на рис. 6.14.
Рис. 6.14. Масштабирующая функция для вейвлета Мейера порядка 2
299
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
А с помощью команды
Plot[Evaluate[MeyerPsi[2, t, 30]], {t, -6, 6},
PlotRange -> All, AxesLabel -> {"t", "Meyer psi_2(t)"}]
строится график psi(t), показанный на рис. 6.15.
Рис. 6.15. Вейвлет-функция для вейвлета Мейера порядка 2
Нетрудно заметить, что полученная функция достаточно гладкая и отличается
хорошей симметрией.
6.3.6. Функции ShannonPhi и ShannonPsi для вейвлетов Шеннона
Функции ShannonPhi[t] и ShannonPsi[t] вычислят phi- и psi- функции для вейвлета Шеннона.
С помощью команды
Plot[ShannonPhi[t], {t, -10, 10}, PlotRange -> All,
AxesLabel -> {"t", "Shannon phi(t)"}]
строится график функции phi(t) для вейвлета Шеннона — рис. 6.16.
Команда
Plot[ShannonPsi[t], {t, -10, 10}, PlotRange -> All,
AxesLabel -> {"t", "Shannon psi(t)"}]
позволяет построить график вейвлет-функции для вейвлета Шеннона (рис. 6.17).
Рис. 6.16. Масштабирующая функция
для вейвлета Шеннона
300
Рис. 6.17. Вейвлет-функция
для вейвлета Шеннона
6.3. Вычисление масштабирующих и вейвлет-функций
6.3.7. Функции SplinePhi и SplinePsi для ортогональных
сплайновых вейвлетов
Ортогональные сплайновые вейвлеты также имеют масштабирующую и вейвлет-функции:
SplinePhi[n, t, kmax] — вычисляет масштабирующую функцию phi(t) для ортогонального сплайна n-го порядка в виде суперпозиции 2kmax+1 B-сплайнов, а
SplinePhi[n, t, tol] — обеспечивает те же вычисления с погрешностью, не более заданной tol.
SplinePsi[n, t, kmax] — вычисляет масштабирующую функцию phi(t) для ортогонального сплайна n-го порядка в виде суперпозиции 2kmax+1 (при n нечетном)
or 2kmax+2 (при n четном) B-сплайнов.
Команда, приведенная ниже, строит график масштабирующей функции сплайнового вейвлета порядка 6 (рис. 6.18):
Plot[Evaluate[SplinePhi[6, t, 0.02]], {t, -6, 6},
PlotRange -> All, AxesLabel -> {"t", "spline phi_6(t)"}]
Другая команда строит график вейвлет-функции сплайнового вейвлета шестого
порядка (рис. 6.19):
Plot[Evaluate[SplinePsi[6, t, 10]], {t, -6, 6},
PlotRange -> All, AxesLabel -> {"t", "spline psi_6(t)"}]
Рис. 6.18. Масштабирующая функция
для сплайнового вейвлета шестого
порядка
Рис. 6.19. Вейвлет-функция
сплайнового вейвлета шестого
порядка
6.3.8. Функция BSpline для построения B-сплайна
Еще одна функция BSpline[n, t] задает B-сплайновую функцию beta(t) порядка
n. Пример ее применения представлен ниже (рис. 6.20):
Plot[Evaluate[BSpline[5, t]], {t, -3, 3},
PlotRange -> All, PlotLabel -> "B-spline of order 5"]
Phi- и psi-функции сплайновых вейвлетов отличаются хорошей гладкостью.
301
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.20. График B-сплайновой функции пятого порядка
6.4. Анализ масштабирующих и вейвлет-функций
6.4.1. Вычисление производных phi- и psi-функций
Вычисления производных (особенно высших) для вейвлетов различного типа
служат хорошим тестом на выявление их гладкости. Следующие функции служат
для вычисления этих производных:
DScalingFunction[h, jmax, m] — возвращает значения m-й производной масштабирующей функции (если это возможно) в k/2^jmax парных точек, используя
фильтр h.
DWavelet[h, jmax, m] — возвращает значения m-й производной вейвлет-функции (если это возможно) в k/2^jmax парных точек, используя фильтр h.
Приведенные ниже команды строят производную масштабирующей функции
для вейвлета Добеши порядка 4 (рис. 6.21):
DScalingFunction[DaubechiesFilter[4], 7, 1];
ListPlot[%, PlotJoined -> True, PlotRange -> All,
AxesLabel -> {"t", ""}, PlotLabel -> "phi'(t)"]
Для построения производной вейвлет-функции (рис. 6.22) вейвлета Добеши
порядка 4 можно использовать следующие команды:
Рис. 6.21. График первой производной
масштабирующей функции вейвлета
Добеши порядка 4
302
Рис. 6.22. График первой производной
вейвлет-функции вейвлета Добеши
порядка 4
6.4. Анализ масштабирующих и вейвлет-функций
ListPlot[DScalingFunction[DaubechiesFilter[4], 7, 1],
PlotJoined -> True, PlotRange -> {{0, 5},All},
AxesLabel -> {"t", ""}, PlotLabel -> "phi'(t)"]
Заменив значение n = 1 в приведенной выше первой команде на значение n =
2, можно построить график второй производной выбранного вейвлета (рис. 6.23):
ListPlot[DWavelet[DaubechiesFilter[4], 7, 2],
PlotJoined -> True, PlotRange -> {{-1, 3}, All},
AxesLabel -> {"t", ""}, PlotLabel -> "psi''(t)"]
Из приведенных примеров ясно, что вейвлет Добеши порядка 4 не является
гладким. Как правило, гладкость вейвлетов улучшается по мере увеличения их порядка. Представленный ниже набор команд строит график второй производной
вейвлета LeastAsymmetric порядка 16 (рис. 6.24):
ListPlot[DWavelet[LeastAsymmetricFilter[16], 7, 2],
PlotJoined -> True, PlotRange -> {{-2, 3}, All},
AxesLabel -> {"t", ""}, PlotLabel -> "psi''(t)"]
Очевидно, что данный вейвлет отличается высокой гладкостью. Вообще говоря, просмотр графиков производных функций вейвлетов позволяет легко судить
об их гладкости.
Рис. 6.23. График второй производной
вейвлет-функции вейвлета Добеши
порядка 4
Рис. 6.24. График второй производной
вейвлет-функции вейвлета
LeastAsymmetric
6.4.2. Обзор деталей основных функций вейвлетов
Как видно из представленных выше данных, масштабирующие и вейвлет-функции многих вейвлетов имеют весьма сложную (подчас похожую на фрактальную)
структуру. Это особенно ясно выявляется при просмотре графиков производных
этих функций. Пакет Wavelet Explorer имеет уникальные средства для детального
просмотра и анализа вейвлетов и их производных, что может оказаться весьма полезным при решении специальных задач идентификации сигналов, функций и образов.
Для детального анализа основных функций вейвлетов служит функция Zoom:
Zoom[flist, filter, j, {tmin, tmax}] — возвращает расширенный список значений
функции, представленной списком flist в интервале значений переменной t {tmin,
tmax}. Это достигается вставкой 2^j–1 точек между соседними точками в flist.
303
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
В качестве примера на использование этой функции для вывода графика масштабирующей функции биортогонального сплайнового вейвлета b33 в узком интервале времени [2, 2.0002] воспользуемся следующими командами:
b33 = BiorthogonalSplineFilter[3, 3];
phi = ScalingFunction[b33, 4, InverseTransform -> True];
Nest[Zoom[#, b33, 5, {2, 2.0002}]&, phi, 3];
ListPlot[%, PlotJoined -> True, Frame -> True,
Axes -> False, FrameLabel -> {"t", "phi(t)"}, PlotRange -> {0, 3}]
График масштабирующей функции в этом интервале представлен на рис. 6.25.
Даже в таком узком интервале отчетливо просматривается фрактальная структура
функции.
Рис. 6.25. График масштабирующей функции вейвлета b33
в интервале [2, 2.0002]
Как нетрудно заметить, описанное средство хорошо выполняет функции своеобразной «лупы времени», позволяя просматривать мельчайшие детали сложных
функций, применяемых в ходе вейвлет-анализа.
6.5. Задание и применение временных окон
6.5.1. Функция WindowFunction и тайперы
При проведении различных преобразований сигналов и изображений широко
используются средства для их ограниченного представления во времени — временные окна (windows). Вид окна задается некоторой функцией, обычно называемой тайпером. Применение окон с тайперами, дающими плавные границы окон,
часто минимизирует проявление эффекта Гиббса при спектральном и вейвлет-спектральном анализе. Допустимо задавать разные тайперы для нарастания и
для спада функции окна. Понятие тайпера было введено в главе 5.
В пакете Wavelet Explorer используется следующая функция задания окон:
WindowFunction[t, L] — задает окно в интервале [0, L] с заданным полиномиальным тайпером {Polynomial[2], L/4}. В ней возможно применение опции Options[WindowFunction] ={Taper -> {Polynomial[2], Automatic}}.
В общем случае тайпер задается в виде:
Taper -> { taperfunction, taperwidth },
304
6.5. Задание и применение временных окон
где параметр taperfunction задает спецификацию функции окна:
Polynomial[n] — полиномиальный тайпер с полиномом порядка n;
Trig[n] — тригонометрический тайпер порядка n.
Другой параметр taperwidth задает ширину окна.
6.5.2. Примеры задания временных окон
Начнем с построения функции окна, заданного по умолчанию. График этой
функции (рис. 6.26) можно построить с помощью следующей команды:
Plot[Evaluate[WindowFunction[t, 3]], {t, -1, 4},
AspectRatio -> Automatic, PlotLabel -> "Функция окна b(t)"]
Рис. 6.26. График функции текущего окна, заданного по умолчанию
Следующий пример задает построение функции сдвинутого на 1 по времени
окна с тайпером, задающим подъем и спад функции окна по синусоидальному закону (рис. 6.27):
Plot[Evaluate[WindowFunction[t-1, 3, Taper -> {Sin[Pi/2
#^3(10-15#+6#^2)]&, 1}]],
{t, 0, 5}, AspectRatio -> Automatic,
Ticks->{Automatic, {0,1}}, PlotLabel -> "Функция окна b(t)"]
Рис. 6.27. График функции сдвинутого по времени окна
с синусоидальным тайпером
В еще одном примере задаются разные тайперы (тригонометрический и полиномиальный) для нарастания и спада функции окна (рис. 6.28):
Plot[Evaluate[WindowFunction[t, 4,
Taper->{{ Trig[3], Automatic}, { Polynomial[5], 2}}]],
{t, -1, 6}, AspectRatio -> Automatic, Ticks->{Automatic, {0,1}},
PlotLabel -> "Функция окна b(t)"]
305
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.28. График функции окна с разными тайперами для нарастания и спада
В последнем примере число-параметр в Trig[3] задает ширину нарастания синусоидального подъема функции окна, а число-параметр в Polynomial[5] задает
ширину полиномиального спада окна. Меняя эти числа-параметры, можно получить разные несимметричные окна.
6.5.3. Синусные и косинусные пакеты
Для генерации пакетов синусоидальных и косинусоидальных сигналов используются функции:
CosPacket[t, L, k] — создает пакет в виде косинусоиды с индексом частоты k.
Пакет располагается в окне текущего типа с интервалом по времени [0, L].
SinPacket[t, L, k] — создает пакет в виде синусоиды с индексом частоты k. Пакет располагается в окне текущего типа с интервалом по времени [0, L].
Параметры огибающей пакетов могут изменяться с помощью тайперов, как это
было описано выше для функций задания временных окон.
В следующем примере задается пакет косинусоидальных колебаний с параметрами окна, заданными по умолчанию, и без сдвига по времени (рис. 6.29):
Plot[Evaluate[CosPacket[t, 2, 15]], {t, -1, 3},
AxesLabel->{"t", ""}, PlotLabel -> "cosine пакет"]
В другом примере задается пакет синусоидальных колебаний с полиномиальным тайпером и сдвигом во времени на 3 (рис. 6.30):
Plot[Evaluate[SinPacket[t-3, 5, 24, Taper -> {Polynomial[4],
2}]], {t, 0, 10}, PlotPoints -> 35, AxesLabel -> {"t", ""},
PlotLabel -> "sine пакет"]
Рис. 6.29. Пакет косинусоидальных
колебаний
306
Рис. 6.30. Пакет синусоидальных
колебаний
6.6. Основные виды преобразований
Наконец, в следующем примере задается пакет синусоидальных колебаний при
отключенном задании тайпера, т. е. при вырезке прямоугольным окном
(рис. 6.31):
Plot[Evaluate[SinPacket[t, 3, 14-1/2, Taper -> False]],
{t, -1, 4}, AxesLabel -> {"t",""}, PlotLabel -> "Sin-II пакет"]
Рис. 6.31. График пакета синусоидальных колебаний при отключенном тайпере
Полученные с помощью описанных функций пакеты могут использоваться в
качестве тестовых сигналов, представляющих радиоимпульсы.
6.6. Основные виды преобразований
6.6.1. Прямое и обратное вейвлет-преобразования
Для вычисления прямого и обратного непрерывных вейвлет-преобразований
по формулам, представленным в главе 2, служат следующие функции:
WaveletTransform[data, h] — обеспечивает прямое вейвлет-преобразование данных, представленных массивом data с использованием вейвлет-фильтра h.
WaveletTransform[data, h, l] — обеспечивает прямое вейвлет-преобразование
данных, представленных массивом data с использованием вейвлет-фильтра h с
остановкой после l декомпозиций.
InverseWaveletTransform[data, h] — обеспечивает обратное вейвлет-преобразование данных, представленных массивом data с использованием вейвлет-фильтра h.
В приведенном ниже примере задана таблица случайных чисел и с помощью
вейвлета Добеши порядка 1 — d1 выполняется прямое, а затем обратное вейвлет-преобразование сигнала, представляющего эту таблицу:
(d1 = DaubechiesFilter[1];SeedRandom[239541];
data = Table[Random[], {12}];)
wtdata = WaveletTransform[data, d1]
{{0.624594, 0.832341, 1.28924}, {-0.504942, 0.26655, 0.176873},
{-0.000634042, 0.393714, -0.558592, 0.354764, 0.00736692, -0.619794}}
WaveletTransform[data, d1, 1]
{{0.084607, 0.798703, 0.777033, 0.400075, 1.0367, 0.786562},
{-0.000634042, 0.393714, -0.558592, 0.354764, 0.00736692, -0.619794}}
InverseWaveletTransform[%, d1];
307
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Chop[data-%]
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}
Max[Abs[data-InverseWaveletTransform[wtdata, d1]]]
3.33067×10-16
Как нетрудно заметить, имеет место практически полное восстановление исходного сигнала, а погрешность восстановления ничтожно мала.
В следующем примере аналогичные действия проделаны в отношении двумерной таблица данных, имеющей 12 × 12 элементов, при использовании вейвлета
Добеши порядка 2:
(data2d = Table[Random[], {12}, {12}]; wtdata =
WaveletTransform[data2d, d1];)
Dimensions /@ wtdata
{{3,3}, {3,3,3}, {3,6,6}}
Union[Flatten[Chop[data2d — InverseWaveletTransform[wtdata, d1]]]]
{0}
d2=DaubechiesFilter[2]
{{0.482963, 0.836516, 0.224144, -0.12941}, 0}
MapAt[-1&, d2, {2}]
{{0.482963, 0.836516, 0.224144, -0.12941}, -1}
WaveletTransform[data, %, BoundaryCondition -> Zero]
{{0.0830269, 0.800584, 1.19738}, {-0.463556,-0.111292, -0.282618},
{0.370107, 0.0318365, -0.460568, 0.571609, -0.38228, -0.711247}}
Chop[data-InverseWaveletTransform[%, %%, BoundaryCondition ->
Zero]]
{0.00523853, -0.0025739, 0.00148604, 0, 0, 0, 0, 0, 0, 0.0812665,
0.140758, 0.286327}
В последующем в этой главе мы еще не раз вернемся к описанию возможностей этих преобразований и рассмотрим дополнительные примеры на их применение. А пока отметим, что хотя представленные примеры кажутся не столь красочными, как восстановление конкретных сигналов и функций с представлением
их графиков, но зато они дают поистине фундаментальные результаты — ведь не
надо забывать, что прямому и обратному преобразованиям подвергаются случайные массивы чисел — случайные сигналы.
6.6.2. Кратномасштабный анализ
Для проведения кратномасштабного анализа, описанного в начале этой главы,
используется функция:
MRDecomposition[wtdata, filter] — возвращает результат декомпозиции данных
wtdata при использовании кратномасштабного анализа и вейвлет-фильтра filter.
d2=DaubechiesFilter[2]; data = Sin[N[25Pi](Range[0, 63]/64)^2];
(wtdata = WaveletTransform[data, d2]; mrdata =
MRDecomposition[wtdata, d2];)
Length /@ mrdata
308
6.6. Основные виды преобразований
{64, 64, 64, 64, 64, 64}
Union[Chop[data — (Plus @@ mrdata)]]
{0}
wtdata — MapAt[#-#&, wtdata, {3}];
detail3 = InverseWaveletTransform[%, d2];
Union[Chop[mrdata[[3]] — detail3]]
{0}
Этот пример демонстрирует отсутствие ошибки в ходе прямого и обратного
диадного вейвлет-преобразований на базе кратномасштабного анализа.
6.6.3. Графическое представление вейвлет-коэффициентов
Пакет Wavelet Explorer дает довольно скромные возможности в представлении
временных зависимостей вейвлет-коэффициентов, получаемых при декомпозиции
данных (сигнала) в ходе прямого вейвлет-преобразования. Возможно, разработчики этого пакета решили, что толку от детального представления множества сложных временных зависимостей этих коэффициентов не так уж и много.
Для получения графиков вейвлет-коэффициентов используется функция:
PlotCoefficients[coefs], которая строит ряд графиков для вейвлет-коэффициентов.
Вид графика задается опцией построения линий PlotLines, которая может
иметь значения True или False. При значении True график строится линиями, а
при False — точками. Еще одна опция PlotJoined служит для задания соединения
точек, представляющих дискретные значения вейвлет-коэффициентов. Если эта
опция имеет значение True, то точки соединяются отрезками прямых, а при значении False они не соединяются. В последнем случае график временных зависимостей вейвлет-коэффициентов будет строиться как график дискретных отсчетов — вертикальными линиями. Для заключения графиков в рамку можно использовать опцию Frame -> True.
Следующая команда строит графики временных зависимостей вейвлет-коэффициентов после кратномасштабного анализа сплошными линиями:
PlotCoefficients[mrdata, PlotLines -> False, PlotJoined -> True]
Полученные графики представлены на рис. 6.32.
В другом варианте подобная команда строит подобные графики по точкам
(рис. 6.33):
PlotCoefficients[mrdata, PlotLines -> False, PlotJoined -> False]
Наконец, следующая команда строит те же графики отрезками вертикальных
линий
PlotCoefficients[mrdata, PlotLines -> True, PlotJoined -> False]
Довольно скромный характер графиков временных зависимостей вейвлет-коэффициентов позволяет заключить, что соответствующие средства визуализации
находятся в пакете Wavelet Explorer в зачаточном состоянии.
309
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.32. Построение временных
зависимостей вейвлет-коэффициентов
сплошными линиями
Рис. 6.33. Построение временных
зависимостей вейвлет-коэффициентов
точками
6.6.4. Прямое и обратное пакетное вейвлет-преобразование
Для пакетных вейвлетов также возможно прямое и обратное вейвлет-преобразования. Соответствующие функции представлены ниже:
WaveletPacketTransform[data, h] — возвращает результат прямого пакетного
вейвлет-преобразования по наилучшему базису, вычисляемому по критерию энтропии, для заданных данных data и фильтра h.
WaveletPacketTransform[data, h, l] — выполняет ту же функцию, но для ограниченного числом l количества декомпозиций.
В этих функциях может использоваться опция BestLevel. Она служит для задания наилучшего уровня декомпозиции для функций WaveletPacketTransform, SinPacketTransform и CosPacketTransform и может принимать значения True или False.
Значение True означает, что используется наилучшие уровень и дерево декомпозиции и реконструкции.
Возможно применение также опции CostFunction для указанных пакетов. По
умолчанию задано ее значение Entropy, означающее выбор критерия поиска лучшего дерева по энтропии.
Для вычисления пакетных вейвлет-коэффициентов служит функция:
WaveletPacketCoefficients[data, h] — возвращает пакетные вейвлет-коэффициенты для таблицы данных data, используя фильтр вейвлета h.
WaveletPacketCoefficients[data, h, l] — делает то же при выполнении l декомпозиций.
Имеется также функция обратного пакетного вейвлет-преобразования:
InverseWaveletPacketTransform[data, h] — дает обратное пакетное вейвлет-преобразование для исходных данных data с применением фильтра h.
В следующем примере показано прямое пакетное вейвлет-преобразование для
случайных данных data при максимальном числе декомпозиций l = 2:
(SeedRandom[348547]; data=Table[Random[],{8}];)
d1=DaubechiesFilter[1];
WaveletPacketCoefficients[data, d1, 2]
{{{0.361063, 0.157262, 0.429807, 0.622741, 0.279635, 0.628021,
0.605419, 0.752825}}, {{0.366511, 0.744264, 0.64181, 0.960423},
310
6.6. Основные виды преобразований
{0.144109, -0.136425, -0.246346, -0.104231}}, {{0.785437, 1.13295},
{-0.267111, -0.225294}, {0.00543337, -0.247896}, {0.198367, -0.10049}}}
При отсутствии ограничений на число декомпозиций получим:
coef = WaveletPacketCoefficients[data, d1]
{{{0.361063, 0.157262, 0.429807, 0.622741, 0.279635, 0.628021,
0.605419, 0.752825}}, {{0.366511, 0.744264, 0.64181, 0.960423},
{0.144109, -0.136425, -0.246346, -0.104231}}, {{0.785437, 1.13295}
{-0.267111, -0.225294}, {0.00543337, -0.247896}, {0.198367, -0.10049}},
{{1.3565}, {-0.245729}, {-0.348183}, {-0.0295696},
{-0.171447}, {0.179131}, {0.0692094}, {0.211324}}}
Length[coef]-1
3
Как нетрудно заметить, теперь число декомпозиций увеличилось до трех. Далее
рассмотрим пример на проведение прямого, а затем обратного пакетного вейвлет-преобразования с опцией BestLevel -> True, обеспечивающей декомпозицию данных с наилучшим базисом (уровнем):
WaveletPacketTransform[data, d1, BestLevel -> True]
{{1.3565}, {-0.245729}, {-0.348183}, {-0.0295696},
{-0.171447}, {0.179131}, {0.0692094}, {0.211324}}
WaveletPacketTransform[data, d1,
CostFunction -> (If[Abs[#]>0.2, 1, 0]&)]
{{0.785437, 1.13295}, {-0.348183}, {-0.0295696},
{-0.171477}, {0.179131}, {0.198367, -0.10049}}
Chop[InverseWaveletPacketTransform[%, d1] — data]
{0, 0, 0, 0, 0, 0, 0, 0}
Обратите внимание на то, что в данном случае вычисляется существенно меньше вейвлет-коэффициентов, чем ранее, и что обеспечена полная реставрация данных после выполнения обратного пакетного вейвлет-преобразования.
6.6.5. Графическая иллюстрация
базиса
Специальная графическая функция ShowBasisPosition[coefs] служит для наглядной демонстрации ортогонального базиса при одномерном
вейвлет-преобразовании. Получаемый в результате график иллюстрирует разбиение пространства данных на подпространства в ходе выполнения вейвлет-преобразований.
В следующем примере задана структура таблицы базиса для вейвлет-преобразования и ее
построение (рис. 6.34):
Рис. 6.34. Структура
таблицы базиса для
вейвлет-преобразования
(comp = {{3, 1}, {4, 3}, {4, 4}, {2, 2}}; Apply[coef[[##]]&,
comp, {1}])
{{0.785437, 1.13295}, {-0.348183}, {-0.0295696},
311
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
{0.144109, -0.136425, -0.246346, -0.104231}}
ShowBasisPosition[%]
В другом примере задается построение таблицы базиса для пакетного вейвлет-преобразования с использованием критерия энтропии:
Apply[coef[[##]]&, {{4, 1}, {4, 2}, {3, 2}, {2, 2}}, {1}]
{{1.3565}, {-0.245729}, {-0.267111, -0.225294},
{0.144109, -0.136425, -0.246346, -0.104231}}
WaveletPacketTransform[data, d1]
{{1.3565}, {-0.245729}, {-0.348183}, {-0.0295696},
{0.00543337, -0.247896}, {0.0692094}, {0.211324}}
ShowBasisPosition[%]
Вы можете сами просмотреть эти построения.
6.6.6. Опции вейвлет-преобразований
В описанных выше вейвлет-преобразованиях имеется возможность задания
ряда опций. Некоторые из них уже были рассмотрены. Ниже представлен синтаксис ряда опций, которые могут применяться в различных преобразованиях:
Options[WaveletTransform]=Options[InverseWaveletTransform]=
Options[MRDecomposition]=Options[WaveletPacketCoefficients]=
Options[InverseWaveletPacketTransform] = {BoundaryCondition->
Periodic}
Options[WaveletPacketTransform]=
{BestLevel -> False, BoundaryCondition -> Periodic,
CostFunction -> Entropy}
Опция задания граничных условий BoundaryCondition может использоваться
для различных вейвлет- и тригонометрических преобразований. Ее возможные
значения следующие: Zero (нуль), Reflective (отражение), Fixed (фиксированное) и
Periodic (периодическое).
6.7. Специальные виды преобразований
6.7.1. Локальные синусные и косинусные преобразования
В пакет Wavelet Explorer помимо вейвлет-преобразований включены средства
некоторых специальных преобразований, которые применяются наряду с вейвлет-преобразованиями или даже вместо них. Прежде всего, это локальные синусные и косинусные преобразования. В данном пакете они классифицируются по
виду своих расчетных соотношений, представленных на рис. 6.35.
Следующие функции служат для осуществления преобразований IV-типа:
CosTransform[data, n] — возвращает результат прямого косинусного преобразования типа Cos-IV, используя текущее определенное окно для разделения data в
сегменте с длиной n;
CosTransform[data, {nx,ny}] — возвращает результат прямого косинусного двумерного преобразования;
312
6.7. Специальные виды преобразований
SinTransform[data, n] — возвращает
результат прямого синусного преобразования типа Sin-IV, используя текущее заданное окно для partitioning данных в сегменте с длиной n;
SinTransform[data, {nx,ny}] — возвращает результат прямого двумерного
синусного преобразования;
InverseCosTransform[data] — обеспечивает обратное косинусное преобразование типа Cos-IV с использованием
текущего окна;
InverseSinTransform[data] — обеспечивает обратное синусное преобразование типа Sin-IV с использованием текущего окна.
Для этих функций возможно применение опций BasisType -> II или IV,
BoundaryCondition -> Periodic и Taper ->
{Polynomial[2], 4}. Для осуществления
преобразований II-типа просто достаРис. 6.35. Классификация локальных
точно задать текущим прямоугольное
синусных и косинусных преобразований
окно или задать опцию BasisType -> II.
Приведенный ниже пример иллюстрирует технику проведения прямого и обратного локального синусного и косинусного преобразований над данными, представленными случайными числами:
Needs["Wavelets`Wavelets`"]
(SeedRandom[34958];
data=Table[Random[], {15}];)
SinTransform[data, 5, Taper -> False]
{{0.685277, 0.756949, -0.0295241, 0.152116, 0.693752},
{0.937757, 0.475156, 0.281927, 0.0225539, -0.208153},
{1.41763, -0.241322, -0.0845688, 0.183968, 0.202159}}
Chop[InverseSinTransform[%, Taper -> False]-data]
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
CosTransform[data, 5, BasisType -> II]
{{0.972879, 0.479009, -0.249936, 0.271023, 0.485814},
{1.02594, 0.0328184, -0.161136, -0.293941, -0.249988},
{1.24764, -0.722666, 0.0632075, 0.244208, 0.0854325}}
CosTransform[data, 5, Taper -> {Trig[1], 2}]
{{1.32793, 0.192835, 0.00463487, 0.613364, 0.269562},
{0.922845, -0.312044, -0.149901, -0.366228, -0.118283},
{0.891082, -0.702475, 0.499429, 0.131378, 0.053563}}
(idata = InverseCosTransform[%, Taper -> {Trig[1], 2}];
Chop[idata-data])
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
313
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
(data2 = Table[Random[], {8}, {8}];
ctdata = CosTransform[data2, {4, 4}, Taper -> False];
Dimensions /@ ctdata)
{{2, 4, 4}, {2, 4, 4}}
Union[Flatten[Chop[
InverseCosTransform[ctdata, Taper -> False]-data2]]]
{0}
Обратите внимание на то, что эти виды преобразований обеспечивают практически точную реконструкцию произвольного сигнала.
6.7.2. Преобразования Малвара
К преобразованиям II-рода, альтернативным по отношению к Sin-II и Cos-II,
относится преобразование Малвара (Malvar transform). Прямое и обратное преобразования Малвара реализуются следующими функциями:
MalvarTransform[data, n] — обеспечивает прямое преобразование Малвара, для
одномерного массива данных data в сегменте длиной n, используя при этом текущее окно.
InverseMalvarTransform[data] — обеспечивает обратное преобразование Малвара с использованием текущего окна.
Возможные опции для этих преобразований следующие: BoundaryCondition ->
Periodic и Taper -> {Polynomial[2], 4}.
Техника применения преобразований Малвара иллюстрируется следующим
примером:
(data = Table[Random[], {10}];
MalvarTransform[data, 5, Taper -> {Polynomial[2], 2}])
{{1.31468, -0.250542, -0.122065, -0.161735, -0.255526},
{1.34205, -0.317309, -0.116444, -0.120624, -0.220199}}
Union[Chop[data — InverseMalvarTransform[%,
Taper -> {Polynomial[2], 2}]]]
{0}
В этом примере для массива из 10 случайных чисел выполняется вначале прямое, а затем обратное преобразование Малвара с применением полиномиального
тайпера. В конце примера показано, что происходит точная реконструкция данных с нулевой погрешностью.
6.7.3. Синусные и косинусные пакетные преобразования
Для выполнения синусных и косинусных пакетных преобразований Wavelet
Explorer имеет ряд функций, перечисленных ниже:
CosPacketTransform[data, n] — осуществляет косинусное пакетное преобразование для данных data с сегментов размера n, используя текущее окно и наилучший
базис, задаваемый по критерию энтропии;
CosPacketTransform[data, n, l] — делает то же при ограничении уровня базиса
значением l;
314
6.7. Специальные виды преобразований
SinPacketTransform[data, n] — осуществляет синусное пакетное преобразование
для данных data с сегментов размера n, используя текущее окно и наилучший базис, задаваемый по критерию энтропии;
SinPacketTransform[data, n, l] — делает то же при ограничении уровня базиса
значением l;
InverseCosPacketTransform[data] — осуществляет обратное косинусное пакетное
преобразование;
InverseSinPacketTransform[data] — осуществляет обратное синусное пакетное
преобразование.
В приведенных выше функциях возможно применение следующих опций: Taper -> {Polynomial[2], Automatic}, BasisType -> II или IV, BestLevel -> False, CostFunction -> Entropy, BoundaryCondition -> Periodic, Taper -> {Polynomial[2], 4}.
6.7.4. Вычисление коэффициентов синусных и косинусных
пакетных преобразований
Для получения коэффициентов синусных и косинусных пакетных преобразований используются функции:
CosPacketCoefficients[data, n] — возвращает таблицу коэффициентов косинусного пакетного преобразования для данных data в сегменте длиной n при использовании текущего окна;
CosPacketCoefficients[data, n, l] — делает то же при ограничении уровня декомпозиции значением l;
SinPacketCoefficients[data, n] — возвращает таблицу коэффициентов косинусного пакетного преобразования для данных data в сегменте длиной n при использовании текущего окна;
SinPacketCoefficients[data, n, l] — делает то же при ограничении уровня декомпозиции значением l.
6.7.5. Пример применения косинусного пакетного преобразования
Поскольку техника применения косинусных и синусных пакетных преобразований идентична, ограничимся примером применения косинусного пакетного
преобразования:
(SeedRandom[5647];
data = Table[Random[], {16}];)
CosPacketCoefficients[data, 8, 2, Taper -> False]
{{{1.62039, -0.131018, 0.494195,
-0.383093, 0.66001, -0.375777, 0.312607, 0.200082},
{0.928607, -0.233458, 0.0113255, -0.215818,
0.334886, 0.162569, 0.0599698, 0.345979}},
{{1.3714, -0.163902, 0.350403, -0.0215033},
{0.86914, -0.540372, 0.818573, 0.00895602},
{0.679514, -0.358051, 0.440731, 0.0598891},
{0.501346, -0.220467, 0.207843, 0.307364}},
{{1.14155, -0.17047}, {0.817321, -0.175051},
{0.567082, 0.219383}, {1.07979, -0.426487},
{0.454306, 0.0585935}, {0.737708, -0.183658},
{0.339151, 0.0752309}, {0.541465, 0.154136}}}
315
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
(mean = (Plus @@ data)/16;
CosPacketTransform[data-mean, 8, 2, Taper -> False])
{{0.51589, 0.088688}, {0.191658, 0.0841071},
{0.00132061, -0.235635, 0.614954, 0.181576},
{-0.171357, 0.317751}, {0.112045, 0.0755004},
{-0.366473, 0.0842709, 0.00422402, 0.479984}}
ShowBasisPosition[%]
Chop[data-(InverseCosPacketTransform[%%,
Taper -> False]+mean)]
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Команда ShowBasisPosition[%] выводит структуру базиса данного преобразования, представленную на рис. 6.36.
Рис. 6.36. Структура базиса косинусного пакетного преобразования
Как обычно, этот пример (см. его конец) демонстрирует возможность точной
реконструкции исходного случайного набора данных.
6.8. Техника улучшенной визуализации
вейвлет-преобразований
6.8.1. Функция PhaseSpacePlot
Основной функцией, обеспечивающей улучшенную визуализацию
влет-преобразований в пакете Wavelet Explorer является функция:
вей-
PhaseSpacePlot[coefs], которая дает построение фазовой спектральной диаграммы для одномерных вейвлет, синусных или косинусных коэффициентов в плоскости «частота—время» с использованием функциональной окраски палитрой серого
цвета элементов спектрограммы. В этой функции могут использоваться опции:
вывода координатных осей ExchangeAxes -> True или False и задания логарифмического масштаба LogarithmicScale-> True или False. Примеры действия
этих опций даются в следующем разделе.
К сожалению, даже «улучшенная» визуализация в пакете Wavelet Explorer заметно уступает таковой в других рассмотренных выше пакетах — Wavelet Toolbox для
систем класса MATLAB и Wavelet Expansion Pack для систем класса Mathcad. В частности, это обусловлено отсутствием средств цветной функциональной окраски.
316
6.8. Техника улучшенной визуализации вейвлет-преобразований
6.8.2. Примеры построения спектрограмм
Зададим таблицу из 40 случайных значений элементов, вейвлет типа Добеши
порядка 2 и выполним прямое вейвлет-преобразование данных:
Needs["Wavelets `Wavelets`"]
(SeedRandom[1234567];data = Table[Random[], {40}];
d2 = DaubechiesFilter[2];wtdata = WaveletTransform[data, d2].5; Length /@ wtdata)
{5, 5, 10, 20}
Теперь построим спектрограмму вейвлет-коэффициентов (рис. 6.37):
PhaseSpacePlot[wtdata, Frame -> True, FrameTicks -> None,
FrameLabel -> {"time (время)", "frequency (частота)"}]
С помощью опции LogarithmicScale -> True] можно перестроить спектрограмму
(рис. 6.38), задав логарифмический масштаб:
PhaseSpacePlot[wtdata, LogarithmicScale -> True]
Рис. 6.37. Вейвлет-спектрограмма
для таблицы, содержащей
50 случайных чисел
Рис. 6.38. Вейвлет-спектрограмма
для таблицы, содержащей 50 случайных
чисел с логарифмическим масштабом
6.8.3. Функция GrayCodeOrder
Функция GrayCodeOrder [coefs] служит для задания кодов, задающих уточненное представление значений коэффициентов с помощью оттенков серого цвета и
штриховки различного типа.
Ниже представлен пример визуализации коэффициентов прямого пакетного
вейвлет-преобразования для ранее созданной таблицы случайных данных data:
PhaseSpacePlot[GrayCodeOrder[%], Frame -> True, FrameTicks -> None,
FrameLabel -> {"time (время)", "frequency (частота)"}]
Полученная спектрограмма представлена на рис. 6.39.
Рис. 6.39. Вейвлет-спектрограмма прямого вейвлет-преобразования для таблицы,
содержащей 50 случайных чисел
317
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
6.8.4. Спектрограммы для синусного пакетного преобразования
Спектрограммы можно использовать для визуализации разложения сигналов
на основе синусного пакетного преобразования. Один из примеров этого представлен ниже:
sinp = SinPacketTransform[data-(Plus @@ data)/40, 8, Taper ->
False];
PhaseSpacePlot[%, Frame -> True, FrameTicks -> None,
FrameLabel -> {"frequency", "time"}, AspectRatio -> 1]
Полученная спектрограмма показана на рис. 6.40.
Обратите внимание на ряд опций, позволяющих менять вид спектрограммы.
Так, с помощью опции ExchangeAxes -> True можно построить спектрограмму с
переменной ориентации относительно координатных осей (рис. 6.41):
Рис. 6.40. Пример построения
спектрограммы синусного пакетного
преобразования
Рис. 6.41. Пример вывода
спектрограммы рис. 6.40 с переменой
ориентации относительно осей
6.8.5. Задание рамки для графика функции ShowBasisPosition
Ранее мы рассматривали графическую функцию ShowBasicPosition, удобную
для табличного представления базиса вейвлет-преобразований. С помощью опции
Frame->True можно на графике этой функции вывести координатные оси с делениями и оцифровкой. Для этого можно исполнить команду:
ShowBasisPosition [sinp,Frame->True]
Теперь эту таблицу удобно использовать не только для качественной, но и для
количественной оценки.
6.8.6. Построение изображений
Для визуализации декомпозиции изображений можно использовать ряд стандартных функций системы Mathematica. Следующий пример показывает задание
тестовой фигуры на построение ее изображения (рис. 6.42):
(f[x_, y_]:= 1 /; (2 <= Abs[x] < 3 && Abs[y] < 3)||( 2 <=
Abs[y] < 3 && Abs[x] < 3);
318
6.8. Техника улучшенной визуализации вейвлет-преобразований
f[x_, y_]:= 0; data = Table[f[x, y], {x, -4, 4-1/8, 1/8},
{y, -4, 4-1/8, 1/8}];)
ListDensityPlot[data, Mesh -> False]
Обратите внимание на оцифровку осей изображения текстовой фигуры.
6.8.7. Визуализация коэффициентов двумерного
вейвлет-преобразования
Для визуализации коэффициентов двумерного преобразования служит функция:
PlotCoefficients2D [coefs] — дает изображение матрицы коэффициентов двумерного вейвлет-, синусного или косинусного преобразований с использованием
функциональной штриховки и закраски оттенками серого цвета.
Для демонстрации работы этой функции подвергнем данные data построенной
ранее фигуры двумерному вейвлет-преобразованию с помощью вейвлета Добеши
порядка 2 и выведем двумерную диаграмму вейвлет-коэффициентов разложения
данной фигуры (рис. 6.43):
(d2 = DaubechiesFilter[2];pc=WaveletTransform[data, d2, 3];)
PlotCoefficients2D[pc]
Рис. 6.42. Изображение тестовой
фигуры
Рис. 6.43. Диаграмма двумерного
вейвлет-преобразования «жирного»
квадрата
6.8.8. Визуализация структуры базиса двумерного
вейвлет-преобразования
Для визуализации структуры ортогонального базиса двумерного вейвлет-преобразования служит функция ShowBasisPosition2D [coefs]. Пример ее применения представлен ниже (рис. 6.44):
ShowBasisPosition2D[pc, AspectRatio -> 1,Frame->True]
319
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.44. Структура базиса
двумерного вейвлет-преобразования
для вейвлет-преобразования,
показанного на рис. 6.43
Рис. 6.45. Структура базиса прямого
двумерного пакетного
вейвлет-преобразования изображения
рис. 6.42
Приведем еще один пример:
wpt=WaveletPacketTransform[data, d2, 3, BoundaryCondition -> Zero];
ShowBasisPosition2D[wpt, AspectRatio -> 1,Frame->True]
На этот раз использовано пакетное прямое вейвлет-преобразование изображения, представленного на рис. 6.42. Структура базиса для этого случая приведена
на рис. 6.45.
Нетрудно заметить, что полученная структура сильно отличается от ранее приведенной (рис. 6.44) для обычного вейвлет-преобразования.
6.8.9. Визуализация
коэффициентов
двумерного пакетного
вейвлет-преобразования
Теперь, исполнив команду
PlotCoefficients2D[pc],
можно построить диаграмму вейвлет-коэффициентов двумерного пакетного вейвлет-преобразования рассматриваемой фигуры — см. рис. 6.46.
На диаграммах рис. 6.44 и 6.46 хорошо видны основные особенности декомпозиции изображений, в частности
разбивка их на отдельные квадраты, отвечающая идее кратномасштабного анализа. Чем выше уровень декомпозиции
используется, тем больше разбиений на
квадраты реализует алгоритм кратномасштабного анализа.
320
Рис. 6.46. Диаграмма коэффициентов
двумерного пакетного
вейвлет-преобразования изображения
рис. 6.42
6.9. Обработка одномерных сигналов и функций
6.9. Обработка одномерных сигналов и функций
6.9.1. Оценка кумулятивной энергии
В основе методов компрессии сигнала лежит оценка энергии, накопленной в
вейвлет-коэффициентах, представляемых в виде временных функций. Поскольку
энергия пропорциональна квадрату значения модуля коэффициентов, то под кумулятивной энергией подразумевается величина:
E (k ) =
k
∑C
i 2
.
i =1
Для вычисления кумулятивной энергии служит функция:
CumulativeEnergy[coefs] — возвращает список {E(1), E(2), ...}, определяющий кумулятивную энергию вейвлет-коэффициентов списка.
CumulativeEnergy[coefs, n] — возвращает кумулятивную энергию E(n),
накопленную n-м коэффициентом.
Пример вычисления кумулятивной энергии для данных в виде таблицы с 16
случайными числами представлен ниже:
(SeedRandom[45847]; data = Table[Random[], {16}];
wtdata = WaveletTransform[data, d2])
{{1.65851, 1.77685}, {0.0545497, -0.028354},
{0.0198865, 0.172853, -0.0441019, -0.379254}, {-0.21321, -0.649959,
-0.0826129, 0.45874, -0.16488, 0.171664, 0.0767714, -0.0546394}}
Short[CumulativeEnergy[wtdata]/(Flatten[data].Flatten[data])]
{0.461688, 0.863925, <<13>>, 1.}
6.9.2. Вейвлет-компрессия сигналов
К распространенному виду обработки сигналов относится их компрессия (сжатие). В простейшем случае она сводится к отбрасыванию старших по номеру коэффициентов, имеющих малую энергию и потому слабо влияющих на форму реставрированного после прямого и обратного вейвлет-преобразования сигнала. Для
такой простой компрессии сигналов служит функция:
Compress[data, M] — обеспечивает компрессию сигнала, представленного
списком data путем обнуления всех коэффициентов с номерами, превосходящими M.
Более тонкий метод компрессии основан на введении понятия порога Threshold для удаляемых коэффициентов. Этот метод реализуется функцией:
Compress[data, tau, Threshold -> True] — обеспечивает сжатие сигнала,
обнуляя все коэффициенты, абсолютное значение которых меньше заданной величины tau.
Компрессия с адаптивным изменением порога реализуется функцией:
Compress[data, tau, Shrinking -> True] — устанавливает нулевое значение всех коэффициентов со значением, меньшим заданного значения tau, и сокращает остаточное значение порога tau.
321
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
С этими функциями могут использоваться опции: Shrinking -> True или
False и Threshold -> True или False. По умолчанию задано Shrinking ->
False и Threshold -> False.
Примеры применения этих функций представлены ниже:
Compress[wtdata, 10]
{{1.65851, 1.77685}, {0, 0}, {0, 0.172853, 0, -0.379254},
{-0.21321, -0.649959, -0.0826129, 0.45874, -0.16488, 0.171664, 0, 0}}
Compress[wtdata, 0.3, Threshold -> True]
{{1.65851, 1.77685}, {0, 0}, {0, 0, 0, -0.379254},
{0, -0.649959, 0, 0.45874, 0, 0, 0, 0}}
Compress[wtdata, 0.3, Shrinking -> True]
{{1.35851, 1.47685}, {0, 0}, {0, 0, 0, -0.0792543},
{0, -0.349959, 0, 0.15874, 0, 0, 0, 0}}
Чем эффективнее компрессия сигнала, тем больше нулей будет находиться в
массивах, представляющих сжатый сигнал. Однако надо учитывать, что чем выше
степень компрессии, тем большие искажения будут претерпевать исходные данные (сигналы) в ходе их вейвлет-декомпозиции и реконструкции.
6.9.3. Вейвлет-очистка сигналов от шума
Очистка сигналов от шума (Denoising) — одна из наиболее распространенных
операций по обработке сигналов. Технически она реализуется подобно операции
компрессии — т. е. применением того или иного алгоритма удаления части вейвлет-коэффициентов. Эта операция основана на общеизвестном факте, что шумы
имеют высокочастотные компоненты спектра, которые и удаляются при очистке
сигналов от шума. Ниже иллюстрируется решение данной задачи в нескольких вариантах.
Прежде всего, подготовим сигнал с шумом, подвергающийся в дальнейшем
очистке. В состав пакета Wavelet Explorer входит файл shocknoi.dat с записью дискретных отсчетов зашумленного сигнала. Приведенные ниже команды считывают этот файл, создают массив data зашумленного сигнала и строят его график в
виде графика функции u(x):
data = Get[ToFileName[{"Wavelets", "Data"},"shocknoi.dat"]];
ListPlot[data, PlotJoined -> True, AxesLabel -> {"x", "u(x)"}]
График обрабатываемого сигнала представлен на рис. 6.47.
Для очистки сигнала зададим сплайновый фильтр s4 порядка [4,8], выполним
прямое вейвлет-преобразование массива data с компрессией на основе адаптируемого порога с начальным значением 1.5 и затем обратное преобразование. Все это
реализуется приведенными ниже командами:
(s4 = SplineFilter[4, 8]; wtdata = WaveletTransform[data, s4];)
Compress[Rest[wtdata], 1.5, Shrinking -> True];
InverseWaveletTransform[Join[{wtdata[[1]]}, %], s4];
ListPlot[%, PlotJoined -> True, AxesLabel -> {"x", "u(x)"}]
Очищенный от шума сигнал представлен на рис. 6.48. Нетрудно заметить, что
шумовая компонента сигнала практически исчезла, а детальность сигнала осталась достаточно хорошей.
322
6.9. Обработка одномерных сигналов и функций
Рис. 6.47. График зашумленного
сигнала
Рис. 6.48. График сигнала, очищенного
от шума методом с адаптивным
порогом и tau = 1.5 при использовании
сплайнового фильтра [4,8]
В следующем примере адаптивный порог заменен на фиксированный:
Compress[Rest[wtdata], 1.5, Threshold -> True];
ListPlot[InverseWaveletTransform[Join[{wtdata[[1]]}, %], s4],
PlotJoined -> True, AxesLabel -> {"x", "u(x)"}]
В этом случая результат очистки от шума представляется менее впечатляющим — рис. 6.49.
В еще одном примере используется метод с адаптацией порога и его начальным значением 3:
Compress[Rest[wtdata], 3, Shrinking -> True];
ListPlot[InverseWaveletTransform[
Join[{wtdata[[1]]}, %], s4], PlotJoined -> True, AxesLabel ->
{"x", "u(x)"}]
Поскольку в этом случае обрезается большее число вейвлет-коэффициентов,
то степень очистки сигнала от шума возрастает, но и сильнее проявляется сглаживание сигнала. Это хорошо видно из рис. 6.50, на котором показан очищенный сигнал.
Рис. 6.49. График сигнала, очищенного
от шума с фиксированным порогом
Рис. 6.50. График сигнала, очищенного
от шума методом с адаптивным
порогом и tau = 3
323
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Последний пример этого раздела показывает очистку сигнала от шумов на
основе вейвлета Добеши порядка 2 с адаптивным порогом и tau = 1.5:
(d2 = DaubechiesFilter[2]; wtdata = WaveletTransform[data, d2];
Compress[Rest[wtdata], 1.5, Shrinking -> True];)
ListPlot[InverseWaveletTransform[Join[{wtdata[[1]]}, %], d2],
PlotJoined -> True, AxesLabel -> {"x", "u(x)"}]
Этот тип вейвлета имеет меньшую гладкость, чем сплайновый вейвлет, что отражается на графике сигнала после вейвлет-преобразований — рис. 6.51. Нетрудно заметить, что он дает более детальную картину быстрых изменений сигнала и,
в то же время, в значительной мере он избавлен от шума.
Рис. 6.51. График сигнала, очищенного от шума методом с адаптивным порогом
и tau = 1.5 при использовании вейвлета Добеши 2
Итак, для одномерных сигналов Wavelet Explorer представляет достаточно
средств для эффективной обработки заданных своими отсчетами (временными
рядами) сигналов. К сожалению, на практике часто необходима обработка сигналов в реальном масштабе времени. Она возможна, если описанные методы реализуются в виде устройств на интегральных микросхемах, реализующих вейвлет-преобразования.
6.10. Вейвлет- и фурье-анализ и синтез сложных
сигналов
6.10.1. Вейвлет-приближение решения уравнения Бурга
Насколько вейвлет-анализ и синтез сложных сигналов лучше аналогичного фурье-анализа? И по каким критериям выполнять это сравнение? Интересный пример на сравнительный анализ и синтез сложного сигнала дан в пакете Wavelet Explorer. Это приближенное представление решения нелинейного дифференциального уравнения Бурга. Данное уравнение описывает реакцию резко нелинейной
системы на синусоидальное воздействие, в результате чего получается линейно
нарастающая функция с разрывом в момент перехода синусоиды через нуль. Эта
функция записана в файле shoksin.dat.
Анализируемая функция u(x) имеет два наиболее характерных признака временных рядов — участки линейного нарастания (тренды) и скачок. Таким образом, она содержит участки, резко различающиеся по скорости изменения, и достаточно широкий спектр гармоник.
324
6.10. Вейвлет- и фурье-анализ и синтез сложных сигналов
Следующие команды иллюстрируют загрузку файла shocksin и построение графиков входного воздействия и выходного сигнала системы (рис. 6.52), описываемой данным уравнением:
data = Get[ToFileName[{"Wavelets", "Data"}, "shocksin.dat"]];
Show[Block[{$DisplayFunction = Identity}, {ListPlot[data,
AxesLabel -> {"x", ""}, PlotLabel -> "u(x,t) at t=0 and
t=400"], Plot[Sin[2Pi/1024 x], {x, 0, 1024}, PlotStyle ->
GrayLevel[0.2]]}]]
Весь последующий материал не имеет прямого отношения собственно к уравнению Бурга и просто иллюстрирует приближение линейно нарастающего сигнала
с разрывом с помощью вейвлет- и фурье-преобразований.
Зададим вейвлет-фильтр типа Добеши 2, выполним прямое вейвлет-преобразование и построим график коэффициентов этого преобразования (рис. 6.53):
filter = DaubechiesFilter[2];
wtdata = WaveletTransform[data, filter]; Length /@ wtdata
{2, 2, 4, 8, 16, 32, 64, 128, 256, 512}
PhaseSpacePlot[wtdata, PlotRange -> All,
Frame->True, FrameTicks -> None, LogarithmicScale -> True]
Построим график затухания вейвлет-коэффициентов (рис. 6.54) и оценим уровень 40-го коэффициента:
Reverse[Sort[Abs[Flatten[wtdata]]]]; ListPlot[Take[%, 50]]
%%[[40]]
0.00401847
Выполним реконструкцию анализируемого сигнала, используя 20 вейвлет-коэффициентов (рис. 6.55):
E = CumulativeEnergy[wtdata]/ (Flatten[wtdata].Flatten[wtdata]);
Length[Select[Take[e, 20], # <<= 0.999&]]
14
e[[15]]
0.999307
Рис. 6.52. Графики входного
воздействия и реакции системы,
описываемой уравнением Бурга
Рис. 6.53. Спектрограмма
вейвлет-коэффициентов
325
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Compress[wtdata, 20]; newdata = InverseWaveletTransform[%, filter];
ListPlot[newdata, AxesLabel -> {"x", ""}, PlotLabel ->
"Реконструкция
u(x) по 20 коэффициентам"]
Рис. 6.54. Зависимость затухания
вейвлет-коэффициентов от их номера
Рис. 6.55. Реконструированная
с помощью вейвлет-преобразований
функция u(x)
Оценим среднеквадратическую погрешность представления искомой функции:
Sqrt[(data-newdata).(data-newdata)]/Sqrt[data.data]
0.00650219
Нетрудно заметить, что она достаточно мала (заметно меньше 1%). Таким образом, как вид приближения функции u(x), так и оцененная погрешность вейвлет-приближения говорят об успешном применении вейвлет-анализа и синтеза
для данного случая.
6.10.2. Сравнение с фурье-приближением
Теперь зададим гармонический синтез данной функции с помощью прямого
преобразования Фурье и построим графики изменения кумулятивной энергии
вейвлет-коэффициентов и гармоник ряда Фурье (рис. 6.56):
(fdata = Fourier[data]; ef = CumulativeEnergy[fdata]/(data.data);)
Show[Block[{$DisplayFunction = Identity},
{ListPlot[Take[e, 50], PlotJoined -> True,
PlotLabel -> "cumulative energy"], ListPlot[Take[ef, 50]]}]]
Можно заметить, что кумулятивная энергия вейвлет-коэффициентов спадает
по мере роста их номера гораздо быстрее, чем энергия гармоник ряда Фурье. Это
создает предпосылки достаточно точного приближения данной разрывной функции с помощью вейвлет-преобразования. Это, в частности, объясняет успех представления u(x) вейвлет-коэффициентами всего 20 уровней.
Осуществим теперь реконструкцию функции с помощью ряда Фурье с использованием 20 гармоник (рис. 6.57):
newdata = Chop[InverseFourier[Compress[fdata, 20]]];
ListPlot[newdata, AxesLabel -> {"x", ""},
PlotLabel -> "Фурье-реконструкция u(x)"]
326
6.10. Вейвлет- и фурье-анализ и синтез сложных сигналов
Рис. 6.56. Графики изменения
кумулятивной энергии
вейвлет-коэффициентов (сплошная
линия) и гармоник ряда Фурье
(точечная линия)
Рис. 6.57. Фурье-реконструкция
функции рис. 6.56
Оценим погрешности (абсолютную и относительную) для приближения рядом
Фурье:
{Max[Abs[data-newdata]], Sqrt[(data-newdata).(datanewdata)/(data.data)]}
{0.594046, 0.195685}
Нетрудно заметить, что погрешность в данном случае весьма значительна
(среднеквадратическая погрешность около 20%) и намного превышает таковую
для приближения с помощью вейвлет-преобразований. Таким образом, приближение данной разрывной функции с помощью вейвлет-преобразований является
более предпочтительным, чем рядом Фурье. Основным источником погрешности
в случае фурье-анализа и синтеза рассмотренной функции u(x) является эффект
Гиббса.
6.10.3. Другой случай вейвлет-анализа и синтеза сложной
функции
Продолжим наше исследование приближения сложных функций вейвлетами и
рядами Фурье. Другой случай такого приближения вейвлетами мы рассмотрим на
примере функции, заданной в файле shockrun.dat. Загрузка этого файла и вывод
графика функции (рис. 6.58) представлены ниже:
data = Get[ToFileName[{"Wavelets", "Data"}, "shockran.dat"]];
ListPlot[data, AxesLabel -> {"x", ""}]
Построим вейвлет-спектрограмму разложения функции для этого случая
(рис. 6.59):
(filter = SplineFilter[3, 10]; wtdata =
WaveletTransform[data, filter];)
PhaseSpacePlot[Take[wtdata, 4], Frame -> True, FrameTicks -> None,
PlotRange -> All]
Нетрудно заметить, что вейвлет-спектрограмма функции u(x) для данного случая сильно отличается от аналогичной спектрограммы для первого случая —
рис. 6.53.
327
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.58. График функции u(x)
для второго случая
Рис. 6.59. Спектрограмма
вейвлет-разложения u(x)
для второго случая
Построим график кумулятивной энергии как функции от номера вейвлет-коэффициентов (рис. 6.60):
e = CumulativeEnergy[wtdata]/ (Flatten[wtdata].Flatten[wtdata]);
ListPlot[Take[e, 40], PlotRange -> All,
PlotJoined -> True, PlotLabel -> "Куммулятивная энергия"]
Из приведенного графика можно сделать вывод, что для вейвлет-синтеза достаточно ограничиться учетом 30 коэффициентов, что позволяет выполнить вейвлет-синтез функции с простым ограничением вейвлет-коэффициентов
(рис. 6.61):
newdata = InverseWaveletTransform[Compress[wtdata, 30], filter];
Show[Block[{$DisplayFunction = Identity},
{ListPlot[newdata, PlotJoined -> True, AxesLabel -> {"x", ""}],
ListPlot[data, PlotJoined -> True, PlotStyle -> Dashing[{0.02}]]}]]
Рис. 6.60. Кумулятивная энергия
вейвлет-коэффициентов
Рис. 6.61. Вейвлет-синтез u(x)
с использованием 30
вейвлет-коэффициентов
Как видно из рис. 6.61, для второго варианта u(x) вейвлет-анализ и синтез оказался менее привлекателен, чем для первого варианта.
6.10.4. Сравнение второго варианта с фурье-анализом и синтезом
Теперь выполним фурье-анализ и синтез для функции u(x) при использовании
30 гармоник (рис. 6.62):
328
6.10. Вейвлет- и фурье-анализ и синтез сложных сигналов
fdata = Fourier[data]; Chop[InverseFourier[Compress[fdata, 30]]];
Show[Block[{$DisplayFunction = Identity}, {ListPlot[%,
PlotJoined -> True, AxesLabel -> {"x", ""}], ListPlot[data,
PlotJoined -> True, PlotStyle -> Dashing[{0.02}]]}]]
Рис. 6.62. Фурье-приближение u(x) по 30 гармоникам
6.10.5. Оценка погрешности при приближении вейвлетами и
рядами Фурье с компрессией
Оценим относительную погрешность фурье-приближения при компрессии сигнала (рис. 6.63):
lp=ListPlot[Transpose[{Table[1024/i, {i, 1, 1024}],
Sqrt[Chop[1-e]]}], PlotJoined -> True, PlotRange -> {{0, 150},
{0, 0.5}}, PlotLabel -> "Относит. погрешность в функции от степени
компрессии"]
Нетрудно заметить, что при большой степени компрессии погрешность сильно
возрастает.
Теперь построим объединенный график погрешности при вейвлет- и фурье-приближениях в функции от степени компрессии (рис. 6.64):
ef = CumulativeEnergy[fdata]/(data.data);
Show[lp,ListPlot[Transpose[{Table[1024/i,{i, 1, 150}],
Рис. 6.63. Относительная погрешность
приближения u(x) рядами Фурье как
функция от степени компрессии
Рис. 6.64. Относительная погрешность
приближения u(x) вейвлетами
и рядами Фурье как функция
от степени компрессии
329
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Sqrt[Chop[1-Take[ef,150]]]}], PlotRange -> {{0, 150}, {0, 0.5}},
DisplayFunction -> Identity]]
Нетрудно заметить, что при достаточно большой степени компрессии вейвлет-преобразования дают меньшую погрешность (сплошная линия на рис. 6.63),
чем преобразования Фурье, хотя разница на этот раз не кажется ошеломляющей.
6.10.6. Приближение функции вейвлетами и рядами Фурье с
компрессией
Осуществим вейвлет-компрессию заданной функции (рис. 6.65):
InverseWaveletTransform[Compress[wtdata, 20], filter];
Show[Block[{$DisplayFunction = Identity}, {ListPlot[%,
PlotJoined -> True, PlotLabel -> "u(x) при степень компрессии
1024/20"], ListPlot[data, PlotJoined -> True, PlotStyle>Dashing[{0.02}]]}]]
Далее выполним вейвлет-компресию с применением рядов Фурье (рис. 6.66):
Chop[InverseFourier[Compress[fdata, 20]]];
Show[Block[{$DisplayFunction = Identity}, {ListPlot[%,
PlotJoined -> True, PlotLabel -> "u(x) при степени Фурье-компрессии
1024/20"], ListPlot[data, PlotJoined -> True,
PlotStyle->Dashing[{0.02}]]}]]
Рис. 6.65. Вейвлет-приближение u(x)
со степенью компресии 1024/20
Рис. 6.66. Фурье-приближение u(x)
со степенью компресии 1024/20
Сравнивая рис. 6.65 и 6.66, можно сделать однозначный вывод о том, что и в
данном случае вейвлет-приближение с компрессией заметно лучше, чем фурье-приближение с компрессией, хотя и не столь разительно, как для первого случая приближения решения уравнения Бурга.
6.11. Обработка звуковых сигналов с компрессией с
помощью пакетного косинусного преобразования
6.11.1. Получение звукового сигнала и его контроль
Теоретический анализ процессов восприятия речи слуховым аппаратом человека показывает, что в нем используется принцип вейвлет-анализа звуковых сигна-
330
6.11. Обработка звуковых сигналов с компрессией
лов. Это вселяет надежду в то, что вейвлет-компрессия звуковых сигналов будет
связана с меньшими потерями их качества, чем при использовании других методов компрессии, используемых на практике. Это же относится и к использованию
методов очистки звуковых сигналов от шума (до сих пор здесь лидировали методы
Долби очистки звуковых сигналов на основе использования методов Фурье).
Для работы со звуковыми сигналами нужна загрузка встроенного в Mathematica пакета Miscellaneous`Audio. Ниже представлены команды, обеспечивающие
такую загрузку и вывод осциллограммы звукового сигнала (рис. 6.67), хранящегося в файле cricket.dat, содержащего 4096 отсчетов:
Needs["Miscellaneous`Audio `"]
cdata = Get[ToFileName[{"Wavelets", "Data"}, "cricket.dat"]];
Length[cdata]
4096
cdata = cdata-(Plus @@ cdata)/4096.;
ListPlay[cdata, SampleRate -> 22050, PlayRange -> All]
Рис. 6.67. Осциллограмма реального звукового сигнала
Нетрудно заметить, что реальный звуковой сигнал намного сложнее рассмотренных нами ранее тестовых сигналов.
6.11.2. Прямое пакетное косинусное преобразование звукового
сигнала
Выполним прямое пакетное косинусное преобразование звукового сигнала,
используя полиномиальный тайпер:
cp = CosPacketTransform[cdata, 1024,
Taper -> {Polynomial[3], 16}];
Short[Length /@ cp]
<<1>>
Построим таблицу базисов этого преобразования (рис. 6.68):
ShowBasisPosition[cp, PlotRange -> All]
Построим вейвлет-спектрограмму звукового сигнала (рис. 6.69):
PhaseSpacePlot[cp, ExchangeAxes -> True,
AspectRatio -> 1, Frame -> True, FrameTicks -> None,
FrameLabel -> {"time", "frequency"}]
331
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.68. Таблица базисов пакетного
косинусного преобразования звукового
сигнала
Рис. 6.69. Вейвлет-спектрограмма
звукового сигнала
6.11.3. Сравнение методов компрессии звукового сигнала
Зададим и сравним три метода вейвлет-компрессии звукового сигнала
(рис. 6.70):
ctrans = CosTransform[cdata, 256, Taper -> {Polynomial[3], 16}];
wf = CosTransform[cdata, 256, Taper -> False];
(norm = cdata.cdata; e = CumulativeEnergy[#, 800]/norm& /@
{cp, ctrans, wf};)
Show[MapThread[ListPlot[#, PlotStyle -> #2,PlotJoined ->
True, DisplayFunction -> Identity]&, {e, {{},
Dashing[{0.02}], Dashing[{0.1}]}}],DisplayFunction ->
$DisplayFunction]
6.11.4. Пример реконструкции звукового сигнала
Зададим реконструкцию звукового сигнала (рис. 6.71) с помощью обратного
пакетного косинусного преобразования с компрессией:
Length[Select[Take[e[[1]], 300], # <<= 0.995&]]
250
InverseCosPacketTransform[Compress[cp, 251], Taper ->
{Polynomial[3], 16}];
ListPlay[%, SampleRate -> 22050, PlayRange -> All]
Рис. 6.70. Сравнение трех методов
компрессии звукового сигнала
332
Рис. 6.71. Реконструкция звукового
сигнала
6.12. Обработка изображений в пакете Wavelet Explorer
Сравнение реконструированного сигнала (рис. 6.71) с оригинальным
(рис. 6.67) на глаз не обнаруживает существенного различия. Более объективным
можно считать оценку среднеквадратической погрешности реставрации звукового
сигнала после его компрессии:
Sqrt[1-e[[1]][[251]]]
0.070578
Она составляет около 7%. Трудно сказать, много это или мало. Компрессия
звуковых сигналов дело весьма тонкое и только экспертные оценки на слух позволяют решить, какой из методов компрессии лучше, а какой хуже. Однако
объективные методы оценки, представленные выше, свидетельствуют о больших
потенциальных возможностях вейвлет-компрессии звуковых сигналов. Остается
дожидаться, когда инженеры воплотят эти возможности в микросхемы вейвлет-компрессии звуковых сигналов и станут применять их в типовых электроакустических системах.
6.12. Обработка изображений в пакете Wavelet Explorer
6.12.1. Предварительные замечания
Обработка изображений — перспективное направление применения вейвлет-преобразований. Однако было бы наивно предполагать, что системы компьютерной математики, даже такие мощные, как Mathematica, будут хорошим средством для реальной обработки изображений. Это громоздкие и прожорливые на
память системы ориентированы на выполнение сложных математических рассчетов и потому имеют достаточно скромные ресурсы для обработки изображений.
В описании пакета Wavelet Explorer неоднократно подчеркивается, что работа с
изображениями возможна только на современных ПК с большим объемом ОЗУ.
Но и в этом случае лучшие результаты можно получить, используя специализированные графические пакеты и редакторы. Например, Corel Draw 9/10/11, в состав
которого уже введены средства вейвлет-обработки изображений.
Зачем же надо предусматривать пакеты расширения систем компьютерной математики по вейвлет-преобразованиям? Ответ, пожалуй, один — для наглядного
представления существующих методов обработки изображений и отработки новых
методов, основанных на математических преобразованиях. После этого, скорее
всего, потребуется реализация таких методов на стандартных языках программирования (вплоть до C++ или Ассемблера) с компиляцией полученных программных кодов. Только в этом случае можно рассчитывать на высокую эффективность математических методов обработки информации.
Как известно, цветное изображение чаще всего состоит из матриц полутоновых
изображений, несущих информацию о яркости трех составляющих каждой точки
(пиксела) изображения — красной Red, зеленой Green и голубой Blue. Таким образом, реализуется хотя и не единственная, но наиболее распространенная цветовая система RGB.
Исходя из сказанного, мы ограничимся рассмотрением вейвлет-преобразований только для полутоновых изображений серого цвета. Это делается как для
упрощения реализации методов обработки изображений, так и по чисто конъюктурным причинам — в массовой книге, подобной данной, не принято приводить
цветные изображения.
333
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
6.12.2. Подготовка массива изображений и его просмотр
В качестве примера возьмем изображение из файла swphoto.eps пакета Wavelet
Explorer. Следующий пример резервирует место под массив изображения data,
считывает указанный файл, преобразует его в матрицу 8-битовых чисел и дает
контроль размера массива:
Needs["Wavelets`Wavelets`"]
data = Reverse[Partition[ToExpression /@
(StringJoin[Join[{"16^^"}, #]]& /@
Partition[Characters[StringJoin @@ Drop[Drop[
ReadList[ToFileName[{"Wavelets", "Data"}, "swphoto.eps"],
String],22], -3]], 2]), 250]]; Dimensions[data]
{277, 250}
Таким образом, мы создали обычный массив полутонового изображения. Для
обработки изображений удобно иметь массив, число элементов которого по строкам и столбцам должно быть степенью 2. Следующие команды создают такой массив и вычисляют его размеры:
(data = Transpose[Join[Table[#[[1]], {3}], #,
Table[#[[-1]], {3}]]&[Transpose[Drop[data, 21]]]];
Dimensions[data])
{256, 256}
Теперь можно построить исходное изображение (рис. 6.72):
ListDensityPlot[data, Mesh -> False]
Рис. 6.72. Исходное изображение из массива data
6.12.3. Вейвлет-декомпозиция изображения
Для вейвлет-декомпозиции изображения пока возьмем вейвлет-фильтр с малой
асимметрией порядка 4 и начальным индексом, измененным с 0 до –3:
(s4 = LeastAsymmetricFilter[4]; s4 = MapAt[-3&, s4, {2}])
{{-0.0757657, -0.0296355, 0.497619, 0.803739,
0.297858, -0.0992195, -0.012604, 0.0322231}, -3}
334
6.12. Обработка изображений в пакете Wavelet Explorer
Теперь выполним прямое вейвлет-преобразование массива и оценим его структуру:
wtdata = WaveletTransform[data, s4, 3, BoundaryCondition -> Fixed];
Dimensions /@ wtdata
{{32, 32}, {3, 32, 32}, {3, 64, 64}, {3, 128, 128}}
Построим двумерную диаграмму (рис. 6.73) коэффициентов декомпозиции
изображения:
PlotCoefficients2D[wtdata]
На этой диаграмме отчетливо видна суть кратномасштабного вейвлет-анализа
применительно к изображению. Изображение делится на квадраты различного
размера и в них представляются вейвлет-коэффициенты разного уровня декомпозиции. Точного соответствия картинки в квадратах с исходным изображением, разумеется, не имеют, но тем не менее те или иные особенности исходного изображения явно просматриваются.
Можно попытаться усреднить часть изображения (рис. 6.74):
ListDensityPlot[wtdata[[1]], Mesh -> False]
Рис. 6.73. Двумерная диаграмма
декомпозиции изображения
Рис. 6.74. Усредненное изображение
Усредненное изображение гораздо ближе к исходному, чем представленное на
рис. 6.73. И тем не менее отождествлять его с исходным нельзя.
А теперь в два захода просмотрим другие квадраты декомпозиции изображения, которые хранят представления о детализирующих коэффициентах разного
уровня. Вначале посмотрим, что задают функции psi первого, второго и третьего
уровней (рис. 6.75):
Show[GraphicsArray[ListDensityPlot[#, Mesh -> False,
DisplayFunction -> Identity]& /@wtdata[[2]]]]
Далее просмотрим следующие три уровня (рис. 6.76):
Show[GraphicsArray[ListDensityPlot[#, Mesh -> False, DisplayFunction -> Identity]& /@wtdata[[3]]]]
Теперь можно рассмотреть процесс грубой реконструкции изображения в соответствии с соотношением
335
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.75. Содержимое трех квадратов с деталями изображения первых трех
уровней декомпозиции изображения
Рис. 6.76. Содержимое еще трех квадратов со следующими тремя уровнями
декомпозиции изображения
f j (t ) = f j 0 +
J −1
∑ dj (t ),
j = j0
где J — уровень реконструкции и f — аппроксимирующая функция (phi). Эта итерационная процедура (см. главу 2) обеспечивается обратным вейвлет-преобразованием. С учетом сдвига начального отсчета J мы можем построить реконструированное изображение для уровней от «тонкого» уровня J = 8 до «грубого» уровня
J = 5 (рис. 6.77):
temp1 = InverseWaveletTransform[wtdata-MapAt[#-#&, wtdata,
{1}], s4,
BoundaryCondition -> Fixed]; ListDensityPlot[temp1, Mesh -> False]
Аналогично мы можем организовать построение детализирующего изображения с теми же уровнями (рис. 6.78):
Рис. 6.77. Грубая часть изображения
336
Рис. 6.78. Детализирующая часть
изображения
6.12. Обработка изображений в пакете Wavelet Explorer
InverseWaveletTransform[wtdata-MapAt[#-#&, wtdata, {2}], s4,
BoundaryCondition -> Fixed];ListDensityPlot[%, Mesh -> False]
6.12.4. Реставрация изображения
Просуммировав матрицы грубой и детализирующей частей изображения, мы
Рис. 6.79. Результат реставрации изображения
обеспечиваем реставрацию изображения (рис. 6.79) с помощью прямого и обратного вейвлет-преобразований:
ListDensityPlot[temp1+%%, Mesh -> False]
В данном случае реставрация изображения оказывается точной, поскольку мы
использовали все достаточные для нее уровни декомпозиции и реставрации.
6.12.5. Обработка изображений с помощью пакетных вейвлетов
Теперь рассмотрим декомпозицию и реставрацию изображения на основе применения пакетных вейвлетов. Зададим прямое пакетное вейвлет-преобразование:
wpdata = WaveletPacketTransform[data, s4, 3,
BoundaryCondition -> Fixed];
Построим диаграмму коэффициентов для этого случая (рис. 6.80):
PlotCoefficients2D[wpdata]
Построим для сравнения графики зависимости относительной погрешности
реставрации изображения от номера коэффициентов для вейвлет-преобразования
и пакетного вейвлет-преобразования (рис. 6.81). Для этого используется следующий набор команд (в начале блока команд рассчитывается кумулятивная энергия
коэффициентов, а затем уже погрешность):
(wtE=CumulativeEnergy[wtdata,
3500]/(Flatten[wtdata].Flatten[wtdata]);
wpE=CumulativeEnergy[wpdata,
3500]/(Flatten[wpdata].Flatten[wpdata]));
Show[{ListPlot[Transpose[{Table[256 256/i, {i, 1000, 3500}],
Sqrt[1-Take[wtE,{1000, 3500}]]}], PlotJoined -> True,
DisplayFunction -> Identity, PlotStyle -> Dashing[{0.02}],
337
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
Рис. 6.80. Двумерная диаграмма
декомпозиции изображения при
пакетном вейвлет-преобразовании
Рис. 6.81. Сравнение вейвлети пакетного вейвлет-преобразований
PlotLabel -> "Отн. погрешность как функция от коэффициента
компрессии"],
ListPlot[Transpose[{Table[256 256/i, {i, 1000, 3500}],
Sqrt[1-Take[wpE, {1000, 3500}]]}], PlotJoined -> True,
DisplayFunction -> Identity]}, DisplayFunction -> $DisplayFunction]
Можно сделать вывод, что в данном случае результаты реставрации изображения для обоих видов вейвлет-преобразований разнятся незначительно. Если считать относительную погрешность в 5% допустимой, то надо использовать не менее
35 коэффициентов. При этом можно опустить 1985 коэффициентов с большими
номерами, что означает степень сжатия изображения около 33.
Выполним реконструкцию изображения для нашего второго случая:
InverseWaveletPacketTransform[Compress[wpdata, 1985], s4,
BoundaryCondition -> Fixed]; ListDensityPlot[%, Mesh -> False]
Полученное изображение представлено на рис. 6.82. Его трудно отличить от
оригинала (рис. 6.72) и от результата вейвлет-реконструкции (рис. 6.79).
Остается оценить погрешность реконструкции:
Sqrt[#.#&[Flatten[data-%%]]/(Flatten[data].Flatten[data])]
0.0506818
Sqrt[1-wpE[[1985]]]
0.0487979
Она составляет величину около 5%.
Сравнение исходного изображения с
реконструированным с трудом выявляет разность между ними — визуально
видимое различие скорее связано с обработкой фотографий перед печатью,
338
Рис. 6.82. Реконструкция изображения
рис. 6.72 после пакетных
вейвлет-преобразований со степенью
сжатия в 33 раза
6.12. Обработка изображений в пакете Wavelet Explorer
чем с искажениями в ходе вейвлет-обработки снимков.
Разумеется, практически степень вейвлет-компрессии изображений всегда будет заметно меньше, чем при идеализированных теоретических оценках. Но это
справедливо и при сжатии методами фурье-анализа. В новом стандарте JPEG 2000
уже задана вейвлет-компрессия сигналов, а ряд фирм выпускает микросхемы вейвлет-преобразований, которые позволяют использовать вейвлет-методы обработки
сигналов и изображений на практике.
6.12.6. Компрессия отпечатков пальцев на основе локального
косинусного преобразования
Хрестоматийным примером успешного применения вейвлет-преобразований
стала компрессия изображений отпечатков многих миллионов пальцев жителей
США. Мы рассмотрим, как она осуществляется в пакете Wavelet Explorer.
Следующие команды загружают пакет Wavelet Explorer и создают массив data
отпечатка пальца (рис. 6.83), содержащегося в файле finger.dat:
Needs["Wavelets`Wavelets`"]
(data = Get[ToFileName[{"Wavelets", "Data"}, "finger.dat"]];Dimensions[data])
{240, 192}
ListDensityPlot[data, Mesh -> False]
Зададим косинусное преобразование матрицы данных data типа Cos IV без тайпера и с полиномиальным тайпером:
ct = CosTransform[data, {48, 60}, Taper -> False];
ct2 = CosTransform[data, {48, 60},
Taper ->{{Polynomial[2], 24}, {Polynomial[2], 30}}];
Построим диаграмму коэффициентов по результатам ct2 косинусного преобразования с полиномиальным тайпером (рис. 6.84):
PlotCoefficients2D[ct2]
Найдем кумулятивную энергию коэффициентов косинусного преобразования
Рис. 6.83. Тестовый отпечаток пальца
Рис. 6.84. Двумерная диаграмма
коэффициентов косинусного
преобразования изображения рис. 6.83
339
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica
(norm = Flatten[data].Flatten[data];
ctE = CumulativeEnergy[ct, 5000]/norm;
ct2E = CumulativeEnergy[ct2, 5000]/norm;)
Теперь вычислим относительные погрешности сжатия для двух заданных выше
вариантов преобразований:
Show[MapThread[ListPlot[Transpose[{Table[240
192/i,
{i,
1000,
5000}],
Sqrt[1-Take[#, {1000, 5000}]]}], PlotStyle -> #2,
PlotJoined -> True, DisplayFunction -> Identity,
PlotLabel -> "Отн. ошибка в функции от коэффициента компрессии"]&,
{{ctE, ct2E}, {Dashing[{0.02}], {}}}], DisplayFunction ->
$DisplayFunction]
На рис. 6.85 представлены соответствующие зависимости.
Вычислим среднеквадратическую погрешность реставрации отпечатка пальца
рис. 6.83 при использовании только 10% от всех коэффициентов:
Sqrt[1-ct2E[[4608]]]
0.0899546
Нетрудно заметить, что погрешность в этом случае близка к 9%.
Осуществив обратное косинусное преобразование, выполним реставрацию отпечатка пальца (рис. 6.86):
InverseCosTransform[Compress[ct2, 4608],
Taper -> {{Polynomial[2], 24}, {Polynomial[2], 30}}];
Рис. 6.85. Зависимости
относительной погрешности
реставрации сжатого изображения
для изображения рис. 6.83
Рис. 6.86. Результат реставрации
изображения рис. 6.83
ListDensityPlot[%, Mesh -> False]
Несмотря на значительную погрешность реставрации чисто визуально она весьма неплохо соответствует оригиналу изображения (рис. 6.83).
340
Глава 7. Состояние и перспективы развития
вейвлет-технологии
7.1. Источники информации по вейвлетам
7.1.1. Литература по вейвлетам
Итак, мы убедились в том, что вейвлеты представляют собой новый класс математических объектов, позволяющих на основе нового базиса приближать функции, сложные сигналы или изображение, причем идеально точно или с некоторой
погрешностью. Вейвлеты имеют явные преимущества перед рядами Фурье в представлении локальных особенностей функций. В области обработки изображений
они дают новые эффективные способы их обработки, например удаление из видеосигналов шума и сжатия файлов, хранящих изображения.
Благодаря прекрасному представлению локальных особенностей сигналов, принципиально отсутствующему у рядов Фурье, вейвлеты нашли практическое применение для анализа тонких особенностей сложных сигналов и изображений, для их
сжатия и очистки от шума. Это полезно в геофизике, биологии, медицине, радиотехнике и в других отраслях науки и техники. Вейвлет-преобразования уже положены в основу новейшей техники сжатия видеоинформации по стандарту JPEG
2000. Они считаются перспективными для передачи сжатых изображений по каналам Интернета с ограниченной пропускной способностью.
К настоящему времени за рубежом в области вейвлет-преобразований опубликованы сотни книг, а число статей исчисляется многими тысячами. В последние
годы резко активизировался интерес к вейвлетам и у нас в России. Так, в 2001
году в издательском центре «Регулярная и хаотическая динамика» (Москва, ФТИ
РАН) вышел в переводе университетский курс лекций И. Добеши по вейвлетам
[11]. А издательство «Мир» подготовило перевод учебного курса по вейвлетам Ч.
Чуи, ранее изданного на английском, японском и китайском языках [12]. После
первого издания данной книги в России вышли еще две переводные книги [19,
20] по применению вейвлетов в графике.
В России выпущено также несколько учебных пособий, изданных в некоторых
университетах ограниченным тиражом. Возможно, в учебном плане они и представляют определенную ценность. Но такие книги практически недоступны за
пределами этих университетов и потому в список литературы данной книги не
включены.
Из весьма многочисленных зарубежных источников по вейвлетам в списке литературы приведено лишь несколько наиболее важных [1—12]. В России немногочисленные работы по вейвлет-анализу и применениям вейвлетов были начаты
примерно с 10-летней задержкой и представлены, вместе с переводными книгами
[11, 12, 18, 20], рядом обзорных работ, написанных в основном по материалам зарубежных публикаций [15—18]. Ограничения в числе ссылок в данной книге обусловлены, главным образом, тем, что достаточно полные списки публикаций по
вейвлетом сейчас можно найти в Интернете, в том числе на сайтах, описанных
ниже. Подробные списки русскоязычных работ, в основном теоретического характера, имеются в [11,12]. В тоже время объективный обзор нашей литературы
показывает, что работ по вейвлетам практического характера крайне мало.
341
Глава 7. Состояние и перспективы развития вейвлет-технологии
7.1.2. Отражение работ по вейвлетам в Интернете
Полезно также знакомство с Интернет-сайтами, посвященными вейвлетам или
содержащими материалы по ним:
http://www.mathsoft.com/ — электронная библиотека по теории и приложениям вейвлетов;
http://www.wavelet.org/ — электронный вейвлет-дайджест (Wavelet Digest), выходит с 1992 года.
http://playfair.stanford.edu/∼wavelab — бесплатная библиотека вейвлетных программ на языке системы MATLAB;
http://www.math.spbu.ru/∼dmp/ — сайт Санкт-Петербургского городского семинара по вейвлетам, содержащий обширную информацию по отечественным и
зарубежным публикациям по теории и применению вейвлетов.
http://shop.rcd.ru — Интернет-магазин издательского центра «Регулярная и
хаотическая динамика».
ВНИМАНИЕ Выше перечислены лишь несколько адресов основных сайтов, специализированных по вейвлетах. На них вы можете найти ссылки на ряд других сайтов подобного рода. Ниже описаны также сайты корпораций, разработчиков СКМ с пакетами расширений по вейвлетам. Наконец, вы можете провести поиск материалов по вейвлетам на страницах крупных поисковых
систем, таких как www.apport.ru, www.rambler.ru и др. В целом в Интернете можно найти многие сотни сайтов, содержащих материалы по вейвлетам и их применению.
7.1.3. Интернет-сайт вейвлет-дайджест
Из зарубежных Интернет-сайтов по вейвлетам стоит прежде всего отметить
сайт http://www.wavelet.org, который специально посвящен вейвлетам и их применению. Начальная страница этого сайта представлена на рис. 7.1. Обратите внимание на то, что в адресной строке броузера Internet Explorer 6.0, на котором просматривались сайты, можно увидеть точный адрес этой страницы (да и других
страниц).
Сайт имеет очень скромное оформление и вполне очевидную структуру. С помощью ряда гиперссылок, хорошо видных на рис. 7.1 снизу, можно получить доступ к одному из многочисленных разделов сайта. Основную ценность представляет файловый FTP-сервер сайта, в котором собрано огромное количество работ,
начиная от первых работ по вейвлетам конца 80-х годов прошлого века до самых
новых публикаций.
7.1.4. Интернет-сайт вейвлет-центра The IDR Wavelet Center
Другой, специализированный по вейвлет-тематике, крупный сайт — The IDR
Wavelet Center. Его начальная страница показана на рис. 7.2. Это сайт международного центра по вейвлетам.
На рис. 7.3 представлен раздел сайта The IDR Wavelet Center, посвященный
публикациям. Как нетрудно отметить, на нем отражены работы по применению
вейвлетов для очистки сигналов от шума, предсказанию будущих событий, вейвлетам в графике, обработке изображений, отражению вейвлетов в Интернете,
программному обеспечению вейвлетов и, естественно, фундаментальным вопросам теории вейвлетов и вейвлет-преобразований.
342
7.1. Источники информации по вейвлетам
Рис. 7.1. Интернет-страница сайтаWavelet.org
Рис. 7.2. Интернет-страница сайта The IDR Wavelet Center
На этом сайте можно найти самую разнообразную информацию по теории и
применению вейвлетов и вейвлет-преобразований.
Сайт фирмы MathWorks, создателя мощных СКМ MATLAB, содержит ряд
страниц, посвященных вейвлетам. Прежде всего, это раздел сайта, посвященный
пакету расширения Wavelet Toolbox (рис. 7.4).
На этой странице можно найти информацию о характеристиках пакета, описание его функций, примеры применения, документацию, литературу по вейвлетам
343
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис. 7.3. Интернет-страница сайта The IDR Wavelet Center,
посвященная публикациям
Рис. 7.4. Интернет-страница фирмы MathWorks с описанием пакета расширения
Wavelet Toolbox
и т. д. Имеется возможность обновления пакетов предшествующих версий. На
рис. 7.5 показан раздел этой страницы, посвященный демонстрационным примерам. На ней показан классический пример применения вейвлетов — компрессия
отпечатков пальцев.
344
7.1. Источники информации по вейвлетам
Рис. 7.5. Интернет-страница фирмы MathWorks, посвященная
демонстрационным примерам
Рис. 7.6. Интернет-страница фирмы MathWorks, посвященная литературе по
пакету Wavelet Toolbox и другим пакетам расширения системы MATLAB
Еще одна страница этого сайта, посвященная литературе по пакету Wavelet Toolbox и другим пакетам расширения системы MATLAB 6/6.1. Расширив поиск по
этой странице, можно найти много материалов, посвященных применению вейвлетов. В частности, из не англоязычной литературы по данному пакету указано
только 3 книги и одна из этих книг [25].
345
Глава 7. Состояние и перспективы развития вейвлет-технологии
7.1.5. Интернет-сайт корпорации MathSoft
Корпорация MathSoft Inc., разработчик популярных СКМ «для всех» класса
Mathcad, имеет одну из самых богатых коллекций материалов по применению
вейвлетов — рис. 7.7. Эти материалы периодически пополняются.
Рис. 7.7. Интернет-страница фирмы MathSoft, посвященная вейвлет-ресурсам
и пакету расширения Wavelet Extension Pack
Естественно, что на этом сайте имеется и детальная информация по пакету
расширения Wavelet Extension Pack и электронной книге по нему. На ней можно
найти описание пакета и примеры его применения. Впрочем, надо отметить, что
этот пакет достаточно полно описан в главе 5 данной книги.
Весьма впечатляет список литературы по вейвлетам, размещенный в этом разделе сайта фирмы MathSoft. Начало этого списка представлено на рис. 7.8. Список насчитывает многие сотни литературных источников, разбитых по разным областям применения вейвлетов.
Весьма эффектно организована на сайте этой фирмы совместная работа ученых и специалистов из разных стран над совместными проектами, в том числе и
по вейвлетам. Это способствует междунардному сотрудничеству в данной области.
7.1.6. Сайт корпорации Wolfram Research
Корпорация Wolfram Research, Inc. — разработчик СКМ Mathematica 4/4.1/5
также имеет свой Интернет-сайт. В последнее время он существенно дополнен
уникальными справочными и энциклопедическими материалами по всем вопросам применения математики. На рис. 7.9 показана страница этого обширного сайта, посвященная пакету расширения Wavelet Explorer для этой СКМ.
В целом представление вейвлет-тематики на этом сайте представлено более
скромно, чем на сайтах других фирм, рассмотренных выше. Но и на нем тоже
можно найти множество интересной информации и поучительных примеров.
346
7.1. Источники информации по вейвлетам
Рис. 7.8. Интернет-страница фирмы MathSoft, посвященная литературе
по вейвлетам
Рис. 7.9. Интернет-страница фирмы Wolfram Research, посвященная пакету
расширения Wavelet Explorer
7.1.7. Интернет-сайт Amara's
Один из самых крупных зарубежных Интернет-сайтов по вейвлетам — Amara's.
Его начальная страница представлена на рис. 7.10. Внизу страницы представлен
перечень разделов сайта, выполненный в виде гиперссылок.
347
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис.7.10. Начальная страница Интернет-сайта Amara's
На этом сайте имеется обширная информация по другим Интернет-сайтам, отражающим тематику по вейвлетам, литературе по вейвлетам, многочисленным
программным средствам и примерам применения вейвлет-технологии для обработки сигналов.
7.1.8. Русскоязычные Интернет-сайты по вейвлетам
В России также имеется ряд Интернет-сайтов, посвященных вейвлетам. Прежде всего, это сайт Санкт-Петербургского городского семинара по вейвлетам, организованного учеными Санкт-Петербургского государственного университета.
Среди них немало специалистов, давно работающих в области математической теории вейвлетов. Начальная страница данного сайта показана на рис. 7.11.
Рис. 7.11. Интернет-страница сайта Санкт-Петербургского городского
семинара по вейвлетам
348
7.1. Источники информации по вейвлетам
Наиболее ценными на этом сайте, помимо постоянно обновляемых материалов
данного семинара, являются материалы, посвященные русскоязычной литературе
по вейвлетам. Начало страницы, посвященной этому, представлено на рис. 7.12.
Рис. 7.12. Интернет-страница, посвященная русскоязычной литературе
по вейвлетам
Стоит отметить, что размещенный на этом сайте список литературы имеется в
переводной книге Добеши [11], подготовленной под редакцией И. Новикова, соавтора по одной из первых в России статей по теории вейвлетов [15]. Увы, как и
на других сайтах, список русскоязычной литературы пополняется редко и в нем
есть досадные пробелы.
Другой сайт с большим количеством материалов по вейвлетам это «Русский
Вейвлет Дайджест» – www.wavelet.narod.ru. Особенно интересен в нем раздел
«Люди», в котором перечислены ученые и специалисты, работающие в области теории и применения вейвлетов – рис. 7.13.
На этом сайте есть и страница, посвященная вейвлет-ресурсам. Она показана
на рис. 7.14. К сожалению c 2001 года этот сайт не обновлялся и на сегодня его
данные кажутся устаревшими.
Интересен и Интернет-сайт одного из авторов книги по теории и практике
вейвлет-преобразований [13] В. Грибунина, начальная страница которого приведена на рис. 7.15. На сайте размещен практически тот же материал, что и на других, отмеченных выше, русскоязычных сайтах.
Несколько оживляет сайт обширный раздел по диссертациям, в основном зарубежным. Начало страницы этого раздела представлено на рис. 7.16. На этом сайте
имеется и иная разнообразная информация, например по материалам Третьей
Международной конференции DSPA-2000, по книгам и статьям по вейвлетам (для
многих предусмотрена возможность из записи на диск компьютера, по программным средствам (в том числе бесплатным для Toobox системы MATLAB) и др.
349
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис. 7.13. Интернет-страница сайта «Русский Вейвлет Дайджест»,
посвященная специалистам по вейвлетам
Рис. 7.14. Интернет-страница сайта «Русский Вейвлет Дайджест»,
посвященная ресурсам по вейвлетам
Полезную информацию по вейвлетам можно найти на сайте Института прикладной математики имени М. В. Келдыша Российской академии наук. В частности, на нем размещены материалы по 8-й и 9-й международных конференциях по
графике ГрафиКон 98 и 99 (рис. 7.17). В этих материалах можно найти лекции по
вейвлетам Л. Маслюка и А. Переберина.
350
7.1. Источники информации по вейвлетам
Рис. 7.15. Интернет-страница сайта по теории и практике
вейвлет-преобразований В. Грибунина
Рис. 7.16. Интернет-страница сайта по теории и практике
вейвлет-преобразований, посвященная диссертациям по вейвлетам
Есть и раздел по вейвлетам на сайте www.matlab.ru. К сожалению, вопреки начальным целям этого сайта (объединение специалистов, работающих с системой
MATLAB и пакетами ее расширения), данный сайт допускает явно необъективное
отражение информации, как по системе MATLAB, так и по пакету расширения
Wavelets Toolbox. В частности, в списке литературы отсутствуют ссылки на ряд
книг, например [19, 20], и на первое издание данной книги. Из 18 ссылок раздела
351
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис. 7.17. Интернет-страница сайта Института прикладной математики
имени М. В. Келдыша
по вейвлетам 6 относятся к малозначительным статьям ведущего раздела Алексеева К. А., опубликованным в журналах, далеких от отражения тематики по вейвлетам. Многие ссылки относятся к малотиражным учебным пособиям, изданным в
вузовских типографиях и практически недоступных массовому читателю.
Здесь стоит отметить, что выше перечислена лишь малая часть источников информации по теории и практике вейвлетов, размещенной в Интернете. Многие
поисковые системы, например www.aport.ru, www.rambler.ru и др., выдают сотни и
тысячи ссылок на Интернет-сайты, посвященные вейвлетам и их применению.
ВНИМАНИЕ Если вы хотите найти русскоязычные материалы по вейвлетам, то лучше
задавайте слово «вейвлеты» (или «вэйвлеты») именно на русском языке.
Если задать его как английское «wavelets», то большинство обнаруженных
материалов будет на английском языке.
7.2. Программное обеспечение по вейвлетам
7.2.1. Открытость программного обеспечения по вейвлетам
Как уже отмечалось, на Интернет-сайтах по вейвлетам имеются многочисленные ссылки на программные инструментальные средства по вейвлетам. Несомненно, наиболее важные из них это профессионально выполненные коммерческие версии пакетов расширения по вейвлетам для современных СКМ MATLAB,
Mathcad и Mathematica [25—30], описание которых было представлено выше. Как
правило, это тщательно отлаженные и проверенные программные средства, обеспечивающие надежную и гарантированную работу с ними.
Среди части специалистов по обработке сигналов и изображений существует в
корне неверное мнение о какой-то таинственности программного обеспечения по
352
7.2. Программное обеспечение по вейвлетам
вейвлетам и вейвлет-преобразованиям. Между тем никакой таинственности в нем
нет. В ряде из описанных выше СКМ программное обеспечение для пакетов расширения готовится на языке программирования этих систем, в полностью открытом для применения пользователями виде.
В качестве примера можно взять наиболее мощный из описанных в данной
книге пакетов расширения — Wavelet Toolbox для системы MATLAB 6.1 (разработка лета 2001 года). Программные модули всех функций этого пакета (их всего
270) выполнены в виде m-файлов, которые находятся в папке TOOLBOX\WAVELET\WAVELET и полностью открыты для просмотра любым текстовым редактором. В качестве примера ниже представлены листинги двух важных функций —
одномерного прямого и обратного вейвлет-преобразования. Из листинга удалены
начальные комментарии с описанием этих функций на английском языке, поскольку такое описание было дано в главе 3 на русском языке и не относится к исполняемой части программ.
Функция одномерного прямого вейвлет-преобразования пакета Wavelet Toolbox
function [a,d] = dwt(x,varargin)
%DWT Single-level discrete 1-D wavelet transform.
if errargn(mfilename,nargin,[2:7],nargout,[0:2]), error('*'), end
if isstr(varargin{1})
[Lo_D,Hi_D] = wfilters(varargin{1},'d'); next = 2;
else
Lo_D = varargin{1}; Hi_D = varargin{2}; next = 3;
end
% Default: Shift and Extension.
dwtATTR = dwtmode('get');
shift = dwtATTR.shift1D;
dwtEXTM = dwtATTR.extMode;
% Check arguments for Extension and Shift.
for k = next:2:nargin-1
switch varargin{k}
case 'mode' , dwtEXTM = varargin{k+1};
case 'shift' , shift = mod(varargin{k+1},2);
end
end
% Compute sizes.
lf = length(Lo_D);
lx = length(x);
% Extend, Decompose & Extract coefficients.
flagPer = isequal(dwtEXTM,'per');
if ~flagPer
lenEXT = lf-1; lenKEPT = lx+lf-1;
else
lenEXT = lf/2; lenKEPT = 2*ceil(lx/2);
end
353
Глава 7. Состояние и перспективы развития вейвлет-технологии
y = wextend('1D',dwtEXTM,x,lenEXT);
a = convdown(y,Lo_D,lenKEPT,shift);
d = convdown(y,Hi_D,lenKEPT,shift);
% Internal Function(s)
function y = convdown(x,f,lenKEPT,shift)
y = wconv('1D',x,f);
y = wkeep(y,lenKEPT);
y = dyaddown(y,shift);
Функция одномерного обратного вейвлет-преобразования пакета Wavelet Toolbox:
function x = idwt(a,d,varargin)
%IDWT Single-level inverse discrete 1-D wavelet transform.
if errargn(mfilename,nargin,[3:9],nargout,[0:1]), error('*'), end
if isempty(a) & isempty(d) , x = []; return; end
if isstr(varargin{1})
[Lo_R,Hi_R] = wfilters(varargin{1},'r'); next = 2;
else
Lo_R = varargin{1}; Hi_R = varargin{2}; next = 3;
end
% Default: Length, Shift and Extension.
lx = [];
dwtATTR = dwtmode('get');
% Check arguments for Length, Shift and Extension.
k = next;
while k th(varargin)
if isstr(varargin{k})
switch varargin{k}
case 'mode' , dwtATTR.extMode = varargin{k+1};
case 'shift' , dwtATTR.shift1D = mod(varargin{k+1},2);
end
k = k+2;
else
lx = varargin{k}; k = k+1;
end
end
% Reconstructed Approximation.
x = upsaconv('1D',a,Lo_R,lx,dwtATTR)+ ... % Approximation.
upsaconv('1D',d,Hi_R,lx,dwtATTR); % Detail.
Приведенные листинги являются типичными MATLAB-процедурами, и знающие язык программирования этой системы пользователи могут без труда разобраться в мельчайших деталях их реализации. Язык программирования системы
MATLAB 6/6.1/6.5 достаточно подробно описан в книгах [28—30].
Еще дальше в этом направлении пошли разработчики пакета Wavelet Explorer
для системы Mathematica. Как уже отмечалось в главе 6, этот пакет выполнен в
354
7.2. Программное обеспечение по вейвлетам
виде одной программы (ноутбука) на языке системы Mathematica. На рис. 7.18
представлен фрагмент программы в окне текстового редактора WordPad, на котором видно начало программного модуля, выполняющего прямое вейвлет-преобразование.
Рис. 7.18. Фрагмент программы — пакета расширения Wavelet Explorer
системы Mathematica
Таким образом, в ряде случаев программное обеспечение по вейвлетам и вейвлет-преобразованиям полностью открыто пользователям и они могут по образцу
и подобию имеющихся программных модулей создавать свои программные модули, реализующие те или иные вейвлет-преобразования и технологии. Следует, однако, помнить, что модификация поставляемых разработчиками программных
модулей допустима только с их согласия и в рамках существующих лицензионных
соглашений. Как и получение самих модулей.
И последнее! Среди некоторой части специалистов бытует мнение, что литература по вейвлетам должна давать готовые рекомендации по программному обеспечению техники вейвлет-преобразований. Увы, это практически невозможно. Само
по себе описание программ серьезной библиотеки по вейвлетам занимает гораздо
больший объем, чем, скажем, данная книга. Поэтому задача книг заключается не в
том, чтобы описывать готовые программные средства, а в том, чтобы научить читателя пользоваться такими средствами и готовить свои программные разработки.
Для этого нужно, разумеется, в совершенстве владеть программированием на языках высокого уровня и четко понимать, что «без труда не вынешь рыбки из пруда».
7.2.2. Свободно распространяемые пакеты расширения системы
MATLAB
Заметную долю в программном обеспечении вейвлет-технологии образуют пакеты расширения матричной системы MATLAB, идеально приспособленной для
создания пакетов расширения. Многие такие пакеты рождаются в университет-
355
Глава 7. Состояние и перспективы развития вейвлет-технологии
ской среде или создаются независимыми пользователями и малыми фирмами как
свободно распространяемые программы.
Одной из самых мощных программ такого рода является программа WAVELAB 8.02, созданная в конце 1999 года в Стэнфордском университете
(www-stat.stanford.edu/∼wavelab\). По тем временам эта программа превосходила
стандартный пакет Wavelet Toolbox системы MATLAB. Эта программа сделана как
пакет расширения, включаемый в инструментальный набор Toolbox системы
MATLAB 5.*. К сожалению, с новыми реализациями MATLAB 6/6.1/6.5 данный
пакет не работает из-за многочисленных неточностей в записи файлов. Те, кто серьезно заинтересованы в специфических возможностях этого мощного пакета,
могут пойти на такую жертву, как установка старой версии MATLAB 5.* вместо
современных версий.
ВНИМАНИЕ Владельцам новейших ПК с микропроцессором Pentium 4 следует учитывать, что на них работоспособны только последние версии MATLAB 6.1 и
6.5 (в том числе с Service Pack 1.0). Предшествующие версии системы
MATLAB не работают. Возможно, это также повод не спешить с переходом на новейшую вычислительную технику.
Небольшой пакет Time-Frequency Toolbox Райсовского университета дает прекрасные средства частотно-временного преобразования, которое, к сожалению,
известно у нас в еще меньшей степени, чем вейвлет-спектральный агнализ. Обзор
этих методов в системе Mathcad дан в конце главы 1 данной книги. А указанный
пакет, кстати, имеющий неплохой пользовательский интерфейс, способен дать
дополнительный стимул к изучению этого мощного средства анализа сложных
сигналов, подчас превосходящего возможности фурье- и вейвлет-анализа.
MATLAB PYRTOOLS еще один пакет расширения системы MATLAB. Он является библиотекой частотного анализа сигналов, в основном двумерных. Хотя
этот пакет не имеет прямого отношения к вейвлетам, он занимает почетную «золотую середину» между методами фурье- и вейвлет-анализа сигналов.
Мы ограничимся упоминанием этих пакетов, хотя ими эта область программного обеспечения вейвлет-технологии, разумеется, не ограничивается. В отмеченных выше Интернет-ресурсах можно найти программы по вейвлет-технологиям, созданные на языках программирования, начиная от старого доброго Бейсика
до C++. Но, пожалуй, самым примечательным становится внедрение вейвлет-технологий и расширений в современные прикладные программные системы. Лидерство в этом СКМ мы уже отметили, но оно уже не является единственным. Вейвлет-технология начинает проникать в программные комплексы массового применения, например в графические редакторы.
7.2.3. Вейвлет-технология в графической системе Corel DRAW
Новые версии графических систем CorelDraw 9/10/11 уже широко используют
вейвлет-технологию обработки изображений с их довольно глубокой компрессией. Переход к хранению изображений фотографического качества в такой популярной и мощной графической системе, как Corel DRAW 9/10/11, иначе как примечательным не назовешь. Это свидетельствует о выходе вейвлет-технологий обработки изображений на уровень самого серьезного и массового практического
применения.
Любое изображение, загруженное в основной компонент этой системы Corel
DRAW (для определенности ниже примеры даны для компонента Corel
356
7.2. Программное обеспечение по вейвлетам
DRAW 10), может быть импортировано в формате WI (формат с вейвлет-компрессией и обработкой изображения). Это иллюстрирует рис. 7.19, на котором представлено загруженное изображение (оно может быть в ином формате) и показано
окно команды Экспорт, которая имеется в позиции меню Файл. Нетрудно заметить, что в списке форматов файлов для их записи на диск имеется формат WI
Wavelet Compressed Bitmap.
Рис. 7.19. Запись файла в формате WI Wavelet Compressed Bitmap графической
системы Corel DRAW 10
Для просмотра файлов в формате WI Wavelet Compressed Bitmap и в других доступных Corel DRAW 10 форматах графических файлов служит специальное приложение Corel PHOTO-PAINT 10. На одном из CD-ROM Corel DRAW 10 в каталоге
PHOTOS имеется богатейшая коллекция высококачественных фотографий, файлы
которых представлены в формате WI. Это позволяет по достоинству оценить качество изображения при профессиональной вейвлет-обработке и компрессии изображений. Рис. 7.20 показывает загрузку файлов с раширением WI в этом приложении.
Файлы в вейвлет-формате WI выгодно отличаются высоким качеством и небольшими размерами (в сравнении с другими форматами, например BMP или PCX).
Это следствие описанных в предшествующих главах достоинств вейвлет-методов
обработки и компрессии изображений. Рис. 7.21 показывает одно из изображений
морской звезды из одного из демонстрационных файлов. К сожалению, черно-белое изображение в книге совершенно неспособно передать то высочайшее качество цветного изображения, которое обеспечивается при просмотре таких изображений на экране цветного дисплея с высоким разрешением.
Обратите внимание на окно Document Info с параметрами изображения, представленное справа в окне просмотра изображения. Из приведенных в нем данных
следует, что полноцветное изображение формата 768 × 512 пикселей, имеющее в
оригинале (в памяти) размер около 2,2 Мбайта, сжато вейвлет-компрессией до
размера примерно 0,22 Мбайта, таким образом обеспечено сжатие с коэффициентом компрессии 10.
357
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис. 7.20. Загрузка файла в формате WI Wavelet Compressed Bitmap
в приложении Corel PHOTO-PAINT 10
Рис. 7.21. Просмотр изображения из файла в формате WI Wavelet Compressed
Bitmap в приложении Corel PHOTO-PAINT 10
7.3. Вейвлет-технологии в графике
7.3.1. Типовая обработка сигналов графики
Вейвлет-технология уже добилась заметных успехов. Опубликованы (в том
числе на русском языке) основополагающие книги по ней. Инструментальные
средства ее включены в наиболее мощные и совершенные системы компьютер-
358
7.3. Вейвлет-технологии в графике
ной математики MATLAB, Mathematica и Mathcad. Это открыло реальные возможности работы в этой новой области для многих специалистов в области связи
и информационных технологий, а также в постановке учебных курсов по вейвлет-технологии.
На вейвлет-обработке и компрессии/декомпрессии сигналов изображений построен массовый и перспективный стандарт сжатия изображений фотографического качества JPEG-2000. Новый стандарт обеспечивает степень сжатия изображений цветных фотографий до 200 раз при значительном снижении артефактов и
иных искажений изображений. Рисунок 7.22 показывает сравнение изображений
глаза с сжатыми изображениями по стандарту JPEG (в центре) и JPEG 2000. Этот
рисунок выполнен в Aware, Inc.
Рис. 7.22. Изображение глаза в оригинале (слева) и после сжатия в 220 раз
по методу JPEG (в центре) и JPEG-2000 (справа)
К сожалению, рисунки в книге представлены в полутоновом монохромном
виде с невысоким разрешением, что заметно сглаживает разницу между ними.
Тем не менее на рисунке, сжатом под обычному методу JPEG, отчетливо видны
артефакты над глазом и по ним. Заметны и характерные прямоугольники, на которые распадается изображение при использовании блочного метода обработки,
характерного для стандартного JPEG-сжатия. При сжатии по стандарту
JPEG-2000 этих недостатков уже нет и определить разницу между оригиналом и
сжатым вейвлет-методом изображением довольно трудно. Как уже отмечалось,
вейвлет-технология сжатия таких изображений уже применена в наиболее известных пакетах по обработке изображений Corel DRAW 9/10/11.
Большую известность получили работы по компрессии изображений, например отпечатков пальцев и фотографий лиц, совершивших уголовные преступления. Только в Федеральном бюро расследований США хранится свыше 30 миллионов отпечатков пальцев, и для их хранения нужно 200 терабайт дисковой памяти.
Применение вейвлет-технологии сжатия отпечатков пальцев позволяет уменьшить
объем этой памяти в 20—30 раз. ФБР ежедневно обрабатывает 30 тысяч отпечатков пальцев. Практическая реализация этой технологии с помощью СКМ уже неоднократно описывалась выше.
Очистка сигналов и изображений от шума — еще одна перспективная область
применения вейвлет-технологий. Мы уже описали средства пакета Wavelet Toolbox для этого. Приведем данные о различных методах очистки импульсного сигнала от шума (рис. 7.23). В этом примере видны бесспорные преимущества в очистке сигнала от шума, достигаемые при использовании вейвлетов.
359
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис. 7.23. Зашумленный импульсный сигнал и результаты его очистки разными
методами
Методы очистки сигналов от шума применимы и к изображениям. Пример
этого дает рис. 7.24. Здесь дана фотография Ингрид Добеши, чью роль в становлении вейвлет-технологии мы уже не раз отмечали. Показана часть ее лица (да простит нас госпожа Добеши за столь оригинальный, хотя и использованный отнюдь
не впервые, способ демонстрации возможностей вейвлетов) в оригинале, с шумом
и после очистки от шума.
К сожалению, качество печати рисунков в книге не позволяет в полной мере
ощутить возможности очиcтки изображений и в этом примере.
Рис. 7.24. Фото Ингрид Добеши и демонстрация очистки изображения от шума
360
7.3. Вейвлет-технологии в графике
7.3.2. Вейвлеты в компьютерной графике
Интересный обзор и применение приложений вейвлетов в компьютерной графике даны в книге [20], написанной известными специалистами в этой области.
При их участии были созданы короткометражные анимационные фильмы Tin Toy
и Geri, награжденные «Оскарами» по номинации лучших анимационных фильмов. Примечательна широта охвата тематики в области применения вейвлетов в
этой книге. Помимо детально описанных выше декомпозиции изображений, их
пороговой обработки, декомпозиции и сжатия изображений в книге описан целый ряд весьма полезных и специфических применений вейвлетов.
Прежде всего, это редактирование изображений, включающее вывод изображений на экран дисплея, раскрашивание и корректировка изображений, учет граничных условий и техника дробных разрешений. В книге убедительно показано,
что во всех этих операциях применение вейвлет-технологии дает явный выигрыш
в сравнении с ранее известными средствами машинной графики.
При серьезных графических работах объем изображений становится огромным
и поиск нужных картинок и их просмотр превращается в весьма утомительную
процедуру. И здесь применение вейвлетов становится оправданным и перспективным. По существу речь идет о новых средствах построения баз данных для изображений и средств управления ими.
Большое значение при машинной графике имеет задание различных кривых и
поверхностей. Хорошо известно применение для этого кривых Безье, сплайнов и
иных средств. С помощью таких кривых строятся рукописные символы, выполняется приближение различных графических объектов, а главное, осуществляется их
перемещение и масштабирование в пространстве и во времени. Методы выполнения таких операций широко используются в компьютерной графике и широко используются в системах компьютерной математики. К примеру, трехмерные поверхности строятся на основе треугольных и иных ячеек, пересчет координат которых обеспечивает перемещение и масштабирование таких объектов, а также
реализацию таких действий, как удаление и приближение объектов, их вращение,
деформация и т. д.
В [20] показано, что деформация даже плоских кривых при использовании
вейвлетов оказывается гораздо более эффективной, чем стандартные (как правило, итерационные) методы преобразования кривых. Например, итерационное преобразование отрезка прямой в эллиптическую дугу с помощью B-сплайнов при
достижении минимума энтропии занимает 1024 итерации. То же преобразование с
использованием вейвлетов осуществляется всего за 64 итерации (метод Готлера и
Коэна).
Одной из важнейших проблем трехмерной графики является функциональная
окраска трехмерных объектов с учетом их отражающих свойств, особенностей
структуры объектов и спектрального состава света и положения осветителя.
И здесь применение вейвлетов дает заметные преимущества перед обычными
средствами осуществления рендеринга.
Уместно отметить, что небольшая книга [20] описывает в основном теоретические соображения и некоторые идеи практической реализации указанных выше
достаточно сложных методов. Чтобы использовать эти методы на практике, необходима сложная и трудоемкая работа по созданию нужного программного обеспечения.
Решение более простых задач сжатия изображений описано во второй части
книги [19]. Первая часть ее посвящена теоретическому обоснованию применения
361
Глава 7. Состояние и перспективы развития вейвлет-технологии
для синтеза и компрессии изображений самоподобных графических объектов —
фракталов. К сожалению, на практике дальше фрактального построения листа папоротника описание в этой книге (и в других подобных книгах) не доходит. Зато
вейвлеты оказываются куда более практичными и обеспечивают решение задачи
сжатия изображений (см. многочисленные примеры в предшествующих главах).
Книга [19] поставляется с CD-ROM, на котором имеется набор программ на языке C/C++ для обеспечения простейших операций с вейвлетами и фракталами.
7.3.3. Вейвлет-технологии в Интернете
Мы уже отмечали роль вейвлет-технологий в картографии, разведке полезных
ископаемых, в биологии, в медицине — словом, везде, где нужны средства анализа сложных изображений. Особо следует выделить подготовку с помощью вейвлет-преобразований изображений, размещаемых в Интернете. Здесь важно отметить ряд моментов:
• изображения в Интернете нередко имеют небольшие размеры;
• для них желательна предельная степень сжатия;
• даже небольшое улучшение качества при высокой степени сжатия оказывается весьма полезным;
• интересны методы сжатия, дающие вначале грубую картинку, а затем ее детализирующие (такие методы позволяют ускорить знакомство с картинкой
до ее полной загрузки и при необходимости отказаться от такой загрузки).
Как нетрудно заметить, вейвлет-технология обработки изображений и их компрессии обладает всеми этими качествами и потому является одной из перспективных. Уже сейчас нередко в Интернете можно найти картинки прекрасного качества с очень малым размером. Обычно это — результат применения вейвлетов.
Сравнение результатов представления фотографий при различной степени сжатия
в форматах JPEG и вейвлет показано на рис. 7.25 на примере фотоснимка волка.
Левый снимок на рис. 7.25 — оригинал изображения. Файл с ним имеет размер
461 кбайт. Снимок в центре — то же изображение в формате JPEG, подвергнутое
сильной компрессии (размер файла 3,51 кбайт). Нетрудно заметить, что качество
изображения явно неудовлетворительное. На изображении отчетливо видны характерные квадратики, на которые разбивается изображение в ходе локального
косинусного преобразования, лежащего в основе стандарта JPEG (до JPEG 2000).
Рис. 7.25. Примеры фотографий с разной степенью сжатия, подготовленных
в различных форматах
362
7.3. Вейвлет-технологии в графике
Заметны и артефакты — искажения обусловленные дискретизацией слабо отличных полутонов изображения.
Фотография справа получена в результате вейвлет-компрессии (размер файла
3,52 кбайта). Итак, при одном и том же размере сжатого файла вейвлет-компрессия дает гораздо лучшее качество изображения, чем JPEG-компрессия. При сопоставимом качестве изображения размер файла при вейвлет-компрессии удается
уменьшить в 1,5—2 раза.
7.3.4. Вейвлеты в видеоаппаратуре
Интересным направлением является разработка аппаратных средств (например, охранных видеосистем, видеокамер, модемов и т. д.) со встроенной вейвлет-технологией в виде Hardware. Это позволяет передавать достаточно качественные изображения по довольно узкополосным каналам связи, характерным для
банковских учреждений, офисов и государственных служб. Такие системы могут
органично входить в системы Интернета и Интранета (локальных сетей, использующих протоколы работы, созданные для Интернета).
Для развития этого перспективного направления применения вейвлет-технологии необходима разработка специализированных интегральных микросхем — вейвлет-кодеков (слово «кодек» происходит от слов «кодирование» — «декодирование» сигналов). Для видеосигналов такие видеокодеки уже созданы. Например,
фирма Analog Devices выпускает серию однокристальных и недорогих микросхем
видеокодеков ADV6ХХ.
Микросхема ADV601 предназначена для применения в профессиональной аппаратуре. Она обеспечивает компрессию изображения без потери качества изображения в среднем в 4 раза. Изображение разбивается на 42 блока и подвергается
кодированию с плавающим порогом по энтропии. В результате степень компрессии может меняться в зависимости от характера сигнала в пределах от двух до
пяти.
При компрессии с небольшой потерей качества изображения степень сжатия
достигает до 350 раз. При этом используется специальный адаптивный алгоритм
вейвлет-преобразований, учитывающий особенности человеческого зрения. В видеокодеках ADV611 и ADV612 для бытовых применений степень компрессии может достигать 7500, но в этом случае ухудшение качества изображения довольно
заметно, что не мешает применять эти видеокодеки для целей наблюдения и
идентификации объектов в охраняемых помещениях и для передачи изображений
по узкополосным каналам Интернета.
При высокой степени сжатия искажения видеосигнала проявляются в виде
высокочастотного шума и некоторого размытия мелких деталей. Такие искажения слабо воспринимаются глазами человека и заметны намного меньше, чем
блочные искажения, характерные для JPEG- и MPEG-стандартов сжатия изображений, основанных на блочном косинусном преобразовании. Заметим, что распад изображения на блоки — квадратики с размером 8 × 8 или 16 × 16 пикселей
при MPEG-кодировании и декодировании прекрасно знаком всякому пользователю компьютерными видеодисками. У вейвлет-видеокодеков таких грубых искажений нет.
Более подробные сведения о видеокодеках фирмы Analog Devices можно найти
в книге [13]. Хотя она издана малым тиражом, с книгой можно познакомиться через Интернет-страницу одного из ее авторов — В. Грибунина (см. рис. 7.15).
363
Глава 7. Состояние и перспективы развития вейвлет-технологии
Пример применения вейвлет-технологии передачи изображений дан на Интернет-странице http://www.bizcom.ru/equipment/2000-10/03.html. На ней описана реальная система относительно узкополосной передачи телевизионного изображения, которая может быть использована в локальных сетях банков и в системах охранной сигнализации различных важных объектов.
На практике вейвлет-преобразование реальных цветных телевизионных изображений встречает немалые трудности, не имеющие, впрочем, принципиального
характера. Прежде всего, надо отметить, что приходится кодировать и декодировать составляющие цветных сигналов — например RGB (сигналы красного, зеленого и синего цветов). Для вейвлет-кодирования с сжатием максимальной эффективности камнем преткновения становится постоянная частота смены полукадров
телевизионного изображения. Реально используется фильтрация изображений и
энтропийное кодирование.
Опуская многочисленные детали практической реализации вейвлет телевизионных систем, отметим, что они уже реально существуют. Вопрос стоит о массовости выпуска таких систем. Рис. 7.26 показывает конструкцию модема с вейвлет-кодеком. Описанные выше вейвлет-видеокодеки могут успешно использоваться в подобных модемах.
Рис. 7.26. Внешний вид модема с вейвлет-кодированием (а) и вид на его
печатную плату (б)
Как нетрудно заметить, конструкция модема с вейвлет-кодированием достаточно проста, и можно рассчитывать, что при серийном производстве такой модем будет недорогим. При частоте кадров 12,5 Гц можно обеспечить высококачественную телевизионную передачу по Интранету с применением выделенной линии с пропускной способностью 2 Мбит/c. Такими линиями сейчас располагают
многие банки и крупные компании, что открывает реальные возможности использования в них вейвлет-технологии обработки и передачи телевизионных сигналов. Имеется возможность создания таких многоканальных телевизионных систем. Возможно, что со временем такие системы могут быть реализованы и в глобальной сети Интернета.
7.4. Вейвлеты в науке, технике и медицине
7.4.1. Вейвлеты в математике и в физике
Накоплены многочисленные успешные примеры применения вейвлет-технологии в решении ряда математических и физических задач:
• передача сигналов от сейсмических датчиков с высокой точностью и высокой степенью компрессии;
364
7.4. Вейвлеты в науке, технике и медицине
• анализ радиационных и нейтронных спектров;
• решение некорректных задач, например, восстановления сигналов по не•
•
•
•
•
•
прямым вычислениям;
решение задач численного дифференцирования зашумленных сигналов;
восстановление сигнала из свертки;
численные методы решения уравнений в полных и частных производных;
решение гиперболических уравнений в задачах геофизики;
моделирование прохождения оптических импульсов в нелинейных средах;
исследование явлений турбулентности и др.
Достаточно обстоятельный обзор применений вейвлет-технологии дает работа
[20]. Здесь можно найти интересные данные о применении вейвлетов в физике
элементарных частиц и в теории твердых тел и молекул. Причудливость взаимодействия между частицами твердых дел вынуждает исследователей применять весьма тонкие и одновременно громоздкие методы их исследования. Например, для
описания эффективного потенциала ядер урана с применением фурье-анализа
пришлось бы вычислять 2100 фурье-коэффициентов. Эта задача была успешно решена с помощью вейвлет-технологии. Поскольку эта фундаментальная задача интересует узкий круг читателей, ограничимся ссылкой на работу [18] и цитируемые
в ней оригинальные работы по данной проблематике. Там же можно найти данные по применению вейвлет-технологии при решении задач множественного
рождения частиц, решения проблемы кварк-глюонной плазмы и изучения структуры фазовых обменов отдельных событий.
7.4.2. Вейвлет-анализ фотографий турбулентности
Турбулентность в газовых или водяных струях — благоприятная область применения вейвлетов. На рис. 7.27 показана теневая фотография турбулентной струи
(слева) и два варианта ее обработки с помощью вейвлет-преобразования (справа),
показывающие наглядное представление общих и детальных особенностей строения струи.
Нетрудно заметить, что именно вейвлет-представление струи является наиболее информативной. Оно выделяет мельчайшие детали фотографии струи.
Рис. 7.27. Теневая фотография турбулентной струи (слева) и два варианта
ее обработки с помощью вейвлет-преобразования (справа), показывающие
наглядное представление общих и детальных особенностей строения струи
365
Глава 7. Состояние и перспективы развития вейвлет-технологии
7.4.3. Вейвлет-анализ данных микроскопического исследования
В биологии, ботанике и медицине важное значение имеет анализ данных микроскопического исследования тех или иных объектов, например бактерий. Фактически он сводится к обработке полученных с помощью микроскопа изображений.
Уже есть данные об успешном применении для этой цели вейвлет-анализа.
На рис. 7.28 слева представлена типичная микрофотография невысокого качества мазка крови человека [18]. Визуально их обнаружить практически невозможно. Фотография справа — результат вейвлет-обработки исходной фотографии. Теперь уже клетки крови отчетливо видны, можно определить их форму и размеры.
Вейвлет-анализ изображений может использоваться и для решения задач распознавания образов и определения их характеристических параметров. Примером
таких образов в биологии и в медицине могут быть эритроциты крови (рис. 7.29).
Как видно из этой фотографии, они характеризуются различием формы, плотности изображения, четкости контуров и наличием тех или иных вкраплений. Они
могут быть вызваны как теми или иными заболеваниями, так и погрешностью самого микроскопического исследования, например грязью и пылью.
Была создана методика идентификации эритроцитов крови, основанная на
вейвлет-корреляции, совмещаемой с обработкой изображений по данным микроскопического исследования. Ее экспертные оценки медиками оказались весьма
обнадеживающими, а сама методика могла быть реализована в автоматическом
режиме без вмешательства человека.
Рис. 7.28. Микрофотографии мазка крови до (слева) и после (справа)
вейвлет-обработки
Рис. 7.29. Микрофотография биологической среды с клетками эритроцитов
366
7.4. Вейвлеты в науке, технике и медицине
7.4.4. Вейвлеты в медицине
Классическим примером анализа данных в медицине является анализ сигналов, излучаемых мозгом человека. На рис. 7.30 показан фрагмент такого сигнала у
здорового человека [10]. Нетрудно заметить, что его анализ для непосвященного
человека не способен дать ничего путного. Конечно, опытный врач может по
своей интуиции вынести верный диагноз. Но это происходит далеко не всегда.
И хотелось бы иметь более объективные показатели.
Представляет интерес применение
для этого вейвлет-преобразования. На
рис. 7.31 показана трехмерная вейвлет-спектрограмма, полученная непрерывным вейвлет-преобразованием
сигнала, представленного на рис. 7.30.
Спектрограмма несколько развернута,
так чтобы показать весьма характерную
впадину.
А теперь рассмотрим фрагмент сигнала человека, больного болезнью АльРис. 7.30. Фрагмент сигнала мозга
цгеймера. Он показана на рис. 7.32.
здорового человека
С первого взгляда отличие его сигнала
от сигнала рис. 7.30 незаметно.
Трехмерная вейвлет-спектрограмма
больного человека (также несколько
развернутая) представлена на рис. 7.33.
На этот раз «даже ежу» ясно, что мы
имеем иную спектрограмму — на ней
нет и подобия впадины, явно присутствующей на рис. 7.31.
Разумеется, даже явно бросающиеся
в глаза различия должен анализировать
опытный врач, а не посторонний человек — например, заинтересованный пациент. Иначе нетрудно сделать псевдооткрытие на основе той или иной осоРис. 7.31. Трехмерная
бенности вейвлет-спектрограмм. Тем
вейвлет-спектрограмма здорового
не менее очевидно, что высокая спочеловека
собность вейвлет-спектрограмм к выявлению всевозможных тонкостей сигналов и функций дает в руки медиков
новые возможности.
Сердечные заболевания относятся к
наиболее распространенным и часто
служат причиной смерти людей. В связи с этим огромный интерес вызывают
исследования сердечной деятельности,
которые могли бы хоть как-то способствовать диагностике сердечных забоРис. 7.32. Фрагмент сигнала мозга
больного человека
леваний.
367
Глава 7. Состояние и перспективы развития вейвлет-технологии
Интересные результаты были получены при вейвлет-анализе временных
интервалов между ударами сердца
вследствии
сокращения
сердечной
мышцы — см. [18] и указанные в этом
обзоре оригинальные работы. Интерес
к этому подходу связан с тем, что он не
требует применения электрокардиографа и позволяет получить нужные данные достаточно оперативно.
Последовательности
интервалов
представлялись как функции от номера
интервала. Каждый пациент характеризовался некоторым числом — дисперсией интервала для заданного j вейвлет-коэффициента.
Оказалось
(рис. 7.34), что при j от 3 до 5 наблюдаются явные расхождения между числами (дисперсиями) больных и здоровых
людей.
Пока эти исследования были выполнены для 27 пациентов, при этом
обрабатывалось около 70 000 интервалов. Разработчики методики утверждают, что ими создана приемлемая для
клиник методика. Действительно, видно, что при j = 4 здоровые и больные
пациенты надежно различаются. Однако представляется, что объем «выборки» по пациентам пока еще недостаточен. Это говорит лишь об одном — подобные исследования перспективны и
нуждаются в продолжении.
Рис. 7.33. Трехмерная
вейвлет-спектрограмма больного
человека
Рис. 7.34. Зависимость дисперсии
временных интервалов между ударами
сердца здорового (светлые кружки)
и больного (темные кружки) человека
и номерами j вейвлет-коэффициентов
7.4.5. Моделирование процесса смешения фракций
Еще один характерный пример, где полезно применение вейвлетов в таких
фундаментальных науках, как физика и химия, — моделирование процесса смешения фракций. При смешении различных фракций в химических растворах или
газах важное значение имеет моделирование процесса их смешения, вызванного
хаотическим броуновским движением молекул. Граница раздела между фракциями при этом порою приобретает весьма причудливый вид и может быть представлена сложной поверхностью в трехмерном пространстве.
В пакете Wavelet Extension Pack и в электронной книге по нему дан интересный пример такого моделирования с применением вейвлет-фильтра symmlet(8).
К сожалению, этот пример настолько большой, что приводить его в данной книге
не имело смысла. Читатель, заинтересованный в его изучении, может познакомиться с ним самостоятельно с помощью указанной электронной книги.
Мы ограничимся приведением результата моделирования, который в этом примере представлен двумя основными типами графиков — в виде поверхности и в
368
7.4. Вейвлеты в науке, технике и медицине
Рис. 7.35. Поверхность раздела двух
фракций, полученная
при моделировании броуновского
движения молекул
Рис. 7.36. Контурный график
поверхности раздела двух фракций,
полученный при моделировании
броуновского движения молекул
виде графика линий равного уровня. На рис. 7.35 показан результат моделирования в виде поверхности, представляющей собой распределение концентрации одной фракции в другой фракции. В оригинальном варианте этого примера использована функциональная окраска поверхности, но на рис. 7.35 она заменена окраской оттенками серого цвета.
Результат моделирования в виде контурного графика (линий равного уровня)
представлен на рис. 7.36. При оцифровке линий такой график можно использовать для численных оценок результатов моделирования.
Следует отметить, что при неоднократных пусках этого примера будут получаться разные поверхности, поскольку при моделировании используется генератор
случайных чисел, задающий случайное движение молекул.
7.4.6. Вейвлеты в анализе специальных функций и сигналов
Большой интерес вызывает применение вейвлетов для оценки локальных
свойств различных функций — например, элементарных и специальных математических. С помощью вейвлет-спектрограмм можно выяснить наличие у функций
разрывов и точек перегиба, нарушения непрерывности производных и другие детали их формы — в том числе и не относящиеся к локальным (например, существование периодичности функций, асимптот и т. д.). Это необходимо, к примеру,
для оптимального выбора методов аппроксимации таких функций.
Особенно поражает способность вейвлетов выделять скачки и разрывы у функций. Частично эти возможности уже обсуждались в главах 2 и 3. Приведем дополнительные данные по этим возможностям, в том числе количественные.
Зададим синусоидальную функцию (примерно 2 периода) и наложим на нее
прямоугольной формы колебания, создаваемые выражением 0.1*sign(sin((t –
7).^2./3)). Это означает, что синусоида будет содержать небольшие скачки положительной и отрицательной полярности, положение которых не фиксировано, а
определяется квадратическим законом нарастания частоты прямоугольных импульсов. Это сделано для того, чтобы скачки появлялись на самых разных местах синусоиды. Таким образом мы создали типичный нестационарный сигнал. Соответ-
369
Глава 7. Состояние и перспективы развития вейвлет-технологии
ствующая программа для построения графика такого сигнала и его вейвлет-спектра для пакета Wavelet Toolbox дана ниже:
t = linspace(-6,6,2048);
s = sin(t)+0.1.*sign(sin((t-7).^2./3));
subplot(211), plot(t,s); title('function s(t)')
subplot(212), c = cwt(s,1:2:256,'sym4','abslvl',[100 400]);
title('Wavelet spectr s(t) ')
Рис. 7.37 показывает полученный сигнал и его спектр. Несмотря на то что
двойная амплитуда скачков составляет всего 0.1 от двойной амплитуды синусоиды, спектр сигнала потрясает своим разнообразием. Все скачки отчетливо фиксируются и их образ напоминает корни зубов на рентгеновском снимке. Темные
пики между ними явно идут по квадратическому закону, также как и неравномерное (квадратическое) распределение «зубов» во времени. На уровне больших коэффициентов отчетливо видна и периодичность синусоиды.
Рис. 7.37. Временная зависимость и спектрограмма синусоиды в сумме
с небольшой прямоугольной компонентой, имеющей квадратическое изменением
частоты
А теперь проделаем казалось бы «смертельный трюк» — уменьшим амплитуду
прямоугольной нестационарной компоненты сигнала до одной тысячной от двойной амплитуды синусоиды (!):
t = linspace(-6,6,2048);
s = sin(t)+0.001.*sign(sin((t-7).^2./3));
subplot(211), plot(t,s); title('function s(t)')
subplot(212), c = cwt(s,1:1:36,'sym4','abslvl',[100 400]);
title('Wavelet spectr s(t) ')
Временная зависимость и спектрограмма сигнала для этого случая показаны на
рис. 7.38. На синусоиде теперь нет даже намека на вторую составляющую сигнала
и она (в пределах разрешения графики компьютера) выглядит как абсолютно чистая кривая. Однако спектр (дан вывод 36 коэффициентов) выделяет малюсенькие
скачки в тех местах, где они и впрямь есть в сигнале! Даже при уменьшении амплитуды скачков еще в десяток раз они отчетливо выделяются на спектрограмме.
370
7.4. Вейвлеты в науке, технике и медицине
Рис. 7.38. Временная зависимость и спектрограмма синусоиды в сумме
с ничтожно малой прямоугольной компонентой, имеющей квадратическое
изменение частоты
Подобное поведение вейвлетов только на первый взгляд кажется неожиданным
и просто ошеломляющим. На самом деле оно следствие быстрого нарастания
уровня детализирующих вейвлет-кофффициентов. Это и объясняет повышенный
интерес к вейвлетам со стороны физиков. Ведь известно, что, например, элементарные частицы, бомбардируя газ, порождают слабые импульсы от датчиков таких
частиц. Вейвлеты могут легко обнаруживать их на фоне сильных помех (в нашем
примере такой помехой была синусоида большой амплитуды).
Очевидно, что вейвлеты очень полезны и при анализе различных специальных
математических функций. Здесь не обязательно речь идет об обычных специальных математических функциях типа Бесселя или гамма-функции. Речь идет просто о любой сложной функции. Тем не менее в качестве наглядного примера построим спектрограмму весьма распространенной гамма-функции, используя следующую программу:
t = linspace(-10,2,2048);
s = gamma(t);
subplot(211), plot(t,s); title('function s(t)');
axis([-10,2,-10,10]);
subplot(212), c = cwt(s,1:1:30,'sym4','abslvl',[100 400]);
title('Wavelet spectr s(t) ')
График гамма-функции и ее спектрограммы представлен на рис. 7.39. Мы снова видим, что спектрограмма отчетливо выделяет разрывы этой функции с
устремлением в бесконечности (в положительную и отрицательную). В области
отрицательных значений аргумента спектрограмма отчетливо выделяет две сингулярные точки этой функции, хотя на самом графике и следа от них нет!
Аналогичным образом, хотя и не всегда столь эффектно можно выявить и другие особенности функций, например их периодичность, законы модуляции по
уровню и по частоте, наличие разрывов производных, наличие асимптот и т. д.
Ряд примеров этого как при использовании непрерывного, так и дискретного вейвлет-преобразования мы уже приводили.
371
Глава 7. Состояние и перспективы развития вейвлет-технологии
Рис. 7.39. Временная зависимость и спектрограмма гамма-функции
7.4.7. Вейвлеты в анализе временных рядов
Особенно не акцентируя внимание на этом, мы фактически уже многократно
использовали вейвлеты для анализа временных рядов. Ибо фактически временным рядом является любая функция (или сигнал), представленная в определенные моменты времени. Ради наглядности с нашими вейвлет-экспериментами
обычно приводились графики функций и сигналов.
Однако, и это принципиально важно, сам вейвлет-анализ и синтез сигналов и
функций всегда выполнялся по конечному числу отсчетов функции или сигнала.
А последовательность этих отсчетов и есть временной ряд. При отсутствии графика исходного сигнала или функции судить о них по их временному ряду трудно,
ибо этот ряд представляет собой просто набор чисел — отсчетов сигнала или функции.
Разумеется, соединив точки отсчета просто отрезками прямых (что и всегда делалось), можно получить простейший график сигнала или функции. А затем, используя вейвлет-анализ, можно получить множество дополнительных данных о
функциях и сигналах.
В нашей литературе перспективы применения вейвлетов для анализа временных рядов всерьез были поставлены в работе Астафьевой Н. М. [14]. В ней предпринята и одна из первых попыток идентифицировать особенности временного
ряда (функции, сигнала) по особенностям вейвлет-спектрограмм, полученных при
использовании непрерывного прямого вейвлет-преобразования.
Однако больший интерес представляет описание вейвлет-технологии обработки типичного временного ряда, представляющего динамику изменения событий,
характеризующих процесс Эль-Ньньо — глобального потепления океанических
вод вблизи Тихоокеанского побережья Центральной Америки. С помощью ряда
как прямых измерений (примерно за последние 100 лет), так и косвенных событий процесс Эль-Ньньо удалось представить за весьма внушительный срок в 500
лет (это половина тысячелетия). Для этого потребовалось собрать данные многих
исследователей — от давно прошедших времен до наших. Полученный при этом
временной ряд и результаты его вейвлет-анализа в виде спектрограмм представлены на рис. 7.40 (данные за последнее столетие подчеркнуты).
372
7.4. Вейвлеты в науке, технике и медицине
Рис. 7.40. График зависимости числа событий Эль-Ньньо от времени за 500 лет
(a), спектрограмма вейвлет-коэффициентов (b) и распределение плотности
энергии (c)
Представленные на рис. 7.40 данные дают хорошую пищу для оценки процесса
Эль-Ньньо и связанных с ним других процессов — например процесса Южное
Колебание. Из представленных данных можно сделать выводы о различных долговременных и кратковременных фазах процесса Эль-Ньньо, например о периодах
глубокого потепления, о 40-летних периодических циклах и о многих иных деталях этого сложнейшего процесса.
Заинтересованному читателю стоит изучить работу [14] более подробно. В ней,
в частности, можно найти результаты интерпретации как приведенных на
рис. 7.40 долгосрочных данных (только по частоте событий), так и куда более подробных данных за более близкие к нам периоды времени. К сожалению, описание в [14] ограничено лишь одномерными непрерывными вейвлетами и не затрагивает такую важную область, как предсказание (или прогноз) событий будущего.
7.7.8. Вейвлеты в предсказании событий
Не исключено, хотя пока и не очень хорошо изучено, эффективное применение вейвлет-анализа нестационарных временных рядов и предсказание по ним
непредвиденных событий типа «черного вторника» (как нашего, так и случившегося в США), землетрясений и прочих природных катаклизмов, террористических
актов и др.
То, что вейвлет-спектрограммы способны выявлять тонкие особенности дискретно заданных математических функций, мы уже отмечали. Некоторые из этих
особенностей (кстати, совсем не обязательно локальные) могут использоваться
для выявления так называемых «предвестников» или «предсказателей» будущих
событий. Обзор литературы по вейвлетам показал, что основанный на этом подход с применением вейвлетов уже существует, хотя и лишь в начальной стадии.
Начнем с решения технической проблемы — предсказания разноса авиационного двигателя. При испытаниях и при эксплуатации авиационных двигателей нередко возникает серьезная проблема — двигатель неожиданно теряет управление,
давление в камере сжигания топлива повышается, число оборотов турбины начинает неуклонно возрастать и это может привести к крупной аварии. Попытки
предсказать разнос авиадвигателя по показаниям измерителей скорости его вращения оказались неплодотворными — резкое повышение скорости обнаруживалось не ранее чем за 10 мс до наступающей катастрофы, а за такое время что-либо
предпринять для ее предотвращения практически невозможно.
373
Глава 7. Состояние и перспективы развития вейвлет-технологии
Стало быть, нужны достаточно надежные методики предсказания такой печальной ситуации, по возможности задолго до ее наступления. Опуская физические
и технические причины возникновения этой ситуации, достаточно подробно описанные в [20], откуда и взят этот пример, просто приведем данные вейвлет-обработки быстрого изменения давления в камере сгорания турбинного авиадвигателя
(рис. 7.41).
Рис. 7.41. Осциллограмма давления в камере двигателя (снизу), кривая
дисперсии вейвлет-коэффициентов масштаба j = 5 (средняя точечная линия)
и кривая дисперсии при перемешивании данных
(верхняя штрих-пунктирная линия)
Из рис. 7.41 видно, что сама по себе осциллограмма давления не дает данных к
предсказанию его внезапного катастрофического повышения. Кратномасштабный
вейвлет-анализ осциллограммы давления сводился к измерению дисперсии для
отсчетов давления как функции от номера вейвлет-коэффициентов. Обрабатывались результаты оцифровки изменения давления от 8 датчиков в интервале времен 5—6 с перед наступлением разноса (помпажа двигателя) с интервалом дискретизации в 1 мс.
Результат обработки представлен точечной кривой на рис. 7.41. За 1—2 с до наступления разноса был обнаружен пик и затем резкое падение дисперсии при
масштабе j = 5, которое и служило предвестником вскоре наступающего разноса.
Падение дисперсии при этом составило весьма внушительную и легко обнаруживаемую величину — до 40% от среднего уровня дисперсии. Последняя вычислялась по формуле:
σ( j , M ) =
1
1−M
M −1
∑ [d
k=0
j ,k
− d j ,k
],
2
где M — число вейвлет-коэффициентов на уровне j в заданном временном интервале.
374
7.4. Вейвлеты в науке, технике и медицине
С помощью генератора случайных чисел данные о давлении были перемешаны
и была построена кривая дисперсии для этого случая. Она уже не обнаруживала
события-предвестника, что также указывает на динамический (и локальный) характер возникающей перед разносом двигателя ситуации.
В этом эксперименте исследовались кривые дисперсии также до и после появления предвестника события. Оказалось, что он в этих кривых отсутствовал, что
тоже указывает на динамическое и нестационарное развитие ситуации. Было обнаружено и различное поведение высших моментов вейвлет-коэффициентов различного ранга до и после появления предвестника. Это позволяет получить дополнительные данные о наступающем (или наступившем) событии.
Любопытно, что эта методика, в основе которой лежит вейвлет-анализ дисперсии данных, в сущности подобна уже описанной для диагностирования заболеваний сердца. Все это указывает на то, что она может быть распространена и на
многие другие процессы, могущие приводить к непредвиденным ситуациям.
Приведем еще один интересный пример (обнаруженный в Интернете) на выявление финансового кризиса путем построения вейвлет-спектрограммы курса закрытия акций компании «Лукойл» (рис. 7.42).
Построенная по этой диаграмме вейвлет-спектрограмма (рис. 7.43) хорошо выявляет некое особое событие, произошедшее явно 28.10.1997 года. Это событие
начало крупного финансового кризиса. Детальный анализ вейвлет-коэффициентов способен в той или иной мере содействовать предсказанию возможных последствий подобных явлений.
Рис. 7.42. Курс закрытия акций
компании «Лукойл» с июня
по сентябрь месяц 1997 года
Рис. 7.43. Вейвлет-спектрограмма
курса закрытия акций компанией
Лукойл, соответствующая диаграмме
рис. 7.42
К сожалению, детали разработки таких методов анализа в настоящее время находится под завесой секретности. На это указывает развертывание таких работ в
крупнейших научных центрах оборонного значения многих стран.
7.7.9. Вейвлеты в цифровой стеганографии
Сравнительно новым направлением применения вейвлетов является цифровая
стеганография — скрытие одной информации в другой, например некоторого
изображения в другом изображении, методами цифровой обработки сигналов.
Наиболее характерным применением стеганографии являются цифровые водяные
знаки на деньгах и ценных документах. Такие знаки, в отличие от обычных водяных знаков, невидимы и распознаются с помощью специального декодера.
375
Глава 7. Состояние и перспективы развития вейвлет-технологии
При передаче информации и для вложения цифрового водяного знака используются контейнеры. Вложение может осуществляться в частотной области. Наиболее эффективно использование средних частотных подполос, поскольку низкочастотные полосы зашумлены изображением, а высокочастотные шумом обработки
сигналов. Для распознавания скрытой информации используются специальные
ключи.
При реализации конкретных методов стеганографии выяснилось (см. информацию на сайте www.autex.spb.ru/wavelet/), что в настоящее время лучшим методом является метод Карунена—Лоэва. Следующим стоит метод, основанный на
вейвлет-преобразованиях. К сожалению, конкретные детали реализации этого метода на указанном сайте отсутствуют. В связи с этим ограничим наше знакомство
со стеганографией высказанными выше общими сведениями. Цифровая стеганография наука новая, и можно ожидать существенного расширения знаний о ней
уже в ближайшие годы.
7.8. Дополнительные примеры применения
вейвлет-технологий
В этом заключительном разделе книги мы приведем еще несколько характерных конкретных примеров применения вейвлет-технологии.
7.8.1. Сглаживание и редактирование сложных кривых
Как уже отмечалось (см. раздел 7.3.2) вейвлеты могут использоваться в компьютерной графике. Для сглаживания и редактирования сложных кривых особенно
перспективны полуортогональные и кубические B-сплайновые вейлеты. Их способность соединять отдельные точки в последовательном порядке позволяет превратить угловатые фигуры, заданные полигонами (фигуры из точек, последовательно соединенных отрезками прямых) в реалистично выглядящие фигуры, например рукописных букв.
Рисунок 7.44 показывает построение с помощью кубических B-сплайновых
вейвлетов рукописной буквы A по 11 и 7 опорным точкам. Эти построения выполнены сплошными линиями, тогда как полигоны представлены пунктирными линиями. Нетрудно заметить, что исходные полигоны выглядят как фигуры с резко
выделенными углами, тогда как построенные с помощью B-сплайновых вейвлетов
фигуры выглядят как реальные рукописные буквы.
Ограниченное число узловых точек не только существенно уменьшает объем
памяти компьютеров для хранения таких кривых (например, всех букв того или
иного алфавита), но и позволяет эффективно решать задачи распознавания образов. Процесс декомпозиции этой кривой с помощью B-сплайновых вейвлетов на
низкочастотную и детализирующую составляющие осуществляется подобно всякому другому прямому вейвлет-преобразованию.
Ныне подобные задачи актуальны даже при создании карманных устройств,
таких как переводчики рукописных текстов, карманные компьютеры с рукописным вводом текстов и сотовые телефоны. Важное значение имеет также задача
идентификации подписей субъектов — людей.
Нередко возникает задача редактирования сложных кривых. В ее решении с
помощью вейвлетов также достигнуты определенные успехи. На рис. 7.45 показан
376
7.8. Дополнительные примеры применения вейвлет-технологий
Рис. 7.44. Построение рукописной буквы A с помощью кубических B-сплайновых
вейвлетов по 11 и 7 опорным точкам
пример добавления к кривой с 11
опорными точками дополнительных
точек (вейвлет коэффициентов), что
доводит их число до 35. Нетрудно заметить, что росчерк буквы A стал при
этом намного более детальным и
имитирует нюансы зигзагов, которые
характерны для рукописных букв,
особенно входящих в подписи.
Детали реализации подобных операций можно найти в следующих источниках:
• Шикин Е. В., Боресков А. В. Компьютерная графика. Динамика,
реалистические изображения. М.:
Диалог-МИФИ. 1996.
• http://algolist.manual.ru/compress/im
age/leo_lev/appendix/spl_wav.zip
Рис. 7.45. Редактирование кривой
рукописной буквы A путем увеличения
числа вейвлет-коэффициентов с 11 до 35
7.8.2. Вейвлет-обработка реальных изображений
Выше приводилось множество примеров вейвлет-обработки реальных изображений. Попытаемся обобщить наиболее важные достижения в этой области и
хотя бы кратко отразить пути их реализации.
На одном шаге двумерной вейвлет-декомпозиции изображения получается
одна низкочастотная и три высокочастотные компоненты изображения — см.
пример на рис. 7.46. Если ничего не предпринимать с этими компонентами, то с
помощью шага обратного вейвлет-преобразования можно полностью восстановить исходное для этого шага изображения.
А теперь отметим, что можно сделать с изображением, представленным таким
образом. Возможны, по крайней мере, следующие операции:
377
Глава 7. Состояние и перспективы развития вейвлет-технологии
• Сжатие изображения путем удаления из высокочастотных компонент близ-
•
•
•
•
ких к нулю вейвлет-коэффициентов (в том числе с использованием различного типа порогов). Выше уже не раз отмечалось, что сжатие изображений
на основе вейвлет-технологий обеспечивает повышенное качество изображения в сравнении с иными методами сжатия, например на основе дискетных косинусных преобразований.
Масштабирование изображения в простейшем случае основано на уменьшении размеров исходного изображения вдвое при каждом шаге преобразования. Искажения при этом минимальны и отсутствует эффект aliasing.
Возникающие искажения сильно зависят от выбора конкретного типа
вейвлетов.
Коррекция четкости изображений легко осуществляется умножением всех
вейвлет-коэффициентов одного или нескольких уровней разложения на
множитель — число. Если оно больше 1, то четкость будет повышаться, а
если меньше 1 — понижаться.
Выделение перепадов возможно селективным применением высокочастотных компонент вейвлет-декомпозиции изображения.
Локальная обработка изображений означает выполнение некоторых действий над частью изображения, чаще всего выделяемого рамкой с помощью
мыши. Свойство локализации вейвлетов способствует эффективности осуществления этой операции.
Рисунок 7.47 показывает основные описанные операции на примере реального
изображения. Исходное изображение с размером 256 × 256 пикселей размещено в
Рис. 7.46. Пример декомпозиции реального изображения на одном шаге двумерной
вейвлет-декомпозиции
378
7.8. Дополнительные примеры применения вейвлет-технологий
левом верхнем углу. Далее представлены увеличение четкости изображения, размытие и выделение перепадов.
Пример локальной обработки реальных изображений представлен на рис. 7.48.
Здесь показано выделение фрагмента изображения с целью повышения его четкости.
Остается еще раз отметить, что эти приемы обработки изображений хотя и
медленно, но внедряются в серийные программные средства по обработке изображений. И это является лучшим доказательством их перспективности и полезности. Детали применения вейвлетов в обработке изображений можно найти в учебном курсе, размещенном в Интернете:
• http://www/alife.narod.ru/lectures/Wavelets2001/part1.html
• http://www/alife.narod.ru/lectures/Wavelets2001/part2.html
• http://www/alife.narod.ru/lectures/Wavelets2001/part3.html
Рис. 7.47. Основные операции по обработке реальных изображений
Рис. 7.48. Пример локальной обработки реальных изображений
379
Глава 7. Состояние и перспективы развития вейвлет-технологии
7.8.3. Сжатие сейсмических
сигналов
Сжатие
сейсмических
сигналов
столь же показательный пример, как и
сжатие изображений отпечатков пальцев. В какой то мере он даже более показателен, поскольку вейвлеты пришли
в науку именно из сейсмографии. Сигналы от сейсмических волн, возникающих при искусственных взрывах и природных катаклизмов по виду очень напоминают вейвлеты и относятся к
компактным волнам. Естественно ожидать, что такие сигналы могут быть эффективно представлены и сжаты с применением вейвлетов.
Рисунок 7.49 (кривая сверху) показывает реальный сейсмографический
сигнал. Сигнал имеет сложную структуру и явно ограничен во времени. Под
ним представлен сигнал, полученный с
помощью прямого, а затем обратного
вейвлет-преобразования с использованием 100 вейвлет-коэффициентов. Нетрудно заметить, что оба сигнала практически идентичны.
Рис. 7.49. Сигнал от сейсмографа
А вот результат представления такосверху, после вейвлет преобразования
го сигнала с помощью 100 гармоник
(в середине) и после
спектра Фурье (рис. 7.49 — кривая сниФурье-преобразования (снизу)
зу) оказался явно неудовлетворительным — в его начале и особенно в конце
видны сильные паразитные колебания, которые в исходном сигнале отсутствуют.
7.8.4. Вейвлеты и нейронные сети
По возможности приближения функций вейвлет-преобразования имеют формальную аналогию с нейронными сетями. Для последних, как и для вейвлетов,
была доказана теорема о возможности аппроксимации произвольной непрерывной функции нейронной сетью с одним скрытым слоем (рис. 7.50 слева) с заранее
заданной точностью.
Вычисления, проводимые нейронной сетью, описываются формулой:
F (x ) ≈ Y =
H
∑V
k
⋅ f (W k x + Θ k ).
k =1
Здесь H — число нейронов скрытого слоя, f — нелинейная функция преобразования входного сигнала нейрона в выходной, W и V — весовые коэффициенты связей от входа к скрытому слою и от скрытого слоя к выходу, соответственно, Θ —
аддитивная составляющая входного сигнала (порог возбуждения нейрона).
380
7.8. Дополнительные примеры применения вейвлет-технологий
Рис. 7.50. Структуры нейронных сетей со скрытым слоем — прямого
распространения (слева) и каскадная (справа)
Иногда используются также и латеральные связи между нейронами слоя, как,
например, в каскадной сети на рис. 7.50 (справа). Аналогичным соотношением
может быть представлена и функция нескольких переменных, в этом случае вектор W рассматривается, как матрица, и по индексам входных независимых переменных производится суммирование:
F (x ) ≈ Y =
H
∑V
k =1
I
k
⋅ f (∑ W ki x i + Θ k )
i =1
Представленное выше выражение формально соответствует оптимальной форме выражения функций многих переменных через суперпозицию функций одного
переменного. Такая суперпозиция была предложена А.Н.Колмогоровым, задолго
до нейронных сетей (да и вейвлетов), что отнюдь не умаляет их значимости как
реальных средств ее осуществления.
Выбор нелинейных функций в приведенном разложении произволен, и вплоть
до недавнего времени вопрос об оптимальном нейросетевом базисе оставался открытым. Затем для практически важного класса функций (p раз непрерывно дифференцируемых на отрезке) было показано, что асимптотически (при малых уклонениях аппроксимации от функции) число требуемых базисных функций в нейросетевом разложении минимально, если эти функции являются компактными волнами.
Данный фундаментальный результат дает принципиально новый взгляд на совместное использование преимуществ нейронных сетей (высокая параллельность
вычислений, замена алгоритмического программирования обучением на примерах, простота аппаратного ускорения вычислений) и компактно-волновых преобразований (высокая информативность, слабая чувствительность к шуму, возможность глубокого сжатия информации). Это направление находится в начале своего
развития и очевидно, что будет бурно развиваться, учитывая новизну как вейвлет-преобразований, так и нейросетевых систем.
7.8.5. Нейросетевой прогноз с вейвлет-обработкой
Рассмотрим пример анализа финансовых временных рядов, описанный в источнике:
http://www.rbc.ru/rbccomp_methods.html
381
Глава 7. Состояние и перспективы развития вейвлет-технологии
На рис. 7.51 сверху представлен индекс «РБК-композит» от РосБизнесКонсалтинг, представляющий ежедневные котировки при закрытии торгов.
Там
же
представлены
лог-дифференциальное представление
ряда log(p(t)/p(t-1)) и вейвлет-спектрограмма лог-дифференциального ряда —
снизу
Даже поверхностный анализ вейвлет-спектрограммы показывает, что на
разных этапах истории ряда (с момента
его основания 1 сентября 1997) существенными оказывались разные по масштабу тенденции его изменения — от однодневных до двухмесячных.
Для построения компьютерной системы прогноза котировки закрытия на
Рис. 7.51. Фондовый индекс
следующий день необходимо выделить
«РБК-композит» — сверху,
лог-дифференциальное представление
факторы в истории ряда, наибольшим
ряда log(p(t)/p(t–1)) — в середине
образом влияющие на прогнозируемого
и вейвлет-спектрограмма
значение. При этом следует уменьшить
лог-дифференциального ряда — снизу
число таких факторов без существенного ухудшения точности прогноза, поскольку это приводит к снижению чувствительности предсказания к шуму. В данном случае проведем следующую программу исследований:
• Устраняем основной тренд и переходим к инвариантному лог-дифференциальному представлению ряда: f(t) = log(p(t)/p(t–1). Здесь t — номер дня
проведения торгов (с 01.09.97), p — котировка закрытия, f — результирующий ряд перед обработкой.
• Выбираем предельный масштаб истории ряда, влияющий на прогнозируемое значение. В нашем случае ограничимся с запасом 64 торговыми днями
(более двух месяцев).
• Для скользящего окна длительностью 64 проводим кратномасштабный
вейвлет-анализ, вычисляя дискретное вейвлет-преобразование на масштабах, кратных степени двойки — рис. 7.52. В результате получим 64-компонентный вектор коэффициентов для каждого прогнозируемого дня (на момент проведения данной операции ряд содержал 803 отсчета, после
лог-дифференциальной предобработки осталось 802 значения, для прогноза остается 802 – 64 = 738 примеров). Все данные, таким образом, составляют матрицу наблюдений X размерностью 738 × 64. Прогнозируемые значения Y формируют вектор из 738 компонент. Цель прогноза — построить
эффективное отображение Y = Y(X).
• Проводим выделение компонент вектора вейвлет-коэффициентов, наиболее влияющих на прогнозируемое значение. В простейшем случае воспользуемся для этого абсолютной величиной соответствующего коэффициента
линейной корреляции. Результаты расчета корреляций приведены на
рис. 7.53. Видно, что значимые корреляции наблюдаются с вейвлет-коэффициентами на различных масштабах (для наглядности границы масшта-
382
7.8. Дополнительные примеры применения вейвлет-технологий
бов, кратные степени двойки, показаны на рисунке красными вертикальными линиями). Для прогноза можно оставить 8 наибольших значений,
превышающих выбранный порог (горизонтальная синяя линия).
Рис. 7.52. Кратномасштабное
представление ряда
Рис. 7.53. Модуль корреляции
прогнозируемого значения
с вейвлет-коэффициентами ряда
на разных масштабах
В данном случае сравнивались несколько вариантов прогноза — линейная авторегрессия по всему набору из 64 переменных, линейная авторегрессия по 8 наиболее значимым переменным, и, наконец, прогноз на основе нейронной сети со
скрытым слоем из 8 нейронов и 8-ю входами. В нейросетевом прогнозе использовались те же восемь переменных, наиболее значимых с точки зрения линейных
корреляций, что очевидно, является не самым оптимальным выбором для нелинейной нейросети. Общий масштаб ошибки обычно задается ошибкой «наивного»
предсказания по принципу «завтра будет так же, как и сегодня».
В простейшем традиционном варианте весь набор доступных данных разбивается на две выборки — обучающую и тестовую. Обучающая выборка используется
для определения параметров прогностической системы (коэффициентов регрессии, весов нейросети и т. п.), тестовые примеры служат для оценки точности полученного прогноза. В качестве меры ошибки использовалось стандартное значение SSE (sum squared error — суммарная квадратичная ошибка), отнесенное к числу примеров.
Результаты выполнения предложенной программы исследований приведены
ниже в таблице 7.1.
Таблица 7.1
Ошибка прогноза ряда «РБС-композит» различными методами
Метод
Входные параметры
Ошибка SSE
% к наивному прогнозу
«Наивный»
—
0.00237
100%
Линейная авторегрессия
все 64
0.00200
84.4%
Линейная авторегрессия
8 линейно значимых
0.00219
92.4%
Нейронная сеть
8 линейно значимых
0.00130
54.8%
383
Глава 7. Состояние и перспективы развития вейвлет-технологии
Анализируя представленные результаты, нужно отметить, что использование
линейной регрессии лишь незначительно улучшает прогноз по сравнению с «наивным» оракулом. При этом использование небольшого числа легко выявляемых
наиболее значимых вейвлет-коэффициентов (в нашем случае всего 8 чисел) практически так же эффективно, как и использование полного набора параметров. Это
говорит о заметной информационной избыточности ряда. И, наконец, применение нелинейной нейронной сети вместо линейной регрессии существенно улучшает качество прогноза.
Дальнейшие перспективы прогнозов с применением нейронных сетей связаны
с применением мультимодельных методов для систем с переменной структурой.
Они описаны в монографии:
Абраменкова И. В., Круглов В. В., Дли М. И. Мультимодельный метод прогнозирования процессов с переменной структурой. — М.: Физматлит, 2003.
Насколько в этой области окажутся полезными вейвлеты — пока неясно. И вообще надо отметить, что прогноз сложных зависимостей дело весьма тонкое —
как и Кавказ. И столь же чреватое многими осложнениями.
384
Заключение
Представленный в данной монографии материал наглядно свидетельствует о
том, что вейвлеты из математической экзотики уже превратились в мощное и довольно универсальное средство представления сигналов, функций, изображений и
систем. Особенно важно — нестационарных сигналов и систем. Области применения вейвлетов (и, соответственно, вейвлет-технологии) уже охватывают такие
фундаментальные науки, как математика, физика, химия, биология и др. Внушительные результаты в применении вейвлетов достигнуты и в прикладных науках,
таких как связь, средства телекоммуникаций, информационные и компьютерные
технологии, финансы и др.
Переходу вейвлет-технологии от теории, безусловно, фундаментально важной,
к широкой практике во многом содействует разработка программных инструментальных средств, прежде всего дополняющих самые интеллектуальные программные продукты нашего времени — системы компьютерной математики (СКМ).
Эта книга вносит серьезный вклад в описание данных инструментальных средств.
В ближайшее время можно ожидать резкого расширения исследований в области применения вейвлетов для анализа, идентификации и предсказания поведения сигналов и систем, в том числе систем технических, общественных и экономических. К примеру, в Лос-Аламосской лаборатории США уже давно ведутся исследования по предсказанию последствий бомбардировок и террористических
актов. Судя по событиям 11 сентября 2001 года, приведшим к гибели многих тысяч людей, вследствие беспрецедентных по своим масштабам террористических
актов и последующих военных действий, эти исследования пока не смогли предупредить случившихся трагедий. Однако это показывает лишь на то, что исследования в области предсказания «непредсказуемых» событий исключительно важны и
находятся в самом начале осуществления.
Стоит предостеречь читателя от слишком явного предпочтения вейвлет-методов обработки сигналов и изображений перед другими подобными методами. Вейвлеты, несомненно, имеют множество не только описанных, но и еще не полностью раскрытых возможностей. Но это вовсе не означает полную замену ими традиционных средств обработки сигналов и изображений, нередко хорошо
отработанных, проверенных временем и неоднократно улучшенных и модернизированных. К примеру, вполне современных средств, представленных в пакетах
расширения Signal Processing и Image Processing ряда СКМ или в пакетах анализа,
идентификации и моделирования систем, описанных в книгах [28—30, 37—39].
В этой связи вейвлеты надо рассматривать скорее не как модное направление,
а как новый и важный инструментарий в обработке сигналов, функций и изображений, дополняющий уже имеющийся арсенал инструментов для такой обработки. Отсюда и вытекает важность практических работ по вейвлет-технологиям и
разработки и описания инструментальных средств для работы с ними.
Вейвлет-технология наших дней направлена прежде всего на выявление новых
закономерностей в процессах окружающего нас мира — как созданного Природой
или Богом, так и рукотворного — созданного гением Человека. Уже одно это должно привлечь внимание к вейвлетам не только научной общественности мира, но
инженеров и практиков из всех многих стран и, конечно, из России, известной
мудростью и изобретательностью своих народов. И если эта книга хоть чуть-чуть
посодействует этому, то автор с удовлетворением посчитает главные задачи книги
вполне выполненными.
385
Список литературы
1. Mallat S. A theory for multiresolution signal decomposition: the wavelet representation. IEEE Pattern Anal. and Machine Intell. — 1989. vol. 11, no. 7, pp. 674—693.
2. Meyer Y. Ondelettes et operateurs. Tome 1. Hermann Ed. — 1990 (English translation: Wavelets and operators, Cambridge Univ. Press. 1993.).
3. Daubechies I. Ten lectures on wavelets, CBMS-NSF conference series in applied mathematics. SIAM Ed. — 1992 (см. ниже перевод на русский язык).
4. L. Shumaker, G. Webb, editor. Recent Advances in Wavelet Analysis. New York.:
Academic Press. 1993.
5. Gilbert Strang & Truong Nguyen. Wavelets and Filter Banks. Wellesley-Cambridge
Press, 1996.
6. Anthony Teolis. Computational Signal Processing with Wavelets. Birkhauser, 1998.
7. Jaideva C. Goswami & Andrew K. Chan. Fundamentals of Wavelets: Theory, Algorithms, and Applications. John Wiley & Sons, Inc., 1999.
8. C. Sidney Burrus, Ramesh A. Gopinath, & Haitao Guo. Introduction to Wavelets and
Wavelet Transforms: A Primer. Prentice Hall, 1998.
9. Raghuveer M. Rao & Ajit S. Bopardikar. Wavelet Transforms: Introduction to Theory
and Applications. Addison-Wesley, 1998.
10. R. Polikar. The wavelet tutorial. Ames, Jowa. — 1996.
11. И. Добеши. Десять лекций по вейвлетам. Пер. с англ. Е. В. Мищенко. Под ред.
А. П. Петухова. М.: РХД, 2001.
12. К. Чуи. Введение в вэйвлеты. Пер. с англ. под ред. Я. М. Жилейкина. М.: Мир,
2001.
13. В. И. Воробьев, В. Г. Грибунин. Теория и практика вейвлет-преобразований.
С. Пб.: ВУС. — 1999.
14. Астафьева Н.М. Вейвлет-анализ: основы теории и примеры применения. Успехи Физических Наук. Т.166, № 11, 1996 г.
15. И. Я. Новиков, С. Б. Стечкин, Основные конструкции всплесков, Фундаментальная и прикладная математика, т. 3, вып. 4. — 1997.
16. Л. Маслюк, А. Переберин. Введение в вейвлет-анализ. Учебный курс. ИПМ
РАН, Москва. 9-я Международная конференция по компьютерной графике и
машинному зрению «ГрафиКон'99». Москва, 26 августа — 1 сентября 1999 г.
17. А. В. Переберин. О систематизации вейвлет-преобразований. Вычислительные
методы и программирование. Том 2, 2001.
18. И. М. Дремин, О. В. Иванов, В. А. Нечитайло. Вейвлеты и их использование.
Успехи физических наук. Том 171, № 5. — 2001.
19. C. Уэлстид. Фракталы и вейвлеты для сжатия изображений в действии. Учебное пособие. Пер. с англ. М.: Триумф. — 2003.
20. Э. Столниц, Т. ДеРоуз, Д. Салезин. Вейвлеты в компьютерной графике. Теория и приложения. Пер. с англ. Ижевск: НИЦ «Регулярная и хаотическая динамика». — 2002.
21. Смирнов В. И. Курс высшей математики. Том II. М. Физматлит. — 1961.
22. Г. П. Толстов. Ряды Фурье. М. Наука. Физматлит. — 1980.
23. Жуков А. И. Метод Фурье в вычислительной математике. М. Наука. Физматлит. — 1992.
24. Н. Н. Харатишвили. Пирамидальное кодирование. М.: Мысль. — 1997.
386
Список литературы
25. Дьяконов В. П. Компьютерная математика. Теория и практика. М.: Нолидж. —
2001.
26. Дьяконов В. П. Mathcad 2001. Специальный справочник. СПб.: Питер. — 2002.
27. Дьяконов В. П. Энциклопедия применения Mathcad 2001i/11. М.: Солон-Пресс. — 2004.
28. Дьяконов В. П. Абраменкова И. В. MATLAB. Обработка сигналов и изображений. Специальный справочник. СПб.: Питер. — 2002.
29. Дьяконов В. П. MATLAB 6/6.1/6.5 + Simulink 4/5. Основы применения. М.:
Солон-Пресс. — 2002.
30. Дьяконов В. П. MATLAB 6/6.1/6.5 + Simulink 4/5 в математике и моделировании. М.: Солон-Пресс. — 2003.
31. Дьяконов В. П. Mathematica 4. Учебный курс. СПб.: Питер. — 2001.
32. Дьяконов В. П. Maple 8 в математике, физике и образовании. М.: Солон-Пресс. — 2003.
33. Дьяконов В. П. Internet. Настольная книга пользователя. Издание 4-е. М.: Солон-Р, — 2002.
34. Справочник по специальным функциям/Под. ред. М. Абрамовича и И. Стиган.- M.: Наука, Физматлит, 1979. — 832с.
35. Г. Корн, Т. Корн. Справочник по математике для научных работников и инженеров. - М.: Наука, Физматлит, — 1973.
36. Е. Н. Львовский. Статистические методы построения эмпирических формул.
Учебное пособие для вузов. М.: Высшая школа, — 1988.
37. Дьяконов В. П., Круглов В. В. Математические пакеты расширения MATLAB.
Специальный справочник. СПб.: Питер. — 2001.
38. Дьяконов В. П., Круглов В. В. MATLAB. Анализ, идентификация и моделирование систем. Специальный справочник. СПб.: Питер. — 2002.
39. Дьяконов В. П. Simulink 4. Специальный справочник. СПб.: Питер. — 2002.
387
Содержание
Предисловие ко второму изданию............................................................................3
Введение ................................................................................................................4
О содержании и стиле книги ...................................................................................8
Благодарности..........................................................................................................10
Предупреждения ......................................................................................................11
Адреса .......................................................................................................................11
Принятые в книге обозначения .............................................................................11
Глава 1. Функции, ряды и преобразования Фурье ..................................................13
1.1. Понятие о функции .........................................................................................13
1.1.1. Несколько слов о функции .....................................................................13
1.1.2. Области определения функций ...............................................................13
1.1.3. Компактный носитель функции .............................................................13
1.1.4. Пространства функции ............................................................................14
1.1.5. Периодичность функции .........................................................................14
1.2. Приближение функций и сигналов ................................................................14
1.2.1. О приближении функций и сигналов ....................................................14
1.2.2. Приближение функций рядом Тейлора .................................................17
1.2.3. Интерполяция и экстраполяция функций по Лагранжу ......................19
1.2.4. Полиномиальная аппроксимация ...........................................................20
1.2.5. Сплайновая интерполяция ......................................................................21
1.2.6. Двумерная линейная и сплайн-интерполяция ......................................24
1.2.7. Другие методы приближения и интерполяции......................................24
1.3. Регрессия и сглаживание данных ...................................................................25
1.3.1. Постановка задачи регрессии..................................................................25
1.3.2. Выполнение линейной регрессии ...........................................................26
1.3.3. Реализация линейной регрессии общего вида.......................................26
1.3.4. Реализация одномерной и многомерной полиномиальной регрессии28
1.3.5. Проведение многомерной регрессии......................................................29
1.3.6. Проведение нелинейной регрессии общего вида ..................................30
1.3.7. Новые функции для проведения регрессии в Mathcad.........................31
1.3.8. Пример синусоидальной регрессии в Mathcad......................................31
1.3.9. Функции сглаживания данных................................................................31
1.3.10. Предсказание зависимостей ..................................................................33
1.4. Введение в ряды Фурье....................................................................................34
1.4.1. Синусоидальная функция........................................................................34
1.4.2. Модуляция синусоидальных колебаний.................................................37
1.4.3. Понятие о гармоническом синтезе .........................................................39
1.4.4. Фурье-анализ и синтез периодических функций ..................................40
1.4.5. Прямой фурье-анализ и синтез периодических сигналов ....................41
1.5. Специальные типы преобразований Фурье ...................................................45
1.5.1. Дискретный фурье-анализ и спектр периодических функций ............45
1.5.2. Гармонический синтез дискретно заданного сигнала ..........................47
1.5.3. Непрерывное преобразование Фурье .....................................................47
388
Содержание
1.5.4.
1.5.5.
1.5.6.
1.5.7.
1.5.8.
1.5.9.
Быстрое преобразование Фурье (БПФ)..................................................49
Примеры выполнения БПФ....................................................................51
Альтернативные преобразования Фурье ................................................53
Эффект Гиббса .........................................................................................54
Способы подавления эффекта Гиббса....................................................55
Улучшенное моделирование сигналов на основе спектрального подхода ...............................................................................................................56
1.5.10. Улучшенное приближение данных рядом Фурье ................................58
1.5.11. Восстановление сигнала по базису Котельникова ..............................61
1.6. Оконное преобразование Фурье .....................................................................62
1.6.1. Ограничения и недостатки преобразования Фурье...............................62
1.6.2. Кратковременное (оконное) преобразование Фурье ............................64
1.6.3. Функции оконного спектрального анализа в пакете
Signal Processing СКМ Mathcad ..............................................................66
1.6.4. Спектральный анализ с помощью функций
CFFT и pspectrum ....................................................................................67
1.7. Современные методы получения и визуализации спектров.........................67
1.7.1. Спектры на основе оконного преобразование Фурье...........................67
1.7.2. Времячастотное билинейное представление спектра сигналов ...........70
1.7.3. Представление Вагнера ............................................................................71
1.7.4. Представление Маргинау—Хилла ...........................................................71
1.7.5. Представление Чои—Вильямса ...............................................................72
1.7.6. Представление Борна—Жордана и коническое представление ...........73
1.7.7. Трехмерное представление спектров Фурье...........................................73
1.7.8. Трехмерные вейвлет-спектрограммы......................................................75
Глава 2. Вейвлеты и вейвлет-преобразования ...........................................................77
2.1. Некоторые математические понятия теории вейвлетов ...............................77
2.1.1. Наглядный пример вейвлет-преобразований
с применением вейвлета Хаара ..............................................................77
2.1.2. Пространство сигналов и его базисы .....................................................79
2.1.3. Скалярное произведение функций .........................................................79
2.1.4. Норма функции ........................................................................................80
2.1.5. Ортогональность и ортонормированность .............................................80
2.1.6. Базис Рисса ...............................................................................................80
2.2. Основы теории вейвлет-преобразований .......................................................81
2.2.1. Идея вейвлет-преобразования.................................................................81
2.2.2. Аппроксимирующая и детализирующая компоненты вейвлет-анализа
и синтеза сигналов .................................................................................85
2.2.3. Непрерывное прямое вейвлет-преобразование .....................................87
2.2.4. Примеры выполнения прямого вейвлет-преобразования ....................88
2.2.5. Вейвлеты в частотной области ................................................................92
2.2.6. Обратное непрерывное вейвлет-преобразование ..................................93
2.2.7. Сравнение различных представлений сигналов ....................................95
2.2.8. О скорости вычислений при вейвлет-преобразованиях .......................95
2.3. Кратномасштабный анализ..............................................................................96
2.3.1. Первое понятие об ортогональных вейвлетах........................................96
2.3.2. Диадное вейвлет-преобразование непрерывных сигналов ...................97
2.3.3. Практические примеры вейвлет-преобразований в среде Mathcad ...100
389
Содержание
2.3.4. Кратномасштабный анализ....................................................................105
2.3.5. Кратномасштабный вейвлет-анализ в пакете Wavelet Toolbox.............107
2.3.6. Точное и грубое разрешение .................................................................108
2.4. Частотный подход и быстрое вейвлет-преобразование ..............................109
2.4.1. Частотный подход к вейвлет-преобразованиям...................................109
2.4.2. Основы вейвлет-фильтрации.................................................................110
2.4.3. Квадратурные фильтры ..........................................................................111
2.4.4. Быстрое вейвлет-преобразование и алгоритм Малла..........................113
2.5. Специальные вопросы вейвлет-преобразований .........................................115
2.5.1. Пакетные вейвлеты ................................................................................115
2.5.2. Дискретный вейвлет-анализ и временные ряды..................................116
2.5.3. Двумерные вейвлеты ..............................................................................117
2.5.4. Вейвлет-компрессия сигналов и изображений
и их очистка от шумов ..........................................................................118
2.6. Конструирование вейвлетов ..........................................................................119
2.6.1. Общий подход.........................................................................................119
2.6.2. Конструирование вейвлета Хаара .........................................................120
2.6.3. Конструирование вейвлета Добеши 4...................................................122
2.6.4. Сравнение различных типов простых вейвлетов.................................123
2.7. Вейвлеты в пакете Wavelet Toolbox СКМ MATLAB....................................124
2.7.1. Типы вейвлетов в пакете Wavelet Toolbox ............................................124
2.7.2. Вейвлет-менеджер — wavemngr .............................................................125
2.8. Семейство вейвлет-фильтров пакета Wavelet Toolbox ....................................129
2.8.1. Множество фильтров биортогонального вейвлета — biorfilt ..............129
2.8.2. Множество фильтров ортогонального вейвлета — orthfilt ..................131
2.8.3. Фильтры ортогональных или биортогональных вейвлетов — wfilters132
2.8.4. Биортогональный сплайновый вейвлет-фильтр — biorwavf ...............133
2.8.5. Комплексный гауссовский вейвлет — cgauwavf...................................134
2.8.6. Комплексный вейвлет Морле — cmorwav ............................................134
2.8.7. Вейвлет-фильтр Койфлета — coifwavf ..................................................135
2.8.8. Вейвлет-фильтр Добеши — dbaux и dbwavf..........................................135
2.8.9. Частотный B-сплайновый вейвлет — fbspwavf.....................................136
2.8.10. Гауссовый вейвлет — gauswavf.............................................................137
2.8.11. Вейвлет «мексиканская шляпа» — mexihat ........................................137
2.8.12. Вейвлет-функция Мейера — meyer и meyeraux .................................138
2.8.13. Вейвлет Морле — morlet ......................................................................138
2.8.14. Обратный биортогональный вейвлет-фильтр — rbiowavf .................139
2.8.15. Вейвлет-фильтр Шеннона ...................................................................139
2.8.16. Масштабирующие фильтры вейвлета Симлета —
symaux и symwavf....................................................................................140
2.9. Сравнение вейвлетов разного типа ...............................................................140
2.9.1. Грубые (Crude) вейвлеты .......................................................................140
2.9.2. Бесконечные регулярные вейвлеты ......................................................141
2.9.3. Ортогональные вейвлеты с компактным носителем ...........................141
2.9.4. Биортогональные парные вейвлеты с компактным носителем..........142
2.9.5. Комплексные вейвлеты..........................................................................142
2.10. Примеры вейвлет-обработки данных, сигналов и изображений .............142
2.10.1. Вейвлет- и вейвлет/медианное сглаживание......................................142
390
Содержание
2.10.2. Комбинированное сглаживание вейвлетами
и фильтром «скользящее среднее» .......................................................144
2.10.3. Вейвлет-сплайновое сглаживание .......................................................144
2.10.4. Вейвлет-обработка и компрессия изображения.................................145
2.10.5. Двумерные способы декомпозиции изображений.............................148
Глава 3. Работа с Wavelet Toolbox в командном режиме .......................................149
3.1. Краткая характеристика пакета расширения Wavelet Toolbox ...................149
3.1.1. Назначение пакета Wavelet Toolbox ......................................................149
3.1.2. Справка по пакету в командном режиме .............................................149
3.1.3. Техническая документация по пакету Wavelet Toolbox.......................154
3.2. Основные функции вейвлет-анализа ............................................................155
3.2.1. Центральная частота — centfrq..............................................................155
3.2.2. Уменьшение размера матрицы вдвое — dyaddown ..............................156
3.2.3. Увеличение размера матрицы вдвое — dyadup ....................................156
3.2.4. Интеграл от вейвлет-функции — intwave .............................................157
3.2.5. Масштабирование к частоте — scal2frq ................................................158
3.2.6. Вейвлет и масштабирующие функции — wavefunavefun.....................160
3.2.7. Максимальный уровень вейвлет-разложения — wmaxlev ...................161
3.3. Утилиты управления построением деревьев ................................................161
3.3.1. Обзор утилит управления построением деревьев ................................161
3.3.2. Построение дерева разложения пакетного вейвлета — drawtree ........162
3.3.3. Построение дерева — plot ......................................................................162
3.3.4. Построение цветной вейвлет-спектрограммы — wpviewcf .................163
3.4. Основные утилиты..........................................................................................164
3.4.1. Кодированная версия матрицы — wcodemat .......................................164
3.4.2. Утилита расширения — wextend............................................................164
3.4.3. Извлечение — wkeep ..............................................................................166
3.4.4. Разворот вектора — wrev........................................................................166
3.5. Прочие функции.............................................................................................167
3.5.1. Обратное нестандартное БПФ — instdfft..............................................167
3.5.2. Нестандартное прямое БПФ — nstdfft..................................................167
3.5.3. Точки оценки — wvarchg .......................................................................167
3.6. Непрерывное одномерное вейвлет-преобразование .....................................167
3.6.1. Функция одномерного непрерывного
вейвлет-преобразования — cwt .............................................................167
3.6.2. Вейвлет-спектрограмма синусоиды ......................................................168
3.6.3. Вейвлет-спектрограмма слегка искаженной функции синуса ...........169
3.6.4. Вейвлет-представление сигнала с разрывами и шумом......................170
3.6.5. Вейвлет-анализ реальных звуковых сигналов ......................................171
3.7. Дискретное одномерное вейвлет-преобразование .......................................173
3.7.1. Нахождение вейвлет-коэффициентов
одномерного преобразования — appcoef .............................................173
3.7.2. Функция нахождения одномерных детализирующих
коэффициентов — detcoef .....................................................................173
3.7.3. Одноуровневое дискретное одномерное вейвлет-преобразование.....175
3.7.4. Метод расширения вейвлет-преобразования — dwtmode ...................176
3.7.5. Одноуровневое обратное вейвлет-преобразование — idwt .................177
391
Содержание
3.7.6. Прямое восстановление из одномерных вейвлет-коэффициентов —
upcoef.......................................................................................................179
3.7.7. Одноуровневое восстановление одномерного вейвлет-разложения —
upwlew .....................................................................................................181
3.7.8. Многоуровневое одномерное вейвлет-разложение — wavedec...............181
3.7.9. Многоуровневое одномерное вейвлет-восстановление — waverec.....181
3.7.10. Восстановление одиночной ветви из одномерных
вейвлет-коэффициентов — wrcoef ........................................................182
3.8. Дискретное двумерное вейвлет-преобразование .........................................183
3.8.1. Нахождение вейвлет-коэффициентов двумерного
преобразования — appcoef2...................................................................184
3.8.2. Функция нахождения двумерных детализирующих
коэффициентов — detcoef2 ...................................................................184
3.8.3. Одноуровневое дискретное двумерное
вейвлет-преобразование — dwt2 ...........................................................185
3.8.4. Одноуровневое дискретное двумерное обратное
вейвлет-преобразование — idwt2 ..........................................................185
3.8.5. Прямое восстановление из двумерных
вейвлет-коэффициентов — upcoef2 ......................................................186
3.8.6. Многоуровневое двумерное вейвлет-разложение — wavedec2 .............186
3.8.7. Одноуровневое восстановление двумерного
вейвлет-разложения — upwlew2 ............................................................187
3.8.8. Многоуровневое двумерное вейвлет-восстановление — waverec2 .....187
3.8.9. Восстановление одиночной ветви из двумерных
вейвлет-коэффициентов — wrcoef2 ......................................................187
3.9. Пакетные вейвлет-алгоритмы........................................................................188
3.9.1. Наилучшее дерево уровня — bestlevt ....................................................188
3.9.2. Наилучшее дерево по критерию энтропии — besttree.........................189
3.9.3. Вычисление энтропии — wentropy........................................................190
3.9.4. Обновление энтропии — entrupd ..........................................................191
3.9.5. Извлечение вейвлет-дерева из пакетного дерева — wp2wtree ..............191
3.9.6. Пакетные вейвлет-коэффициенты — wpcoef .......................................191
3.9.7. Сечение вейвлет-пакетного дерева — wpcutree....................................192
3.9.8. Пакетное одномерное вейвлет-разложение — wpdec ..........................193
3.9.9. Пакетное двумерное вейвлет-разложение — wpdec2...........................193
3.9.10. Пакетная вейвлет-функция — wpfun ..................................................193
3.9.11. Перекомпонованный пакетный вейвлет — wpjoin ............................194
3.9.12. Восстановление коэффициентов пакетного вейвлета — wprcoef .....194
3.9.13. Пакетное вейвлет-восстановление — wprec и wprec2........................195
3.10. Дискретное стационарное вейвлет-преобразование......................................195
3.10.1. Дискретное стационарное одномерное
вейвлет-преобразование — swt..............................................................195
3.10.2. Обратное одномерное стационарное дискретное
wavelet-преобразование — iswt..............................................................196
3.11. Удаление шумов и сжатие сигналов ...........................................................196
3.11.1. Принципы очистки сигналов и шумов...............................................196
3.11.2. Генерация тестовых сигналов — wnoise..............................................197
3.11.3. Установка параметров по умолчанию — ddencmp.............................197
392
Содержание
3.11.4. Выбор порога для удаления шумов — thselect ...................................199
3.11.5. Штрафной порог для удаления шума — wbmpen ..............................200
3.11.6. Порог одномерного вейвлета — wdcbm..............................................200
3.11.7. Удаление шумов и сжатие с использованием пакетного вейвлета —
wpdencmp ................................................................................................202
3.11.8. Порог коэффициентов пакетного вейвлета — wpthcoef....................202
3.11.9. Одномерный порог вейвлет-коэффициентов — wthcoef...................203
3.12. Удаление шумов при специальных порогах ...............................................203
3.12.1. Автоматическое одномерное удаление — wden .................................203
3.12.2. Удаление шума с сжатием — wdencmp ...............................................205
3.12.3. Оценка шума одномерных вейвлет-коэффициентов — wnoisest ......206
3.12.4. Штрафной порог для удаления шумов пакетного вейвлета —
wpbmpen ..................................................................................................207
3.12.5. Установка гибкого или жесткого порогов — wthresh ........................208
3.12.6. Управление параметрами порога — wthrmngr....................................209
3.13. Вейвлет-обработка изображений.................................................................209
3.13.1. Дискретное стационарное двумерное
вейвлет-преобразование — swt2............................................................209
3.13.2. Обратное стационарное двумерное дискретное
вейвлет-преобразование — iswt2...........................................................211
3.13.3. Двумерный порог вейвлет-коэффициентов — wthcoef2....................211
3.13.4. Порог двумерного вейвлета — wdcbm2...............................................211
3.13.5. Создание архива отпечатков пальцев..................................................212
3.13.6. Очистка изображения от шума............................................................213
3.14. Пакет расширения Wavelet Toolbox 2.1/2.2 ................................................214
3.14.1. Новые возможности пакета Wavelet Toolbox 2.1................................214
3.14.2. Новая функция disp ..............................................................................214
3.14.3. Новая функция wavefun2......................................................................215
3.14.4. Новые возможности пакета Wavelet Toolbox 2.2................................216
Глава 4. Работа с GUI пакета Wavelet Toolbox ......................................................217
4.1. Графический интерфейс пользователя — GUI............................................217
4.1.1. Вызов окна GUI пакета Wavelet Toolbox — wavemenu .......................217
4.1.2. Визуализация вейвлетов — окно Wavelet Display ................................217
4.1.3. Доступ к демонстрационным примерам — wavedemo ........................221
4.1.4. Работа с демонстрационными примерами ...........................................222
4.1.5. Просмотр примера Short 1D scenario....................................................224
4.1.6. Демонстрационные примеры GUI........................................................226
4.2. Выявление особенностей функций и сигналов ...........................................226
4.2.1. Вейвлет-представление скачка уровня .................................................226
4.2.2. Обнаружение скачков во времени ........................................................228
4.2.3. Анализ функций и сигналов по фазовому сдвигу ...............................228
4.2.4. Анализ скачка по частоте синусоиды ...................................................229
4.2.5. Вейвлет-анализ фрактальной кривой ...................................................230
4.2.6. Анализ функций и сигналов с помощью пакетных вейвлетов...........231
4.3. Применение дискретных вейвлетов ..............................................................231
4.3.1. Обработка сигнала с шумом ..................................................................231
4.3.2. Статистическая обработка сигналов .....................................................232
393
Содержание
4.3.3. Компрессия сигналов .............................................................................234
4.4.4. Очистка сигнала от шума.......................................................................234
4.4.5. Очистка сигналов от шумов с помощью стационарных вейвлетов ...236
4.4.6. Оценка плотности сигналов ..................................................................236
4.4.7. Регрессия по результатам оценки плотности сигналов ......................237
4.4.8. Расширение и экстраполяция сигналов ...............................................238
4.5. Вейвлет-обработка изображений...................................................................239
4.5.1. Двумерное вейвлет-разложение и реконструкция изображений .......239
4.5.2. Двумерное пакетное вейвлет-разложение
и реконструкция изображений .............................................................240
4.5.3. Компрессия изображения и очистка его от шума ...............................242
4.5.4. Расширение изображений......................................................................243
4.6. Вейвлеты в пакете DSP ..................................................................................244
4.6.1. Интерполяция с применением вейвлет-преобразований ...................244
4.6.2. Реконструкция сигнала на основе wavelet-преобразования ...............244
4.6.3. Моделирование трехканального wavelet-мультиплексора...................245
4.6.4. Вейвлет-очистка сигнала от шумов ......................................................246
Глава 5. Вейвлеты в системе Mathcad .................................................................247
5.1. Функции вейвлет-преобразований пакета Numeric Recipes .......................247
5.2. Пакет Wavelet Extension для системы Mathcad ............................................248
5.2.1. Назначение пакета Wavelet Extension ...................................................248
5.2.2. Род вейвлет-преобразований и фильтры..............................................248
5.2.3. Функции одномерного вейвлет-преобразования.................................250
5.2.4. Визуализация вейвлетов.........................................................................251
5.2.5. Функции одномерного дискретного вейвлет-преобразования ...........255
5.2.6. Одномерная вейвлет-аппроксимация ...................................................257
5.3. Одномерный кратномасштабный анализ .....................................................259
5.3.1. Функция кратномасштабного анализа .................................................259
5.3.2. Аппроксимация на основе кратномасштабного анализа ....................260
5.3.3. Кратномасштабный анализ зашумленного сигнала ............................261
5.3.4. Кратномасштабная аппроксимация сигналов
с шумом ..................................................................................................262
5.4. Двумерное вейвлет-преобразование ................................................................262
5.4.1. Функции создания двумерных вейвлетов.............................................262
5.4.2. Двумерное дискретное вейвлет-преобразование .................................265
5.4.3. Двумерная вейвлет-аппроксимация и интерполяция .........................266
5.4.4. Двумерный кратномасштабный анализ ................................................267
5.4.5. Двумерная кратномасштабная аппроксимация ...................................268
5.5. Вейвлет-пакетные преобразования ...............................................................269
5.5.1. Функция пакетного вейвлет-преобразования wpt ...............................269
5.5.2. Визуализация таблицы пакетных вейвлетов ........................................270
5.5.3. Другие функции пакетных вейвлетов ...................................................270
5.5.4. Функции для работы с уровнями пакетного базиса............................270
5.5.5. Визуализация пакетного базиса матрицы ............................................271
5.5.6. Наилучший алгоритм нахождения базиса ............................................272
5.5.7. Другие функции для работы с базисами ..............................................275
5.5.8. Обратные пакетные вейвлет-преобразования ......................................275
394
Содержание
5.6. Дискретные косинусные преобразования (DCT) ........................................275
5.6.1. Основные определения DCT .................................................................275
5.6.2. Локальные косинусные преобразования ..............................................276
5.6.3. Тайперы для локального косинусного преобразования......................278
5.6.4. Обратное локальное косинусное преобразование ...............................279
5.6.5. Использование тайперов в локальном косинусном анализе ..............279
5.7. Дополнительные возможности пакета Wavelet Extension .....................................281
5.7.1. Удаление шумов у сигналов установки ЯМР.......................................281
5.7.2. Адаптивные методы очистки от шума ..................................................282
5.7.3. Времячастотные диаграммы ..................................................................284
5.7.4. Компрессия изображений......................................................................284
5.7.5. Функции вставки и извлечения полос .................................................286
5.7.6. Вейвлет-компрессия реальных звуковых сигналов .............................286
5.7.7. Двумерная интерполяция.......................................................................289
Глава 6. Работа с пакетом Wavelet Explorer системы Mathematica ........................290
6.1. Пакет Wavelet Explorer для СКМ Mathematica 4/4.1/4.2/5 .........................290
6.1.1. Назначение и место пакета Wavelet Explorer .......................................290
6.1.2. Загрузка пакета Wavelet Explorer ...........................................................290
6.2. Задание вейвлетов в Wavelet Explorer ...........................................................292
6.2.1. Основные типы вейвлет-фильтров........................................................292
6.2.2. Примеры вычисления коэффициентов вейвлет-фильтров .................293
6.3. Вычисление масштабирующих и вейвлет-функций ....................................294
6.3.1. Функции ScalingFunction и Wavelet ......................................................294
6.3.2. Построение графиков функций для биортогонального
сплайнового вейвлета ............................................................................296
6.3.3. Функция WaveletPacket для пакетных вейвлетов.................................297
6.3.4. Пример задания двумерного вейвлета Койфлета ................................298
6.3.5. Функции MeyerPhi и MeyerPsi для вейвлетов Мейера .......................299
6.3.6. Функции ShannonPhi и ShannonPsi для вейвлетов Шеннона ............300
6.3.7. Функции SplinePhi и SplinePsi для ортогональных
сплайновых вейвлетов ...........................................................................301
6.3.8. Функция BSpline для построения B-сплайна ......................................301
6.4. Анализ масштабирующих и вейвлет-функций.............................................302
6.4.1. Вычисление производных phi- и psi-функций.....................................302
6.4.2. Обзор деталей основных функций вейвлетов ......................................303
6.5. Задание и применение временных окон ......................................................304
6.5.1. Функция WindowFunction и тайперы ...................................................304
6.5.2. Примеры задания временных окон ......................................................305
6.5.3. Синусные и косинусные пакеты ...........................................................306
6.6. Основные виды преобразований...................................................................307
6.6.1. Прямое и обратное вейвлет-преобразования.......................................307
6.6.2. Кратномасштабный анализ....................................................................308
6.6.3. Графическое представление вейвлет-коэффициентов ........................309
6.6.4. Прямое и обратное пакетное вейвлет-преобразование.......................310
6.6.5. Графическая иллюстрация базиса.........................................................311
6.6.6. Опции вейвлет-преобразований............................................................312
6.7. Специальные виды преобразований .............................................................312
395
Содержание
6.7.1.
6.7.2.
6.7.3.
6.7.4.
Локальные синусные и косинусные преобразования .........................312
Преобразования Малвара ......................................................................314
Синусные и косинусные пакетные преобразования ...........................314
Вычисление коэффициентов синусных
и косинусных пакетных преобразований ............................................315
6.7.5. Пример применения косинусного пакетного преобразования ..........315
6.8. Техника улучшенной визуализации вейвлет-преобразований ...................316
6.8.1. Функция PhaseSpacePlot ........................................................................316
6.8.2. Примеры построения спектрограмм.....................................................317
6.8.3. Функция GrayCodeOrder........................................................................317
6.8.4. Спектрограммы для синусного пакетного преобразования ...............318
6.8.5. Задание рамки для графика функции ShowBasisPosition ....................318
6.8.6. Построение изображений ......................................................................318
6.8.7. Визуализация коэффициентов двумерного
вейвлет-преобразования ........................................................................319
6.8.8. Визуализация структуры базиса двумерного
вейвлет-преобразования ........................................................................319
6.8.9. Визуализация коэффициентов двумерного пакетного вейвлет-преобразования ................................................................................................320
6.9. Обработка одномерных сигналов и функций ..............................................321
6.9.1. Оценка кумулятивной энергии .............................................................321
6.9.2. Вейвлет-компрессия сигналов...............................................................321
6.9.3. Вейвлет-очистка сигналов от шума ......................................................322
6.10. Вейвлет- и фурье-анализ и синтез сложных сигналов ..............................324
6.10.1. Вейвлет-приближение решения уравнения Бурга .............................324
6.10.2. Сравнение с фурье-приближением .....................................................326
6.10.3. Другой случай вейвлет-анализа и синтеза сложной функции..........327
6.10.4. Сравнение второго варианта с фурье-анализом и синтезом ............328
6.10.5. Оценка погрешности при приближении вейвлетами
и рядами Фурье с компрессией ............................................................329
6.10.6. Приближение функции вейвлетами
и рядами Фурье с компрессией ............................................................330
6.11. Обработка звуковых сигналов с компрессией
с помощью пакетного косинусного преобразования................................330
6.11.1. Получение звукового сигнала и его контроль ...................................330
6.11.2. Прямое пакетное косинусное преобразование звукового сигнала ..331
6.11.3. Сравнение методов компрессии звукового сигнала ..........................332
6.11.4. Пример реконструкции звукового сигнала ........................................332
6.12. Обработка изображений в пакете Wavelet Explorer .....................................333
6.12.1. Предварительные замечания................................................................333
6.12.2. Подготовка массива изображений и его просмотр............................334
6.12.3. Вейвлет-декомпозиция изображения..................................................334
6.12.4. Реставрация изображения ....................................................................337
6.12.5. Обработка изображений с помощью пакетных вейвлетов................337
6.12.6. Компрессия отпечатков пальцев на основе локального
косинусного преобразования ................................................................339
Глава 7. Состояние и перспективы развития вейвлет-технологии ..........................341
7.1. Источники информации по вейвлетам.........................................................341
396
Содержание
7.1.1. Литература по вейвлетам .......................................................................341
7.1.2. Отражение работ по вейвлетам в Интернете .......................................342
7.1.3. Интернет-сайт вейвлет-дайджест ..........................................................342
7.1.4. Интернет-сайт вейвлет-центра The IDR Wavelet Center .....................342
7.1.5. Интернет-сайт корпорации MathSoft ...................................................346
7.1.6. Сайт корпорации Wolfram Research ......................................................346
7.1.7. Интернет-сайт Amara's ...........................................................................347
7.1.8. Русскоязычные Интернет-сайты по вейвлетам ...................................348
7.2. Программное обеспечение по вейвлетам .....................................................352
7.2.1. Открытость программного обеспечения по вейвлетам .......................352
7.2.2. Свободно распространяемые пакеты расширения
системы MATLAB ..................................................................................355
7.2.3. Вейвлет-технология в графической системе Corel DRAW .................356
7.3. Вейвлет-технологии в графике ......................................................................358
7.3.1. Типовая обработка сигналов графики ..................................................358
7.3.2. Вейвлеты в компьютерной графике......................................................361
7.3.3. Вейвлет-технологии в Интернете..........................................................362
7.3.4. Вейвлеты в видеоаппаратуре .................................................................363
7.4. Вейвлеты в науке, технике и медицине........................................................364
7.4.1. Вейвлеты в математике и в физике ......................................................364
7.4.2. Вейвлет-анализ фотографий турбулентности.......................................365
7.4.3. Вейвлет-анализ данных микроскопического исследования ...............366
7.4.4. Вейвлеты в медицине .............................................................................367
7.4.5. Моделирование процесса смешения фракций ....................................368
7.4.6. Вейвлеты в анализе специальных функций и сигналов .....................369
7.4.7. Вейвлеты в анализе временных рядов ..................................................372
7.7.8. Вейвлеты в предсказании событий .......................................................373
7.7.9. Вейвлеты в цифровой стеганографии...................................................375
7.8. Дополнительные примеры применения вейвлет-технологий.....................376
7.8.1. Сглаживание и редактирование сложных кривых...............................376
7.8.2. Вейвлет-обработка реальных изображений..........................................377
7.8.3. Сжатие сейсмических сигналов.............................................................380
7.8.4. Вейвлеты и нейронные сети ..................................................................380
7.8.5. Нейросетевой прогноз с вейвлет-обработкой ......................................381
Заключение .........................................................................................................385
Список литературы..............................................................................................386
397
2 стр. магазины
Серия «Полное руководство пользователя»
Владимир Павлович Дьяконов
Вейвлеты.
От теории к практике
Ответственный за выпуск
В. Митин
Макет и верстка
А. Иванова
Обложка
Е. Холмский
ООО «СОЛОН-Пресс»
123242, г. Москва, а/я 20
Телефоны:
(095) 254-44-10, (095) 252-36-96, (095) 252-25-21
E-mail: Solon-R@coba.ru
По вопросам приобретения обращаться:
ООО «Альянс-книга»
Тел: (095) 258-91-94, 258-91-95, www.abook.ru
ООО «СОЛОН-Пресс»
127051, г. Москва, М. Сухаревская пл., д. 6, стр. 1 (пом. ТАРП ЦАО)
Формат 70×100/16. Объем 25 п. л. Тираж 1000 экз.
отпечатано в ООО «Аделия»
142605, Московская обл., г. Орехово-Зуево,
ул. Красноармейская, д. 1
Заказ №
Download