public PreviewFeature(string name, CWatchZone watchZone, CWatcher watcher, CWatchImage watchImage) { Name = name; WatchZone = watchZone; Watcher = watcher; WatchImage = watchImage; }
private static void CompareAgainstFeature( ref double[] deltas, ref double[] benchmarks, DateTime now, IMagickImage fileImageComposed, CWatcher cWatcher, CWatchImage cWatchImage) { if (!cWatchImage.IsPaused(now)) { var benchmark = TimeStamp.Now; using (var fileImageCompare = fileImageComposed.Clone()) using (var deltaImage = cWatchImage.MagickImage.Clone()) { if (cWatchImage.HasAlpha) { fileImageCompare.Composite(cWatchImage.AlphaChannel, CompositeOperator.Over); } SetDelta(ref deltas, fileImageCompare, deltaImage, cWatcher, cWatchImage); SetBenchmark(ref benchmarks, benchmark, cWatchImage); } } else { deltas[cWatchImage.Index] = double.NaN; benchmarks[cWatchImage.Index] = 0; } }
private static void SetDelta( ref double[] deltas, IMagickImage fileImageCompare, IMagickImage deltaImage, CWatcher cWatcher, CWatchImage cWatchImage) { var metricResult = fileImageCompare.Compare(deltaImage, cWatcher.ErrorMetric); deltas[cWatchImage.Index] = cWatcher.ErrorMetric.Standardize( cWatchImage.MetricUpperBound, metricResult, cWatchImage.TransparencyRate); }
private static void ComposeScan( ref double[] deltas, ref double[] benchmarks, DateTime now, Bitmap fileImageCropped, Bitmap prevFileImageCropped, CWatcher cWatcher) { if (!cWatcher.IsPaused(now)) { using (var fileImageComposed = GetComposedImage(fileImageCropped, cWatcher.Channel, cWatcher.ColorSpace)) using (var prevFileImageComposed = GetComposedImage(prevFileImageCropped, cWatcher.Channel, cWatcher.ColorSpace)) { if (cWatcher.Equalize) { fileImageComposed.Equalize(); prevFileImageComposed?.Equalize(); } if (cWatcher.IsStandard) { foreach (var cWatchImage in cWatcher.CWatchImages) { CompareAgainstFeature(ref deltas, ref benchmarks, now, fileImageComposed, cWatcher, cWatchImage); } } else if (cWatcher.IsDuplicateFrame) { CompareAgainstPreviousFrame(ref deltas, ref benchmarks, now, fileImageComposed, prevFileImageComposed, cWatcher); } else { throw new NotImplementedException("How'd you get here?"); } } } else { foreach (var cWatchImage in cWatcher.CWatchImages) { deltas[cWatchImage.Index] = double.NaN; benchmarks[cWatchImage.Index] = 0; } } }
private static void CompareAgainstPreviousFrame( ref double[] deltas, ref double[] benchmarks, DateTime now, IMagickImage fileImageComposed, IMagickImage prevFileImageComposed, CWatcher cWatcher) { var cWatchImage = cWatcher.CWatchImages[0]; if (!cWatchImage.IsPaused(now) && prevFileImageComposed != null) { var benchmark = TimeStamp.Now; SetDelta(ref deltas, fileImageComposed, prevFileImageComposed, cWatcher, cWatchImage); SetBenchmark(ref benchmarks, benchmark, cWatchImage); } else { deltas[cWatchImage.Index] = double.NaN; benchmarks[cWatchImage.Index] = 0; } }