Як насправді працює зсув пікселів із використанням DFT?


12

Я намагаюся оцінити якість декількох методів інтерполяції зображень для програми, яка включає генерування зображень, зміщених субпікселями. Я думав, що я міг би порівняти результати зсуву підпікселів, використовуючи всі ці варіанти інтерполяції, з деяким ідеально зміщеним зображенням, але отримати його, мабуть, неможливо (у чому тоді буде потреба в інтерполяції?).

Я думав про те, щоб використовувати перехід DFT + у частотній області, і я не впевнений у тому, як це насправді працює порівняно з явним інтерполюванням зображення (за допомогою білінеарного, двостулкового тощо). Я впевнений, що він не може генерувати ідеально зміщене зображення , але я не можу покласти його пальцем. Чи зсув субпікселя з DFT еквівалентний застосуванню інтерполяції, і якщо так, то який? Яке зміщення значень пікселів у зображеннях, отриманих за допомогою цього методу? Дякую!

EDIT: Після роздуму над питанням я зрозумів, оскільки FFT є наближенням (тим більше, DFT) початкової функції з точки зору гармонік (синусоїдних функцій), що це буде деякою тригонометричною інтерполяцією. Я пригадую формулу "Інтерполяція рядів Фур'є" для дискретних даних, яка була тригонометричною інтерполяцією, але не впевнена, чи пов'язана вона.


Швидке перетворення Фур'є (FFT) - алгоритм дискретного перетворення Фур'є. DFT - це не наближення вихідної функції з точки зору гармонік, а скоріше проекція сигналу на складну експоненціальну ортогональну основу.
Брайан

Гаразд, але сам сигнал є вибірковою і кількісно оціненою апроксимацією деякого розподілу інтенсивності, і DFT обмежений щодо вмісту гармоній порівняно з цим теоретичним розподілом. Ви можете отримати точний сигнал назад від IDFT, але буде деякий ухил, якщо ви зробите щось (наприклад, перехід) до нього, перш ніж IDFT його повернути. Або я щось пропускаю?
neuviemeporte

DFT дійсно приймає дискретні входи, але не обмежується квантованими входами. Який сигнал не має значення. Як ви вже вказували, ви можете отримати точний сигнал назад. Однак я не впевнений, що ви маєте на увазі під «зміщенням». Властивості зміщення частотної області загальновідомі (складний переклад частоти у часовій області). Якщо ваше бажання перейти на домен "час", то вам потрібно думати про подвійний DFT.
Брайан

1
Я маю на увазі, що якщо я виконую деяку операцію над DFT сигналу (як, наприклад, у моєму випадку - зсув пікселя зображення у "піксельній домені" за допомогою теореми зсуву Фур'є), то IDFT поверне інтерпольовані результати, як пояснено @ hotpaw2's відповідь. Ця інтерполяція є недосконалою, оскільки сигнал не обмежений смугою, а сам DFT був обчислений з кінцевого набору квантованих (0-255) зразків.
neuviemeporte

Відповіді:


4

DFT / FFT плюс додані нульові прокладки в частотній області, потім довше IDFT / IFFT повертає інтерпольовані точки. Ці точки будуть інтерпольовані за допомогою періодичного ядра Sinc, що є ідеальною інтерполяцією для вихідних даних, яка суворо обмежена діапазоном нижче половини початкової частоти вибірки. Однак дані будуть діяти так, ніби вони кругово обмотані, що може призвести до незвичайних результатів на краях деяких зображень. Тому ви, можливо, захочете обклеїти краї початкового джерела приємним наповнювачем або обрамленням кольору перед інтерполяцією.

Якщо ви збільшили вибірку на 2 рази (FFT з нульовою панеллю, щоб подвоїти довжину перед IFFT), ви можете зробити зсув на півпікселя, використовуючи інтерпольовані точки. 3X для третього зміщення пікселя і т. Д. Для зміщення ви можете викинути вихідні точки плюс будь-які зайві інтерпольовані точки, щоб отримати потрібний розмір.


5
@ hotpaw2: інтерполяційне ядро ​​для DFT не є sinc () нескінченної міри, насправді DFT є дискретним, кінцевим перетворенням. Інтерполяція DFT еквівалентна згортці з ядром Діріхле, який деякі автори також називають періодичним sinc () : en.wikipedia.org/wiki/Dirichlet_kernel
Arrigo

@Arrigo: Погодьтеся. Відредагована відповідь для виправлення.
hotpaw2

@ hotpaw2: коли я наношу FFT вдвічі більше, IFFT отримає реконструкцію вдвічі більше. Не знаєте, що робити із надлишком? Спасибі
neuviemeporte

Викиньте зайві бали, які вам не потрібні. У 2-кратному зразку кожен інший зміщується, чергуючись з реконструйованими вихідними точками. У вибірці 3X ви отримуєте 2 зміщені точки (на 1/3 та на 2/3), що чергуються з оригіналами. І т. Д. Чим більше ви займаєте вибірку, тим більше викидаєте.
hotpaw2

7

Існує кілька ключових відомостей, які вам потрібні, щоб зрозуміти, як DFT дозволяє змістити зображення.

По-перше, теорія Фур'є: Мабуть, простіше спочатку подивитися на безперервний (тобто аналоговий) випадок. Уявіть, що у вас є якась функція, назвіть це g (t). Для простоти скажемо, що g (t) - це аналоговий аудіо запис, тому це одновимірна функція, яка є безперервною, і представляє миттєвий тиск як функцію часу.

Тепер g (t) - це один із способів представити нашу аудіозапис. Інша - G (f). G (f) - перетворення Фур'є з g (t). Отже, G (f) == FT (g (t)). G (f) має всю ту саму інформацію, що і g (t), але вона представляє цю інформацію в частотній області замість часової області. Існує кілька прискіпливих деталей щодо перетворень Фур'є, про які я не згадую.

Ви можете вважати G (f) як "розподіл частот", що міститься в g (t). Отже, якщо g (t) - синусоїда (тобто чистий тон), то G (f) буде скрізь нульовим, крім частоти цього тону. Це, мабуть, хороший момент зазначити, що G (f) взагалі є складною функцією - тобто, вона повертає складні числа, які можна думати, що мають реальний і уявний компонент або величину і фазу.

δ(w)δ

Гаразд, тож зараз у нас під ременем є безперервні ФТ.

Ось друге розуміння: дискретна трансформація Фур'є - це перетворення Фур'є, оскільки вибірковий сигнал - аналоговий сигнал. У цьому випадку "дискретний" відноситься до квантування домену функції (часу або частоти), а не до діапазону. (Вибірковий цифровий сигнал, який ви отримуєте зі своєї звукової карти, кількісно визначається як у домені, так і в діапазоні.)

Цифровий байт-потік, який ви отримуєте зі своєї звукової карти, містить "зразки" вихідного безперервного (аналогового) сигналу з мікрофона. Якщо взяти DFT зразка g (t), ми все одно отримаємо G (f). Пам'ятайте, що G (f) - це просто інший спосіб подання інформації, що міститься в g (t). Якщо ми підкорялися теорії Найквіста , вибірковий сигнал g (t) містить всю "інтелект" вихідного безперервного сигналу, тому наш дискретний G (f) повинен містити всю інформацію з нашого вихідного безперервного сигналу. В батьківському відношенні G (f) все ще є складною функцією.

Ось тут і приходить магія зміщення субпікселів, але в цьому випадку я пишу про зміщення звукового сигналу в часі менше, ніж на зразок, оскільки це те саме.

eiπ2

Це означає, що ми можемо перенести аудіозапис у часі (на будь-яку кількість, яку ми виберемо, включаючи частку вибіркового часу), просто змінивши фазу G (t). Насправді це твердження, можливо, трохи надто випадкове. Для не квантованого вибіркового сигналу фазу можна регулювати довільно (це є причиною того, що я раніше розрізняв квантування домену та діапазону). Однак для квантованого вибіркового сигналу (наприклад, наш байт-потік аудіо) розмір кроку квантування (тобто кількість біт) визначає роздільну здатність, за допомогою якої ми можемо регулювати фазу. Коли ми обернемо перетворення Фур'є G (f) (або DIFT це для цього відібраного сигналу), новий набір зразків g '(t) = DIFT (G (F)) буде зміщений у часі на суму, яку ми виберемо.

Застосовувати це до своїх пікселів просто означає використовувати двовимірний FT замість обговорюваного тут 1-мірного FT.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.