public static void DrawSonogram(BaseSonogram sonogram, string path, List <AcousticEvent> predictedEvents, double threshold, double[] scores) { Log.WriteLine("# Start to draw image of sonogram."); bool doHighlightSubband = false; bool add1kHzLines = true; using (System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines)) using (Image_MultiTrack image = new Image_MultiTrack(img)) { //img.Save(@"C:\SensorNetworks\WavFiles\temp1\testimage1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); image.AddTrack(Image_Track.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); if (scores != null) { double normMax = threshold * 4; //so normalised eventThreshold = 0.25 for (int i = 0; i < scores.Length; i++) { scores[i] /= normMax; if (scores[i] > 1.0) { scores[i] = 1.0; } if (scores[i] < 0.0) { scores[i] = 0.0; } } image.AddTrack(Image_Track.GetScoreTrack(scores, 0.0, 1.0, 0.25)); } image.AddEvents(predictedEvents); image.Save(path); } }
static Image DrawSonogram(BaseSonogram sonogram, double[,] hits, List <double[]> scores, List <AcousticEvent> predictedEvents, double eventThreshold) { bool doHighlightSubband = false; bool add1kHzLines = true; int maxFreq = sonogram.NyquistFrequency / 2; Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage(maxFreq, 1, doHighlightSubband, add1kHzLines)); image.AddTrack(Image_Track.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); if (scores != null) { foreach (double[] array in scores) { image.AddTrack(Image_Track.GetScoreTrack(array, 0.0, 1.0, eventThreshold)); } } if (hits != null) { image.OverlayRainbowTransparency(hits); } if (predictedEvents.Count > 0) { image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); } //DrawSonogram()