![]() |
|
|
![]()
|
|
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Необходимо подавить шум в звуковом сигнале. Имеется его спектр (полученный путём FFT). Никак не могу найти нужную информацию, гуглю уже не одну неделю
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
те сам фильтр или программу? сам фильтр в прогах типа sound forge
можно достаточно просто сделать прогу с фильтром в LabView самому писать прогу на какомнить языке - юзай какойнить стандартный КИХ или БИХ фильтр они просто реализуются и много где описаны |
|||
|
||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Мне нужно программу написать
P.S. Проблема собственно в том, что я пока только в 11 классе, а эта тема очень заинтересовала. В БПФ я вникнул, а вот в цифровую обработку сигналов без разжеванной инфы не могу... :( Это сообщение отредактировал(а) kernel_mode - 18.3.2009, 21:05 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kernel_mode, ты бы теорию изучил тогда сначала, учебик бы по цифровой обработке сигналов почитал... основы надо понимать, а не "БПФ изучил"
вобщем идея такая. есть штука которая должна фильтровать сигнал, она имеет в частотной области частотную характеристику X(f), эта частотная характеристика умножается на спектр входного сигнала S(f), результат перемножения - выходной профильтрованный сигнал S2(f) например, входной сигнал представлен в виде массива значений амплитуд гармоник по частотам, S[N], расстояние между частотами 1Гц, тогда индекс массива численно совпадает с частотой, и у тебя S[200] - амплитуда гармоники на частоте 200Гц тогда берем фильтр высоких частот с характеристикой заданной H[N] и считаем выходной сигнал как for i=0..N-1 do S2[i]=H[i]*S[i] но как следует из теории, спектр сигнала конечной длины бесконечен (и наоборот), поэтому если взять БПФ обычного звукового сигнала всего целиком, а потом преобразовать это обратно во временной сигнал, что что мы получим ни разу не исходный сигнал, т.к. БПФ потеряет немало полезной информации в сигнале, поэтому используют не БПФ всего сигнала, а "мгновенную" БПФ - т.е. сигнала в каком-то окне но такое преобразование из сигнала в его спектр и наоборот слишком затратно, поэтому обычно фильтруют сразу сигнал во временной области. операция произведения спектра на частотную характеристку фильтра эквивалентна операции свертки (сумма произведений) временного сигнала s(t) и импульсной (временной) характеристики фильтра h(t) во временно области: s2(t)=s(t) (+) h(t) (фильтр с Конечной Импульсной Характеристикой называется КИХ фильтром) .... но это все было так, для общего развития реальный шум в акустическом сигнале расположен на тех же частотах (гдето 40Гц-16КГц) что и сам сигнал, реальный сигнал вляется не только суммой С+Ш но и произведением С*Ш, поэтому его невозможно отфильтровать простым линейным фильром для фильтрации шумов в сигнале использую его корреляционные (а может и кепстральные) характеристики, берется характеристика чистого шума, анализируется и с ее помощи пытаются отделить сигнал от шума Добавлено через 1 минуту и 45 секунд вобщем мораль такова, что ты не можешь сейчас ни разобраться с используемым там математическим аппаратом, ни реализовать его программно, юзай sound forge |
|||
|
||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Эх... А я выступить думал в школе напоследок
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
kernel_mode, LP это фильтр низких частот (ФНЧ), HP - высоких (ФВЧ)
да под силу, но это ничего не даст пример фильтра можно посмотреть в википедии |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Посмотри тут
http://forum.vingrad.ru/forum/topic-171436.html я там челу больше года назад показал, как можно сделать фильтр, но видать увидев подход и результат чел понял, что не осилить ему эту задачу... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
cardinal, там нужен был простой (линейный) ФНЧ фильтр
здесь - совсем другая задача |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
GoldFinch, а тут что нужно? У него ведь сигнал записан. Теперь делай с ним что хочешь... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Самый простой вариант. Это приминить БПФ. Нам нужно знать частотные характеристики сигнала и шума. И если они различаются то можем строить фильтр. К примеру у нас полезный сигнал это низкии частоты, а шум высокии. Тогда зануляем высокии частоты. И делаем обратное преобразование. схема фильтрацыы выгледит так. f исходный сигнал -> БПФ-> F частотная характеристика сигнала-> домножаем на фильтр G, который содержит нули там где надо занулить сигнал 1 где сохранить -> делаем обратное БПФ -> f' отфильтрованный сигнал. Тут правда вылазит эффект Гибса. Поэтому что бы его побороть еще используют окна. В теории различают: Филтр Низких Частот Фильтр Высоких Частот Полосовой фильтр Режекторный фильтр В зависимости от того что срезаем, а что оставляем. Существуют как идеальные фильторы, так и реальные. В идеальном случии после частоты среза мы срезаем сигнал. т.е фильтр выглядит как ступенька или буква П. Реальной же отличается от идеального тем что он может быть совершенно другого вида более плавными сгибами. И дает лучший результат.
Плюс немного магии |
|||
|
||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Pavia, в акустическом сигнале шум и сим сигнал лежат в одном диапазоне частот, шум вне слышимого диапазона частот будет просто неслышен человеком, его фильтровать смысла нет
реальный он на то и не идеальный что дает заведомо худший результат фильтр обрабатывающий сигнал во временной области может быть лучше идеального фильтра работающего в частотной области только за счет недостатков цифрового преобразования Фурье поэтому БПФ всего сигнала, "мгновенная" БПФ в окне - не лучший вариант для обработки сигнала, для анализа - хорошо, а для обработки нет
свертка или рекурсия всяко будут быстрее двукратного БПФ |
||||
|
|||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Несогласен. Если матрица свертки маленькая то будет быстрее прямым способом. А если большая то быстрее через БПФ. Только его лучше взять уже готовом види, оптимизированный по скоросте. Судя по вашым сообщениям вы много знаете. Так что спорить не буду. Скажу толкьо то что в той облосте акустики в которой я занимаюсь сигнал лежит в другом диапозоне частот нежеле чем шум, по этому легко отделяется.
Ошибку можно оценить. Но побольшей части в качестве сверки он должен подходить |
|||
|
||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Всем огромное спасибо за разьяснения
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |