ZAD1: Kreirati MATLAB funkciju koja kreira α‐trimmed mean filter. Ovaj filtar je specijalni slučaj L‐filtara kod koga se vrši sortiranje vrijednosti u L1xL2 lokalnom susjedstvu tačke i kao izlaz iz filtra uzima srednja vrijednost L srednjih piksela. Podrazumjevano je L1, L2 i L neparno.
Kod je sledeci :
Code:
function [ OUT ] = atmf( IN,L,L1,L2 )
%ATMF Alpha-Trimmed Mean Filter
% [OUT]=atmf(IN,L,L1,L2)
% Funkcija vraca isfiltriranu matricu. Filtriranje je izvrseno
% prozorom dimenzije L1xL2 sa odabranih L sredisnjih
% vrijednosti.
OUT=zeros(size(IN,1)-2*floor(L1/2),size(IN,2)-2*floor(L2/2));
if rem(L1,2)==0 | rem (L2,2)==0 | rem(L,2)==0
error('Koeficijenti L,L1 i L2 ne smiju biti parni.');
end
if L>L1*L2 | L<1
error('Koeficijent L mora bit u granicama 1:L1*L2.');
end
-----------------------------------------------------
for y=1+floor(L1/2):size(IN,1)-floor(L1/2)
for x=1+floor(L2/2):size(IN,2)-floor(L2/2)
% Za svaki piksel nove slike
counter=1;
for v=y-floor(L1/2):y+floor(L1/2)
for u=x-floor(L2/2):x+floor(L2/2)
V(counter)=IN(v,u);
counter=counter+1;
-----------------------------------------------------
end
end
V=sort(V);
OUT(y-floor(L1/2),x-floor(L2/2))= mean(V((1:L)+floor(L1*L2-L)/2));
end
end
Indexes=(1:L)+floor(L1*L2-L)/2
function [ OUT ] = atmf( IN,L,L1,L2 )
%ATMF Alpha-Trimmed Mean Filter
% [OUT]=atmf(IN,L,L1,L2)
% Funkcija vraca isfiltriranu matricu. Filtriranje je izvrseno
% prozorom dimenzije L1xL2 sa odabranih L sredisnjih
% vrijednosti.
OUT=zeros(size(IN,1)-2*floor(L1/2),size(IN,2)-2*floor(L2/2));
if rem(L1,2)==0 | rem (L2,2)==0 | rem(L,2)==0
error('Koeficijenti L,L1 i L2 ne smiju biti parni.');
end
if L>L1*L2 | L<1
error('Koeficijent L mora bit u granicama 1:L1*L2.');
end
-----------------------------------------------------
for y=1+floor(L1/2):size(IN,1)-floor(L1/2)
for x=1+floor(L2/2):size(IN,2)-floor(L2/2)
% Za svaki piksel nove slike
counter=1;
for v=y-floor(L1/2):y+floor(L1/2)
for u=x-floor(L2/2):x+floor(L2/2)
V(counter)=IN(v,u);
counter=counter+1;
-----------------------------------------------------
end
end
V=sort(V);
OUT(y-floor(L1/2),x-floor(L2/2))= mean(V((1:L)+floor(L1*L2-L)/2));
end
end
Indexes=(1:L)+floor(L1*L2-L)/2
MOLIM VAS JAKO JE HITNO !!!
HVALA
[Ovu poruku je menjao Aleksandar Ružičić dana 03.11.2008. u 01:28 GMT+1]