【问题标题】:SURF/SIFT type image pattern matching library in PHPPHP中的SURF/SIFT类型图像模式匹配库
【发布时间】:2014-02-21 06:06:54
【问题描述】:

我想知道是否有一些用 PHP 编写的 SURF 库可用?从我到现在所做的小发现来看,冲浪库要么是 C++/C#,如果提供了一些指向 PHP 中内置的类似技术的链接,将不胜感激。我用谷歌搜索了一些内置功能,唯一足够接近的是 Image Magick。但从 cmets 看来,模式匹配无法在其中完成。

让我重新定义我自己,我只是不想比较 2 个图像,假设图像中有一个 Google 徽标,并且有一个 Google 徽标的图像作为单独的图像,如果有的话我想搜索一些复制了 Google 徽标/图像的图像。

【问题讨论】:

  • 你为什么不使用 MATLAB?除非强制使用 php,否则对您来说会容易得多,但据我所知,您提到的功能检测器没有用 PHP 编写的库。我建议你改用 matlab,这会让你的工作更轻松
  • 我对使用 PHP 有一定的限制
  • 在 PHP 中可能无法对图像进行矩阵表示。也许你需要和你的老板坐下来,让他/她改变他的要求。
  • 我假设在 SIFT 和/或 Surf 中进行的比较是在数学上进行的,或者使用一些特定的计算,如果我对矩阵表示不感兴趣而只对两个图像之间的实际模式匹配感兴趣怎么办.对不起,我缺乏信息,但以上是我想要的
  • 可以使用c++ OpenSURF库stackoverflow.com/questions/2574206/…

标签: php image-processing pattern-matching surf sift


【解决方案1】:

OpenCV 是一个出色的图像处理和计算机视觉开源库。我找到了一个PHP wrapper(详细教程here),但是我怕它没有包裹SIFT/SURF代码...

阅读您的评论,我看到您需要匹配两张图片。如果您的目标是将图案(一张图片)与另一张图片进行匹配,您可以使用以下示例:

<?php
use OpenCV\Image as Image;
use OpenCV\Histogram as Histogram;

echo "Loading sample\n";
$im = Image::load("elephpant_sample.jpg", Image::LOAD_IMAGE_COLOR);
$im2 = Image::load("dragonbe_elephpants.jpg", Image::LOAD_IMAGE_COLOR);

for ($i = 0; $i < 6; $i++) {
$result = $im2->matchTemplate($im, $i);
$result->save("mt_output_$i.jpg");
}

如果您正在搜索对象,您可以使用Haar Cascade part。 Here 是一个检测图像中人脸的示例。

【讨论】:

  • 让我重新定义我自己,我只是不想比较 2 张图片,假设图片中有一个 Google 徽标,并且有一个 Google 的图片作为单独的图片我想要什么搜索是否存在复制 Google 徽标/图像的图像。
  • 我尝试实现您的解决方案和您建议的链接,但您建议的链接将用于旧版本的 PHP,主要是 PHP
  • 最后感谢您在回答中付出的时间和精力,但不幸的是最近没有对最近的库进行任何工作
  • @phyrox 嗨,有没有可能得到两张图像之间相似度的分数?
【解决方案2】:

您可以在 php.ini 中尝试 phash (http://phash.org) 算法。或者阅读这个关于图像指纹和相似性的问题:Image fingerprint to compare similarity of many images。

【讨论】:

  • pHash 的最后一个版本在 php 端有 bug。您可以在网上找到修复程序。但是每个修复都有更多或缺少的东西。意思是,pHash 没有完成它应该做的工作。如果您将它用于 PHP,我不推荐它。
猜你喜欢
  • 1970-01-01
  • 2012-04-02
  • 2021-06-07
  • 2013-11-22
  • 2021-08-05
  • 2011-06-25
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多