source: birds/gendatbirds_veronika.m @ 82

Last change on this file since 82 was 61, checked in by vcheplygina, 11 years ago
File size: 1.6 KB
Line 
1
2%NOT DONE Need a list of bag labels first corresponding to the WAV files!
3
4
5wavlist = dir(fullfile(mildatapath,'birds', 'wavs', '*.wav'));
6
7
8mildata = [];
9instlab=[];
10bagid = [];
11
12for j=1:length(wavlist)
13    [signal,fs] = wavread(fullfile(mildatapath,'birds','wavs',wavlist(j).name));
14
15   
16    fmax = 256;
17    [S,f,t] = spectrogram(signal,512,256,fmax,fs);
18   
19    s2 = specwhiten(S,fmax);
20    G = fspecial('gaussian',[5 5],2);
21    I = imfilter(abs(s2),G,'same');
22    t = dd_threshold(I(:),0.95);
23    mask = (I>t);
24    mask(f<2000,:) = 0;
25
26
27    labeledx = bwlabel(mask);
28    Nseg = max(unique(labeledx)); %Segment labels, segment 0 is background
29
30    absim = abs(S);
31    realim = real(S);
32    imagim = imag(S);
33
34   
35
36    maskfeats = nan(Nseg,3);
37    absfeats = nan(Nseg, 7);
38   
39   
40    bagjlab = baglabs(j,:);
41   
42    for i=1:Nseg
43
44        ix = (labeledx == i);
45
46        pixtotal = sum(sum(ix));
47        pixheight = max(sum(ix,1));
48        pixwidth = max(sum(ix,2));
49
50        maskfeats(i,:) = [pixtotal pixheight pixwidth];
51
52
53        seg = absim(ix);
54        absfeats(i,1) = mean(seg);
55        absfeats(i,2) = std(seg);
56
57        absfeats(i,3) = quantile(seg(:),0);
58        absfeats(i,4) = quantile(seg(:),0.25);
59        absfeats(i,5) = quantile(seg(:),0.5);
60        absfeats(i,6) = quantile(seg(:),0.75);
61        absfeats(i,7) = quantile(seg(:),1);
62       
63        instlab = [instlab; bagjlab];
64        bagid = [bagid; j];
65    end
66   
67    segdata = [maskfeats absfeats];
68    mildata = [mildata; segdata];
69end
70
71   
72a = genmil(mildata, instlab, bagid, 'presence');
Note: See TracBrowser for help on using the repository browser.