-
> Sapersky (18.12.07 16:18) [19]
Полагаю, это Вы не для меня выложили.
По большому счету нет разницы в каком базисе выполнять "фильтрацию" - частотном или временном, точно также как и выполнение фильтрации в частотном базисе может быть выполнено не только с использованием преобразования Фурье.
Поэтому термин "фильтр, убирающий шум" не более чем словосочетание, относящееся к DSP.
А если кто-то решил, что крапинки на изображении это и есть определение термина "шум" - в школу DSP. -
@!!ex © (18.12.07 17:51) [21]> Может найдем книжки по DSP (ЦОС), почитаем вдумчиво лет
> так 3 и все это время не будем тут гадать ?
> Или чтиво западло ?
Чтови не западло. Уже несколько книг распечатал и вдумчиво читаю.
Но задачи две. на решение одной - около недели, на решение второй - два месяца...
И уж конечно у меня нет 3 лет. -
> @!!ex © (18.12.07 17:51) [21]
Так расскажи, может действительно эти задачи яйца выеденного не стоят, а мы тут копья ломаем:) -
@!!ex © (18.12.07 18:59) [23]> [22] Jeer © (18.12.07 18:35)
Первая сводится к удалению высоких частот из файла с музыкой.
Нужна спец обработка файла для проекта.
На это есть неделя.
Вторая - на вэйвлеты. Это с работой. Нужно построить разложение на спектр. для начала в 1D. -
Sapersky (18.12.07 21:02) [24]Jeer © (18.12.07 16:42) [20]
Да, надо было уточнить, что это автору вопроса дополнительная информация. Подумал, что на примере обработки изображений будет понятнее, всё-таки он графикой занимался, и наверняка писал эти ФНЧ в виде шейдеров для блюра.
Первая сводится к удалению высоких частот из файла с музыкой.
В документе по ссылке рекомендуют (если без FT) Gaussian blur.
http://homepages.inf.ed.ac.uk/rbf/HIPR2/gsmooth.htm
Пример 1D-фильтра:
Type
TFilterBuffer = array [-MaxFilterSize..MaxFilterSize] of Single;
// генерация "ядра" фильтра ("на лету" считать можно, но медленно)
// Size - половина фильтра, т.е. 2 => -2..2 => по 5 точкам
// Sigma - Gauss koeff, controls the strength of filter
// NB: kernel size must be proportional to Sigma to get correct approximation,
// e.g Sigma=1.5 -> Size=2, Sigma=2 -> Size=3, etc (лень переводить :)
procedure GenGaussKernel(Size : Integer; Sigma : Single; Var Dst : TFilterBuffer);
Var x : Integer;
ss, DivVal, v : Single;
begin
ss:=2*Sqr(Sigma);
DivVal:=(Sqrt(Pi2) * Sigma);
v:=0;
For x:=-Size to Size do begin
Dst[x]:=Exp(-Sqr(x)/ss) / DivVal; v:=v + Dst[x];
end;
v:=(1-v) / (Size * 2 + 1);
For x:=-Size to Size do Dst[x]:=Dst[x] + v;
end;
// собственно фильтрация. Размер фильтра здесь жёстко забит
s := Src.PStart; e := Src.PEnd;
Dst.Data[s] := Src.Data[s]; Inc(s);
Dst.Data[s] := Src.Data[s]; Inc(s);
Dst.Data[e] := Src.Data[e]; Dec(e);
Dst.Data[e] := Src.Data[e]; Dec(e); // начало и конец просто копируем
For n:=s to e do begin
sum:=0;
For m:=-2 to 2 do sum:=sum + Src.Data[n+m] * lcmGaussKernel[m];
Dst.Data[n]:=sum;
end;
В сущности, MBo в [7] примерно это и предлагал, только там фильтр "половинчатый" и форма аппроксимируется грубее (хотя для 3 точек может и сойдёт). -
@!!ex © (18.12.07 18:59) [23]
> Первая сводится к удалению высоких частот из файла с музыкой.
Это не постановка задачи, а только ее начало.
Как бы я примерно спросил:)
Требуется, разработать ФНЧ (LPF) для уменьшения доли верхних частот в музыкальных файлах формата wave ( к примеру ).
Требования к фильтру:
- регулируемая частота среза от [Fmin] до [Fmax], задаваемая по уровню 0.7 или - 3 dB;
- частота дискретизации [исходная из файла]
- допускаемая нелинейность фазо-частотной характеристики [5]%
- крутизна спада АЧХ не менее [40] dB
- неравномерность АЧХ в полосе пропускания не более [1] dB;
- неравномерность в полосе задерживания [10] dB;
- подавление сигнала в полосе задерживания не менее [-60] dB;
- вносимый уровень шумов не более [-10] dB; -
> Вторая - на вэйвлеты. Это с работой. Нужно построить разложение
> на спектр. для начала в 1D.
Это тоже не постановка, а фривольное утверждение, что нужны вейвлеты для разложения чего-то на спектр. Чем FFT не угодил ? -
@!!ex © (19.12.07 14:34) [27]> Это тоже не постановка, а фривольное утверждение, что нужны
> вейвлеты для разложения чего-то на спектр. Чем FFT не угодил
> ?
Фича в том, что у меня такая задача стоит.
Это вообще практически дословно то, что мне сказали сделать. :)
Там анализ волнового пространства для Геодезии.
FFT у них реализован, но с ним проблемы из-за того, что всплески размазываются по всему спектру. Получается белый шум. В вэйвлетах это не так заметно, потому что размазываени всплеска локально.
> [25] Jeer © (19.12.07 11:24)
Проблема в том, что я уже вчера нарвался.... Оказалось, что копоративную информацию наших партнеров опубликовал... По всей фирме шухер.
Поэтому не рискую задачу публиковать. поскольку там неординарная идея для которой фильтр нужен, и если конкуренты сдлают это раньше нас, будет очень "обидно".
Суть задачи в том, что нужно получить значение звуковые низкочастотыне в конкретный момент времени.
одна из подзадач - синхронизировать колебание модели динамика с звуковой волной. -
> синхронизировать колебание модели динамика с звуковой волной.
Понятно - гашение звука в локальном пространстве.
Такие вещи есть и они работают.
> FFT у них реализован, но с ним проблемы из-за того, что
> всплески размазываются по всему спектру. Получается белый
> шум. В вэйвлетах это не так заметно, потому что размазываени
> всплеска локально.
Честно говоря - набор звуков, не более того.
Без обид.
Ладно, трудись раб и мечтай о Сатрапии. :) -
@!!ex © (19.12.07 17:36) [29]> Понятно - гашение звука в локальном пространстве.
> Такие вещи есть и они работают.
Я знаю что они работают.. :)
> Честно говоря - набор звуков, не более того.
> Без обид.
> Ладно, трудись раб и мечтай о Сатрапии. :)
Стараюсь исправится, :) -
имя(15.09.09 14:12) [30]Удалено модератором