Передискретизація

Передискретиза́ція (Шаблон:Lang-en) в обробці сигналів — зміна частоти дискретизації дискретного (найчастіше цифрового) сигналу. Алгоритми передискретизації широко застосовуються при обробці звукових сигналів, радіосигналів та зображень (передискретизація растрового зображення — це зміна його роздільності у пікселях).
Відліки сигналу, які відповідають новій частоті дискретизації, розраховуються на основі вже відомих відліків та не містять нової інформації.
Підвищення частоти дискретизації називається інтерполяцією, пониження — децимацією.Шаблон:Sfn
Загальні принципи

У відповідності до теореми Котельникова будь-який неперервний сигнал з Шаблон:Нп спектром (тобто таким спектром, в якому спектральні складові, що відповідають частотам вище або рівним деякої частоти , відсутні) може бути поданим у вигляді відліків дискретного сигналу з частотою дискретизації . При цьому таке перетворення є взаємно однозначним, тобто при дотриманні умов теореми Котельникова за дискретним сигналом можна відновити вхідний сигнал з фінітним спектром без спотворень.Шаблон:Sfn
При передискретизації відліки сигналу, які відповідають одній частоті дискретизації, обчислюються на основі відомих відліків цього ж сигналу, що відповідають іншій частоті дискретизації (при цьому вважається, що обидві частоти дискретизації відповідають умовам теореми Котельникова). Ідеальна передискретизація еквівалентна відновленню неперервного сигналу за його відліками з наступною дискретизацією його на новій частоті.Шаблон:Sfn
Точне обчислення значення вихідного неперервного сигналу у певній точці виконується таким чином:Шаблон:SfnШаблон:Sfn
де — i-й відлік сигналу, — момент часу, який відповідає цьому відліку, — циклічна частота дискретизації, — інтерпольоване значення сигналу в момент часу .
Функція не є Шаблон:Нп, тому для обчислення значення сигналу у певний момент часу з допомогою вищенаведеного виразу необхідно опрацювати нескінченну кількість його відліків (як у минулому, так і в майбутньому), що не може бути реалізованим на практиці. В реальному житті інтерполяція здійснюється з допомогою інших фільтрів, при цьому вираз для неї набуває такого вигляду:Шаблон:SfnШаблон:Sfn
де — імпульсна характеристика відповідного Шаблон:Нп. Вид цього фільтра вибирається в залежності від задачі.Шаблон:Sfn
Пряме обчислення нових відліків сигналу за вищенаведеними формулами потребує значних обчислювальних ресурсів і є небажаним для додатків реального часу. Існують важливі часткові випадки передискретизації, для яких обчислення нових відліків здійснюється простіше:Шаблон:Sfn
- децимація з цілим коефіцієнтом (зменшення частоти дискретизації у ціле число разів);
- інтерполяція з цілим коефіцієнтом (збільшення частоти дискретизації у ціле число разів);
- зміна частоти дискретизації в раціональну () кількість разів (цей випадок можна розглядати як комбінацію двох попередніх).
При таких обмеженнях стає зручним застосування стандартних реалізацій цифрових фільтрів для передискретизації.
Передискретизація з допомогою цифрових фільтрів


Вибір фільтра для передискретизації
Вибір функції зумовлюється компромісом між якістю передискретизації (тобто близькості її до ідеальної) та обчислювальною складністю цього процесу. В принципі, для передискретизації може використовуватися будь-який фільтр нижніх частот з необхідною частотою зрізу. СІХ-фільтри (фільтри зі скінченною імпульсною характеристикою) застосовуються для цих задач частіше, ніж НІХ-фільтри (фільтри з нескінченною імпульсною характеристикою), через можливість побудови СІХ-фільтрів з лінійною фазо-частотною характеристикою.Шаблон:Sfn
Найчастіше при передискретизації використовуються такі класи цифрових фільтрів:Шаблон:Sfn
- 1. Фільтри, побудовані, на основі критерію близькості частотної характеристики до частотної характеристики ідеального фільтру нижніх частот:
- 1.1. Віконні Шаблон:Нп (Шаблон:Lang-en) — їх імпульсна характеристика отримується шляхом множення імпульсної характеристики ідеального ФНЧ на віконну функцію.
- 1.2. Рівнохвильові фільтри Чебишова.
- 2. Класичні способи інтерполяції функцій (часто застосовуються для зображень)[1]:
- 2.1. Лінійні інтерполятори.
- 2.2. Інтерполятори Лагранжа (частковий випадок — кубічна інтерполяція).
- 3. Шаблон:Нп (Шаблон:Lang-en, каскади гребінчастих фільтрів та інтеграторів).[2] Цей клас фільтрів не використовує множень при обчисленні, що дозволяє зекономити обчислювальні ресурси.
Децимація з цілим коефіцієнтом
Процес зменшення частоти дискретизації сигналу називається децимацією.Шаблон:Sfn Іноді цей термін вживають тільки для зменшення частоти дискретизації в цілу кількість разів (далі ).Шаблон:Sfn Децимація цифрового сигналу з цілим коефіцієнтом виконується у два етапи:Шаблон:SfnШаблон:Sfn
- Цифрова фільтрація сигналу з метою видалення високочастотних складових, що не задовільняють умовам теореми Котельникова для нової частоти дискретизації.
- Видалення (відкидання) зайвих відліків (зберігається кожен -й відлік).
В англомовній літературі другий з цих етапів іноді позначають терміном downsampling.[3] У побуті цей термін може використовуватися як синонім терміну «децимація».
Перший етап є необхідним для виключення накладання спектрів, природа якого аналогічна накладанню спектрів при початковій дискретизації аналогового сигналу.Шаблон:Sfn Накладання спектрів є особливо помітним на тих ділянках сигналу, які мають значні високочастотні спектральні складові. Так, на наведених на початку статті фотографіях небо практично не піддалося накладанню спектрів, але ефект стає помітним, якщо звернути увагу на різкі переходи.
При програмній реалізації алгоритму децимації «зайві» відліки не видаляються, а просто не обчислюються. При цьому кількість звернень до цифрового фільтра зменшується в разів. При апаратній реалізації економії можна досягти шляхом використання Шаблон:Нп.[4]
Інтерполяція з цілим коефіцієнтом
Інтерполяцією називають збільшення частоти в цілу або дробову кількість разівШаблон:Sfn шляхом обчислення проміжних відліків за вже відомими. Ідеальна інтерполяція дозволяє точно відновити значення сигналу в проміжних відліках.
Стандартний алгоритм інтерполяції сигналу з цілим коефіцієнтом полягає в такому:Шаблон:Sfn
- Вставка нульових відліків на місце відліків, які потрібно обчислити.
- Фільтрація сигналу цифровим фільтром нижніх частот для того, щоб забрати спектральні складові сигналу, яких точно не могло бути у вихідному сигналі згідно з теоремою Котельникова; вихід фільтра множиться на коефіцієнт інтерполяції для нормування.
В англомовній літературі перший з цих етапів іноді позначається терміном upsampling.[3] При цьому в побуті цей термін може використовуватися як синонім терміну «інтерполяція».
При програмній реалізації інтерполяції нульові відліки не беруть участі в обчисленнях вихідного сигналу фільтра, що дозволяє оптимізувати процес обчислення. При апаратній реалізації для економії ресурсів можна використовувати поліфазні фільтри.[5]Шаблон:Sfn
Комбінація інтерполяції та децимації
Для того, щоб змінити частоту дискретизації сигналу в разів ( та — цілі додатні числа), можна спочатку збільшити частоту дискретизації в разів, а потім зменшити її в разів. Фільтрацію сигналу достатньо здійснити всього один раз — між інтерполяцією та децимацією.Шаблон:Sfn
Недоліком даного методу є необхідність фільтрації сигналу на підвищеній в разів частоті дискретизації, що потребує значних обчислювальних ресурсів. При цьому відповідна частота може у багато разів перевищувати як вихідну, так і кінцеву частоту передискретизації, особливо якщо та — близькі великі числа.[6] Так, наприклад, при передискретизації звукового сигналу з 44 100 до 48 000 Гц цим методом необхідно збільшити частоту дискретизації у 160 разів до 7 056 000 Гц і потім зменшити її в 147 разів до 48 000 Гц. Таким чином, в даному прикладі обчислення доводиться здійснювати на частоті дискретизації понад 7 МГц.
Передискретизація з допомогою поліфазних фільтрів
Метод передискретизації з допомогою Шаблон:Нп аналогічний до попереднього, з тією відмінністю, що в ньому замість одного фільтра, що працює на високій частоті дискретизації, використовується декілька фільтрів, які працюють на низькій частоті. При цьому вдається досягти зменшення кількості необхідних обчислень, оскільки для кожного відліку необхідно обчислити вихідний сигнал тільки одного з цих фільтрів.Шаблон:SfnШаблон:Sfn
Поліфазний фільтр є набором невеликих фільтрів, які працюють паралельно, кожен з яких обробляє тільки підмножину відліків сигналу (якщо всього є фільтрів, кожен фільтр буде обробляти тільки кожен -й відлік).
Поліфазні фільтри застосовуються для передискретизації як із цілим, так і з дробовим коефіцієнтом.[7]
Передискретизація з допомогою дискретного перетворення Фур'є
Передискретизація з допомогою ДПФ використовується для підвищення частоти дискретизації в цілу або дробову кількість разів. Алгоритм працює тільки зі скінченними відрізками сигналу. Нехай — початкова кількість відліків, — кількість відліків у передискретизованому сигналі. Алгоритм включає в себе такі операції:Шаблон:Sfn[8]
- 1. Обчислюється ДПФ вихідного сигналу (найчастіше з використанням алгоритму швидкого перетворення Фур'є).
- 2. В середину спектра вставляється необхідна кількість нульових компонент:
- 2.1. якщо непарне:
- 2.2. якщо парне:
- 3. Обчислюється обернене дискретне перетворення Фур'є з нормуванням.
Будь-який метод, що базується на ДПФ, призначений в першу чергу для періодичних дискретних сигналів. Для обробки неперіодичних сигналів необхідно вибирати відрізки сигналу для обчислення ДПФ таким чином, щоб їх кінці перекривалися.Шаблон:Sfn
Застосування
Широко використовується як апаратна (на основі спеціалізованих мікросхем[9][10] або FPGA[11]), так і програмна (на базі процесорів загального призначення (див. нижче) або сигнальних процесорів[12]) реалізація алгоритмів передискретизації.
Вибір конкретної реалізації алгоритму передискретизації є результатом компромісу між якістю перетворення та його обчислювальною складністю. Основним параметром, що впливає на ці характеристики, є близькість використовуваних цифрових фільтрів до ідеальних. Якісніші фільтри потребують більших ресурсів для обчислення.Шаблон:Sfn
На практиці передискретизація у більшості випадків призводить до втрати інформації про сигнал з таких причин:
- при зменшенні частоти дискретизації сигнал необхідно відфільтрувати з метою видалення високочастотних спектральних складових, які не відповідають умовам теореми Котельникова для нової частоти дискретизації;
- неминуча неідеальність застосовуваних цифрових фільтрів;Шаблон:Sfn
- обчислення, що виконуються над цифровими (квантованими за рівнем) сигналами призводять до необоротних похибок заокруглення.Шаблон:Sfn
Таким чином, при збільшенні частоти дискретизації з наступним зменшенням її до вихідного значення якість сигналу буде втрачено (якщо тільки висока частота не кратна низькій).
Дискретизація сигналів з запасом по частоті дискретизації
Під дискретизацією сигналів з запасом по частоті дискретизації (Шаблон:Lang-en) розуміють дискретизацію сигналу на частоті, яка в декілька разів перевищує частоту Котельникова з наступною децимацією. Цей підхід дає змогу отримати такі переваги[13]:
- можливість використовувати простіший і дешевший аналоговий фільтр для захисту від накладання спектрів;
- можливість використовувати АЦП з меншою розрядністю.
Аналогічний підхід застосовується і при відновленні сигналу за його відліками для спрощення аналогового фільтра відновлення.[14]
При обробці звуку
Обладнання, призначене для відтворення цифрового звуку, як правило, розраховане на цілком певну частоту дискретизації сигналу безпосередньо перед цифро-аналоговим перетворенням. Всі звукові сигнали з іншими частотами дискретизації повинні бути рано чи пізно передискретизовані[15].
Передискретизація звукового сигналу на потрібну частоту може здійснюватися медіаплеєром, драйвером звукової карти або самою звуковою картою. Використання програми-програвача з цією метою може бути виправданим, якщо бажано уникнути апаратної передискретизації звуку (або передискретизації драйвером) з метою отримання кращої якості (при більшому навантаженні на центральний процесор). Однак програмна передискретизація відтворюваного матеріалу на частоту, відмінну від частоти, підтримуваної обладнанням, не має сенсу і призводить тільки до втрати якості сигналу.
Існують програмні передискретизатори звукових сигналів з відкритим початковим кодом:
- SRC (Secret Rabbit Code) або libsamplerate[16] — існує плагін для foobar2000;
- SSRC[17] — існують плагіни для Winamp та foobar2000.
- SOXR[18] — якісний, швидкий, з мінімальними вимогами до ресурсів[19]. Містить бібліотеку для заміни SRC, підключається до foobar2000, використовується в FFmpeg (з версії 1.1.1), Audacity та інших проектах.
Також передискретизація підтримується програмами-редакторами звуку (такими як Adobe Audition, Sony Sound Forge чи Audacity).
При обробці зображень

Зміна роздільності є однією з поширених операцій обробки зображень. Передискретизація, близька до ідеальної, не завжди є бажаною. Навпаки, результати роботи фільтрів з частотною характеристикою, далекою від ідеальної, можуть візуально сприйматися як хороші.[20] Вибір фільтра для передискретизації є результатом компромісу між типом та вираженістю артефактів та обчислювальною складністю перетворення (актуальної для додатків реального часу).
Типові артефакти при зміні роздільності зображення[1]:
- Пікселізація (Шаблон:Lang-en);
- Дзвін (Шаблон:Lang-en);
- Аліасинг (Шаблон:Lang-en) та пов'язаний з ним ефект муару;
- Розмивання (Шаблон:Lang-en).
Для передискретизації зображень використовується велика кількість фільтрів, які можна класифікувати таким чином[1]:
- Фільтри інтерполяційного типу, що мають порівняно вузьку імпульсну характеристику. До них належать, зокрема, трикутний фільтр, що виконує білінійну інтерполяцію та поліном Лагранжа, з допомогою якого можна реалізувати Шаблон:Нп. Застосування таких фільтрів дозволяє здійснити передискретизацію зображення достатньо швидко.
- Фільтри з дзвоноподібною характеристикою, такі як фільтр Гауса. Ці фільтри добре справляються з пікселізацією, дзвоном та аліасингом, а також відфільтровують високочастотні шуми. Їх недоліком є помітне розмивання зображення.
- Віконні Шаблон:Нп. Sinc-фільтр — це ідеальний фільтр нижніх частот. Як зазначалося вище, він не може бути реалізованим. Однак якщо частотну характеристику sinc-фільтра помножити на віконну функцію, отримаємо фільтр з хорошими спектральними властивостями, який можна реалізувати. При застосуванні даних фільтрів до зображень вдається зберегти відносно високу чіткість (навіть при збільшенні роздільності), але може бути сильно помітним ефект дзвону. Одним з найчастіше використовуваних фільтрів цього типу є Шаблон:Нп.
Нижченаведені зображення ілюструють застосування найчастіше використовуваних фільтрів зміни розміру зображень. При збільшенні розміру зображення без фільтра зображення отримується чітким, але пікселізованим. При білінійній інтерполяції пікселізація менш помітна, але зображення є розмитим. При використанні фільтра Гауса зображення розмите, але пікселізації практично не помітно. При використанні фільтра Ланцоша пікселізація відсутня, зображення також є розмитим і помітний дзвін (видимий як світла облямівка навколо фігур).
-
Зображення, збільшене в 4 рази без фільтра
-
Зображення, збільшене в 4 рази з білінійною інтерполяцією
-
Зображення, збільшене в 4 рази з фільтром Гауса
-
Зображення, збільшене в 4 рази з фільтром Ланцоша
При обробці радіосигналів
При демодуляції цифрових сигналів бажано, щоб частота дискретизації сигналу була кратна його Шаблон:Нп (інакше кажучи, щоб на кожен символ припадала однакова кількість відліків сигналу). Однак частота дискретизації вхідного сигналу з АЦП, як правило, є фіксованою, а швидкість маніпуляції може змінюватися. Вирішенням цієї проблеми є передискретизація сигналу.[21]
У статистиці
У статистиці Шаблон:Iw — це створення нових вибірок на основі однієї спостережуваної вибірки. Методи повторної вибірки: Перестановочні тести, Початкове завантаження, Перехресна перевірка.
Див. також
- Квантування (обробка сигналів)
- Дискретизація
- Дельта-модуляція
- Сигма-дельта-модуляція
- Аналогово-цифрове перетворення
- Цифро-аналоговий перетворювач
- Масштабування зображення
Примітки
Література
- Шаблон:Cite bookШаблон:Ref-en
- Шаблон:Cite bookШаблон:Ref-ru
- Шаблон:Cite bookШаблон:Ref-ru
- Шаблон:Cite bookШаблон:Ref-ru
Посилання
- Digital Signal Processing (Ohio State EE700).Шаблон:Ref-en
- Digital Audio Resampling Home Page.Шаблон:Ref-en
- Фільтри Фарроу (Farrow filters) на прикладі фільтра третього порядку. Ресемплінг (resampling) сигналів .Шаблон:Ref-ru
- Digital Audio Resampling Home Page
- Multi-Rate Processing and Sample Rate Conversion: A Tutorial
- The Quest For The Perfect Resampler (PDF)
- Digital resampling by using polynomial interpolation. Farrow filter
- Using Farrow filter on the basis of piecewise cubic polynomial interpolation for digital signal resampling
- ↑ 1,0 1,1 1,2 Resize and Scaling на сайті програми ImageMagick. Шаблон:Ref-en
- ↑ Шаблон:Cite web
- ↑ 3,0 3,1 Upsampling and interpolation, downsampling and decimationШаблон:Недоступне посилання.
- ↑ Polyphase decimation filter.
- ↑ Polyphase interpolation filters.
- ↑ Interpolation, Decimation, and Rate Changing by Integer Fractions.
- ↑ Polyphase resampling with a rational factor.
- ↑ Interpolation using FFTШаблон:Недоступне посилання.
- ↑ Мікросхема GC5016 від Texas Instruments Шаблон:Webarchive.
- ↑ Перетворювачі частоти дискретизації від Analog Devices Шаблон:Webarchive.
- ↑ Xilinx XAPP1113: Designing Efficient Digital Up and Down Converters
- ↑ Шаблон:Cite web
- ↑ Multirate DSP, part 3: ADC oversampling Шаблон:Webarchive.
- ↑ Theory of Upsampled Digital Audio.
- ↑ A complete guide to Foobar 2000
- ↑ Secret Rabbit Code (aka libsamplerate)
- ↑ Shibatch Audio Tools
- ↑ The SoX Resampler library
- ↑ Порівняння п'яти передискретизаторів для foobar2000 + ASIO4ALL Resampler (2011) Шаблон:Ref-ru
- ↑ Шаблон:Стаття. Шаблон:Ref-en
- ↑ Building a QAM DemodulatorШаблон:Недоступне посилання. Шаблон:Ref-en