سؤال

سأقوم بتطوير تطبيق لمقارنة الصور على Java. لهذا اخترت خوارزمية إقليدية. يتضمن هذا التطبيق مع صورتين. 1. الصورة الفعلية 2. جزء من الصورة الفعلية.

يجب أن تقارن الخوارزمية جزء الصورة مع الصورة الفعلية. إذا كان الجزء موجودًا في الصورة الفعلية ، فيجب أن يعيد قيمة واحدة على أنها مطابقة للنجاح.

هل يمكن لأي شخص أن يعطيني الخطوات الخوارزمية؟ رمز على جافا سيكون موضع تقدير ..!

هل كانت مفيدة؟

المحلول

فيما يلي فكرة بسيطة نسبيًا ، مع ترك بعض الأجزاء عن قصد ، لأن السؤال تنبعث منه رائحة الواجب المنزلي.

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.
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top