2012-03-07 3 views
2

iはphashについて読むように、四種類があります。これはどのタイプのphashアルゴリズムですか?

  1. 離散コサイン変換(DCT)は、
  2. 基づくラジアル分散と
  3. ブロックの平均値をベースとベース
  4. Aマー-Hildrethオペレータ値ベースの画像ハッシュ関数。

以下のコードでは、DCTセクションはありません。単に平均コードとハッシュ値を生成するだけです。私はそれがブロック平均値に基づくハッシュ関数かもしれないと確信しています。そのブロック平均値では、algoには秘密鍵はありません。

<?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

ブロック平均ハッシュには4つの方法があります(http://phash.org/docs/pubs/thesis_zauner.pdf)。私はこの疑いがありました。しかし、私は正しいBMB方法を理解することができませんでした。 – user1153410

答えて

0

画像の平均色に基づいてハッシュを計算するので、aHashのように見えます。

関連する問題