2015-06-20 2 views
0

У меня есть эта простая строка кода, которая считывает изображение и принимает преобразование Фурье изображения с использованием fft2 функции matlab, а затем приведение нижних частот в центр фигуры на fftshift ,
Проблема в том, что на рисунке изображения в частотной области:B & W Точки в частотной области Рисунок изображения

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))); 

ответ

2

Ну, с одной стороны, вы не визуализируете величину спектра должным образом. Вы наивно отбрасываете результат до uint8. Поэтому любые значения, превышающие 255, усекаются до 255. Одна вещь, которую обычно делают люди, - это взять логарифм спектра и добавить 1 перед записью, чтобы не было никаких неопределенных ошибок.

Таким образом, сделать это:

figure; imshow(log(1 + abs(F)), []); 

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

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

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

+0

Однако немного поздно, большое спасибо. – Light

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