Exemplo n.º 1
0
        private void uniformNoiseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            RequestForNoise RQuest = new RequestForNoise();
            RQuest.Text = "Uniform Noise";
            RQuest.label1.Text = "Min.";
            RQuest.label2.Text = "Max.";
            if (RQuest.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            ListView.SelectedIndexCollection indexes = this.listViewHeap.SelectedIndices;
            if (indexes.Count == 0) return;

            Image3D Result = new Image3D(((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).Width,
                ((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).Height,
                ((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).Depth,
                ((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).NumBands);

            Random r = new Random();
            float RandVal = 0.0f;
            float Range = (float)RQuest.numericUpDownGaussianNoiseStdv.Value - (float)RQuest.numericUpDownGaussianNoiseMean.Value;

            int indexesCount = indexes.Count;
            for (int i = 0; i < indexesCount; i++)
            {
                Image3D TmpIm = ((Image3D)(this.listViewHeap.Items[indexes[i]].Tag));

                for (int Band = 0; Band < TmpIm.NumBands; Band++)
                {

                    Array.Copy(TmpIm.Data[Band], Result.Data[Band], TmpIm.ImageSize);
                    for (int idx = 0; idx < Result.ImageSize; idx++)
                    {
                        RandVal = Range * (float)r.NextDouble() + (float)RQuest.numericUpDownGaussianNoiseMean.Value;
                        Result.Data[Band][idx] += RandVal;
                    }

                }
                //Result.Name = "Sqrt result";
                AddImageToHeap(Result, 0);
            }

            indexes.Clear();
        }
Exemplo n.º 2
0
        private void gaussianNoiseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            RequestForNoise RQuest = new RequestForNoise();
            RQuest.Text = "Gaussian Noise";
            if (RQuest.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            ListView.SelectedIndexCollection indexes = this.listViewHeap.SelectedIndices;
            if (indexes.Count == 0) return;

            Image3D Result = new Image3D(((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).Width,
                ((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).Height,
                ((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).Depth,
                ((Image3D)(this.listViewHeap.Items[indexes[0]].Tag)).NumBands);

            int indexesCount = indexes.Count;
            for (int i = 0; i < indexesCount; i++)
            {
                Image3D TmpIm = ((Image3D)(this.listViewHeap.Items[indexes[i]].Tag));

                for (int Band = 0; Band < TmpIm.NumBands; Band++)
                {
                    Array.Copy(TmpIm.Data[Band], Result.Data[Band], TmpIm.ImageSize);

                }

                //    numericUpDownGaussMeanValue
                IM.Library.Tools.GaussianNoiseGenerator GaussNoise = new IM.Library.Tools.GaussianNoiseGenerator((float)RQuest.numericUpDownGaussianNoiseMean.Value, (float)RQuest.numericUpDownGaussianNoiseStdv.Value);
                GaussNoise.Disturb(Result);

                //Result.Name = "Sqrt result";
                AddImageToHeap(Result, 0);
            }

            indexes.Clear();

            //Sequence NewSeq = new Sequence();

            //for (int T = 0; T < IMGlobal.CurrentSequence.SequenceSize; T++)
            //{
            //    Image3D CurrentIm = IMGlobal.CurrentSequence[T];
            //    Image3D ResultIm = new Image3D(CurrentIm.Width, CurrentIm.Height, CurrentIm.Depth, CurrentIm.NumBands);

            //    for (int Channel = 0; Channel < CurrentIm.NumBands; Channel++)
            //    {
            //        Array.Copy(CurrentIm.Data[Channel], ResultIm.Data[Channel], ResultIm.ImageSize);
            //    }

            //    IM.Library.Tools.GaussianNoiseGenerator GaussNoise = new IM.Library.Tools.GaussianNoiseGenerator(numericUpDownGaussMeanValue, numericUpDownGaussStdValue);
            //    GaussNoise.Disturb(ResultIm);
            //    NewSeq.Add(ResultIm);
            //}
            //IMGlobal.AddSequence(NewSeq, "Gaussian Noise (" + numericUpDownGaussMeanValue + ";" + numericUpDownGaussStdValue + ")");
        }