Matlab - Filter
Matlab filter examples.
Example
Main script
main.m
%{
Dieses Script wendet auf das Bild I die beiden gegeben Filter an und
verwendet dabei verschieden große Fenster.
%}
load('I.mat') % In dieser Datei ist Bild I enthalten
windowSize = [3 5 7 49];
figure(1)
for i=1:length(windowSize)
% Medianfilter
I_median = medianFilter(I, windowSize(i));
subplot(2,length(windowSize), i);
imshow(I_median)
title( ['Median ', int2str(windowSize(i)), 'x', int2str(windowSize(i))] )
% Mittelwertfilter
I_mittelwert = mittelwertFilter(I, windowSize(i));
subplot(2,length(windowSize),1*length(windowSize)+ i);
imshow(I_mittelwert)
title( ['Mittelwert ', int2str(windowSize(i)), 'x', int2str(windowSize(i))] )
end
Moving average filter
mittelwertFilter.m
function [ J ] = mittelwertFilter( I, n )
%MITTELWERTFILTER Mittelwertfilter
% Wendet auf die Matrix I ein Mittelwert Filter mit der Fenstergröße n*n
% an. An den Rändern wird dabei Zeropadding verwendet.
if nargin < 2 error('Less arguments'); end
m = floor(n/2);
[row col] = size(I);
J = zeros(row, col);
% zeropadding (Anfügen von Nullen)
M = zeros(row+2*m, col+2*m);
M(m+1:end-m,m+1:end-m)=I;
% iterate row
for i=m+1:row-m
% iterate column
for j=m+1:col-m
window = M(i-m:i+m, j-m:j+m);
J(i,j) = sum(sum(window)) / (n*n);
end
end
J = uint8(J);
end
Median filter
medianFilter.m
function [ J ] = medianFilter( I, n )
%MEDIANFILTER Medianfilter
% Wendet auf die Matrix I ein Median Filter mit der Fenstergröße n*n an.
% An den Rändern wird dabei Zeropadding verwendet.
if nargin < 2 error('Less arguments'); end
m = floor(n/2);
[row col] = size(I);
J = zeros(row, col);
% zeropadding (Anfügen von Nullen)
M = zeros(row+2*m, col+2*m);
M(m+1:end-m,m+1:end-m)=I;
% iterate row
for i=m+1:row-m
% iterate column
for j=m+1:col-m
window = M(i-m:i+m, j-m:j+m);
J(i,j) = median(window(:));
end
end
J = uint8(J);
end