Java 图像比较的欧几里德算法

Java 图像比较的欧几里德算法,java,euclidean-distance,image-comparison,Java,Euclidean Distance,Image Comparison,我将在java上开发一个图像比较应用程序。为此,我选择了欧几里德算法。此应用程序涉及2个图像。 1.真实图像 2.实际图像的一部分 算法应将图像部分与实际图像进行比较。如果零件存在于实际图像中,则应返回一个值作为匹配成功 谁能告诉我算法步骤吗?java上的代码将被欣赏 这是一个相对简单的想法,有些部分是故意省略的,因为这个问题闻起来像是家庭作业 public static boolean contains(Image large, Image small) { final int large

我将在java上开发一个图像比较应用程序。为此,我选择了欧几里德算法。此应用程序涉及2个图像。 1.真实图像 2.实际图像的一部分

算法应将图像部分与实际图像进行比较。如果零件存在于实际图像中,则应返回一个值作为匹配成功


谁能告诉我算法步骤吗?java上的代码将被欣赏

这是一个相对简单的想法,有些部分是故意省略的,因为这个问题闻起来像是家庭作业

public static boolean contains(Image large, Image small) {
  final int largeWidth = large.getWidth(), largeHeight = large.getHeight();
  final int smallWidth = small.getWidth(), smallHeight = small.getHeight();

  if (smallWidth > largeWidth || smallHeight > largeHeight) {
    return false;
  }

  for (int x = 0; x < largeWidth - smallWidth; x++) {
    for (int y = 0; y < largeHeight - smallHeight; y++) {
      if (subImageEquals(large, x, y, small)) {
        return true;
      }
    }
  }
  return false;
}

private static boolean subImageEquals(Image large, int x, int y, Image small) {
  // TODO: checks whether all pixels starting at (x, y) match
  // those of the small image.
}
公共静态布尔包含(图像大,图像小){
final int largeWidth=large.getWidth(),largeHeight=large.getHeight();
final int smallWidth=small.getWidth(),smallHeight=small.getHeight();
如果(小宽度>大宽度| |小高度>大高度){
返回false;
}
对于(int x=0;x
你不是说“相关性”吗?()subImageEquals应该返回double表示相似性,因为由于压缩和其他原因,例如噪声等。对于所有像素,两个图像并不相等。相反,您应该像在相关算法中一样计算相似性。@schoetbi:是的,subImageEquals应该返回双类型值@罗兰·伊利格:我们能应用最伟大的共同发明者(GCD)吗?我不明白GCD和比较图像有什么关系。你能再解释一下吗?GCD就像是区域之间的欧几里德距离。实际上我正在拍摄两张像a和B的图像来相互比较。我认为最好为每张图像选取25个区域。然后计算区域之间的距离就好了。欧几里德算法是寻找GCD的最佳方法。GCD用于测量两个区域之间的距离。。!