реклама на сайте
подробности

 
 
> Нахождение самого похожего участка в сигнале, БПФ, БПХ и другие методы
getch
сообщение Sep 2 2011, 10:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335



Приветствую всех!

Я от ЦОС далек, но задача, по-моему, найдет здесь понимание.

Постановка задачи:
1. Есть ВР (временной ряд (вещественный), LEN точек), который с определенной частотой дополняется новым членом.
2. Есть Шаблон - N точек.
3. Надо найти в ВР участок, который наиболее сильно "похож" на Шаблон. Соответственно, в этом участке тоже N точек.

Критерием похожести я выбрал КК (коэффициент корреляции). Т.е. задача сводится к нахождению максимума абсолютного значения КК.

Нашел два оптимизированных алгоритма расчета быстрой корреляции: через БПФ (вещественное) и БПХ (Хартли).

Честно говоря, математическую часть алгоритмов слабо понимаю. И у меня возникло несколько вопросов:
1. Имеет ли смысл для моей задачи (с точки зрения скорости выполнения) использовать алгоритм БПФ для длин векторов, не являющихся степенями двойки? Это работы Бейли, Просекова и другие.
2. БПФ Винограда?
3. Возможно, есть другой эффективный критерий похожести, отличный от КК.
4. Задача, очевидно, стандартная и максимально эффективный велосипед уже давно изобретен. Подскажите, как официально она называется?
5. Какие могут быть оптимизации, чтобы не проделывать полностью вычисления БПФ? Поясню ниже на примере двух случаев:

1. Шаблон - это крайние N точек исходного ВР из Len точек. Пришло новое значение ВР, т.е. его длина стала (Len + 1) точек. Шаблон, соответсвенно "сместился" вправо (изменился) тоже на одно значение. БПФ заново пересчитывать?
2. Шаблон - это какой-то участок из N точек исходного ВР. Если я сдвигаю шаблон на одну точку в какую-то сторону, БПФ надо будет полностью пересчитывать?

И еще один вопрос, если надо найти похожий участок не только на шаблон, но и на "перевернутый шаблон" - точки в обратном направлениии (Было {1, 2, 5, 7}, стало {7, 5, 2, 1}), то можно ли из "нормального" БПФ перейти эффективно к "перевернутому" БПФ?

Уверен, моя косноязычная формулировка задачи вызовет улыбку у форумчан, особенно у гуру. Но это все же хорошие эмоции. Готов учиться и вникать.

P.S. Если возможно, разъясните на более понятном языке, что имелось в виду в этом посте (Сообщение #28)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alexey Lukin
сообщение Sep 9 2011, 23:32
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Если на каждом новом отсчёте меняется и шаблон, то я не понимаю, как БПФ ускорит вычисление корреляции в одной точке. Или с каждым новым шаблоном надо считать корреляцию во множестве точек?
Go to the top of the page
 
+Quote Post
getch
сообщение Sep 10 2011, 01:14
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335



Да, с каждым новом шаблоном нужно считать корреляцию во всем множестве точек исходного сигнала.

И тут есть две ситуации:
1. Меняется только шаблон, сигнал - нет. Тогда БПФ сигнала делать повторно не требуется при расчете корреляции. Делается только прямое БПФ шаблона и обратное БПФ.
2. Меняется и шаблон и сигнал (добавляется один отсчет). Вот тут и хочу БПФ сигнала с новым отсчетом получить из ранее посчитанного БПФ сигнала без этого отсчета.
Go to the top of the page
 
+Quote Post
getch
сообщение Sep 10 2011, 04:46
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335



На другом форуме есть очень схожая по задаче тема: Распознавание звукового сигнала (звука) по образцам.

Привожу цитату одного поста оттуда:
Цитата
Я бы делал так. Взял бы базу. Для каждого фаила разбить на фрагменты с 50% перекрытием
Каждый фрагмент длительностью около 0.1с (44.1КГц*0.1=4410 отсчетов) все фрагменты имеет одинаковую длительность.

Вычислить для каждого фрагмента БПФ найти максимумы амплитуды в полосах
0-2Гц
2-4Гц
4-8Гц
8-16Гц
16-32Гц
32-64Гц
64-128Гц
128-256Гц
256-512Гц
512-1024Гц
1024-2048Гц
2048-4096Гц

итого 12 коэффициентов, в секунде будет 240 коэффициентов вместо ваших 4000 что в 20 раз быстрее будет.
пусть у нас в среднем 5 минут на 1000 файлов= 5*60*240*1000= 72 000 000 будет считаться за доли секунд
Но это не все если эти коэффициенты представить в виде чисел от 0..255 или 0..16 то возможно составить словарь.
Вариантов если их окажется меньше то просто будешь по этому словарю искать наиболее близкое слово.
Или подумать о нечетком поиске или о эвристических методах и др способах кластеризации.

Т.е. предлагаются альтернативные корреляции варианты, а также упоминается возможность значительного уменьшения признаков сравнения.

Кто-нибудь использовал отличные от корреляционного методы или занимался уменьшением признаков сравнения?

У меня корреляция через оптимизированный (насколько мог) БПФ считается, к сожалению, не так быстро, как хотелось бы.
Go to the top of the page
 
+Quote Post
getch
сообщение Sep 10 2011, 08:10
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335



Поискал в интернете схожие задачи. Выкладываю ссылки, возможно, кому-то пригодятся:

Контурный анализ.
Видео создания шаблона.
Видео нахождения шаблона(-ов).

Обнаружение устойчивых признаков изображения: метод SURF.

«Выглядит похоже». Как работает перцептивный хэш.

Алгоритм быстрого нахождения похожих изображений.

Презентация «Поиск изображений. Методы индексирования изображений. Методы на основе хэш-функций. Обучение метрик. Фильтры объектов для классификации и поиска изображений.» (из курса лекций Введение в компьютерное зрение)

Блог Распознавание образов для программистов.


Тематические реализации (поисковики):

Поиск изображений по исходному изображению.
Распознавание шрифта по картинке.
Поиск песни по ритму.
Поиск песни по аудио-образцу.
Поиск песни по напеву.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- getch   Нахождение самого похожего участка в сигнале   Sep 2 2011, 10:58
- - Porty   RE: Нахождение самого похожего участка в сигнале   Sep 2 2011, 11:32
|- - getch   Цитата(Porty @ Sep 2 2011, 14:32) подобно...   Sep 2 2011, 12:49
|- - Porty   Цитата(getch @ Sep 2 2011, 16:49) Могли б...   Sep 2 2011, 13:09
|- - getch   Цитата(Porty @ Sep 2 2011, 16:09) 5. Выч...   Sep 2 2011, 13:34
|- - Porty   Цитата(getch @ Sep 2 2011, 17:34) Похоже,...   Sep 2 2011, 13:49
- - Alexey Lukin   Цитата(getch @ Sep 2 2011, 14:58) Критери...   Sep 2 2011, 13:52
|- - getch   Цитата(Alexey Lukin @ Sep 2 2011, 16:52) ...   Sep 2 2011, 14:01
- - ivan219   Так мне же и надо иметь (Len - N) значений КК, что...   Sep 2 2011, 19:11
|- - getch   Написал алгоритм быстрой корреляции через БПФ. Как...   Sep 8 2011, 21:09
|- - getch   Врубился, как сделать. Надо лишь перед БПФ привест...   Sep 9 2011, 06:19
|- - getch   Подскажите, есть ли возможность из RealFFT(Signal,...   Sep 9 2011, 17:09
- - Alexey Lukin   Обычно это делается не по одному отсчёту, а по бло...   Sep 9 2011, 17:15
|- - getch   Герцеля смотрел ранее, но перед тем, как его приме...   Sep 9 2011, 18:55
- - Alexey Lukin   Если сигнал поступает по 1 отсчёту, то ни Герцель,...   Sep 9 2011, 21:54
|- - getch   Цитата(Alexey Lukin @ Sep 10 2011, 00:54)...   Sep 9 2011, 22:55
- - eugen_pcad_ru   Кхм, может я глупый вопрос задам, но: метод наимен...   Sep 19 2011, 09:55
- - getch   Цитата(eugen_pcad_ru @ Sep 19 2011, 13:55...   Sep 22 2011, 10:55
- - xemul   Цитата(getch @ Sep 22 2011, 14:55) Алгори...   Sep 22 2011, 11:41
- - getch   Цитата(xemul @ Sep 22 2011, 15:41) Ещё ху...   Sep 22 2011, 11:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 08:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016