2010-10-28 3 views
0

Я собираюсь разработать приложение для сравнения изображений на java. Для этого я выбрал алгоритм евклидова. Это приложение включает в себя 2 изображения. 1. Фактическое изображение 2. Часть фактического изображения.euclidean алгоритм для сравнения изображений

Алгоритм должен сравнивать часть изображения с фактическим изображением. Если часть существует в фактическом изображении, она должна вернуть одно значение в качестве соответствия успеха.

Может ли кто-нибудь дать мне алгоритмические шаги? код на java будет оценен ..!

+0

Вы имели в виду "корреляция"? (http://en.wikipedia.org/wiki/Digital_image_correlation) – schoetbi

ответ

0

Вот относительно простая идея, с некоторыми частями, упущенными намеренно, поскольку вопрос пахнет домашней работой.

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. 
} 
+0

subImageEquals должен возвращать double для сходства, поскольку из-за сжатия и других шумов и т. д. два изображения не равны для всех пикселей. Скорее вы должны вычислить сходство, как в алгоритме корреляции. – schoetbi

+0

@schoetbi: yes, subImageEquals должен возвращать значение двойного типа. @ Roland Illig: Можем ли мы применить самый большой общий генератор (GCD)? – hemanth

+0

Я не понимаю, что GCD имеет отношение к сравнению изображений. Можете ли вы объяснить это немного больше? –

Смежные вопросы