pHa sh взаимная корреляция двух белых изображений равна 0 - PullRequest
0 голосов
/ 14 июля 2020

Я использую Shipwreck.Pha sh для сравнения изображений. Я только что понял, что два идентичных белых изображения возвращают взаимную корреляцию 0, хотя он должен возвращать 1.

hash1: 0x000000000000000000000000000000000000000000000000000000000000000000000000

hash2: 0x00000000000000000000000000000000000000000000000000000000

1004 *1004* *

Мой код:

static void Main(string[] args)
    {


        var firstImage = new Bitmap(@"Bilder\\hash1.JPG");
        var secondImage = new Bitmap(@"Bilder\\hash1.JPG");


        var hash = ImagePhash.ComputeDigest(firstImage.ToLuminanceImage());
        var hash2 = ImagePhash.ComputeDigest(secondImage.ToLuminanceImage());

        var score = ImagePhash.GetCrossCorrelation(hash, hash2);

        Console.WriteLine(hash);
        Console.WriteLine(hash2);

        Console.WriteLine(score);


    }

Кто-нибудь может объяснить мне мой результат? Заранее спасибо.

Данное изображение: whiteImage

1 Ответ

0 голосов
/ 20 июля 2020

Я напрямую спросил разработчиков Shipwreck, и вот их ответ:

Поскольку расчет взаимной корреляции основан на некотором делении, он не поддерживает нулевые векторы. Таким образом, pHa sh не поддерживает одноцветное изображение.

Реализация скрипта из @Bagus Tesa работает, хотя это копия из Shipwreck.Pha sh. Поэтому я изменил метод CrossCorrelation с NuGet на его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...