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(); }
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 + ")"); }