我的任务是创建一个图像数据库,它有几种类型的图像对象。每个图像由2D像素阵列组成。我被要求创建此方法: MatchPattern(Image subimage,Image image):此函数返回一个整数,表示子图像重复到图像的次数。
我写的代码如下:
public int MatchPattern(Image subimage, Image image) {
if(image.getClass().equals(subimage.getClass())){
int numOfMatches = 0;
int imgWidth = image.getWidth();
int imgHeight = image.getHeight();
int subimgWidth = subimage.getWidth();
int subimgHeight = subimage.getHeight();
if (imgWidth < subimgWidth || imgHeight < subimgHeight)
return 0;
for (int i = 0; i < imgHeight; i++) {
for (int j = 0; j < imgWidth; j++) {
int subHeightIndex = 0;
int subWidthIndex = 0;
Pixel imagePix = image.getImg()[i][j];
Pixel subimgPix = subimage.getImg()[subHeightIndex][subWidthIndex];
if( (imagePix.compareTo(subimgPix)==0) && ((imgWidth-j)>=subimgWidth) && ((imgHeight-i)>=subimgHeight) ){
boolean matchFlag = true;
for (int k = 0; k < subimgHeight; k++) {
if(matchFlag == false)
break;
for (int l = 0; l < subimgWidth; l++) {
matchFlag = (image.getImg()[i+k][j+l] == subimage.getImg()[k][l]);
if (matchFlag == false)
break;
}
}
if(matchFlag == true)
numOfMatches++;
}
}
}
return numOfMatches;
}
return 0;
但是,每当我运行该方法时,它总是返回一个等于0的匹配数。任何人都可以指向正确的方向吗? 提前谢谢。