问题标签 [phash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2829 浏览

build - 如何在 MacOSX Lion 上构建 pHash(使用最新的 ffmpeg-devel)

在 OSX 上构建 pHash 0.9.4 可能会很棘手。对于那些遇到问题的人,我在下面的冗长回答可能会有所帮助。

0 投票
2 回答
1740 浏览

c++ - postgresql c-extension 加载另一个外部库

我需要将 pHashes (phash.org) 与汉明距离函数进行比较。

我尝试了 pg_similarity 中的那个,但它似乎不能正常工作。(相同的 pHash 的汉明距离不为 0)。

所以我想我只需要使用 c 扩展来使用ph_hamming_distancepHash 库中的函数。

我有什么:phash.c

生成文件

SQL

我得到的错误:

我一定不能以某种方式链接到 postgresql 吗?

0 投票
0 回答
577 浏览

image - 使用 pHash 搜索类似图像的解决方案

大量图像存储在数据库中。我用 pHash 计算每个图像的散列并将散列值存储到数据库中。

如何搜索已知图像的相似图像?我需要遍历存储在数据库中的每张图像并使用 pHash 计算距离吗?

有没有有效的方法?

任何想法?

0 投票
2 回答
5876 浏览

mysql - MySQL 或 PostgreSQL 的汉明距离优化?

我试图改进在 MySQL 数据库中搜索相似图像 pHashed。现在我像这样比较 pHash 计数汉明距离:

选择结果(引擎 MyISAM)

  • 20000 行;查询时间 < 20ms
  • 100000 行;query time ~ 60ms # 这很好,直到达到 150000 行
  • 300000 行;查询时间 ~ 150ms

因此查询时间增加取决于表中的行数。


我还尝试了 在 SQL 中二进制字符串的 stackoverflow 汉明距离上找到的解决方案

行 300000 ; 查询时间 ~ 240ms


我将数据库引擎更改为 PostgreSQL。将此 MySQL 查询转换为 PyGreSQL 没有成功。行 300000 ; 查询时间~18s


有没有优化上述查询的解决方案? 我的意思是优化不取决于行数。

我有有限的方法(工具)来解决这个问题。到目前为止,MySQL 似乎是最简单的解决方案,但我可以在每个可以在专用机器上与 Ruby 一起使用的开源数据库引擎上部署代码。MsSQL https://stackoverflow.com/a/5930944/766217有一些现成的解决方案(未测试)。也许有人知道如何为 MySQL 或 PostgreSQL 翻译它。

请根据一些代码或观察发布答案。我们在 stackoverflow.com 上有很多关于汉明距离的理论问题

谢谢!

0 投票
1 回答
1806 浏览

python - Python equivalent of DCT image hash function used in pHash module

I have an existing python program that accepts an image URL and does manipulations on the image loaded. I tried passing the image data to the pHash module in C++ and then get the image hash. I've tried using python extension library to pass the image from python to the C program, but without success. The speed of the whole process is a priority. It includes getting the hash value of query image, finding the similar images from a huge collection of images system. So, instead of passing huge image data, then converting to a CImg image object, I feel that it would be better and easier to just calculate the hash in python code, and pass the hash value to the pHash module for finding out the similar images. So, I am looking forward to get the DCT image hash in Python.

Does anyone has any idea how to get the same hash value in python? I don't want to re invent the wheel. I tried to google and find the equivalent function in python, but no success. Here is the image hash function: ( source: pHash module)

I would really appreciate your help. Thanks a lot

0 投票
2 回答
1142 浏览

c++ - 将使用 PIL 加载的图像转换为 Cimg 图像对象

我正在尝试将使用PIL加载的 iamge 转换为 Cimg 图像对象。我知道 Cimg 是一个 c++ 库,而 PIL 是一个 python 成像库。给定一个图像 url,我的目标是计算图像的pHash,而不将其写入磁盘。pHash 模块与Cimg 图像对象一起使用,它已在 C++ 中实现。所以我打算使用 python 扩展绑定将所需的图像数据从我的 python 程序发送到 c++ 程序。在以下代码片段中,我从给定的 url 加载图像:

我需要构建的 Cimg 图像对象如下所示:

我可以使用 img.size 获取宽度(size_x)和高度(size_y),并将其传递给 c++。我不确定如何填写 Cimg 对象的“值”字段?使用什么样的数据结构将图像数据从 python 传递到 c++ 代码?

另外,还有其他方法可以将 PIL 图像转换为 Cimg 吗?

0 投票
1 回答
2860 浏览

image - Phash vs. SIFT in identifying similar image

I have questions about both and

First of all, I'm using SIFT to identify similar image in real-time service. Like pictures by phone-camera, small amount of rotation and blurred effect could be.

And I found Phash. So, I test phash on its demo page. But result made me to sigh.

This is result of above test:

Demo of Phash

In this test, two images are fixed on x-axis. So they don' t have rotation. But right images' logo were removed and person was moved to left side. In my eye, This is 'Very Similar'. In addition, SIFT catch this completely.

Now, This is question.

  1. pHash is faster than SIFT?
  2. Is pHash's accuracy reliable?
  3. SIFT's output was too big to use in real-time service. So I must use hash to make output smaller size like LSH(Locality-sensitive hashing). Any other way to I try?
0 投票
1 回答
612 浏览

dll - phash.dll 中没有函数

想在 AutoIt 脚本中调用开源感知哈希库 pHash 的 DLL。

但是在 phash.dll 中,正如 DLL Export Viewer 所说,只有 6 个函数:closedir、opendir、readdir、rewinddir、seekdir 和 telldir。

我错过了一些重要的东西

0 投票
2 回答
2933 浏览

java - 使用 pHash 搜索一个巨大的图像数据库,最好的方法是什么?

我需要搜索一个巨大的图像数据库以使用 pHash 查找可能的重复项,假设这些图像记录具有使用 pHash 生成的哈希码。

现在我必须比较一个新图像,并且我必须使用 pHash 针对现有记录创建散列。但据我了解,has 比较并不像

看起来我需要将两个哈希码都传递到 pHash API 中进行匹配。所以我必须分批从 DB 中检索所有哈希码,并使用 pHash API 进行一一比较。

但是,如果我有大约 1000 张图像在队列中与数百万已经存在的图像进行比较,这看起来不是最好的方法。

我需要知道以下内容。

  1. 我对使用 pHash 与现有图像数据库进行比较的理解/方法是否正确?
  2. 有没有更好的方法来处理这个问题(不使用像 lire 这样的 cbir 库)?
  3. 我听说有一种称为 dHash 的算法,它也可以用于与哈希码进行图像比较。是否有任何 Java 库可以用于此,可以与 pHash 一起使用来优化大图像和重复图像处理任务的任务。

提前致谢。

0 投票
1 回答
1601 浏览

java - Java崩溃!使用 jni 和 jpeg62.dll 时的 NTDLL.DLL

一直在尝试使用 jni 在 java 上运行 pHash,我遇到了很多问题并解决了它们,现在我被困在这个地方。我修复了我的所有 dll 和源代码,一切都很好,但是当我尝试使用 dll 运行我的 java 代码时......使用 jpeg62.dll 时 JAVA 崩溃,因为我试图使用 DCT 图像哈希分析 jpg 图像..

我需要知道 ntdll.dll+0x1b1fa 有什么以及它为什么会崩溃。从这份报告中我不太了解,因为我还是一个编程初学者。如果有任何专家可以帮助我或指导我,或者只是给我提示在哪里寻找错误,我将不胜感激。

ps:我使用 jpeg62.dll、zlib.h、libpng.dll 作为我的 pHash.dll 的依赖项,它们已经在那里,所以我没有对它们做任何事情。


这是我的日志: