uni/bv/uebung7.m

45 lines
1.9 KiB
Matlab

% 1.
% Let's take two sequences f(x) = {0 -> 1, 1 -> 1, 2 -> 100} and
% g(x) = { 0 -> 2, 1 -> 3, 2 -> 0}. The sum of both is
% h(x) = {0 -> 3, 1 -> 4, 2 -> 100}. The mean values are: mean(f) = 34,
% mean(g) = 5/3, mean(h) = 107/3 = 34 + 5/3. The linearity mean(f) +
% mean(g) = mean(f + g) is satisfied. The median values are: median(f) = 1,
% median(g) = 2, median(h) = 4. But median(f) + median(g) != median(f + g).
% Therefore the linearity isn't satisfied which means that median is
% non-linear.
% 2.
peppers = rgb2gray(imread('peppers.png'));
peppers_1 = imnoise(peppers, 'salt & pepper', 0.02);
peppers_2 = imgaussfilt(peppers);
peppers_3 = imnoise(peppers, 'salt & pepper', 0.6);
peppers_4 = imnoise(peppers, 'poisson');
peppers_5 = imgaussfilt(peppers, 3);
peppers_fft = fftshift(log(abs(fft2(peppers))));
peppers1_fft = fftshift(log(abs(fft2(peppers_1))));
peppers2_fft = fftshift(log(abs(fft2(peppers_2))));
peppers3_fft = fftshift(log(abs(fft2(peppers_3))));
peppers4_fft = fftshift(log(abs(fft2(peppers_4))));
peppers5_fft = fftshift(log(abs(fft2(peppers_5))));
%figure (1), imshow(peppers_fft, []);
%figure (2), imshow(peppers1_fft, []);
%figure (3), imshow(peppers2_fft, []);
%figure (4), imshow(peppers3_fft, []);
%figure (5), imshow(peppers4_fft, []);
%figure (6), imshow(peppers5_fft, []);
%3.
low_pass = fspecial('gaussian', [3 3], 1);
low_pass_fft = fft2(low_pass, size(peppers, 1), size(peppers, 2));
high_pass = fspecial('laplacian', 0.2);
high_pass_fft = fft2(high_pass, size(peppers, 1), size(peppers, 2));
peppers_fft2 = fft2(peppers);
peppers_filtered_low_fft = peppers_fft2 .* low_pass_fft;
peppers_filtered_high_fft = peppers_fft2 .* high_pass_fft;
peppers_filtered_low = real(ifft2(peppers_filtered_low_fft));
peppers_filtered_high = real(ifft2(peppers_filtered_high_fft));
figure (7), imshow(peppers_filtered_low, []);
figure (8), imshow(peppers_filtered_high, []);