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