2016-05-26 8 views
0

Я унаследовал приложение для обработки изображений. Пытаемся разобраться в этом. У меня три вопроса. 1) Имею ли я правильную последовательность F2C, C2C, C2F? 2) Должен ли я запускать C2C в одном направлении один раз? 3) В каком направлении я должен использовать (вперед или назад)?cufft обработка изображения

фона:

Вход и выход представляет собой 2D-изображение.

Сначала a R2C выполняется с использованием cufftF2C (cuda off the shelf) Затем выполняется C2C. Это было вручную закодировано оригинальным разработчиком. И наконец, C2R выполняется с использованием cufftC2F (cuda off the shelf)

В результате получается отличное изображение, появляются только неприглядные линии зигзага. Первоначальный разработчик использовал 1D-планы (nx = x и batch = y). Я хочу заменить их на 2D-планы (nx = x и ny = y). Я также хочу заменить домашний C2C cuda с полки cufftC2C.

+3

В [CUFFT] нет F2C или C2F (http://docs.nvidia.com/cuda/cufft/index.HTML # аннотация). Возможно, вы имеете в виду R2C и C2R. Действительно хороший ответ здесь (IMO) требует очень долгого ответа, в основном учебника по преобразованию Фурье. Мне кажется, это довольно широкий вопрос. Неясно, какие знания, если у вас есть, преобразований Фурье, что они делают и как они используются (что является темой, которая полностью не зависит от CUDA). –

ответ

1

1) Имеет ли последовательность последовательность [R2C], C2C, [C2R]? Нет, в преобразовании Фурье есть две области: пространство и частота. Преобразование переходит из пространства в частоту с CUFFT_FORWARD и частоты в пространство с CUFFT_INVERSE.

2) Должен ли я запускать C2C в одном направлении один раз? В зависимости от использования эрмитовой симметрии вам необязательно нужно C2C (см. Ниже).

3) В каком направлении следует использовать (вперед или назад)? Если вы хотите применить фильтр обработки изображений, то ваш результат, скорее всего, будет в том же пространстве, что и ваш вход, поэтому вы должны применить его как одно прямое преобразование и одно обратное преобразование.

Заметки о компоновке данных и R2C/C2R оптимизации

При использовании C2R или R2C преобразования, cufftis making use of the Hermitian symmetry из частотно-пространственного вектора, следовательно, исключительно сохранение в первой половине вектора (оставшаяся часть не является даже прикоснулся):

Помимо общего комплекса к сложному (C2C) преобразования, CUFFT реализует эффективно два типа: в режиме реального к сложному (R2C) и комплекса к реальному (C2R). Во многих практических приложениях входной вектор вещественный. Нетрудно показать, что в этом случае выход удовлетворяет эрмитовой симметрии (X k = X N - k *, где звезда обозначает комплексное сопряжение). Обратное также верно: для комплексно-эрмитовых входов обратное преобразование будет чисто вещественнозначным. cuFFT использует эту избыточность и работает только в первой половине эрмитова вектора.

Если операция вы выполняете в частотной области не имеют одинаковую эрмитовое симметрию, оптимизация не так больше, а C2R операция не даст вам ожидаемого результата.

Также обратите внимание на требования к данным и компоновку подхода, который немного отличается от подхода для C2C.