Черно-белые точки в частотной области рисунка изображения

У меня есть эта простая строка кода, которая читает изображение и принимает преобразование Фурье изображения, используя 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)), []);

Вы получаете эту картину вместо:

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

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

Другие вопросы по тегам