protected void improveRestoredImage() { byte[, ,] originalPixels = original.GetPixelArray(); byte[, ,] pixels = restored.GetPixelArray(); for (int i = 0; i < nRows; i++) { for (int j = 0; j < nCols; j++) { if (knownPixels[i, j]) { pixels[i, j, 0] = originalPixels[i, j, 0]; pixels[i, j, 1] = originalPixels[i, j, 0]; pixels[i, j, 2] = originalPixels[i, j, 0]; pixels[i, j, 3] = 255; } else { double neighborSum = 0; int neighborCount = 0; getNeighbors(pixels, i, j, out neighborSum, out neighborCount); double val = neighborSum / neighborCount; pixels[i, j, 0] = (byte)Math.Round(((1 - blendRatio) * pixels[i, j, 0] + blendRatio * val)); pixels[i, j, 1] = pixels[i, j, 0]; pixels[i, j, 2] = pixels[i, j, 0]; pixels[i, j, 3] = 255; } } } restored.SetPixelArray(pixels, nRows, nCols); }
protected void getOriginalGrayscaleImage() { original = new GImage("images/mona2.jpg"); byte[, ,] pixels = original.GetPixelArray(); nRows = original.PixelHeight(); nCols = original.PixelWidth(); byte[, ,] gPixelArray = new byte[nRows, nCols, 4]; for (int i = 0; i < nRows; i++) { for (int j = 0; j < nCols; j++) { int grayValue = 0; for (int k = 0; k < 3; k++) { grayValue += pixels[i, j, k]; } grayValue /= 3; for (int k = 0; k < 3; k++) { gPixelArray[i, j, k] = (byte)grayValue; } gPixelArray[i, j, 3] = 255; } } original.SetPixelArray(gPixelArray, nRows, nCols); }
protected void updateDamagedImage() { byte[, ,] pixels = original.GetPixelArray(); for (int i = 0; i < nRows; i++) { for (int j = 0; j < nCols; j++) { if (myRandom.NextDouble() < damageFraction) { knownPixels[i, j] = false; pixels[i, j, 0] = 0; pixels[i, j, 1] = 0; pixels[i, j, 2] = 255; pixels[i, j, 3] = 255; } else { knownPixels[i, j] = true; } } } damaged.SetPixelArray(pixels, nRows, nCols); }