Черно-белые точки в частотной области рисунка изображения
У меня есть эта простая строка кода, которая читает изображение и принимает преобразование Фурье изображения, используя fft2
функция matlab
а затем приведение нижних частот к центру фигуры fftshift
,
Проблема в том, что на рисунке изображения в частотной области:
1) Какие из черных / белых точек представляют высокие частоты?
2) Показывает ли плотность каждой черной / белой точки силу коэффициента каждой частоты?
clc;
clear all;
format short;
format compact;
im=imread('cameraman.tif');
figure,imshow(im);
F=fftshift(fft2(im));
figure,imshow(uint8(abs(F)));
1 ответ
Ну, во-первых, вы неправильно визуализируете величину спектра. Вы наивно бросаете результат uint8
, Поэтому любые значения, превышающие 255, усекаются до 255. Обычно люди делают логарифм спектра и прибавляют 1, прежде чем брать журнал, чтобы избежать неопределенных ошибок.
Поэтому сделайте это:
figure; imshow(log(1 + abs(F)), []);
Вы получаете эту картину вместо:
Это намного лучшее представление спектра. Коэффициент постоянного тока имеет наибольшую интенсивность, и это в середине изображения. Высокочастотные коэффициенты движутся к внешним границам спектра. Вы видите, что есть линии в разных направлениях. Они фактически дают вам ориентацию наиболее заметных краев на изображении, начиная с вертикальной линии, что говорит о том, что в изображении оператора много вертикальных линий, что имеет смысл.
Кроме того, вы правы в том, что сила коэффициента соответствует интенсивности точки на изображении. Каждая точка на этом изображении говорит вам силу горизонтальной и вертикальной пространственной частоты, наблюдаемой в этой точке.