Files
assignment05/Assignment4_211/assignment4_3.m
2026-06-15 11:10:31 +02:00

52 lines
1.1 KiB
Matlab

clear; close all; clc;
img = imread('pavian.png'); % Choose any picture you like here
img = rgb2gray(img);
%% Display image
figure; subplot(131);
imshow(img);
title('Ausgangsbild');
%% FFT
fft2d = fft2(img);
% Display the FFT image.
subplot(132);
imshow(log(fftshift(abs(fft2d))), []);
title('2D-FFT');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
% Approach: We want to remove the low frequencies (high pass filter) to
% keep the areas of the image where the lightness changes relative to
% nearby pixels
% Shift FFT so low frequencies are in the center
F = fftshift(fft2d);
% Get image size
[M, N] = size(F);
% Radius of how much to remove
r = 25;
% We cut out the center of the fft low frequencies
H = ones(M, N);
H(M/2-r:M/2+r, N/2-r:N/2+r) = 0;
% Apply filter
F_filtered = F .* H;
% Shift back
fft2d = ifftshift(F_filtered);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% IFFT to obtain filtered image
img_filtered = ifft2(fft2d);
subplot(133);
imshow(real(img_filtered), []);
title('Gefiltertes Ausgangssignal');