小编php*_*man的帖子

Libpuzzle索引数百万张图片?

它是关于Frank Denis先生的libpuzzle libray for php(http://libpuzzle.pureftpd.org/project/libpuzzle).我试图了解如何在我的mysql数据库中索引和存储数据.矢量的生成绝对没有问题.

例:

# Compute signatures for two images
$cvec1 = puzzle_fill_cvec_from_file('img1.jpg');
$cvec2 = puzzle_fill_cvec_from_file('img2.jpg');

# Compute the distance between both signatures
$d = puzzle_vector_normalized_distance($cvec1, $cvec2);

# Are pictures similar?
if ($d < PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD) {
  echo "Pictures are looking similar\n";
} else {
  echo "Pictures are different, distance=$d\n";
}
Run Code Online (Sandbox Code Playgroud)

多数民众赞成在我看来 - 但现在当我有大量的图片> 1.000.000时,我如何工作?我计算向量并将其与文件名一起存储在数据库中?现在如何找到类似的图片?如果我在mysql中存储每个向量,我必须打开每个记录并使用puzzle_vector_normalized_distance函数计算距离.该过程需要很多时间(打开每个数据库条目 - 把它抛出函数,...)

我从lib puzzle libaray读了自述文件,发现了以下内容:

它是否适用于拥有数百万张图片的数据库?

典型的图像签名仅需要182个字节,使用内置的压缩​​/解压缩功能.

类似的签名共享相同的"单词",即.相同位置的相同值序列.通过使用复合索引(单词+位置),可能的相似矢量集显着减少,并且在大多数情况下,实际上不需要计算矢量距离.

通过单词和位置进行索引还可以轻松地将数据拆分为多个表和服务器.

所以,是的,Puzzle库与一些需要索引数百万张图片的项目并不相容.

我也找到了关于索引的描述:

------------------------ INDEXING ------------------------

如何快速找到类似图片,如果它们是数百万条记录?

原始论文有一个简单而有效的答案.

用固定长度的单词剪切矢量.例如,让我们考虑以下向量:

[abcdefghijklmnopqrstu vwxyz]

如果单词长度(K)为10,您可以得到以下单词:

[abcdefghij]发现位置0 [bcdefghijk]发现位置1 …

php mysql compare image similarity

22
推荐指数
2
解决办法
7127
查看次数

标签 统计

compare ×1

image ×1

mysql ×1

php ×1

similarity ×1