phash

[计算机视觉]基于内容的图像搜索实现

独自空忆成欢 提交于 2021-02-12 11:30:41
图像搜索引擎一般有三种实现方式: (1)Search By Metadata,这种方式不会考虑图片本身内容(图片包含物体,以及图像像素分布等),纯粹根据图像标签来进行检索。如果某个网页中有一张赛马的图片,并且网页文本内容中包含“赛马”(或者相关词汇)的文字,当用户搜索“赛马”、“马”、“horse”等关键字时,搜索引擎就会把这张图当作检索结果返回给用户。换句话说,此时的图像搜索引擎干的事情跟普通搜索引擎差不多,匹配关键词,并将对应图片返回给用户。这种工作方式的优点是速度快,在普通搜索引擎的技术基础之上很容易改进去实现。缺点也很明显,它完全依赖于描述图片的文字(标签),如果描述图片的文字不对或者相关性不大时,搜索准确性可想而知,比如我这篇博客中如果插入一张“猫”的照片,但是整篇博客文章对“猫”只字不提,那么基于Search By Metadata的搜索引擎很难找到博客中猫的图片。 有一类图片分享网站要求用户在上传图片时,人工用几个词汇描述图片中有什么(标签),便于后面基于Metadata的搜索。当然也不排除一些基于深度学习的图片分类自动打标签的方式。 (2)Search By Example,这种方式考虑图片本身内容(图片包含物体,以及图片像素分布等等),用户输入图片,搜索引擎根据图片内容,返回与该图片相似的图片结果。这种方式相比Search By Metadata要复杂一些

python+opencv图像处理(一)

杀马特。学长 韩版系。学妹 提交于 2020-12-29 01:58:25
一、什么是opencv?     Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、MacOS操作系统上。它轻量级而且高效——由一系列 C 函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。最新版本是3.1 ,2016年1月29日发布。(引自 百度百科openCV )   简言之,通过openCV可实现计算机图像、视频的编辑。广泛应用于图像识别、运动跟踪、机器视觉等领域。 二、安装   直接使用pip安装 pip install numpy Matplotlib #由于opencv依赖numpy pip install opencv-python #或者使用国内镜像 pip install opencv-python -i https://pypi.douban.com/simple  安装完成之后再命令行解释器输入: import cv2  若没有提示no module错误,则表示安装成功 测试脚本: import cv2 #导入模块,opencv的python模块叫cv2 imgobj =

Python小练习:Numpy

a 夏天 提交于 2020-08-13 06:08:30
戳蓝色字关注我们哟! 对于python一直没系统学过,都是用到什么临时查一下。最近刷leetcode的时候,发现对于基本的操作还很不熟练,因此首先在网上找了个关于Numpy的小练习巩固一下。对于python操作熟练的宝宝们本次分享可能用处不大,但对于新手,应该也算是个不错的整理。(练习来源:https://github.com/nndl/exercise) 1 array的操作 本次练习的题目并不多,熟练的话半小时不到就能搞定,算是查缺补漏。array操作这部分主要为array的生成,涉及一维数组、二维数据、单位矩阵等等,还有就是array切片。练习中主要是些常用函数的汇总,个人觉得需要注意的点在代码中进行注释。 2 array的数学运算 这部分主要是array的基本运算,重点注意矩阵运算和对应位置元素运算的区别。这部分还涉及了一点点简单的二维曲线图绘制。 后台回复“Numpy”获得完整代码 往期推荐: 百度地图API调用:正逆地理编码 小案例(八):商户信息整理(python) 图片相似度识别:pHash算法 本文分享自微信公众号 - 机器学习养成记(chenchenwings)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina

Opencv python图像处理-图像相似度计算

二次信任 提交于 2020-04-24 06:12:40
<div class="title_1">一、相关概念</div> 1. 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直、大白腿、樱桃唇、瓜子脸。王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你儿子。 还有其他物品、什么桌子带腿、镜子反光能在里面倒影出东西,各种各样的特征,我们通过学习、归纳,自然而然能够很快识别分类出新物品。 而没有学习训练过的机器就没办法了。 但是图像是一个个像素点组成的,我们就可以通过不同图像之间这些差异性就判断两个图的相似度了。其中颜色特征是最常用的,(其余常用的特征还有纹理特征、形状特征和空间关系特征等) 其中又分为 直方图 颜色集 颜色矩 聚合向量 相关图 1、直方图 在Python中利用opencv中的calcHist()方法获取其直方图数据,返回的结果是一个列表,使用matplotlib,画出了这两张图的直方图数据图 import cv2 import numpy from matplotlib import pyplot if __name__ == '__main__': imgobj1 = cv2.imread('pho.jpg') imgobj2 = cv2.imread('ph1.jpg') hist1 = cv2.calcHist([imgobj1], [0], None,

c语言hash表的实现

旧街凉风 提交于 2020-04-14 17:54:05
【推荐阅读】微服务还能火多久?>>> 1. hash_db.h 1 #ifndef _HASH_DB_H 2 #define _HASH_DB_H 3 4 #include " slist.h " 5 6 typedef unsigned int (*hash_func_t) ( const void *key); // 哈希函数类型,返回值为整数,参数为关键字 7 struct _hash_db 8 { 9 slist_head_t *p_head; // 指向数组首地址 10 unsigned int size; // 数组成员数 11 unsigned int value_len; // 一条记录的长度 12 unsigned int key_len; // 关键字的长度 13 hash_func_t pfn_hash; // 哈希函数 14 }; 15 typedef struct _hash_db hash_db_t; // 指向哈希表对象的指针类型 16 17 int hash_db_init(hash_db_t *p_hash, // 哈希表初始化 18 unsigned int size, 19 unsigned int key_len, 20 unsigned int value_len, 21 hash_func_t pfn_hash); 22 23 int

How to add unmanaged dll to show up in Add Reference's COM tab

落花浮王杯 提交于 2020-01-16 14:47:22
问题 I am currently trying to use pHash.dll on http://phash.org Unfortunately it was written in C++, I'd have to use DLLImport But the problem I am having is how to register pHash.dll (compiled thru VS2010/C++) I've tried to register using regsrv32 and have been fruitless giving an error message. Now, How can i register pHash to show up in COM tab? 回答1: The DLL in question exports flat APIs. The Add COM References Tab is for DLLs that expose COM objects. Instead of using Add Reference to refer to

Building the pHash library on Windows

孤街浪徒 提交于 2019-12-24 11:54:11
问题 I've been trying to build pHash(http://phash.org/) on my windows machine and haven't been having any luck. I'm new to programming desktop applications. I will be using the pHash library with Python through ctypes. Could someone post the steps involved with building pHash? What I tried, was opening pHash.sln with Visual Studio 2008 and chooing the Release(as opposed to debug) and building pHash. I wasn't sure where it was building to as I couldn't find the file. I tried looking in Visual

Using SOLR to calculate “similarity”/“bitcount” between two ulongs

喜夏-厌秋 提交于 2019-12-18 13:32:05
问题 We have a database of images where I have calculated the PHASH using Dr. Neal Krawetz's method as implemented by David Oftedal. Part of the sample code calculates the difference between these longs is here: ulong hash1 = AverageHash(theImage); ulong hash2 = AverageHash(theOtherImage); uint BitCount(ulong theNumber) { uint count = 0; for (; theNumber > 0; theNumber >>= 8) { count += bitCounts[(theNumber & 0xFF)]; } return count; } Console.WriteLine("Similarity: " + ((64 - BitCount(hash1 ^

Error installing pHash on Ubuntu

时光总嘲笑我的痴心妄想 提交于 2019-12-11 02:29:34
问题 So I was trying to install the pHash libraries on Ubuntu. I've installed all the required packages running this command: apt-get install libavformat-dev libmpg123-dev libsamplerate-dev libsndfile-dev cimg-dev libavcodec-dev ffmpeg libswscale-dev Then I run ./configure and everything seems ok, I got this: francesco@francesco-VirtualBox:~$ cd '/home/francesco/Scrivania/pHash-0.9.6' francesco@francesco-VirtualBox:~/Scrivania/pHash-0.9.6$ ./configure checking for a BSD-compatible install... /usr

How to know if an images is similar to another (slightly different angle but same point of view)

你离开我真会死。 提交于 2019-12-03 09:56:52
问题 I've checked methods like Phasher to get similar images. Basically to resize images to 8x8, grayscale, get average pixel and create a binary hash of each pixel comparing if it's above or below the average pixel. This method is very well explained here: http://hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html Example working: - image 1 of a computer on a table - image 2, the same, but with a coin This would work, since, using the hash of a very reduced, grayscale image, both of