| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Реконструирование испорченного фрагмента звука |
| Автор: Y-Vladimir 20.7.2004, 22:34 |
| Вот какая задача - у нас есть звуковой файл, небольшой кусочек данных которого испорчен (помеха там или щелчок). Вопрос, как наиболее правильно восстановить этот фрагмент? Интерполяцию сразу отметаем, т.к. получается гладкая линия, чего в действительности не наблюдается (если только этот участок не совсем уж маленький). Первой пришла идея использовать информацию окрестности поврежденного фрагмента, найдя ее спектр. Ведь если у нас была чистая синусоида в окрестности, то можно с большой уверенностью сказать, что в поврежденном участке тоже была синусоида. Вот только как это можно сделать? Может есть еще какие подходы? Можно ли данные рассуждения применить, скажем, к испорченному фрагменту изображения? |
| Автор: podval 21.7.2004, 09:05 |
| Очень зависит от типа помехи. Щелчок - импульсная помеха. Если щелчок авторучкой - она более высокочастотная. Удар кувалдой - более низкочастотная. Ну и амплитуда помехи - немаловажный фактор. Здесь нужны очень хорошие фильтры. |
| Автор: Y-Vladimir 21.7.2004, 13:21 |
| Вопрос в другом - я знаю, где точно находится помеха, и этот фрагмент фильтрами не восстановишь, (например если полное отсутствие сигнала в этом участке). Нужно на основании оставшегося сигнала воостановить этот фрагмент, по-возможности наиболее корректно. Вот я и подумал, что наиболее правильно взять некоторую окрестность около дефектного участка и попытаться реконструировать форму сигнала на основе этой информации. Какой способ лучше подходит для этой задачи? |
| Автор: maxim1000 21.7.2004, 15:14 |
| рассматриваем звуковой сигнал, как случайный процесс используя окрестность сигнала, набираем статистику по ней делаем предположение о законе распределения (для всего процесса) далее берем конкретный участок с помехой +/- небольшая окрестность (меньше той, на которой набирали статистику), представляем его в виде вектора считаем те координаты, на которых помеха неизвестными по остальным известным координатам проводим оценивание неизвестных критерий можно брать, например, наибольшего правдоподобия или мат.ожидания ошибки Добавлено @ 15:15 P.S. честно говоря, не знаю, лучше ли всего этот способ подходит для данной задачи, но это - первое, что пришло в голову... |
| Автор: podval 21.7.2004, 19:00 |
| Подойдет GARCH-модель (Generalized Autoregressive Conditional Heteroscedasticity). Она же модель обобщенной регрессии с условной гетероскедастичностью. Страшно? Это такая регрессионная модель, в которой можно дисперсию представить изменяемой во времени. Но если быть проще, то можно обойтись и более простыми. Традиционная модель линейного предсказания, например, для речи подойдет. В остальном так: - оцениваем параметры модели по чистым участкам сигнала; - в области помехи моделируем сигнал. |
| Автор: Y-Vladimir 21.7.2004, 19:23 |
| Я вот тут придумал способ - зацените, плиз. Пусть у нас длительность помехи dt. Тогда берем два участка звука длиной dt: до поврежденного фрагмента и после. Затем находим спектр этих двух кусочков. А далее вычисляем их средне арифметический спектр (находим средние значения амплитуды для каждой частоты из двух получившихся спектров). Это мы значит получили предполагаемый спектр поврежденного участка, делаем обратное преобразование Фурье для него и получаем реконструированный дефектный фрагмент. Как думаете, прокатит? И корректно ли так восстанавливать? По идее должно давать хорошие результаты. |
| Автор: maxim1000 21.7.2004, 19:32 | ||||
значение спектра на каждой частоте - комплексное число для восстановления сигнала кроме модуля спектра нужна еще его фаза можно попробовать подобрать фазу так, чтоб сгладить переход от оригинального кусочка сигнала к восстановленному (хотя сомнительно...)
конечно же нет о корректности можно говорить, когда способ выводится из каких-то обоснованных данных, а не придумывается просто так (хотя это абсолютно не значит, что этот способ будет давать плохие результаты |
| Автор: Y-Vladimir 21.7.2004, 21:49 |
| podval , такой вопрос - если у меня исходный сигнал, это смесь из нескольких синусоид разной частоты, но постоянной амплитуды, и из этого сигнала вырезан какой-то кусочек, то сможет ли GARCH-модель восстановить этот кусочек таким образом, чтобы в нем опять была такая же смесь частот? Интересно почитать про эту модель, если не трудно кинь пару толковых ссылок. |
| Автор: val 22.7.2004, 09:08 |
| Мне кажется, что использование стандартного подхода с вычислением т.н. А-параметров (авторегрессионый подход) на неиспорченном участке сигнала и восстановление с их помощью испорченного + полосовые фильтры неплохое решение задачки... |
| Автор: podval 22.7.2004, 13:21 |
| Y-Vladimir В принципе, чтобы не иметь дело с очень уж заумными статьями, можно просто открыть Help к системе Matlab от версии 6.0 и выше. Там это есть. Достаточно, чтобы понять и решить, надо ли это. Все же в обобщенном виде много очень вычислений. Попробуй для начала обычные LPC-коэффициенты, а дальше усложняй. |
| Автор: Y-Vladimir 23.7.2004, 14:32 |
| Спасибо всем! Надо будет посмотреть подробнее о этих подходах. А интересно, какой будет результат если эти методы применить для изображения? Типа например есть у нас испорченный клок изображения (пятно или трещина), можно ли восстановть это в атоматическом режиме, выделив лишь испорченную область? В Фотошопе это конечно делается с помощью заплятки, если есть донорская область достаточного размера, а если нету, то придется помучится... может в таком случае данные методы помогут? |