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()