public void FromEMConfiguration(EMConfiguration currentConfig)
        {
            this.LoadingConfig = true;

            this.initialCountTextBox.Text       = currentConfig.InitialClassCount.ToString();
            this.maximumCountTextBox.Text       = currentConfig.MaximumClassCount.ToString();
            this.expectedClassCountTextBox.Text = currentConfig.ExpectedRootClassCount.ToString();
            this.patchSizeTextBox.Text          = currentConfig.PatchSize.ToString();

            this.thresholdPercentageTextBox.Text = currentConfig.BackgroundPercentage.ToString();
            this.thresholdSigmaTextBox.Text      = currentConfig.BackgroundExcessSigma.ToString();

            this.weightsTextBox.Text = DoubleArrayToString(currentConfig.Weights);

            this.LoadingConfig = false;
        }
        public EMConfiguration ToEMConfiguration()
        {
            EMConfiguration e = new EMConfiguration()
            {
                Name = "Custom",
                InitialClassCount      = Int32.Parse(this.initialCountTextBox.Text),
                MaximumClassCount      = Int32.Parse(this.maximumCountTextBox.Text),
                ExpectedRootClassCount = Int32.Parse(this.expectedClassCountTextBox.Text),
                PatchSize             = Int32.Parse(this.patchSizeTextBox.Text),
                BackgroundPercentage  = double.Parse(this.thresholdPercentageTextBox.Text),
                BackgroundExcessSigma = double.Parse(this.thresholdSigmaTextBox.Text),
                Weights = StringToDoubleArray(this.weightsTextBox.Text)
            };

            return(e);
        }
        public void SetData(int[] histogramData, GaussianMixtureModel gmm, EMConfiguration config)
        {
            this.Configuration = config;
            this.histogramData = histogramData;
            this.mixtureModel  = gmm;

            double total  = this.histogramData.Sum();
            int    length = this.histogramData.Length;
            int    max    = this.histogramData.Max();

            this.normalisedData = new double[length];
            this.stretchedData  = new double[length];

            for (int h = 0; h < length; h++)
            {
                this.normalisedData[h] = this.histogramData[h] / total;
                this.stretchedData[h]  = this.histogramData[h] / (double)max;
            }
            this.InvalidateVisual();
        }