На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
  
> Обнаружение периодичных прямоугольных импульсов , микшированных в другом сигнале
    Прошу указать путь решения задачи.
    Прямоугольные импульсы имеют небольшую амплитуду, подмешиваются в шумовой-речевой-музыкальный сигнал, и нужно там их найти (определить факт наличия и частоту следования).
    Реализован алгоритм, определяющий частоту импульсов по первой гармонике в спектре сигнала, но таким способом уверенно обнаруживаются только импульсы большой амплитуды -- составляющие спектра "тонут" в шумах.
    Чтобы использовать для анализа все имеющиеся гармоники спектра, использовал функцию автокорреляции, получил последовательность импульсов (максимумов корреляции), частоту следования которых нужно найти (т.е. вернулся к первоначальной задаче).

    Инстинктами чую, что изящное решение должно быть рядом, но не могу найти.
      Haze
      Амплитуда частота, периуд, прямоугольников известны?
      Обычный метод сравнения.
      Перебираем все возможные положения прямоугольника и все возможную длину.
      В качестве сравнения используй разницу суммы(интеграла) там где прямоугольник имеет верхнее положение и нижнее. Фронты в сравнения не должны участвовать.
      Размер прямоугольника ограничь во времени, так чтобы его выпуклость и нормальная составляющая имели пропорции 1/1 или 1/4 думаю меньше не стоит.

      Добавлено
      PS. Для быстрого вычисления интеграла есть трюк. Надо вначале вычислить частичные суммы ряда. Потом просто будешь брать разность между заданными точками.
        Полный перебор -- вообще не подходит, сколько же это времени потребуется, для обработки фонограммы длиной, скажем, в час, тем более, что ни амплитуда, ни частота, ни период не известны, более того, период следования импульсов может немного меняться -- в спектральной области это приведет к размытию пика, а во временной -- к принципиальной невозможности выделения частоты импульсов.
          Haze
          Перебор всех положений N перебор масштаба Log(N)
          Итого N*Log(N).
          Для часового N=3600*50000=180000000=180 Миллионов
          180 М*27*30 тактов= 145800/2 ГГц = 90 секунд

          А если пожертвовать точностью позиционирования, то можно свести до N*2
          180 М*2*30 тактов= 10800/2 ГГц = 5 секунд

          Цитата Haze @
          более того, период следования импульсов может немного менятьс

          Период может и меняться хорошо. Но просто интересует насколько они регулярны к примеру 10 импульсов одинакового периода можно выделить всегда или нет?
          Импульс может длиться несколько секунд? Сколько предположительно импульсов. 1, 2, 10, 100 ? Импульсы подмешаны на всём участке фонограммы или только на определённом?
          За частотную область не берусь, так как вы пока не сказали ничего за что можно зацепиться. А так да скорее всего если есть регулярная структура то в частотной области можно работать и это улучшит качество детектирования. А вот скорость упадёт.
          Сообщение отредактировано: Pavia -
            Цитата
            ни амплитуда, ни частота, ни период импульсов не известны

            Вы имели в виду длительность импульсов(скважность)?
            Но хоть какие-то границы для частоты/длительности есть?
            Цитата
            Прямоугольные импульсы имеют небольшую амплитуду, подмешиваются в шумовой-речевой-музыкальный сигнал, и нужно там их найти (определить факт наличия и частоту следования).

            Приаттачте образец сигнала.
            Сообщение отредактировано: Prince -
              Вообще никакие характеристики импульсов не известны. Частоту можно ограничить от 0,1 до 10 Гц, скважность маленькая, длительность импульса например ~100мс, если это что-то упростит, но меня общий принцип решения интересует, а не конечная реализация.
              И в общем случае импульсы даже не прямоугольные (это я для простоты сказал), а произвольной формы или даже группа коротких произвольных сигналов, следующих через примерно равный период. Например, звук шагов, ударные музыкальные инструменты, тиканье часов, и всё это на фоне других громких звуков. На осциллограмме сигналы даже не заметны (амплитуда основного сигнала больше), а на слух еле-еле различимы (образцы файлов не могу показать). Анализ во временной области бесполезен, считаю. Отчетливо представляю, что создание безошибочного алгоритма принципиально невозможно.
                Haze
                Цитата Haze @
                Анализ во временной области бесполезен, считаю.

                Ничего подобного. Временная и частотная область имеют однозначное преобразование(преобразование Фурье). А значит эти области равнозначны. Просто в одной области некоторые вещи описываются проще другие сложнее.


                Цитата Haze @
                но меня общий принцип решения интересует, а не конечная реализация.

                Общий принцип известен выявляем закономерности и используем их.

                Цитата Haze @
                Например, звук шагов, ударные музыкальные инструменты, тиканье часов, и всё это на фоне других громких звуков. На осциллограмме сигналы даже не заметны (амплитуда основного сигнала больше), а на слух еле-еле различимы

                Инструменты имеют большую амплитуду в частотной области. А вот временной малинку.
                Что касается шагов, тиканья часов это ударные звуки и они напротив имеют большую амплитуду во временной области и маленькую в частотной.
                Ударные импульсы хорошо видны во временной области после удаления высокочастотных шумов(усреднения сигнала).


                Что касается осциллограммы, то скорее всего вы её не правильно используете. Реальные звуки не являются периодическими. Они будут таковыми только на определённом промежутке времени. Поэтому что-бы осциллограмма или спектрограмма отражала действительность надо знать или подобрать времянкой промежуток. На котором нужный сигнал будет периодическим. Добавлю что ещё надо не просто отгадать промежуток, но и по хорошему он должен иметь целое число периодов полезного сигнала. Ошибка определения амплитуды периодического сигнала 1/n, где n - число целых периодов.

                Что касается поиска неизвестного периодического сигнала. То тут надо применять автокоррекцию. Любые не периодические сигналы ослабнут. Но проблему наложения это не решает. Их можно разделить если у вас есть несколько записей с разных точек(у человека 2-уха). И вообще имеет много недостаток поэтому на практике врят ли возможно применить.
                  Цитата Haze @
                  Вообще никакие характеристики импульсов не известны.

                  Если неизвестно, что именно нужно искать, то поиски в принципе обречены на провал.
                  Даже если Вы что-то найдете, никогда не сможете быть уверенным, что нашли именно то, что искали.

                  Поэтому начать обязательно нужно с формулировки признаков, по которым можно однозначно отделить то, что Вам нужно, от всего остального.
                  А потом уже можно будет подумать, как выделить эти признаки из реального сигнала.
                    Цитата andriano @
                    Если неизвестно, что именно нужно искать, то поиски в принципе обречены на провал.
                    Даже если Вы что-то найдете, никогда не сможете быть уверенным, что нашли именно то, что искали.

                    Если это что-то будет следовать через определенный период, то я всегда буду уверен, что нашел именно то, что искал. Без шуток.
                      Haze, единственное, что приходит в голову для поиска непойми чего в чём-то - анализ спетрограмм(картинок) какими-нибудь методами, применяемыми для графических изображений.
                        Haze, может поможет адаптивная филтрация. Есть такие алгоритмы: NoiseBlanker (NB) подавление периодических импульсных помех и NotchFilter (NF) подавление сигнала постоянной частоты (выловить первую гармонику периодических импульсов), и это все для неизвестных параметров этих сигналов. А раз подавляются чем то, значит можно и выделить. Сам пока не применял, буду искать вместе с Вами (только начал).
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,1146 ]   [ 15 queries used ]   [ Generated: 26.04.24, 06:53 GMT ]