![]() |
|
|
![]()
|
|
| dwr_budr |
|
|||
|
Unregistered |
День добрый знатоки всяких разных преобразований из time domain в frequency domain!
Извиняюсь за вероятное ламерство вопроса! Я начинающий в этом деле! Само преобразование меня нисколько не смущает и не пугает, закодить ео если что смогу! Мне интересно другое! Интерпретация результатов таких преобразований! К примеру БПФ! Решил зажать песню к слову! Беру первые 512 выборок! БПФ вернет мне 512 комплексных значений (амплитуда и фаза).. так? И вот собственно вопросы.. - амплитуды каких частот это будут? - или это еще не готовые амплитуды и еще что то нужно сделать? - что делать с фазами? (а то как то вместо 512 чисел уже 1024 нарисовалась для хранения) - как интерпретировать вообще эти результаты и понять какие данные можно выкинуть что бы потом восстановить без ощутимых для слуха потерь? (понимаю /*надеюсь что правильно понимаю*/ что по амплитудам смотреть.. но как уже говорил для меня загадка какие частоты находятся в ответе..) Может можно пример привести конкретный! Типа вот 8 вхдных значений.. вот 8 выходных и т.п. Такие то игнорим и сохраняем место таким образом.. Или где такой пример можно глянуть? Спасибо! |
|||
|
||||
| dwr_budr |
|
|||
|
Unregistered |
Вот покапался у вас и нашел ссылочку
http://www.dsp.sut.ru/book/lections/l4/l4_4.htm Там есть раздел: практический пример. Ответ про отбрасывания значений начинаяя от N/2 прочитал! И про вычисление амплитуды SQRT(real^2 + img^2).. вроде так? И про распределение частот в выходном массиве тоже вроде понял! Но не пойму все еще что делать с фазами? За счет чего получится сжатие? Раз N/2 значений игнорим то остается еще N/2 (комплексных) которые и займут по размеру столько же сколько N входных значений! Или сжатие будет за счет того что в оставщихся N/2 значениях слабые частоты (и их фазы) можно просто занулись и эффективней сохранить уже использую обычные алгоритмы сжатия? |
|||
|
||||
| dwr_budr |
|
|||
|
Unregistered |
И сорри! Не покАпался, а покопался
Совсем забываю следить за грамотностью в инете!! |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
а само ФП никакого сжатия и не делает - это просто преобразование сигнала
просто выбрасывать какие-то амплитуды - нехорошо если выбросить фазы - будут проблемы с восстановлением вообще, если выбирать такой способ сжатия, то я бы квантовал амплитуды и фазы - запоминал их с меньшей точностью, а потом, возможно, что-то вроде кодирования Хаффмана или арифметического... кроме того можно использовать результаты кодирования предыдущего сигнала (какое-то прогнозирование) Это сообщение отредактировал(а) maxim1000 - 8.4.2004, 11:53 -------------------- qqq |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Если нравятся время-частотные преобразования, то сжимать можно вейвлетами.
|
|||
|
||||
| dwr_budr |
|
|||
|
Unregistered |
Максим1000
Не ну понятно что не дает! Я именно к тому как можно частотную информацию обработать дабы зажать лучше! Вот и спрашивю за счет чего же таки сжимают и как правильно что отбросить что бы потери в качестве не были слышны Более того еще вопрос! Результаты ведь вещественого типа? Ничего если я до целого буду округлять? Слышал про целочисленные преобразования фурье! Они округляют или вообще с целыми работают? Спасибо! |
|||
|
||||
| dwr_budr |
|
|||
|
Unregistered |
Podval
С вейвлетами еще не ковырялся! Может и с ними все организую! Спрашивать если что у тебя можно? |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Дело насколько я знаю обстоит немного сложнее.
Есть целая теория насчёт того, что человеческое ухо не воспринимает частоты A, если амплитуда частоты B больше на N (существуют таблицы). Такие значения можно сажать на ноль. в итоге получим много нулей подряд. Ещё: не вероятно, что в сигнале присутствуют ВСЕ возможные частоты, которые воспринимает человеческое ухо. За счёт этого нам становатся не нужны все биты значений оригинального сигнала. Надеюсь это хоть сколько нибудь поможет. К сожалению давно уже это было, когда с сжатием разбираться заставляли |
|||
|
||||
| dwr_budr |
|
|||
|
Unregistered |
Сергей спасибо!
В мп3 они насколько я знаю именно так и делают.. это кацца masking нзывается! (только они не по всему спектру сразу смотрят а более детально по 32м диапазонам если не ошибаюсь) По поводу того что это сожнее.. я ни на миг не сомневаюсь! Нужно ж по идее понимать где эти частоты во времени находятся что бы сказать происходит ли этот эффект скрытия или нет! %) Товарисчи! Еще комментарии будут? Как закодю |
|||
|
||||
| podval |
|
||||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Нужно! И еще рекомендую зарегистрироваться на форуме, появятся полезные возможности. Добавлено @ 12:02
Именно работают! И кстати, не только преобразование Фурье, есть и другие целочисленные. |
||||
|
|||||
| dwr_budr |
|
|||
|
Unregistered |
2Podval
Да не вопрос зарегюсь |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Как поживает супер-кодек?
Я тут подумал.. Ты же поток разбиваешь на части-окна и анализируешь спектр окна. Тут то ИМХО маскинг применять и надо. То есть исходишь из того, что все частоты в окне имеют место одноврменно и маскируешь. Реализацию в вейвлетах не встречал, так что должно быть что то принципиально новое. Попробовать в любом случае стоит! Кстати, podval, как ты думаешь, принесёт что нибудь Zero-Tree в однодимензиональном сигнале? |
|||
|
||||
| dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
2 sergej.z
Поживает :) Завтра преподу план проекта несу :) А через недельку начну кодить собственно! Только FFT вероятно не буду использовать. Игрался с ним и после обработки каждого интервальчика в частотном виде при склеивании на границах получались счелчки.. Как их сглаживать я не знаю (поделитесь если кто знает) Зато вычитал про MDCT (midified discrete cosine transform). В нем преобразование по своей природе мы делаем на нахлестывающихся друг на друга интервалах, и следовательно в этом факте само сглаживание и заложено! (поправьте если неправ.. лучше знать о неверном предположении заранее :) Ну а дальше буду разбивать на поддиапазоны и применять маскинг! Как частотный так и временной! (ждите в скорем времени много вопросов :) Потом квантование и что нить типа адаптивного хаффмана! (это пока такие мысли) В догонку хочется что б сам формат был фреймованный и игрался как мп3 с любогоместа.. но не думаю что я все успею до 10го июня :) PS Кстати MDCT как раз в mp3 и используется.. да и в Vorbis'е тоже если ничего не напутал читая :) |
|||
|
||||
| maxim1000 |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
ни FFT, ни DCT понятия не имеют обо всем сигнале, на их вход подается просто сигнал фиксированной длины, никто не запрещает подавать на вход FFT кусочки с перекрытием
алгоритм Хаффмана оптимален, но в адаптивном случае появляется необходимость очень часто перестраивать дерево кодирования есть еще арифметическое кодирование, подстройка под изменение распределения там имеет значительно меньшую вычислительную сложность и часто достигает почти тех же результатов, что и Хаффман... вообще надо определиться с критериями обычно при разработке кодеков (а особенно супер-кодеков
достаточно сделать так, чтобы ошибка, случайно возникшая где-то всередине, достаточно быстро затухала -------------------- qqq |
||||||||
|
|||||||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
А что именно ты хочешь спросить? Только по-русски |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |