Кто-нибудь знает точную формулу для этой конкретной матрицы подобия - PullRequest
0 голосов
/ 09 октября 2018

Работая с веб-сайтом https://www.psi.toronto.edu/index.php?q=affinity%20propagation и работая с конкретными данными из КЛАСТЕРНЫХ ИЗОБРАЖЕНИЙ, ПОЛУЧЕННЫХ ИЗ БАЗЫ ДАННЫХ OLIVETTI FACE, найденных на этой странице, я смотрю на матрицу сходства, которую вы можете загрузить и поэкспериментировать с использованием Affinity Propagation.

Мой конкретный вопрос - это значения, найденные в матрице подобия.Я не знаю точно, как они были рассчитаны.Я понимаю, что в описании говорится, что они использовали сумму квадратов расстояний, и я даже создал функцию, которая, как мне кажется, рассчитывает эту сумму здесь.

public double CalculateSumOfSquaredDifference(BufferedImage subimage, BufferedImage subimage2){

    Image img1 = ConvertBufferedImageToImage(subimage);
    Image img2 = ConvertBufferedImageToImage(subimage2);

    double Sum = 0;
    for(int i=0; i<img1.getHeight();i++){
        for(int j=0; j<img1.getWidth(); j++){

            Color dx = img1.getPixelReader().getColor(i, j);
            Color dy = img2.getPixelReader().getColor(i, j);

            double dxB = dx.getBrightness();
            double dyB = dy.getBrightness();

            double SSD = Math.pow((dxB - dyB), 2);
            Sum += SSD;
        }
    }
    return Sum;
}

Для этой функции требуется два BufferedImages одинакового размера.Я просматриваю каждый пиксель одного изображения и сравниваю его с одним и тем же пикселем другого изображения в соответствии с формулой суммы квадратов расстояний.Проблема в том, что я не получаю того же значения, которое автор получает для матрицы подобия.Например, в одном случае я получил значение -74, тогда как реальный ответ должен был быть -16.Я использую значение яркости, но это значение нормализовано между 0 и 1.

Где я ошибаюсь в моей формуле и функции выше?

...