将矩阵划分为具有平行对角线的块

时间:2012-10-12 07:52:18

标签: java image image-processing

我有问题。我想将图像划分为具有(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

0 个答案:

没有答案