2012-03-07 2 views
2

Как я прочитал о phash, существует четыре типа:Какой тип фашизма является алгоритмом?

  1. дискретного косинусного преобразования (ДКП) на основе
  2. на основе оператора
  3. Марр-Хилдрет
  4. на основе Радиальный дисперсия и
  5. Блок средний основанная на значении хэш-функция изображения.

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

<?php 

    $filename = 'image.jpg'; 

    list($width, $height) = getimagesize($filename); 


    $img = imagecreatefromjpeg($filename); 

    $new_img = imagecreatetruecolor(8, 8); 


    imagecopyresampled($new_img, $img, 0, 0, 0, 0, 8, 8, $width, $height); 

    imagefilter($new_img, IMG_FILTER_GRAYSCALE); 


    $colors = array(); 
    $sum = 0; 


    for ($i = 0; $i < 8; $i++) { 

     for ($j = 0; $j < 8; $j++) { 

      $color = imagecolorat($new_img, $i, $j) & 0xff; 

      $sum += $color; 
      $colors[] = $color; 

     } 
    } 

    $avg = $sum/64; 


    $hash = ''; 
    $curr = ''; 

    $count = 0; 
    foreach ($colors as $color) { 

     if ($color > $avg) { 

      $curr .= '1'; 
     } else { 

      $curr .= '0'; 
     } 

     $count++; 

     if (!($count % 4)) { 

      $hash .= dechex(bindec($curr)); 

      $curr = ''; 
     } 

    } 

    print $hash . "\n"; 
?> 

Какой тип этого альго?

+1

Я согласен с вашими чувствами в том, что это хэш хэша на основе среднего значения. Что заставляет вас думать, что необходим секретный ключ? – Martin

+0

Как блокировка на основе средних оснований имеет четыре метода (http://phash.org/docs/pubs/thesis_zauner.pdf), у меня возникло это сомнение. Хотя, я не мог понять правильный метод BMB. – user1153410

ответ

0

Для меня это выглядит как aHash, так как он вычисляет хэш на основе среднего цвета изображения.