Example #1
0
 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);
 }
Example #2
0
        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);
        }
Example #3
0
 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);
 }