Re: обработка изображений с помощью вейвлетов


Сайт о сжатии >> Форум #Компрессор# >> [Ответить] [Ответы]

Автор: Филь Андрей,
03 ноября 2003 года в 11:57:07

В ответ на : Re: обработка изображений с помощью вейвлетов от Алексей в 31 октября 2003 года в 16:09:38:


Одномерный случай:
Берется вектор отсчетов и сворачивается
с двумя фильтрами. (Размер вектора M - кратен степени 2)
Первый называется фильтром низких частот, второй высоких.
Операция свертки-просто скалярное произведение: берешь первые N отсчетов (если длинна фильтра N) и скалярно умножаешь на фильтр, потом берешь отсчеты с 1 по N+1 (Если считать от 0) и
опять умножаешь, если на некотором умножении ты выходишь за границы исходного вектора то вместо несуществующих отсчетов юзаешь те что в начале (Т.Е. Замыкаешь вектор в кольцо)
В итоге после свертки с одним из фильтров получашь M новых отсчетов: рузультаты скалярных умножений) делаешь также со 2-м фильтром - получаешь еще M
Далее берешь только четные (можно нечетные) Получаешь два вектора по M/2 отсчетов, конкатенируешь и получаешь новый вектор из M отсчетов, пишешь его в исходный, далее по той же схеме обрабатываешь левую половину нового вектора, у той половины опять половину и.т.д. пока левая половина не станет длинны 1. Это и есть результат Вейвлет преобразования. Обратное преобразование аналогично, только движешься наоборот -
левую половину сворачиваешь первым фильтром, правую 2, потом суммируешь.
Но перед сверткой необходимо повставлять 0 через отсчет. Полученный вектор пишешь на часть старого, и.т.д. пока не получишь исходный. Фильтры в обратном преобразовании уже другие.

Двумерный случай: Вначале по строкам, потом по столбцам.

Вот тебе кстати немного фильтров первые 2 для декомпозиции вторые для реставрации.

db4
{(0.230378,0.714847,0.630881,-0.0279838,-0.187035,0.0308414,0.032883,-0.0105974),(0.0105974,0.032883,-0.0308414,-0.187035,0.0279838,0.630881,-0.714847,0.230378),(-0.0105974,0.032883,0.0308414,-0.187035,-0.0279838,0.630881,0.714847,0.230378),(0.230378,-0.714847,0.630881,0.0279838,-0.187035,-0.0308414,0.032883,0.0105974)}
coif2
{(-0.0727326,0.337898,0.852572,0.384865,-0.0727326,-0.0156557),(0.0156557,-0.0727326,-0.384865,0.852572,-0.337898,-0.0727326),(-0.0156557,-0.0727326,0.384865,0.852572,0.337898,-0.0727326),(-0.0727326,-0.337898,0.852572,-0.384865,-0.0727326,0.0156557)};
haar
{(1,1),(-1,1),(1,1),(1,-1)};
Только здесь все фильтры надо на sqrt(2) разделить.

Ответы:



Ответить на это сообщение

Тема:

Имя (желательно полное):

E-Mail:

URL:

Город:

Страна:

Вежливый и подробный комментарий:
(Форматируйте его, пожалуйста, как почту - короткими строками
Еnter в конце строки, пустая строка между параграфами).

Пожалуйста, заполните все поля.
И не нажимайте по два раза на кнопку! Дождитесь ответа сервера.