private static RGBPixel[,] CalculateRresults(RGBPixel[,] R, RGBPixel Rmax, out int count) { count = 0; int Height = ImageOperations.GetHeight(R); int Width = ImageOperations.GetWidth(R); RGBPixel[,] Result = new RGBPixel[Height, Width]; for (int i = 0; i < Height; i++) { for (int j = 0; j < Width; j++) { Result[i, j] = new RGBPixel(0, 0, 0); } } for (int i = 1; i < Height - 1; i++) { for (int j = 1; j < Width - 1; j++) { Result[i, j] = new RGBPixel(0, 0, 0); if (R[i, j].red > 0.1 * Rmax.red && R[i, j].red > R[i - 1, j - 1].red && R[i, j].red > R[i - 1, j].red && R[i, j].red > R[i - 1, j + 1].red && R[i, j].red > R[i, j - 1].red && R[i, j].red > R[i, j + 1].red && R[i, j].red > R[i + 1, j - 1].red && R[i, j].red > R[i + 1, j].red && R[i, j].red > R[i + 1, j + 1].red) { Result[i, j].red = 1; } if (R[i, j].green > 0.1 * Rmax.green && R[i, j].green > R[i - 1, j - 1].green && R[i, j].green > R[i - 1, j].green && R[i, j].green > R[i - 1, j + 1].green && R[i, j].green > R[i, j - 1].green && R[i, j].green > R[i, j + 1].green && R[i, j].green > R[i + 1, j - 1].green && R[i, j].green > R[i + 1, j].green && R[i, j].green > R[i + 1, j + 1].green) { Result[i, j].green = 1; count++; } if (R[i, j].blue > 0.1 * Rmax.blue && R[i, j].blue > R[i - 1, j - 1].blue && R[i, j].blue > R[i - 1, j].blue && R[i, j].blue > R[i - 1, j + 1].blue && R[i, j].blue > R[i, j - 1].blue && R[i, j].blue > R[i, j + 1].blue && R[i, j].blue > R[i + 1, j - 1].blue && R[i, j].blue > R[i + 1, j].blue && R[i, j].blue > R[i + 1, j + 1].blue) { Result[i, j].blue = 1; } } } return(Result); }
public static void GetMinMaxRGBValues(RGBPixel[,] ImageMatrix) { int Height = ImageOperations.GetHeight(ImageMatrix); int Width = ImageOperations.GetWidth(ImageMatrix); double Max = -100000000000, Min = 10000000000000; for (int i = 0; i < Width; i++) { for (int j = 0; j < Height; j++) { double tmp = (double)ImageMatrix[j, i].red; if (tmp > Max) { Max = tmp; } if (tmp < Min) { Min = tmp; } } } minValue = Min; maxValue = Max; }
private void ApplyFilter_Click(object sender, EventArgs e) { RGBPixel[,] output = Filter.ApplyFilter(InputImageInfo.imgCopy, Filter.SelectedFilter, Filter.SelectedFilter_KernelSize); ImageOperations.DisplayImage(output, outputImagePbox); outputImagePbox.SizeMode = PictureBoxSizeMode.StretchImage; }