// Constructor public HSLLinearForm(AForge.Imaging.ImageStatisticsHSL imgStat) { // // Required for Windows Form Designer support // InitializeComponent(); // this.imgStat = imgStat; componentCombo.SelectedIndex = 0; filterPreview.Filter = filter; }
// Constructor public HSLLinearForm(AForge.Imaging.ImageStatisticsHSL imgStat) { // // Required for Windows Form Designer support // InitializeComponent( ); // this.imgStat = imgStat; componentCombo.SelectedIndex = 0; filterPreview.Filter = filter; }
// Constructor public ColorImageStatisticsDescription(Bitmap image) { // get image dimensions int width = image.Width; int height = image.Height; // lock it BitmapData imgData = image.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); // gather statistics statRGB = new ImageStatistics(imgData); statHSL = new ImageStatisticsHSL(imgData); statYCbCr = new ImageStatisticsYCbCr(imgData); // unlock image image.UnlockBits(imgData); }
private static HistogramHash GetRGBHistogram(string file) { var values = new List<int>(); var histogramfile = Path.Combine(HitogramPath, Guid.NewGuid() + ".jpg"); File.Copy(file, histogramfile); using (var bmp = new System.Drawing.Bitmap(histogramfile)) { // Luminance var hslStatistics = new ImageStatisticsHSL(bmp); values.AddRange(hslStatistics.Luminance.Values.ToList()); // RGB var rgbStatistics = new ImageStatistics(bmp); values.AddRange(rgbStatistics.Red.Values.ToList()); values.AddRange(rgbStatistics.Green.Values.ToList()); values.AddRange(rgbStatistics.Blue.Values.ToList()); } File.Delete(histogramfile); return new HistogramHash(file, values); }
private void GetAdditionalData(object o) { BitmapFile file = o as BitmapFile; try { if (!file.FileItem.IsRaw) { using (Bitmap bmp = new Bitmap(file.FileItem.FileName)) { // Luminance ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp); file.LuminanceHistogramPoints = ConvertToPointCollection(hslStatistics.Luminance.Values); // RGB ImageStatistics rgbStatistics = new ImageStatistics(bmp); file.RedColorHistogramPoints = ConvertToPointCollection(rgbStatistics.Red.Values); file.GreenColorHistogramPoints = ConvertToPointCollection(rgbStatistics.Green.Values); file.BlueColorHistogramPoints = ConvertToPointCollection(rgbStatistics.Blue.Values); } } } catch (Exception ex) { Log.Error(ex); } }
/// <summary> /// Convert RGB colour space to grayscale when applicable. /// </summary> /// <param name="bitmap">The bitmap.</param> public static Bitmap Grayscale(this Bitmap bitmap) { if ((bitmap = bitmap.Channel()) != null) { var imageStatisticsHSL = new ImageStatisticsHSL(bitmap); if (imageStatisticsHSL.Saturation.Max == 0) { var grayscale = new Grayscale(0.2125, 0.7154, 0.0721); var result = grayscale.Apply(bitmap); bitmap.Dispose(); return result; } } return bitmap; }
public virtual void GetLiveImage() { if (_operInProgress) { // Log.Error("OperInProgress"); return; } if (DelayedStart) { //Log.Error("Start is delayed"); return; } if (FreezeImage) return; _operInProgress = true; _totalframes++; if ((DateTime.Now - _framestart).TotalSeconds > 0) Fps = (int)(_totalframes / (DateTime.Now - _framestart).TotalSeconds); try { LiveViewData = LiveViewManager.GetLiveViewImage(CameraDevice); } catch (Exception ex) { Log.Error("Error geting lv", ex); _operInProgress = false; return; } if (LiveViewData == null) { _operInProgress = false; return; } if (!LiveViewData.IsLiveViewRunning && !IsFocusStackingRunning) { DelayedStart = true; _restartTimerStartTime = DateTime.Now; _restartTimer.Start(); _operInProgress = false; return; } if (LiveViewData.ImageData == null) { // Log.Error("LV image data is null !"); _operInProgress = false; return; } Recording = LiveViewData.MovieIsRecording; try { if (LiveViewData != null && LiveViewData.ImageData != null) { MemoryStream stream = new MemoryStream(LiveViewData.ImageData, LiveViewData. ImageDataPosition, LiveViewData.ImageData. Length - LiveViewData. ImageDataPosition); LevelAngle = (int)LiveViewData.LevelAngleRolling; SoundL = LiveViewData.SoundL; SoundR = LiveViewData.SoundR; PeakSoundL = LiveViewData.PeakSoundL; PeakSoundR = LiveViewData.PeakSoundR; HaveSoundData = LiveViewData.HaveSoundData; MovieTimeRemain = decimal.Round(LiveViewData.MovieTimeRemain, 2); if (NoProcessing) { BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.CacheOption = BitmapCacheOption.OnLoad; bi.StreamSource = stream; bi.EndInit(); bi.Freeze(); Bitmap = bi; ServiceProvider.DeviceManager.LiveViewImage[CameraDevice] = stream.ToArray(); _operInProgress = false; return; } using (var res = new Bitmap(stream)) { Bitmap bmp = res; if (PreviewTime > 0 && (DateTime.Now - _photoCapturedTime).TotalSeconds <= PreviewTime) { var bitmap = ServiceProvider.Settings.SelectedBitmap.DisplayImage.Clone(); //var dw = (double)bmp.Width / bitmap.PixelWidth; //bitmap = bitmap.Resize((int)(bitmap.PixelWidth * dw), (int)(bitmap.PixelHeight * dw), // WriteableBitmapExtensions.Interpolation.NearestNeighbor); // flip image only if the prview not fliped if (FlipImage && !ServiceProvider.Settings.FlipPreview) bitmap = bitmap.Flip(WriteableBitmapExtensions.FlipMode.Vertical); bitmap.Freeze(); ServiceProvider.DeviceManager.LiveViewImage[CameraDevice] = SaveJpeg(bitmap); Bitmap = bitmap; return; } if (DetectMotion) { ProcessMotionDetection(bmp); } if (_totalframes % DesiredFrameRate == 0 && ShowHistogram) { ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp); LuminanceHistogramPoints = ConvertToPointCollection( hslStatistics.Luminance.Values); ImageStatistics statistics = new ImageStatistics(bmp); RedColorHistogramPoints = ConvertToPointCollection( statistics.Red.Values); GreenColorHistogramPoints = ConvertToPointCollection( statistics.Green.Values); BlueColorHistogramPoints = ConvertToPointCollection( statistics.Blue.Values); } if (HighlightUnderExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(0, 5); filtering.Red = new IntRange(0, 5); filtering.Green = new IntRange(0, 5); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(Color.Blue); filtering.ApplyInPlace(bmp); } if (HighlightOverExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(250, 255); filtering.Red = new IntRange(250, 255); filtering.Green = new IntRange(250, 255); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(Color.Red); filtering.ApplyInPlace(bmp); } var preview = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(bmp)); DrawFocusPoint(preview, true); if (Brightness != 0) { BrightnessCorrection filter = new BrightnessCorrection(Brightness); bmp = filter.Apply(bmp); } Bitmap newbmp = bmp; if (EdgeDetection) { var filter = new FiltersSequence( Grayscale.CommonAlgorithms.BT709, new HomogenityEdgeDetector() ); newbmp = filter.Apply(bmp); } WriteableBitmap writeableBitmap; if (BlackAndWhite) { Grayscale filter = new Grayscale(0.299, 0.587, 0.114); writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource( filter.Apply(newbmp))); } else { writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(newbmp)); } DrawGrid(writeableBitmap); switch (RotationIndex) { case 0: Rotation = 0; break; case 1: Rotation = 90; break; case 2: Rotation = 180; break; case 3: Rotation = 270; break; case 4: Rotation = LiveViewData.Rotation; break; } if (CameraDevice.LiveViewImageZoomRatio.Value == "All") { preview.Freeze(); Preview = preview; if (ShowFocusRect) DrawFocusPoint(writeableBitmap); } if (FlipImage) { writeableBitmap = writeableBitmap.Flip(WriteableBitmapExtensions.FlipMode.Vertical); } if (CropRatio > 0) { CropOffsetX = (int) ((writeableBitmap.PixelWidth/2.0)*CropRatio/100); CropOffsetY = (int) ((writeableBitmap.PixelHeight/2.0)*CropRatio/100); writeableBitmap = writeableBitmap.Crop(CropOffsetX, CropOffsetY, writeableBitmap.PixelWidth - (2*CropOffsetX), writeableBitmap.PixelHeight - (2*CropOffsetY)); } writeableBitmap.Freeze(); Bitmap = writeableBitmap; //if (_totalframes%DesiredWebFrameRate == 0) ServiceProvider.DeviceManager.LiveViewImage[CameraDevice] = SaveJpeg(writeableBitmap); } stream.Close(); } } catch (Exception exception) { Log.Error(exception); _operInProgress = false; } finally { _operInProgress = false; } _operInProgress = false; }
public static int[] GetLuminanceHistogram(Bitmap bitmap, int pieceTopLeftX, int pieceTopLeftY) { var mask = new byte[bitmap.Height, bitmap.Width]; for (int x = pieceTopLeftX; x < pieceTopLeftX + Math.Min(bitmap.Width, BoardPiece.Width); x++) { for (int y = pieceTopLeftY; y < pieceTopLeftY + Math.Min(bitmap.Height, BoardPiece.Height); y++) { mask[y, x] = 1; } } var st = new ImageStatisticsHSL(bitmap, mask); int[] luminanceValues = st.LuminanceWithoutBlack.Values; return luminanceValues; }
public virtual void GetLiveImage() { if (_operInProgress) return; if (DelayedStart) return; _operInProgress = true; _totalframes++; if ((DateTime.Now - _framestart).TotalSeconds > 0) Fps = (int) (_totalframes/(DateTime.Now - _framestart).TotalSeconds); try { LiveViewData = LiveViewManager.GetLiveViewImage(CameraDevice); } catch (Exception) { _retries++; _operInProgress = false; return; } if (LiveViewData == null ) { _retries++; _operInProgress = false; return; } if (!LiveViewData.IsLiveViewRunning) { DelayedStart = true; _restartTimerStartTime = DateTime.Now; _restartTimer. Start(); _operInProgress = false; return; } if (LiveViewData.ImageData == null) { _retries++; _operInProgress = false; return; } Recording = LiveViewData.MovieIsRecording; try { WriteableBitmap preview; if (LiveViewData != null && LiveViewData.ImageData != null) { MemoryStream stream = new MemoryStream(LiveViewData.ImageData, LiveViewData. ImageDataPosition, LiveViewData.ImageData. Length - LiveViewData. ImageDataPosition); using (var res = new Bitmap(stream)) { Bitmap bmp = res; if (DetectMotion) { ProcessMotionDetection(bmp); } if (_totalframes % DesiredFrameRate == 0 && ShowHistogram) { ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp); LuminanceHistogramPoints = ConvertToPointCollection( hslStatistics.Luminance.Values); ImageStatistics statistics = new ImageStatistics(bmp); RedColorHistogramPoints = ConvertToPointCollection( statistics.Red.Values); GreenColorHistogramPoints = ConvertToPointCollection( statistics.Green.Values); BlueColorHistogramPoints = ConvertToPointCollection( statistics.Blue.Values); } if (HighlightUnderExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(0, 5); filtering.Red = new IntRange(0, 5); filtering.Green = new IntRange(0, 5); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(System.Drawing.Color.Blue); filtering.ApplyInPlace(bmp); } if (HighlightOverExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(250, 255); filtering.Red = new IntRange(250, 255); filtering.Green = new IntRange(250, 255); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(System.Drawing.Color.Red); filtering.ApplyInPlace(bmp); } if (Brightness != 0) { BrightnessCorrection filter = new BrightnessCorrection(Brightness); bmp = filter.Apply(bmp); } preview = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(bmp)); DrawFocusPoint(preview); Bitmap newbmp = bmp; if (EdgeDetection) { var filter = new FiltersSequence( Grayscale.CommonAlgorithms.BT709, new HomogenityEdgeDetector() ); newbmp = filter.Apply(bmp); } WriteableBitmap writeableBitmap; if (BlackAndWhite) { Grayscale filter = new Grayscale(0.299, 0.587, 0.114); writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource( filter.Apply(newbmp))); } else { writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(newbmp)); } DrawGrid(writeableBitmap); if (RotationIndex != 0) { switch (RotationIndex) { case 1: writeableBitmap = writeableBitmap.Rotate(90); break; case 2: writeableBitmap = writeableBitmap.Rotate(180); break; case 3: writeableBitmap = writeableBitmap.Rotate(270); break; case 4: if (LiveViewData.Rotation != 0) writeableBitmap = writeableBitmap.RotateFree( LiveViewData.Rotation, false); break; } } if (CameraDevice.LiveViewImageZoomRatio.Value == "All") { preview.Freeze(); Preview = preview; if (ShowFocusRect) DrawFocusPoint(writeableBitmap); } writeableBitmap.Freeze(); Bitmap = writeableBitmap; if (_totalframes%DesiredWebFrameRate == 0) ServiceProvider.DeviceManager.LiveViewImage[CameraDevice] = SaveJpeg(writeableBitmap); } stream.Close(); } } catch (Exception exception) { Log.Error(exception); _retries++; _operInProgress = false; } _retries = 0; _operInProgress = false; }
/// <summary> /// Convert RGB colour space to grayscale when applicable. /// </summary> public static Bitmap Grayscale(this Bitmap Bitmap) { // Convert grayscale to RGB colour space. if ((Bitmap = Bitmap.Channel()) != null) { // Initialize a new instance of the ImageStatisticsHSL class. ImageStatisticsHSL ImageStatisticsHSL = new ImageStatisticsHSL(Bitmap); // Check if the image is grayscale. if (ImageStatisticsHSL.Saturation.Max == 0) { // Initialize a new instance of the Grayscale class. Grayscale Grayscale = new Grayscale(0.2125, 0.7154, 0.0721); // Apply the filter to the image. Bitmap Result = Grayscale.Apply(Bitmap); // Dispose of the original image. Bitmap.Dispose(); // Return the result. return Result; } } // Return the bitmap. return Bitmap; }
private void UpdateHistograms(System.Drawing.Bitmap pic) { ImageStatisticsHSL hslStatistics = null; ImageStatistics rgbStatistics = null; if(pic == null) { hslStatistics = new ImageStatisticsHSL(mainPhoto); rgbStatistics = new ImageStatistics(mainPhoto); } else { hslStatistics = new ImageStatisticsHSL(pic); rgbStatistics = new ImageStatistics(pic); } this.LuminanceHistogramPoints = ConvertToPointCollection(hslStatistics.Luminance.Values); this.RedColorHistogramPoints = ConvertToPointCollection(rgbStatistics.Red.Values); this.GreenColorHistogramPoints = ConvertToPointCollection(rgbStatistics.Green.Values); this.BlueColorHistogramPoints = ConvertToPointCollection(rgbStatistics.Blue.Values); }
public void ProcessLiveView(Bitmap bmp) { if (PreviewTime > 0 && (DateTime.Now - _photoCapturedTime).TotalSeconds <= PreviewTime) { var bitmap = ServiceProvider.Settings.SelectedBitmap.DisplayImage.Clone(); // flip image only if the prview not fliped if (FlipImage && !ServiceProvider.Settings.FlipPreview) bitmap = bitmap.Flip(WriteableBitmapExtensions.FlipMode.Vertical); bitmap.Freeze(); ServiceProvider.DeviceManager.LiveViewImage[CameraDevice] = SaveJpeg(bitmap); Bitmap = bitmap; return; } if (DetectMotion) { ProcessMotionDetection(bmp); } if (_totalframes%DesiredFrameRate == 0 && ShowHistogram) { ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp); LuminanceHistogramPoints = ConvertToPointCollection( hslStatistics.Luminance.Values); ImageStatistics statistics = new ImageStatistics(bmp); RedColorHistogramPoints = ConvertToPointCollection( statistics.Red.Values); GreenColorHistogramPoints = ConvertToPointCollection( statistics.Green.Values); BlueColorHistogramPoints = ConvertToPointCollection( statistics.Blue.Values); } if (HighlightUnderExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(0, 5); filtering.Red = new IntRange(0, 5); filtering.Green = new IntRange(0, 5); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(Color.Blue); filtering.ApplyInPlace(bmp); } if (HighlightOverExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(250, 255); filtering.Red = new IntRange(250, 255); filtering.Green = new IntRange(250, 255); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(Color.Red); filtering.ApplyInPlace(bmp); } var preview = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(bmp)); DrawFocusPoint(preview, true); if (Brightness != 0) { BrightnessCorrection filter = new BrightnessCorrection(Brightness); bmp = filter.Apply(bmp); } Bitmap newbmp = bmp; if (EdgeDetection) { var filter = new FiltersSequence( Grayscale.CommonAlgorithms.BT709, new HomogenityEdgeDetector() ); newbmp = filter.Apply(bmp); } WriteableBitmap writeableBitmap; if (BlackAndWhite) { Grayscale filter = new Grayscale(0.299, 0.587, 0.114); writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource( filter.Apply(newbmp))); } else { writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(newbmp)); } DrawGrid(writeableBitmap); switch (RotationIndex) { case 0: Rotation = 0; break; case 1: Rotation = 90; break; case 2: Rotation = 180; break; case 3: Rotation = 270; break; case 4: Rotation = LiveViewData.Rotation; break; } if (CameraDevice.LiveViewImageZoomRatio.Value == "All") { preview.Freeze(); Preview = preview; if (ShowFocusRect) DrawFocusPoint(writeableBitmap); } if (FlipImage) { writeableBitmap = writeableBitmap.Flip(WriteableBitmapExtensions.FlipMode.Vertical); } if (CropRatio > 0) { CropOffsetX = (int) ((writeableBitmap.PixelWidth/2.0)*CropRatio/100); CropOffsetY = (int) ((writeableBitmap.PixelHeight/2.0)*CropRatio/100); writeableBitmap = writeableBitmap.Crop(CropOffsetX, CropOffsetY, writeableBitmap.PixelWidth - (2*CropOffsetX), writeableBitmap.PixelHeight - (2*CropOffsetY)); } writeableBitmap.Freeze(); Bitmap = writeableBitmap; //if (_totalframes%DesiredWebFrameRate == 0) ServiceProvider.DeviceManager.LiveViewImage[CameraDevice] = SaveJpeg(writeableBitmap); }
private void GetLiveImage() { if (_operInProgress) return; try { LiveViewData = SelectedCameraDevice.GetLiveViewImage(); } catch (Exception ex) { Log.Error("Error geting lv", ex); _operInProgress = false; return; } if (LiveViewData == null) { _operInProgress = false; return; } try { if (PreviewTime > 0 && (DateTime.Now - _photoCapturedTime).TotalSeconds <= PreviewTime) { Bitmap = ServiceProvider.Settings.SelectedBitmap.DisplayImage; _operInProgress = false; Console.WriteLine("Previeving"); return; } if (LiveViewData != null && LiveViewData.ImageData != null) { MemoryStream stream = new MemoryStream(LiveViewData.ImageData, LiveViewData. ImageDataPosition, LiveViewData.ImageData. Length - LiveViewData. ImageDataPosition); LevelAngle = (int)LiveViewData.LevelAngleRolling; AngleLevelPitching = LiveViewData.LevelAnglePitching; AngleLevelYawing = LiveViewData.LevelAngleYawing; using (var res = new Bitmap(stream)) { Bitmap bmp = res; if (_totalframes%DesiredFrameRate == 0 && ShowHistogram) { ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp); LuminanceHistogramPoints = ConvertToPointCollection( hslStatistics.Luminance.Values); ImageStatistics statistics = new ImageStatistics(bmp); RedColorHistogramPoints = ConvertToPointCollection( statistics.Red.Values); GreenColorHistogramPoints = ConvertToPointCollection( statistics.Green.Values); BlueColorHistogramPoints = ConvertToPointCollection( statistics.Blue.Values); } if (HighlightUnderExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(0, 5); filtering.Red = new IntRange(0, 5); filtering.Green = new IntRange(0, 5); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(System.Drawing.Color.Blue); filtering.ApplyInPlace(bmp); } if (HighlightOverExp) { ColorFiltering filtering = new ColorFiltering(); filtering.Blue = new IntRange(250, 255); filtering.Red = new IntRange(250, 255); filtering.Green = new IntRange(250, 255); filtering.FillOutsideRange = false; filtering.FillColor = new RGB(System.Drawing.Color.Red); filtering.ApplyInPlace(bmp); } var preview = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(bmp)); if (Brightness != 0) { BrightnessCorrection filter = new BrightnessCorrection(Brightness); bmp = filter.Apply(bmp); } Bitmap newbmp = bmp; if (EdgeDetection) { var filter = new FiltersSequence( Grayscale.CommonAlgorithms.BT709, new HomogenityEdgeDetector() ); newbmp = filter.Apply(bmp); } WriteableBitmap writeableBitmap; if (BlackAndWhite) { Grayscale filter = new Grayscale(0.299, 0.587, 0.114); writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource( filter.Apply(newbmp))); } else { writeableBitmap = BitmapFactory.ConvertToPbgra32Format( BitmapSourceConvert.ToBitmapSource(newbmp)); } DrawGrid(writeableBitmap); DrawFocusPoint(writeableBitmap); writeableBitmap.Freeze(); Bitmap = writeableBitmap; _operInProgress = false; } return; } } catch (Exception ex) { Log.Error("Error geting lv", ex); _operInProgress = false; return; } }
private void SetOriginalHistogramValues() { this.originalHslStatistics = new ImageStatisticsHSL(this.bitmap); this.originalLuminanceValues = this.originalHslStatistics.Luminance.Values; this.originalRgbStatistics = new ImageStatistics(this.bitmap); this.originalRedValues = this.originalRgbStatistics.Red.Values; this.originalGreenValues = this.originalRgbStatistics.Green.Values; this.originalBlueValues = this.originalRgbStatistics.Blue.Values; }
private double Score(PolygonGroup polygonGroup) { Bitmap polygonBitmap = polygonGroup.GetBitmap(); int redSum = 0; int greenSum = 0; int blueSum = 0; int totalSum = 0; //int luminanceSum = 0; ImageStatisticsHSL imageStatsHsl = new ImageStatisticsHSL(polygonBitmap); int[] luminanceValues = imageStatsHsl.Luminance.Values; ImageStatistics imgStats = new ImageStatistics(polygonBitmap); int[] redValues = imgStats.Red.Values; int[] greenValues = imgStats.Green.Values; int[] blueValues = imgStats.Blue.Values; for (int i = 0; i < redValues.Length; i++) { redSum += Math.Abs(this.originalRedValues[i] - redValues[i]); } for (int i = 0; i < greenValues.Length; i++) { greenSum += Math.Abs(this.originalGreenValues[i] - greenValues[i]); } for (int i = 0; i < blueValues.Length; i++) { blueSum += Math.Abs(this.originalBlueValues[i] - blueValues[i]); } totalSum = redSum + greenSum + blueSum; return (int.MaxValue - totalSum); }
public Histogram(Bitmap b) { this.bitmap = b; statistics = new AforgeImg.ImageStatistics(this.bitmap); hslStatistics = new AforgeImg.ImageStatisticsHSL(this.bitmap); }