void AllFilters(string path, string numPicture, string extension, Image <Bgr, Byte> imgReference) { Image <Bgr, Byte> imgFiltered; List <int> rejectedDistortions = new List <int> { 2, 3, 5, 8, 9, 11, 13, 15, 16, 18, 19, 21, 24 }; int sizeMask = (int)numericMinMask.Value; if (sizeMask % 2 == 0) { sizeMask++; } for (int numImage = 1; numImage <= 24; numImage++) { while (rejectedDistortions.Contains(numImage)) { numImage++; } for (int distortionLvl = 1; distortionLvl <= 5; distortionLvl = distortionLvl + 4) { string numPath; if (numImage < 10) { numPath = "0" + numImage.ToString() + "_" + distortionLvl.ToString(); } else { numPath = numImage.ToString() + "_" + distortionLvl.ToString(); } Image <Bgr, Byte> imgToFilter = new Image <Bgr, byte>(path + numPath + extension); imgFiltered = new Image <Bgr, byte>(imgToFilter.Size); // uśredniający { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { timer.Reset(); timer.Start(); CvInvoke.Blur(imgToFilter, imgFiltered, new Size(i, i), new Point(-1, -1)); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr uśredniający"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Avg", i, 0, 0, 0, 0, row, numPicture + numPath); } } // Gaussa { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { for (int j = (int)numericMinSigmaX.Value; j <= (int)numericMaxSigmaX.Value; j = j + 5) { timer.Reset(); timer.Start(); CvInvoke.GaussianBlur(imgToFilter, imgFiltered, new Size(i, i), j); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr Gaussa"; row[1] = i.ToString(); row[2] = j.ToString(); row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Gauss", i, j, 0, 0, 0, row, numPicture + numPath); } } } // medianowy { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { timer.Reset(); timer.Start(); CvInvoke.MedianBlur(imgToFilter, imgFiltered, i); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr medianowy"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Median", i, 0, 0, 0, 0, row, numPicture + numPath); } } // bilateralny { for (double j = (double)numericMinSigmaColor.Value; j <= (double)numericMaxSigmaColor.Value; j = j + 10) { for (double k = (double)numericMinSigmaSpace.Value; k <= (double)numericMaxSigmaSpace.Value; k = k + 10) { timer.Reset(); timer.Start(); CvInvoke.BilateralFilter(imgToFilter, imgFiltered, -1, j, k); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr bilateralny"; row[1] = "-"; row[2] = "-"; row[3] = j.ToString(); row[4] = k.ToString(); row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Bilateral", -1, 0, j, k, 0, row, numPicture + numPath); } } } // Kuwahara { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { timer.Reset(); timer.Start(); imgFiltered = KuwaharaFilter(imgToFilter, i); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr Kuwahara"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Kuwahara", i, 0, 0, 0, 0, row, numPicture + numPath); } } // unsharp masking { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { float j = (float)numericUnsharpMaskMin.Value; for (; j <= (float)numericUnsharpMaskMax.Value; j = (float)(j + 0.5)) { timer.Reset(); timer.Start(); imgFiltered = UnsharpMasking(imgToFilter, i, j); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Unsharp masking"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Unsharp", i, 0, 0, 0, j, row, numPicture + numPath); } } } // wyrówanie histogramu { timer.Reset(); timer.Start(); imgFiltered = EqualizeHistogram(imgToFilter); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Wyrownanie"; row[1] = "-"; row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Eq", 0, 0, 0, 0, 0, row, numPicture + numPath); } // rozciągnięcie histogramu { timer.Reset(); timer.Start(); imgFiltered = StretchHistogram(imgToFilter); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Rozciągniecie"; row[1] = "-"; row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Str", 0, 0, 0, 0, 0, row, numPicture + numPath); } } } }
void FilterChoice(Image <Bgr, Byte> imgToFilter, Image <Bgr, Byte> imgReference, string numPictureGood, string numDistortionGood, string numIntensityGood) { Image <Bgr, Byte> imgFiltered = new Image <Bgr, byte>(imgToFilter.Size); string name = numPictureGood + numDistortionGood + "_" + numIntensityGood; int sizeMask = (int)numericMinMask.Value; if (sizeMask % 2 == 0) { sizeMask++; } if (radioAvg.Checked) { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { timer.Reset(); timer.Start(); CvInvoke.Blur(imgToFilter, imgFiltered, new Size(i, i), new Point(-1, -1)); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr uśredniający"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Avg", i, 0, 0, 0, 0, row, name); } } if (radioGauss.Checked) { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { for (int j = (int)numericMinSigmaX.Value; j <= (int)numericMaxSigmaX.Value; j = j + 5) { timer.Reset(); timer.Start(); CvInvoke.GaussianBlur(imgToFilter, imgFiltered, new Size(i, i), j); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr Gaussa"; row[1] = i.ToString(); row[2] = j.ToString(); row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Gauss", i, j, 0, 0, 0, row, name); } } } if (radioMedian.Checked) { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { timer.Reset(); timer.Start(); CvInvoke.MedianBlur(imgToFilter, imgFiltered, i); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr medianowy"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Median", i, 0, 0, 0, 0, row, name); } } if (radioBilateral.Checked) { for (double j = (double)numericMinSigmaColor.Value; j <= (double)numericMaxSigmaColor.Value; j = j + 10) { for (double k = (double)numericMinSigmaSpace.Value; k <= (double)numericMaxSigmaSpace.Value; k = k + 10) { timer.Reset(); timer.Start(); CvInvoke.BilateralFilter(imgToFilter, imgFiltered, -1, j, k); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr bilateralny"; row[1] = "-"; row[2] = "-"; row[3] = j.ToString(); row[4] = k.ToString(); row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Bilateral", -1, 0, j, k, 0, row, name); } } } if (radioKuwahara.Checked) { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { timer.Reset(); timer.Start(); imgFiltered = KuwaharaFilter(imgToFilter, i); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Filtr Kuwahara"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Kuwahara", i, 0, 0, 0, 0, row, name); } } if (radioUnsharp.Checked) { for (int i = sizeMask; i <= (int)numericMaxMask.Value; i = i + 2) { float j = (float)numericUnsharpMaskMin.Value; for (; j <= (float)numericUnsharpMaskMax.Value; j = (float)(j + 0.5)) { timer.Reset(); timer.Start(); imgFiltered = UnsharpMasking(imgToFilter, i, j); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Unsharp masking"; row[1] = i.ToString(); row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Unsharp", i, 0, 0, 0, j, row, name); } } } if (radioEqualize.Checked) { timer.Reset(); timer.Start(); imgFiltered = EqualizeHistogram(imgToFilter); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Wyrownanie"; row[1] = "-"; row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Eq", 0, 0, 0, 0, 0, row, name); } if (radioStretch.Checked) { timer.Reset(); timer.Start(); imgFiltered = StretchHistogram(imgToFilter); timer.Stop(); EvaluationOfFilter(imgReference, imgFiltered); row[0] = "Rozciągniecie"; row[1] = "-"; row[2] = "-"; row[3] = "-"; row[4] = "-"; row[5] = "-"; row[6] = PSNRMSE.ToString(); row[7] = PSNRMSD.ToString(); row[8] = PSNRMED.ToString(); row[9] = Marziliano.ToString(); row[10] = timer.Elapsed.TotalMilliseconds.ToString(); ListViewItem listViewItem = new ListViewItem(row); listViewEval.Items.Add(listViewItem); SaveResults(imgFiltered, "Str", 0, 0, 0, 0, 0, row, name); } MessageBox.Show("Ukończono operacje"); }