예제 #1
0
파일: ImageData.cs 프로젝트: Amichai/Prax
 public IterateBoards DefineIteratedBoards()
 {
     var boards = new IterateBoards();
     var currentBoard = new MatrixBoard(ImageMatrix);
     for (int i = 0; i < IterateBoards.numberOfIterations; i++) {
         boards.Boards.Add(currentBoard);
         currentBoard = currentBoard.IterateBoard();
     }
     return boards;
 }
예제 #2
0
        public MatrixBoard IterateBoard()
        {
            const int consolidationConstant = 3;
            MatrixBoard iteratedBoard = new MatrixBoard(width, height);
            int averageSurroundingDiscrepPxls;
            int rangeOfSurroundingPxls, rangeOfSurroundingDiscrepPxls;
            int[] surroundingPxls = new int[4];
            int[] surroundingDiscrepancyPxls = new int[4];

            for (int i = 1; i < width - 1; i++) {
                for (int j = 1; j < height - 1; j++) {
                    surroundingPxls[0] = Matrix[i - 1][j];
                    surroundingPxls[1] = Matrix[i][j - 1];
                    surroundingPxls[2] = Matrix[i + 1][j];
                    surroundingPxls[3] = Matrix[i][j + 1];

                    for (int k = 0; k < 4; k++)
                        surroundingDiscrepancyPxls[k] = Math.Abs(Matrix[i][j] - surroundingPxls[k]);
                    averageSurroundingDiscrepPxls = (surroundingDiscrepancyPxls[0] + surroundingDiscrepancyPxls[1]
                                            + surroundingDiscrepancyPxls[2] + surroundingDiscrepancyPxls[3]) / 4;
                    rangeOfSurroundingDiscrepPxls = Math.Max(Math.Max(surroundingDiscrepancyPxls[0], surroundingDiscrepancyPxls[1]), Math.Max(surroundingDiscrepancyPxls[2], surroundingDiscrepancyPxls[3]))
                                            - Math.Min(Math.Min(surroundingDiscrepancyPxls[0], surroundingDiscrepancyPxls[1]), Math.Min(surroundingDiscrepancyPxls[2], surroundingDiscrepancyPxls[3]));
                    rangeOfSurroundingPxls = Math.Max(Math.Max(surroundingPxls[0], surroundingPxls[1]), Math.Max(surroundingPxls[2], surroundingPxls[3]))
                                            - Math.Min(Math.Min(surroundingPxls[0], surroundingPxls[1]), Math.Min(surroundingPxls[2], surroundingPxls[3]));

                    iteratedBoard.Matrix[i][j] = ((averageSurroundingDiscrepPxls * rangeOfSurroundingPxls) / ((rangeOfSurroundingDiscrepPxls / 4) + 1)) / consolidationConstant;
                }
            }
            iteratedBoard.MatrixImg = iteratedBoard.Matrix.ConvertDoubleArrayToBitmap(Color.White);
            return iteratedBoard;
        }