2009-02-26 2 views
4

Я немного читал о сглаживании и, похоже, имеет смысл, но есть одна вещь, о которой я не слишком уверен. Как именно вы находите максимальную частоту сигнала (в контексте графики).Сглаживание: предпочтительные способы определения максимальной частоты?

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

Скажем, это для одномерного, конечного и серого изображения (в пикселях). Правильно ли я предполагаю, что вы могли бы просто сканировать всю линию пикселя (в пространственной области), ища а для минимального колебания, а инверсия этого наименьшего колебания была бы максимальной частотой?

значения Ex {23,26,28,22,48,49,51,49}

Частота: Относится к множеству {}

(1/2) = 0,5: {28, 22}

(1/4) = 0,25: {22,48,49,51}

Так бы быть 0,5 максимальная частота?

И что было бы идеальным способом рассчитать это для подобной линии пикселей, как и выше?

И на более теоретической заметке, что, если ваш ввод данных выборки был бесконечным (более похожим на реальный мир)? Будет ли действительный процесс будет вроде:

Predetermine a decent interval for point sampling 
Determine max frequency from point sampling 
while(2*maxFrequency > pointSamplingInterval) 
{ 
pointSamplingInterval*=2 
Redetermine maxFrequency from point sampling (with new interval) 
} 

Я знаю, что эти алгоритмы чреваты неэффективностью, так что некоторые из предпочтительных способов? (Не ищу что-то безумное, оптимизированное, просто принципиально лучшие понятия)

ответ

2

Надлежащим образом подойти к этому использует преобразование Фурье (на практике, БПФ или быстрого преобразования Фурье)

теория работает следующим образом: если у вас есть набор пикселей с цветом/оттенках серого , то можно сказать, что изображение представлено пикселями в «пространственной области»; то есть каждый индивидуальный номер указывает изображение в определенном пространственном местоположении.

Однако мы действительно хотим представлять изображение в «частотной области». Вместо каждого отдельного номера, определяющего каждый пиксель, каждое число представляет собой амплитуду конкретной частоты в изображении в целом.

Инструмент, который преобразует из «пространственной области» в «частотную область», представляет собой преобразование Фурье.Выходной сигнал FT будет представлять собой последовательность чисел, определяющую относительный вклад разных частот.

Для того, чтобы найти максимальную частоту, вы выполняете FT и смотрите на амплитуды, которые вы получаете для высоких частот - тогда это просто вопрос поиска с самой высокой частоты до тех пор, пока вы не нажмете на свой «минимальный значительный амплитуда ".

Вы можете закодировать свой собственный FFT, но это гораздо проще на практике использовать предварительно упакованные библиотеки, такие как FFTW

0

Я думаю, что вам нужно приложение анализа Фурье (http://en.wikipedia.org/wiki/Fourier_analysis). Я изучил это, но никогда не использовал его, поэтому возьмите его с большой щекой соли, но я верю, что если вы правильно его примените к вашему набору чисел, вы получите набор частот, которые являются компонентами серии, а затем вы можете выбрать максимально высокий.

Я не могу указать вам на фрагмент кода, который делает это, но я уверен, что он где-то там.

2

Вы не сканировать сигнал высокой частоты, а затем выбрать частоту дискретизации: Вы выбираете частоту дискретизации, которая достаточно высока, чтобы захватывать вещи, которые вы хотите захватить, а затем вы фильтр сигнал удалить высокие частоты. Вы выбрасываете все выше половины частоты дискретизации до.

Я правильно предполагая, что вы могли бы просто сканировать весь пиксель линии (в пространственной области) ищет для минимальное колебание и обратное, что наименьшее колебание бы максимальную частоту?

Если у вас есть линия пикселей, выборка уже выполнена. Слишком поздно применять антиалиасинговый фильтр. Самая высокая частота, которая может присутствовать, составляет половину частоты дискретизации («1/2px», я думаю).

А на более теоретической ноте, что если ваш входной выборки бесконечна (больше похоже на реальный мир)?

Да, это когда вы используете фильтр. Во-первых, у вас есть непрерывная функция, такая как реальное изображение (бесконечная частота дискретизации). Затем вы отфильтровываете его, чтобы удалить все, что находится выше fs/2, затем вы можете выбрать его в fs (оцифровать изображение в пикселях). Камеры фактически не делают никакой фильтрации, поэтому вы получаете Moire patterns, когда вы фотографируете кирпич и т.д.

alt text

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

Например, если вы хотите сгенерировать прямоугольную волну с помощью компьютера, вы не можете просто наивно чередовать максимальное и минимальное значения. Это было бы похоже на выборку сигнала реальной жизни без фильтрации в первую очередь. Высшие гармоники обертываются обратно в основной диапазон и вызывают множество ложных всплесков в спектре. Вам необходимо создать точки, как если бы они были отобраны из фильтрованной непрерывной математической функции:

alt text

Смежные вопросы