Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }