}//end CaneToadRecogniser public static void DrawSonogram(BaseSonogram sonogram, string path, double[,] hits, double[] scores, List <AcousticEvent> predictedEvents, double eventThreshold, double[] intensity) { Log.WriteLine("# Start to draw image of sonogram."); bool doHighlightSubband = false; bool add1kHzLines = true; //double maxScore = 50.0; //assumed max posisble oscillations per second using (System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines, doMelScale: false)) using (Image_MultiTrack image = new Image_MultiTrack(img)) { //img.Save(@"C:\SensorNetworks\WavFiles\temp1\testimage1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); image.AddTrack(ImageTrack.GetScoreTrack(scores, 0.0, 1.0, eventThreshold)); //double maxScore = 100.0; //image.AddSuperimposedMatrix(hits, maxScore); if (intensity != null) { double min, max; DataTools.MinMax(intensity, out min, out max); double threshold_norm = eventThreshold / max; //min = 0.0; intensity = DataTools.normalise(intensity); image.AddTrack(ImageTrack.GetScoreTrack(intensity, 0.0, 1.0, eventThreshold)); } image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); image.Save(path); } }
static Image DrawSonogram(BaseSonogram sonogram, double[,] hits, double[] scores, List <AcousticEvent> predictedEvents, double eventThreshold) { Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage()); //System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines); //img.Save(@"C:\SensorNetworks\temp\testimage1.png", System.Drawing.Imaging.ImageFormat.Png); //Image_MultiTrack image = new Image_MultiTrack(img); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (scores != null) { image.AddTrack(ImageTrack.GetScoreTrack(scores, 0.0, 0.5, eventThreshold)); } //if (hits != null) image.OverlayRedTransparency(hits); if (hits != null) { image.OverlayRainbowTransparency(hits); } if (predictedEvents.Count > 0) { image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); } //DrawSonogram()
public static Image DrawSonogram(BaseSonogram sonogram, IEnumerable <EventCommon> events) { var image = new Image_MultiTrack(sonogram.GetImage(false, true, doMelScale: false)); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); ////image.AddTrack(ImageTrack.GetWavEnvelopeTrack(sonogram, image.sonogramImage.Width)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); //############################################################################################ TODO TODO //convert blob events to acoustic events for drawing purposes var aeEvents = new List <AcousticEvent>(); foreach (var be in events) { aeEvents.Add(EventConverters.ConvertSpectralEventToAcousticEvent((SpectralEvent)be)); } image.AddEvents( aeEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); return(image.GetImage()); }
}//end DetectGratingEvents() static Image DrawSonogram(BaseSonogram sonogram, double[,] hits, double[] scores, List <AcousticEvent> predictedEvents, double eventThreshold) { //Log.WriteLine("# Start to draw image of sonogram."); bool doHighlightSubband = false; bool add1kHzLines = true; double maxScore = 32.0; //assume max period = 64. Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage(doHighlightSubband, add1kHzLines)); //System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines); //img.Save(@"C:\SensorNetworks\temp\testimage1.png", System.Drawing.Imaging.ImageFormat.Png); //Image_MultiTrack image = new Image_MultiTrack(img); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (scores != null) { image.AddTrack(ImageTrack.GetScoreTrack(scores, 0.0, 1.0, eventThreshold)); } if (hits != null) { image.OverlayRedMatrix(hits, maxScore); } if (predictedEvents.Count > 0) { image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); } //DrawSonogram()
} // CreateScorePlots() static Image DrawSonogram(BaseSonogram sonogram, double[,] hits, List <Plot> plots, List <AcousticEvent> predictedEvents) { bool doHighlightSubband = false; bool add1kHzLines = false; Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage(doHighlightSubband, add1kHzLines)); //System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines); //img.Save(@"C:\SensorNetworks\temp\testimage1.png", System.Drawing.Imaging.ImageFormat.Png); //Image_MultiTrack image = new Image_MultiTrack(img); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (plots != null) { foreach (Plot plot in plots) { image.AddTrack(ImageTrack.GetNamedScoreTrack(plot.data, 0.0, 1.0, plot.threshold, plot.title)); } } //if (hits != null) image.OverlayRedTransparency(hits); if (hits != null) { image.OverlayRedMatrix(hits, 1.0); } if (predictedEvents.Count > 0) { image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); } //DrawSonogram()
public static Image DisplayDebugImage(BaseSonogram sonogram, List <AcousticEvent> events, List <Plot> scores, double[,] hits) { bool doHighlightSubband = false; bool add1kHzLines = true; Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage(doHighlightSubband, add1kHzLines, doMelScale: false)); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); if (scores != null) { foreach (Plot plot in scores) { image.AddTrack(ImageTrack.GetNamedScoreTrack(plot.data, 0.0, 1.0, plot.threshold, plot.title)); //assumes data normalised in 0,1 } } if (hits != null) { image.OverlayRainbowTransparency(hits); } if (events.Count > 0) { foreach (AcousticEvent ev in events) // set colour for the events { ev.BorderColour = AcousticEvent.DefaultBorderColor; ev.ScoreColour = AcousticEvent.DefaultScoreColor; } image.AddEvents(events, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); }
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); } }
public static void DrawSonogram(BaseSonogram sonogram, FileInfo path, List <AcousticEvent> predictedEvents, List <double> thresholdList, List <double[]> scoresList) { Log.WriteLine("# Start to draw image of sonogram."); bool doHighlightSubband = false; bool add1kHzLines = true; // DO NOT NEED FOLLOWING TWO LINES BECAUSE HAVE CHANGED CODE TO ENSURE THAT ALL TEMPLATES USE THE SAME FRAME OVERLAP // AND THEREFORE ALL SCORE ARRAYS ARE OF THE SAME LENGTH FOR GIVEN RECORDING //Log.WriteLine("# Convert score arrays to correct length for display = {0}.", sonogram.FrameCount); //scoresList = ConvertScoreArrayLengths(scoresList, sonogram.FrameCount); // DO NOT NEED FOLLOWING LINES BECAUSE HAVE CHANGED CODE TO ENSURE THAT ALL TEMPLATES USE THE SAME FRAME OVERLAP // AND THEREFORE ALL SCORE ARRAYS ARE OF THE SAME LENGTH FOR GIVEN RECORDING // Edit the events because they will not necessarily correspond to the timescale of the display image //Log.WriteLine("# Convert time scale of events."); //foreach (AcousticEvent ae in predictedEvents) //{ // Log.WriteLine("# Event frame= {0} to {1}.", ae.oblong.RowTop, ae.oblong.RowBottom); // ae.FrameOffset = sonogram.FrameOffset; // ae.FramesPerSecond = sonogram.FramesPerSecond; // ae.oblong = AcousticEvent.ConvertEvent2Oblong(ae); // Log.WriteLine("# Event time = {0:f2} to {1:f2}.", ae.StartTime, ae.EndTime); // Log.WriteLine("# Event frame= {0} to {1}.", ae.oblong.RowTop, ae.oblong.RowBottom); //} 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(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); // Add in score tracks for (int s = 0; s < scoresList.Count; s++) { if (scoresList[s] == null) { continue; } double[] scores = scoresList[s]; double normMax = thresholdList[s] * 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(ImageTrack.GetScoreTrack(scores, 0.0, 1.0, 0.25)); } //end adding in score tracks image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); image.Save(path.FullName); }// using } // DrawSonogram()
public void WriteDebugImage(string recordingFileName, DirectoryInfo outputDirectory, BaseSonogram sonogram, List <AcousticEvent> events, List <Plot> scores, double[,] hits) { //DEBUG IMAGE this recognizer only. MUST set false for deployment. bool displayDebugImage = MainEntry.InDEBUG; if (displayDebugImage) { bool doHighlightSubband = false; bool add1kHzLines = true; Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage(doHighlightSubband, add1kHzLines, doMelScale: false)); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); if (scores != null) { foreach (Plot plot in scores) { image.AddTrack(ImageTrack.GetNamedScoreTrack(plot.data, 0.0, 1.0, plot.threshold, plot.title)); } //assumes data normalised in 0,1 } if (hits != null) { image.OverlayRainbowTransparency(hits); } if (events.Count > 0) { foreach (AcousticEvent ev in events) // set colour for the events { ev.BorderColour = AcousticEvent.DefaultBorderColor; ev.ScoreColour = AcousticEvent.DefaultScoreColor; } image.AddEvents( events, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } var debugImage = image.GetImage(); var debugPath = outputDirectory.Combine(FilenameHelpers.AnalysisResultName(Path.GetFileNameWithoutExtension(recordingFileName), this.Identifier, "png", "DebugSpectrogram")); debugImage.Save(debugPath.FullName); } }
public static Image DrawSonogram(BaseSonogram sonogram, IEnumerable <AcousticEvent> events) { var image = new Image_MultiTrack(sonogram.GetImage(false, true, doMelScale: false)); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); ////image.AddTrack(ImageTrack.GetWavEnvelopeTrack(sonogram, image.sonogramImage.Width)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); image.AddEvents( events, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); return(image.GetImage()); }
public static void DrawSonogram(BaseSonogram sonogram, string path, AcousticEvent ae) { Log.WriteLine("# Start to draw image of sonogram."); bool doHighlightSubband = false; bool add1kHzLines = true; using (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(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); var aes = new List <AcousticEvent>(); aes.Add(ae); image.AddEvents(aes, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); image.Save(path); } } //end DrawSonogram
protected virtual Image DrawSonogram( BaseSonogram sonogram, double[,] hits, List <Plot> scores, List <AcousticEvent> predictedEvents, double eventThreshold) { const bool doHighlightSubband = false; const bool add1KHzLines = true; var image = new Image_MultiTrack(sonogram.GetImage(doHighlightSubband, add1KHzLines, doMelScale: false)); ////System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines); ////img.Save(@"C:\SensorNetworks\temp\testimage1.png", System.Drawing.Imaging.ImageFormat.Png); ////Image_MultiTrack image = new Image_MultiTrack(img); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (scores != null) { foreach (var plot in scores) { image.AddTrack(ImageTrack.GetNamedScoreTrack(plot.data, 0.0, 1.0, plot.threshold, plot.title)); } } if (hits != null) { image.OverlayRedTransparency(hits); } if (predictedEvents != null && predictedEvents.Count > 0) { image.AddEvents( predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } var result = image.GetImage(); return(result); }
}//end Execute_Segmentation public static void DrawSonogram(BaseSonogram sonogram, string path, List <AcousticEvent> predictedEvents, double eventThreshold, double[] segmentation) { Log.WriteLine("# Start sono image."); bool doHighlightSubband = false; bool add1kHzLines = true; //double maxScore = 50.0; //assumed max posisble oscillations per second using (System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines, doMelScale: false)) using (Image_MultiTrack image = new Image_MultiTrack(img)) { //img.Save(@"C:\SensorNetworks\WavFiles\temp1\testimage1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); image.AddTrack(ImageTrack.GetScoreTrack(segmentation, 0.0, 1.0, eventThreshold)); image.AddEvents(predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); image.Save(path); } }
} // Analysis() private static Image DrawSonogram( BaseSonogram sonogram, double[,] hits, Plot scores, List <AcousticEvent> predictedEvents, double eventThreshold) { const bool DoHighlightSubband = false; const bool Add1KHzLines = true; var image = new Image_MultiTrack(sonogram.GetImage(DoHighlightSubband, Add1KHzLines)); ////System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines); ////img.Save(@"C:\SensorNetworks\temp\testimage1.png", System.Drawing.Imaging.ImageFormat.Png); ////Image_MultiTrack image = new Image_MultiTrack(img); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (scores != null) { image.AddTrack(ImageTrack.GetNamedScoreTrack(scores.data, 0.0, 1.0, scores.threshold, scores.title)); } if (hits != null) { image.OverlayRedTransparency(hits); } if ((predictedEvents != null) && (predictedEvents.Count > 0)) { image.AddEvents( predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); }
private static Image DrawSonogram( BaseSonogram sonogram, double[,] hits, Plot scores, List <AcousticEvent> predictedEvents, double eventThreshold) { var image = new Image_MultiTrack(sonogram.GetImage()); ////System.Drawing.Image img = sonogram.GetImage(doHighlightSubband, add1kHzLines); ////Image_MultiTrack image = new Image_MultiTrack(img); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (scores != null) { image.AddTrack(ImageTrack.GetNamedScoreTrack(scores.data, 0.0, 1.0, scores.threshold, scores.title)); } ////if (hits != null) image.OverlayRedTransparency(hits); if (hits != null) { image.OverlayRainbowTransparency(hits); } if (predictedEvents != null && predictedEvents.Count > 0) { image.AddEvents( predictedEvents, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } return(image.GetImage()); }
public static Image DrawSonogram(BaseSonogram sonogram, Plot scores, List <AcousticEvent> poi, double eventThreshold, double[,] overlay) { Image_MultiTrack image = new Image_MultiTrack(sonogram.GetImage(doHighlightSubband: false, add1KHzLines: false, doMelScale: false)); image.AddTrack(ImageTrack.GetTimeTrack(sonogram.Duration, sonogram.FramesPerSecond)); image.AddTrack(ImageTrack.GetSegmentationTrack(sonogram)); if (scores != null) { image.AddTrack(ImageTrack.GetNamedScoreTrack(scores.data, 0.0, 1.0, scores.threshold, scores.title)); } if (poi != null && poi.Count > 0) { image.AddEvents(poi, sonogram.NyquistFrequency, sonogram.Configuration.FreqBinCount, sonogram.FramesPerSecond); } if (overlay != null) { var m = MatrixTools.ThresholdMatrix2Binary(overlay, 0.5); image.OverlayDiscreteColorMatrix(m); } return(image.GetImage()); }
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()