-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathimbasefilter.m
More file actions
53 lines (38 loc) · 781 Bytes
/
Copy pathimbasefilter.m
File metadata and controls
53 lines (38 loc) · 781 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
% Funzione filtro adattivo locale
% function R=imadvfilter(I,dim,vR)
%
% Input:
% I = matrice contenente l'immagine
% dim = dimensione filtro
% vR = varianza rumore immagine
function R=imbasefilter(I,dim,vR)
[~,~,c]=size(I);
if c==3
R(:,:,1)=imbasefilter(I(:,:,1),dim,vR);
R(:,:,2)=imbasefilter(I(:,:,2),dim,vR);
R(:,:,3)=imbasefilter(I(:,:,3),dim,vR);
return;
end
if vR==0
R=I;
return;
end
if mod(dim,2)==0
dim=dim+1;
end
padI=im2double(I);
[x,y]=size(padI);
vR0= ones(x,y)*vR;
F=ones(dim)/(dim*dim);
aml = filter2(F, padI);
avl = filter2(F, padI.^2) - aml.^2;
f0=avl>vR;
avl=(avl.*f0) + vR0 .* ~f0;
padIR = padI - vR0./avl.*(padI - aml);
if isa(I,'double')
depadI=im2double(padIR);
else
depadI=im2uint8(padIR);
end
R=depadI;
end