1 | % directory where the WAV-files of the birds are stored: |
---|
2 | dpath = fullfile(mildatapath,'birds'); |
---|
3 | |
---|
4 | fname = 'PC13_20090531_050000_0.wav'; |
---|
5 | %fname = 'PC8_20090531_050000_99.wav'; |
---|
6 | [signal,fs] = wavread(fullfile(dpath,'wavs',fname)); |
---|
7 | |
---|
8 | [S,f,t] = spectrogram(signal,512,256,[],fs); |
---|
9 | fmax = 256;%Defined in paper |
---|
10 | |
---|
11 | figure(2); clf; showspec(S,f,t); |
---|
12 | [S,f,t] = spectrogram(signal,512,256,fmax,fs); |
---|
13 | |
---|
14 | figure(2); imagesc(t,f,abs(S)); |
---|
15 | axis xy; xlabel('time (s)'); ylabel('freq.'); |
---|
16 | |
---|
17 | figure(3); clf; showspec(imag(S), f,t); |
---|
18 | |
---|
19 | %% |
---|
20 | % smooth and threshold the spectrogram? |
---|
21 | G = fspecial('gaussian',[5 5],2); % window 5x5, sigma=2 |
---|
22 | I = imfilter(abs(S),G,'same'); |
---|
23 | t = dd_threshold(I(:),0.8); |
---|
24 | mask = (I>t); |
---|
25 | mask(f<2000,:) = 0; |
---|
26 | |
---|
27 | figure(4); clf; imagesc(mask); axis xy; |
---|
28 | % measure something: |
---|
29 | x = regionprops(bwlabel(mask),abs(S)); |
---|
30 | y = x([x.Area]>10) |
---|
31 | |
---|
32 | |
---|
33 | |
---|
34 | %% |
---|
35 | s2 = specwhiten(S,fmax); |
---|
36 | figure(5); imagesc(t,f,s2); |
---|
37 | axis xy; xlabel('time (s)'); ylabel('freq.'); |
---|
38 | |
---|
39 | % do the same smoothing but change the threshold |
---|
40 | G = fspecial('gaussian',[5 5],2); |
---|
41 | I = imfilter(abs(s2),G,'same'); |
---|
42 | t = dd_threshold(I(:),0.95); |
---|
43 | mask = (I>t); |
---|
44 | mask(f<2000,:) = 0; |
---|
45 | |
---|
46 | figure(6); clf; imagesc(mask); axis xy; %Looks pretty similar, but less small blobs |
---|
47 | % measure something: |
---|
48 | x = regionprops(bwlabel(mask),abs(s2)); |
---|
49 | y = x([x.Area]>10) |
---|
50 | |
---|