2

我有个问题。我想将图像划分为具有(45 和-45)度平行对角线的块。你能帮我如何追踪我的像素矩阵吗?”

我试图为这种方法编写一些代码。我划分一个宽度和高度相等的矩阵。为两个三角形。你知道 (i,j ) = (0,0) 在图像矩阵的左上角,所以直到对角线是一个三角形,然后是另一个三角形。这是我的代码。

public static int[] getBlackNo_45Degree(int[][] pixels, int sectionNo){
        int height = pixels.length;
        int width = pixels[0].length;
        System.out.println(width +" - " +height);
        int [] blackNo_Diagonal = new int[sectionNo];
        int section = (height / sectionNo )* 2;
        int temp =0, index = section, blackNo = 0, arrayIn =0;

        for(int count= 0 ; count<sectionNo/2 ; count++){
            blackNo = 0;
            for(int row = temp; row< index ; row++ ){
                int rowIndex = row ;
                for(int col= 0 ; col <= row ; col++){
            //      System.out.println("row-col :"+rowIndex +"-"+col);
                    int rgb = pixels[rowIndex --][col];

                    if(rgb == Color.BLACK.getRGB())
                        blackNo ++;

                }
            }
            blackNo_Diagonal[arrayIn++]= blackNo;
            temp += section;
            index += section;
            System.out.println(blackNo);
        }
        temp = 0;
        index = section;
        for(int count= 0 ; count<sectionNo  /2 ; count++){
            blackNo = 0;
            for(int col= temp +1 ; col <= index  ; col++){
                int colIndex = col;
                for(int row= (height -1) ; colIndex < width ; row--){
                //System.out.println("row-col :"+row +"-"+colIndex);
                    int rgb = pixels[row][colIndex++];
                    if(rgb == Color.BLACK.getRGB())
                        blackNo ++;


                } 
            }
            blackNo_Diagonal[arrayIn++]= blackNo;
            temp += section;
            index += section;
            System.out.println(blackNo);
        }
        return  blackNo_Diagonal;
    }

我写了这个,但这不是很有效。你的想法是什么?对于第一次编译,我尝试了一个小矩阵而不是图像。这是方法的样本矩阵和输出(sectionNo == 4):

    int[][] pixels ={{Color.BLACK.getRGB(),Color.BLACK.getRGB(),Color.white.getRGB(),Color.white.getRGB()},
                     {Color.BLACK.getRGB(),Color.white.getRGB(),Color.BLACK.getRGB(),Color.black.getRGB()},
                     {Color.BLACK.getRGB(),Color.BLACK.getRGB(),Color.white.getRGB(),Color.white.getRGB()},
                     {Color.BLACK.getRGB(),Color.white.getRGB(),Color.BLACK.getRGB(),Color.black.getRGB()}

    };

输出 :

row-col :0-0
row-col :1-0
row-col :0-1
3
row-col :2-0
row-col :1-1
row-col :0-2
row-col :3-0
row-col :2-1
row-col :1-2
row-col :0-3
4
row-col :3-1
row-col :2-2
row-col :1-3
row-col :3-2
row-col :2-3
2
row-col :3-3
1
4

0 回答 0