/
smoothen_frequency_image.m
33 lines (28 loc) · 1.18 KB
/
smoothen_frequency_image.m
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
function nfimg = smoothen_frequency_image(fimg,RLOW,RHIGH,diff_cycles)
valid_nbrs = 3; %uses only pixels with more then valid_nbrs for diffusion
[ht,wt] = size(fimg);
nfimg = fimg;
N = 1;
h = fspecial('gaussian',2*N+1);
cycles = 0;
invalid_cnt = sum(sum(fimg<RLOW | fimg>RHIGH));
while((invalid_cnt>0 &cycles < diff_cycles) | cycles < diff_cycles)
fimg = [flipud(fimg(1:N,:));fimg;flipud(fimg(ht-N+1:ht,:))]; %pad the rows
fimg = [fliplr(fimg(:,1:N)),fimg,fliplr(fimg(:,wt-N+1:wt))]; %pad the cols
for i=N+1:ht+N
for j = N+1:wt+N
blk = fimg(i-N:i+N,j-N:j+N);
msk = (blk>=RLOW & blk<=RHIGH);
if(sum(sum(msk))>=valid_nbrs)
blk =blk.*msk;
nfimg(i-N,j-N)=sum(sum(blk.*h))/sum(sum(h.*msk));
else
nfimg(i-N,j-N)=-1; %invalid value
end;
end;
end;
fimg = nfimg;
invalid_cnt = sum(sum(fimg<RLOW | fimg>RHIGH));
cycles = cycles+1;
end;
cycles;