source: birds/domilbirds.m @ 146

Last change on this file since 146 was 61, checked in by vcheplygina, 11 years ago
File size: 1.9 KB
RevLine 
[50]1% directory where the WAV-files of the birds are stored:
2dpath = fullfile(mildatapath,'birds');
3
[56]4fname = 'PC13_20090531_050000_0.wav';
[50]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);
[54]9fmax = 256;%Defined in paper
[50]10
[52]11figure(2); clf; showspec(S,f,t);
[54]12[S,f,t] = spectrogram(signal,512,256,fmax,fs);
13
14figure(2); imagesc(t,f,abs(S));
15axis xy; xlabel('time (s)'); ylabel('freq.');
16
[52]17figure(3); clf; showspec(imag(S), f,t);
[50]18
[58]19%%
[53]20% smooth and threshold the spectrogram?
21G = fspecial('gaussian',[5 5],2); % window 5x5, sigma=2
22I = imfilter(abs(S),G,'same');
23t = dd_threshold(I(:),0.8);
24mask = (I>t);
25mask(f<2000,:) = 0;
26
27figure(4); clf; imagesc(mask); axis xy;
[56]28% measure something:
29x = regionprops(bwlabel(mask),abs(S));
[61]30y1 = x([x.Area]>10)
[53]31
32
[54]33
34%%
[57]35s2 = specwhiten(S,fmax);
[60]36%figure(5); imagesc(t,f,s2);
37%axis xy; xlabel('time (s)'); ylabel('freq.');
[58]38
[59]39% do the same smoothing but change the threshold
40G = fspecial('gaussian',[5 5],2);
[58]41I = imfilter(abs(s2),G,'same');
42t = dd_threshold(I(:),0.95);
43mask = (I>t);
44mask(f<2000,:) = 0;
45
[59]46figure(6); clf; imagesc(mask); axis xy;    %Looks pretty similar, but less small blobs
[58]47
[61]48labeledx = bwlabel(mask);
49Nseg = max(unique(labeledx)); %Segment labels, segment 0 is background
[60]50
[61]51absim = abs(S);
52realim = real(S);
53imagim = imag(S);
[60]54
55
[61]56maskfeats = nan(Nseg,3);
57absfeats = nan(Nseg, 7);
58
59
60for i=1:Nseg
61   
62    ix = (labeledx == i);
63   
64    pixtotal = sum(sum(ix));
65    pixheight = max(sum(ix,1));
66    pixwidth = max(sum(ix,2));
67
68    maskfeats(i,:) = [pixtotal pixheight pixwidth];
69   
70   
71    seg = absim(ix);
72    absfeats(i,1) = mean(seg);
73    absfeats(i,2) = std(seg);
74   
75    absfeats(i,3) = quantile(seg(:),0);
76    absfeats(i,4) = quantile(seg(:),0.25);
77    absfeats(i,5) = quantile(seg(:),0.5);
78    absfeats(i,6) = quantile(seg(:),0.75);
79    absfeats(i,7) = quantile(seg(:),1);
80   
81end
82
83mildata = [maskfeats absfeats];
84
85
86
87
Note: See TracBrowser for help on using the repository browser.