我将开发一个用于在 java 上进行图像比较的应用程序。为此,我选择了欧几里得算法。此应用程序涉及 2 个图像。1. 实物图 2. 部分实物图。
算法应该将图像的一部分与实际图像进行比较。如果该部分存在于实际图像中,则应返回一个值作为匹配成功。
谁能给我算法步骤?java上的代码将不胜感激..!
我将开发一个用于在 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.
}