private Histogramf buildHistogram(IVoxelDataStructure grid, IProgress <int> progress) { Histogramf histogram = new Histogramf(Min, Max, BinCount); int numberOfVoxels = grid.NumberOfVoxels; //Only report every 5% int updateNumber = numberOfVoxels / 20; int voxelNum = 0; foreach (Voxel voxel in grid) { voxelNum++; if (!(grid.ValueUnit == Unit.Gamma && voxel.Value == -1)) { if (UseROI && ROI.ContainsPointNonInterpolated(voxel.Position)) { histogram.AddDataPoint(voxel.Value * grid.Scaling); } else if (!UseROI) { histogram.AddDataPoint(voxel.Value * grid.Scaling); } } if (voxelNum % updateNumber == 0) { progress.Report((int)(100 * ((double)voxelNum / (double)numberOfVoxels))); } } return(histogram); }
private ColumnSeries createColumnSeries(Histogramf histogram) { ColumnSeries ColumnSeries = new ColumnSeries(); CategoryAxis axis = new CategoryAxis(); var labels = histogram.GetBinLabels(); foreach (var label in labels) { axis.Labels.Add("" + Math.Round(label, 2)); } OxyPlotModel.Axes.Clear(); OxyPlotModel.Axes.Add(axis); for (int i = 0; i < histogram.Counts.Length; i++) { ColumnSeries.Items.Add(new ColumnItem() { Value = histogram.Counts[i], CategoryIndex = i }); } return(ColumnSeries); }