示例#1
0
        public void calculateGradientImageTest()   //Проверка подсчета градиентов на картинке
        {
            //arrange
            IParser       parser = new Parser();
            Bitmap        bitmap = parser.readPNG("Data\\sample_10.png");
            IMathematical strat  = new MathematicialSearchPoint1();  //Подсчет градиента первой стратегией

            strat.setImage(bitmap);

            Elimination elemenation = new Elimination(strat);

            Data.Image img = new Data.Image("Data\\sample_10.png");

            //act
            elemenation.calculateGradientImage(img);
            double[,] exepected = new double[img.width(), img.height()];
            double[,] actual    = elemenation.swingSharpness;

            //assert
            for (int i = 0; i < img.width(); i++)
            {
                for (int j = 0; j < img.height(); j++)
                {
                    Assert.AreEqual(strat.gradientAtPoint(i, j), actual[i, j]);
                }
            }
        }
示例#2
0
        public void gradientAtPoint1_IntPoint_Test()              //Проверка градиента  внутренней точки
        {
            //arrange
            IParser parser = new Parser();
            Bitmap  img    = parser.readPNG("Data\\sample_10.png");

            MathematicialSearchPoint core = new MathematicialSearchPoint1();

            core.setImage(img);

            double[,] X = new double[3, 3];
            for (int i = 600; i < 603; i++)
            {
                for (int j = 600; j < 603; j++)
                {
                    X[i - 600, j - 600] = img.GetPixel(i, j).B;   //Матрица окружения точки (601,601)
                }
            }
            double gradX = 0;
            double gradY = 0;
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    gradX += X[i, j] * core.XMatrix[j, i];
                    gradY += X[i, j] * core.YMatrix[j, i];
                }
            }
            //act
            double exepected = (gradX + gradY) / 2;
            double actual    = core.gradientAtPoint(601, 601);
            //assert
            Assert.AreEqual(exepected, actual);
        }
示例#3
0
        public void gradientAtPoint1_CornerPoint_Test()              //Проверка градиента  угловой точки
        {
            //arrange
            IParser parser = new Parser();
            Bitmap  img    = parser.readPNG("Data\\sample_10.png");

            //Blue[i, j] = 0.3 * img.GetPixel(i, j).R + 0.59 * img.GetPixel(i, j).G + 0.11 * img.GetPixel(i, j).B;    //Заполнение монохромного изображения

            MathematicialSearchPoint core = new MathematicialSearchPoint1();

            core.setImage(img);
            double[,] X = new double[3, 3];
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    X[i, j] = 0;
                }
            }
            for (int i = 1; i < 3; i++)
            {
                for (int j = 1; j < 3; j++)
                {
                    X[i, j] = img.GetPixel(i - 1, j - 1).B;               //Матрица окружения точки (0,0)
                }
            }
            double gradX = 0;
            double gradY = 0;
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    gradX += X[i, j] * core.XMatrix[j, i];
                    gradY += X[i, j] * core.YMatrix[j, i];
                }
            }
            //act
            double exepected = (gradX + gradY) / 2;
            double actual    = core.gradientAtPoint(0, 0);
            //assert
            Assert.AreEqual(exepected, actual);
        }
示例#4
0
        public void gradientAtPoint1_BoundaryPoint_Test()              //Проверка градиента  граничной точки
        {
            //arrange
            IParser parser = new Parser();
            Bitmap  img    = parser.readPNG("Data\\sample_10.png");; //Заполнение монохромного изображения

            MathematicialSearchPoint core = new MathematicialSearchPoint1();

            core.setImage(img);

            double[,] X = new double[3, 3];
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    X[i, j] = 0;
                }
            }
            for (int i = 798; i < 800; i++)
            {
                for (int j = 2; j < 5; j++)
                {
                    X[i - 798, j - 2] = img.GetPixel(i, j).B;             //Матрица окружения точки (799,3)
                }
            }
            double gradX = 0;
            double gradY = 0;
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    gradX += X[i, j] * core.XMatrix[j, i];
                    gradY += X[i, j] * core.YMatrix[j, i];
                }
            }
            //act
            double exepected = (gradX + gradY) / 2;
            double actual    = core.gradientAtPoint(799, 3);
            //assert
            Assert.AreEqual(exepected, actual);
        }