【发布时间】:2014-04-25 01:18:54
【问题描述】:
好的,所以我需要能够在一个大数组(比如 15x20 或 20x17)中搜索一个只有 1 和 0 的字段,以找到它们的布局最准确地反映了哪个 13x13 数字模板,以一种原始 OCR。我的问题是我需要在较大数组的每个可能迭代中移动一个 13x13 数组,以查看它与数字数组最匹配的位置。这是我尝试过的:
public double compareMatrices(int[][] num,int[][] mat){
double score=0;
double highest=0;
int n=0;
for(;n+num.length<mat.length;n++){
int[][] rows=new int[num.length][];
int m=0;
for(;m+num.length<mat[0].length;m++){
for(int o=0;o<num.length;o++){
rows[o]=Arrays.copyOfRange(mat[n+o],m,m+num.length);
}
int p=0;
for(;p<rows.length;p++){
int q=0;
for(;q < rows[0].length;q++){
if((rows[p][q]==1)&&(num[p][q]==1)){
score+=1;
}
else if((num[p][q]==1)&&(rows[p][q]==0)){
score-=.25;
}
else if((num[p][q]==0)&&(rows[p][q]==0)){
score+=.25;
}
}
}
}
if(score>highest){
highest=score;
score=0;
}
else{
score=0;
}
}
return(highest);
我的问题是,这似乎只是一遍又一遍地重复相同的 13x13 块,而没有移动到不同的块,无论是向侧面还是向下。任何建议在这里都会有所帮助,我们说话时我正在拔头发。 编辑: 示例输入数字数组:
0000001000000
0000011000000
0000011000000
0000101000000
0000001000000
0000001000000
0000001000000
0000001000000
0000001000000
0000001000000
0000001000000
0000001000000
0000111110000
我想搜索:
0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0
0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
我想在第二个中搜索每个可能的 13 x 13 矩阵,将其与第一个进行比较,并根据它们的相似性返回一个分数,返回最高的。
【问题讨论】:
-
如果可以的话,提供一个示例输入和输出。
标签: java arrays matrix multidimensional-array