Вкратце, частота относится к скорости изменения. Точнее говоря, частота является обратной величиной периода изменения, то есть количества времени, которое требуется для перехода от одной яркости (или любой другой) к другой яркости и обратно. Чем быстрее затем произойдет изменение (например, от светлого к темному), тем выше визуальная «частота», необходимая для представления этой части изображения.
Другими словами, вы можете думать о частоте в изображении как о скорости изменения. Части изображения, которые быстро изменяются от одного цвета к другому (например, острые края), содержат высокие частоты, а части, которые изменяются постепенно (например, большие поверхности со сплошными цветами), содержат только низкие частоты.
Когда мы говорим о DCT и FFT и других подобных преобразованиях, мы обычно делаем их на части изображения (например, для сжатия JPEG, обнаружения краев и т. Д.). Поэтому имеет смысл говорить о преобразованиях в контексте блока преобразования заданного размера.
Представьте себе, если хотите, блок данных изображения размером 32 × 32 пикселя. (Это число произвольно.) Предположим, что изображение представляет собой простой градиент, который является белым с левой стороны, черным по центру и белым с правой стороны. Мы бы сказали, что этот сигнал имеет период, равный примерно одной длине волны на 32 пикселя ширины, потому что он проходит полный цикл от белого до черного и снова белого через каждые 32 пикселя.
Мы можем произвольно назвать эту частоту «1» - 1 цикл на 32 пикселя, то есть. Я смутно вспоминаю, что это обычно называется θ в учебниках по преобразованию, или, может быть, θ / 2, но я могу помнить неправильно. В любом случае, мы пока назовем это 1, потому что это действительно произвольно в абсолютном смысле; важна связь между частотами в относительном смысле. :-)
Предположим, у вас есть второе изображение, которое имеет белый цвет на одном краю, затем исчезло в два раза быстрее, чтобы оно перешло от белого к черному, к белому, черному и снова к белому на другом краю. Затем мы бы назвали эту частоту «2», потому что она меняется в два раза чаще по ширине блока из 32 пикселей.
Если бы мы хотели воспроизвести эти простые изображения, мы могли бы буквально сказать, что каждая строка состоит из сигнала с частотой 1 или 2, и вы бы знали, как выглядят изображения. Если изображения стали черными до 50% серого, вы могли бы сделать то же самое, но вы должны были бы сказать, что они имели частоту 1 или 2 при интенсивности 50%.
Конечно, изображения в реальном мире - это не просто градиент. Изображение меняется часто, а не периодически при сканировании слева направо. Однако в достаточно маленьком блоке (например, 8 пикселей, 16 пикселей) вы можете аппроксимировать этот ряд пикселей как сумму последовательности сигналов, начиная со среднего значения пикселей в строке, за которым следует значение " Частота 0,5 "сигнала (черный с одной стороны, затемнение до белого) для смешивания (или с отрицательным значением, количества этого сигнала для вычитания), за которым следуют величина частоты 1, частоты 2, частоты 4 и т. д. ,
Теперь изображение уникально тем, что оно имеет частоту в обоих направлениях; он может становиться все светлее и темнее при движении как по горизонтали, так и по вертикали. По этой причине мы используем 2D-преобразования DCT или FFT вместо 1D. Но принцип все еще в основном тот же. Вы можете точно представить изображение 8x8 с сеткой 8x8 из одинаковых по размеру блоков.
Изображения также более сложны из-за цветов, но мы пока проигнорируем это и предположим, что мы смотрим только на одно изображение в оттенках серого, которое вы можете получить, глядя на красный канал фотографии в изоляции.
Что касается того, как читать результаты преобразования, это зависит от того, смотрите ли вы на 1D преобразование или 2D преобразование. Для 1D-преобразования у вас есть ряд бинов. Первый - это среднее значение всех входных значений. Второе - это количество добавляемого сигнала частоты 1, третье - это количество добавляемого сигнала частоты 2 и т. Д.
Для 2D-преобразования у вас есть сетка значений n x n . Верхний левый угол, как правило, является таким средним, и когда вы идете в горизонтальном направлении, каждое ведро содержит количество сигнала, который нужно смешать с горизонтальной частотой 1, 2, 4 и т. Д., А когда вы идете в вертикальном направлении, он количество сигнала для смешивания с частотой вертикальной развертки 1, 2, 4 и т. д.
Это, конечно, полная история, если вы говорите о DCT; напротив, каждая ячейка для БПФ содержит действительные и мнимые части. БПФ по-прежнему основывается на той же самой базовой идее (своего рода), за исключением того, что способ отображения частот в ячейках различен, а математика более привлекательна. :-)
Конечно, наиболее распространенная причина для генерации такого рода преобразований состоит в том, чтобы затем сделать еще один шаг и выбросить некоторые данные. Например, DCT используется в сжатии JPEG. При чтении значений в виде зигзагообразного паттерна, начиная с верхнего левого угла (среднее значение) и перемещаясь к нижнему правому краю, в первую очередь записываются наиболее важные данные (средняя и низкочастотная информация), за которыми следуют постепенно увеличивающиеся данные о частоте. В какой-то момент вы в основном говорите «это достаточно хорошо» и выбрасываете данные с самой высокой частотой. Это существенно сглаживает изображение, отбрасывая его мелкие детали, но все равно дает примерно правильное изображение.
И IIRC, FFT также иногда используются для обнаружения краев, где вы отбрасываете все, кроме высокочастотных компонентов, в качестве средства обнаружения областей с высокой контрастностью на острых краях.
У National Instruments есть хорошая статья, которая объясняет это фотографиями. :-)