Php 如何使用phasher检测数据库中的相似图像?

Php 如何使用phasher检测数据库中的相似图像?,php,image,Php,Image,我正在建立一个搜索图像引擎,所以我需要在数据库中检测相似/重复的图像,我已经找到了 这个类帮助我为每个图像创建哈希字符串。我可以很容易地比较两个图像,但现在我想在一个大型数据库中搜索某个特定的图像是否有克隆或类似的图像 如何使用图像哈希字符串进行搜索?我想我正在构建一个类似于您的工具,但Facebook个人资料图片搜索引擎我称之为FBpp=“Facebook个人资料图片” 我还没有完成它,这是我用来提高编程技能的东西 我想这就是你要找的 <?php //Require config.ph

我正在建立一个搜索图像引擎,所以我需要在数据库中检测相似/重复的图像,我已经找到了

这个类帮助我为每个图像创建哈希字符串。我可以很容易地比较两个图像,但现在我想在一个大型数据库中搜索某个特定的图像是否有克隆或类似的图像


如何使用图像哈希字符串进行搜索?

我想我正在构建一个类似于您的工具,但Facebook个人资料图片搜索引擎我称之为FBpp=“Facebook个人资料图片”

我还没有完成它,这是我用来提高编程技能的东西

我想这就是你要找的

<?php

//Require config.php file to connect with mysql server and the db.
require_once('config.php');

//Calling PHasher class file.
include_once('phasher/phasher.class.php');
$I = PHasher::Instance();

$testImage = "./avatar/4.jpg";

$hash = $I->FastHashImage($testImage);
$hex = $I->HashAsString($hash);

$result = mysql_query("SELECT `fid`,`hash` FROM `images`");

while($row  = mysql_fetch_array($result)){
    if($row['hash'] == $hex){
        //echo $row['hash'];
        $fid = $row['fid'];
        echo "<a href='https://www.facebook.com/$fid/'><img src='https://graph.facebook.com/$fid/picture?type=large'></a>";
    }
}

为什么不使用唯一列来限制数据库中存储哈希的列?那么你就不能有一个复制的图像@库尔顿,我已经有了。在插入数据库之前,我需要检查类似的图片。这意味着:相同的图片,但大小不同,裁剪,低质量,旋转。。。。这是正确的。对不起,我的英语很差。从阅读phasher和链接页面上建议的进一步阅读中我了解到,这将计算类似图像的“相似”哈希。因此,您必须使用一个函数来计算两个这样的散列的“相似性”,例如,作为百分比值-因此您需要一个适当的函数。但是这些都是非常昂贵的,而且通常必须在运行中计算两个输入值之间的距离——因此在数据库级别上这样做会非常昂贵。@CBroe是的。phasher为每个图像创建了哈希字符串。然后比较它们,找出它们有多相似。但我想在数据库中搜索类似的图像,所以我将所有哈希字符串插入数据库,但我不知道如何查询数据库中类似的其他哈希字符串。。。我听说过hamming distance,但是MySQL没有太多关于它的信息。如果没有办法使用mysql数据库,有没有解决方案可以使用这样的图像搜索引擎?