gazopa搜索图片为什么不能使用? 还在研发新产品研发评审表吗

怎么找到一张图片的来源?_百度知道
怎么找到一张图片的来源?
com/Live。第四种是通过视频缩略图搜索视频;2://www。八,输入本地硬盘上的图片或者输入图片网址,形状等信 息)来进行搜索:你想凭着一张现有图片找出它的原始图片.com/Picitup是一个刚开始公测的专业图片搜索引擎.com/" target="_blank">http,不过结果一般让人失望。只要有截图://www、 http,想要加入测试的可以在官网上留下你的邮箱地址。链接到这些搜索将在72小时后停止工作.com/" target="_blank">http。TinEye是加拿大Idée公司研发的相似图片搜索引擎。十,可从历史网页://tineye,而不是关键字,用户可以提交或上传一个图片TinEye找出它来自何处。九。六,主要是基于色彩和形状上的相似性。允许上传的图片文件类型:输入一个关键词后.com/" target="_blank">http,即可搜索与该张图片类似的图片://labs,或者是凭着一张小的缩略图找出原始大图吗://cn。五,是国内图片爱好者的不错选择.bing、 Incogna的搜索速度非常快。TinEye主要用途,运用Google 类似图片搜索功能引擎,而不考虑图片的内容。GazoPa搜索方式有三种.ideeinc,PNG和GIF,这种方式其实没太大用处!三://similar-images、研究追踪图片信息在互联网的传播,不依据关键词进行检索,除非出现一个注册用户保存相同的图像://tineye://www://www、看看这张图片有哪些不同版本://similar-images://www: Tineye是典型的以图找图搜索引擎,是其他数据.tiltomo,但搜索结果看起来并不是很精确。Picitup可以通过在搜索结果页选择过滤方式来筛选图片。注册用户提交搜索图像的保存?下面的十款搜索引擎可以帮你实现,或寻找更高分辨率的版本、 http.picitup,GazoPa仅凭一张视频缩略图就可找到相关视频,算法主要是基于色彩.comTerragalleria主要基于视觉上的相似性://www。GazoPa虽然有这样那样的不足之处:第一种是传统的通过关键词搜索图片、发现图片的来源与相关信息,而GazoPa很多时候的搜索结果则完全无法与原图匹配,图片文件大小限制。七.netXcavator 和Live.incogna,但在传统图片搜索领域GazoPa与google等搜索引擎无法竞争,以图找图,但也算是一个很有独创性的搜索引擎、头像(人脸).com/upload/" target="_blank">http://www:1,例如“lake”.xcavator、 http,点击初始图片下面的similar pictures按钮、找到有你照片的网页.com允许你进行一次关键字搜索后再执行相似性的搜索。Picitup最大特点是提供相似图片搜索,就可以找到截图的视频,展示给用户以便查看。第三种是通过手绘图片搜索图片。第二种是创新的通过图片搜索图片;5、 http, 其搜索算法主要是基于相似的主题风格或相似的色调和材质,即通过关键字找到初始图片、风景://www、找到高分辨率版本的图片,它是如何被使用,以图搜图、 <a href="http
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&以图搜图|LOFTER(乐乎) - 记录生活,发现同好
LOFTER for ipad —— 记录生活,发现同好
&nbsp&nbsp被喜欢
&nbsp&nbsp被喜欢
{list posts as post}
{if post.type==1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type==2}
{if post.type == 3}
{if !!post.image}
{if post.type == 4}
{if !!post.image}
{if !!photo.labels && photo.labels.length>0}
{var wrapwidth = photo.ow < 500?photo.ow:500}
{list photo.labels as labs}
{var lbtxtwidth = Math.floor(wrapwidth*(labs.ort==1?labs.x:(100-labs.x))/100)-62}
{if lbtxtwidth>12}
{if !!labs.icon}
{list photos as photo}
{if photo_index==0}{break}{/if}
品牌${make||'-'}
型号${model||'-'}
焦距${focalLength||'-'}
光圈${apertureValue||'-'}
快门速度${exposureTime||'-'}
ISO${isoSpeedRatings||'-'}
曝光补偿${exposureBiasValue||'-'}
镜头${lens||'-'}
{if data.msgRank == 1}{/if}
{if data.askSetting == 1}{/if}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post_index < 3}
{if post.type == 1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if drlist.length>0}
更多相似达人:
{list drlist as dr}{if drlist.length === 3 && dr_index === 0}、{/if}{if drlist.length === 3 && dr_index === 1}、{/if}{if drlist.length === 2 && dr_index === 0}、{/if}{/list}
暂无相似达人,
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
this.p={ currentPage:1,pageNewMode:true,isgooglead3:false,ishotrecompost:false,visitorId:0, first:'',tag:'以图搜图',recommType:'new',recommenderRole:0,offset:6,type:0,isUserEditor:0,};4341人阅读
图像内容检索(11)
基于内容的图像检索技(CBIR)术相术介绍
& & & && & &近20年来,计算机与信号处理领域如火如荼地发展着,随着普通计算机的性能不断地提高,人们对计算机处理信息的能力及要求不断地提高。传统的基于文本检索技术已经难以满足人们的需求,图片作为人们对周围世界的感知媒介,以图片为基本输入,从网络海量数据库中检索所需的信息已具有了强大的研究价&#20540;和商业应用。“有图有真相”和“一图胜过千言万语”已不再是虚夸,以图像为主的多媒体信息迅速成为交流与服务的主流,研究学者们很早就对如何有效地组织和管理图像信息进行了研究,逐步形成了基于内容的图像检索的新研究方向。基于内容的图像检索()是指根据图像对象的内容及上下文信息在大规模多媒体数据中检索所需信息。本文将对基于内容的图像检索技术做一个简单的介绍,有兴趣的可以参考文中给出的参考资料。
& & & & & 下图是一个典型的基于内容的图像检索系统的结构图,一般由用户界面、 检索系统和存储系统几个部分组成,图像存储和图像检索是系统的核心部分,也是近年来这一领域的研究重点。
& & & & & &常用于内容检索的图像特征有图像的颜色、纹理、形状、边缘以及语义特征。其中,颜色,纹理,形状,图像边缘特征,是基于人的视觉原理,而语义特征是基于用户查询中对于图像内容的描述。颜色特征主要包括颜色直方图、颜色矩等,颜色特征是一种全局特征,它描述了图像或图像某个区域所对应的景物的表面性质;纹理特征是一种统计特征,它需要在包含多个像素点的区域中进行统计计算,纹理特征常具有旋转不变性,并且对噪声有较强的抵抗能力。主要包括粗糙性、方向性、对比性等。纹理特征描述方法大致可分为四类:统计法、结构法、模型法、频谱法等;形状特征是物体自身的一个重要特征,一般来说一个物体可以有不同的颜色,但它的形状不会有很大差别。形状描述方法主要有两类:基于边缘和基于区域的形状方法,基于边缘的形状特征提取用面积、周长、偏心率、角点、链码、兴趣点、傅里叶描述子、矩描述子等特征来描述物体的形状,适用于图像边缘较为清晰、容易获取的图像;基于区域的形状特征提取的主要思路是通过图像分割技术提取出图像中感兴趣的物体,依靠区域内像素的颜色分布信息提取图像特征,适合于区域能够较为准确地分割出来、区域内颜色分布较为均匀的图像。
& & & & & 要想了解更多关于图像检索的理论知识,请参考:
& & & & & 1)周明全、耿国华、韦娜.&基于内容图像检索技术.&清华大学出版社.
& & & & & 2)孙君顶 、赵珊 . &图像低层特征提取与检索技术.&电子工业出版社.
这两本内容重叠的部分比较多,个人觉得周明全编的那本书更言简意赅,但是孙君顶的内容更全,大家可以任选一本即可。
& & & & &下面介绍几个国外的图像检索的项目或系统:
& & & & & 除了以上列出的内容外,还有很多商用的网站:
& & & & & 1)、
& & & & & Tineye是典型的以图找图搜索引擎,输入本地硬盘上的图片或者输入图片网址,即可自动帮你搜索相&#20284;图片,搜索准确度相对来说还比较令人满意。TinEye是加拿大Idée公司研发的相&#20284;图片搜索引擎,TinEye主要用途有:1、发现图片的来源与相关信息;2、研究追踪图片信息在互联网的传播;3、找到高分辨率版本的图片;4、找到有你照片的网页;5、看看这张图片有哪些不同版本。
& & & & &2)、
& & & & &百度正式上线了其最新的搜索功能——“识图”()。该功能是百度基于相&#20284;图片识别技术,让用户通过上传本地图片或者输入图片的URL地址之后,百度再根据图像特征进行分析,进而从互联网中搜索出与此相&#20284;的图片资源及信息内容。但需要注意的是,用户上传本地图片时,图片的文件要小于5M,&#26684;式可为JPG、JPEG、GIF、PNG、BMP等图片文件。
& & & & &3)、
& & & & &GazoPa搜索图片时,不依据关键词进行检索,而是通过图片自身的某些特征(例如色彩,形状等信 息)来进行搜索。GazoPa搜索方式有四种:
& & & & &第一种是传统的通过关键词搜索图片,但在传统图片搜索领域GazoPa与google等搜索引擎无法竞争。
& & & & &第二种是创新的通过图片搜索图片,但在此领域GazoPa无法与TinEye相竞争。TinEye很容易就能搜索出与原图最接近的一些结果,而GazoPa很多时候的搜索结果则完全无法与原图匹配。
& & & & &第三种是通过手绘图片搜索图片,这种方式其实没太大用处。GazoPa虽然有这样那样的不足之处,但也算是一个很有独创性的搜索引擎。GazoPa目前还处在内测阶段,想要加入测试的可以在官网上留下你的邮箱地址,收到邀请后你就可以测试使用了。
& & & & 第四种是通过视频缩略图搜索视频,GazoPa仅凭一张视频缩略图就可找到相关视频。只要有截图,就可以找到截图的视频!
& & & & 4)、
& & & &Google实验室的图片搜索:输入一个关键词后,例如“lake”,返回的页面里面点击某个图片的下面的Similar images,运用Google 类&#20284;图片搜索功能引擎,即刻为你把类&#20284;的图片全部搜索出来,展示给用户以便查看。其准确率、相&#20284;率相对比较高。
& & & & 5)、
& & & & Picitup是一个刚开始公测的专业图片搜索引擎,功能非常强大,并支持中文关键字的搜索,是国内图片爱好者的不错选择。Picitup主要支持关键字的搜索,但在它的特色搜索项目——名人匹配搜索(Celebritymatchup)中,你可以通过上传本地照片来进行搜索,不过结果一般让人失望。Picitup可以通过在搜索结果页选择过滤方式来筛选图片,比如可以按颜色、头像(人脸)、风景、产品四种类别来过滤搜索结果。
& & & &Picitup最大特点是提供相&#20284;图片搜索,即通过关键字找到初始图片,点击初始图片下面的similar pictures按钮,即可搜索与该张图片类&#20284;的图片。其实质和Google实验室类&#20284;图片搜索是一样的。
& & & &6)、
& & & &Tiltomo是由 Flickr 开发的一个搜索工具,主要用来维护Flickr 自己的图片数据库,其搜索算法主要是基于相&#20284;的主题风&#26684;或相&#20284;的色调和材质。
& & & &7)、
& & & & 允许你进行一次关键字搜索后再执行相&#20284;性的搜索。你可以为Live索引中的任意一张图片寻找相&#20284;的图片,但搜索结果看起来并不是很精确。
& & & &8)、
& & & &Xcavator 和很相&#20284;,你需要先输入一个关键字,然后在搜索结果中挑选一张图片,在根据这张图片的特点来进行搜索。
& & & &9)、
& & & &Incogna的搜索速度非常快,主要是基于色彩和形状上的相&#20284;性。
& & & 10)、
& & & &Terragalleria主要基于视觉上的相&#20284;性,而不考虑图片的内容。
& & & &11)、
& & & & Byo image search是根据你上传的图片来搜索相&#20284;的图片,算法主要是基于色彩,也包括主题风。
& & & &12)、搜狗图片搜索: & &
作者:&出处:欢迎转载或分享,但请务必声明文章出处。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:312116次
积分:5391
积分:5391
排名:第3266名
原创:196篇
转载:140篇
评论:188条
小硕,关注计算机视觉、机器视觉、图像处理和Photoshop算法分析,熟悉模式识别和机器学习。
文章:15篇
阅读:6729
文章:18篇
阅读:33439
文章:13篇
阅读:39613
文章:38篇
阅读:26588
(4)(11)(1)(4)(3)(12)(16)(13)(10)(5)(1)(37)(41)(10)(25)(22)(6)(1)(5)(30)(30)(24)(7)(3)(17)(1)(1)
计算机资讯类
计算机视觉类
机器学习类
移动终端开发类
C&#43;&#43;编程类
个人关注网站图像处理(9)
本文转自:
计算机怎么知道两张图片相&#20284;呢?
根据博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。
这里的关键技术叫做&感知哈希算法&(Perceptual hash algorithm),它的作用是对每张图片生成一个&指纹&(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相&#20284;。
下面是一个最简单的实现:
一、平均哈希算法(aHash)
此算法是基于比较灰度图每个像素与平均&#20540;来实现的。
第一步,缩小尺寸。
将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
第二步,简化色彩。
将的小图片转换成灰度图像,将个像素的颜色转换成一种颜色(黑白灰度)。
第三步,计算平均&#20540;。
计算所有64个像素的灰度平均&#20540;。
第四步,比较像素的灰度。
将每个像素的灰度,与平均&#20540;进行比较。大于或等于平均&#20540;,记为1;小于平均&#20540;,记为0。
第五步,计算哈希&#20540;。
将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
8f373714acfcf4d0
得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算(Hamming
distance)。如果不相同的数据位不超过5,就说明两张图片很相&#20284;;如果大于10,就说明这是两张不同的图片。
步骤说明:
1.缩放图片:为了保留结构去掉细节,去除大小、横纵比的差异,把图片统一缩放到8*8,共64个像素的图片。
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图。
附上灰度图相关算法(R = red, G = green, B = blue)
1.浮点算法:Gray=R*0.3&#43;G*0.59&#43;B*0.11
2.整数方法:Gray=(R*30&#43;G*59&#43;B*11)/100
3.移位方法:Gray =(R*76&#43;G*151&#43;B*28)&&8;
4.平均&#20540;法:Gray=(R&#43;G&#43;B)/3;
5.仅取绿色:Gray=G;
& & & 3.计算平均&#20540;: 计算进行灰度处理后图片的所有像素点的平均&#20540;。
4.比较像素灰度&#20540;:遍历灰度图片每一个像素,如果大于平均&#20540;记录为1,否则为0.
5.得到信息指纹:组合64个bit位,顺序随意保持一致性即可。
6.对比指纹:计算两幅图片的指纹,计算汉明距离(从一个指纹到另一个指纹需要变几次),汉明距离越大则说明图片越不一致,反之,汉明距离越小则说明图片越相&#20284;,当距离为0时,说明完全相同。(通常认为距离&10 就是两张完全不同的图片)
关于均&#20540;哈希算法的实现,请参考:http://blog.csdn.net/luoweifu/article/details/7733030
下面给出matlab实现平均哈希算法(aHash)
%.cn/s/blog_b27fc.html
%输入两幅图片,返回值为它们的为汉明距离。
%相似图片搜索原理:平均哈希算法
%对两幅图分别作如下处理:
%1:将两副256等级的灰度图像转化成8x8大小的64等级的灰度图像
%2:求全局灰度平均值
%3:逐次将灰度值与平均灰度值比较,大于等于的置为1,否则置为0
%4:将0、1序列看做8个字节(统一顺序)
%5:比较两幅图的数据位,如果不同的数据为不超过5位,则非常相似,若超过10为则认为两幅图无关
function v=tineyesearch_ahash(picture1,picture2)
t1=imresize(picture1,[8 8],&#39;bicubic&#39;); %图片放缩到固定大小
t2=imresize(picture2,[8 8],&#39;bicubic&#39;); %图片放缩到固定大小
t1=round(t1/4);
t2=round(t2/4);
mem1=round(sum(sum(t1))/64);
mem2=round(sum(sum(t2))/64);
if t1(i,j)&=mem1
t1(i,j)=1;
t1(i,j)=0;
if t2(i,j)&=mem2
t2(i,j)=1;
t2(i,j)=0;
h=abs(t1-t2);
v=sum(sum(h));
%.cn/s/blog_b27fc.html
srcDir=uigetdir(&#39;Choose source directory.&#39;);
cd(srcDir);
allnames=struct2cell(dir(&#39;*.jpg&#39;));
[k,len]=size(allnames);
FinalResult = {};
for i=1:len
name=allnames{1,i};
picture1 = imread(name);
picture2 = imread(&#39;006.jpg&#39;);
v=tineyesearch_ahash(picture1,picture2);
FinalResult{i,1} = char(&#39;006.jgp&#39;);
FinalResult{i,2} =
FinalResult{i,3} =
figure(&#39;NumberTitle&#39;, &#39;off&#39;, &#39;Name&#39;, &#39;统计表&#39;);
columnname =
{&#39;ReferenceImage&#39;,&#39;TestImage&#39;, &#39;SimilarScore&#39;};
%各列的名称
% columnformat = {&#39;numeric&#39;, &#39;bank&#39;, &#39;numeric&#39;};
%各列的数据类型
columneditable =
[false true true];
%各列是否是可编辑的,true是可以编辑,false是不可编辑
t = uitable(&#39;Units&#39;,&#39;normalized&#39;,&#39;Position&#39;,...
[0.1 0.1 0.9 0.9], &#39;Data&#39;, FinalResult,...
&#39;ColumnName&#39;, columnname,...
&#39;ColumnEditable&#39;, columneditable);
具体的代码实现,可以参见用python语言写的。代码很短,只有53行。使用的时候,第一个参数是基准图片,第二个参数是用来比较的其他图片所在的目录,返回结果是两张图片之间不相同的数据位数量(汉明距离)。
这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。
实际应用中,往往采用更强大的算法和算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。
如果图片放大或缩小,或改变纵横比,结果&#20540;也不会改变。增加或减少亮度或对比度,或改变颜色,对&#20540;都不会太大的影响。最大的优点:计算速度快!
如果你想比较两张图片,为每张图片构造&#20540;并且计算不同位的个数。汉明距离)如果这个&#20540;为,则表示这两张图片非常相&#20284;,如果汉明距离小于,则表示有些不同,但比较相近,如果汉明距离大于则表明完全不同的图片。
二、效果更佳的感知哈希算法pHash
虽然均&#20540;哈希更简单且更快速,但是在比较上更死板、僵硬。它可能产生错误的漏洞,如果有一个伽马校正或颜色直方图被用于到图像。这是因为颜色沿着一个非线性标尺&改变其中“平均&#20540;”的位置,并因此改变哪些高于低于平均&#20540;的比特数。
一个更健壮的算法叫pHash,的做法是将均&#20540;的方法发挥到极致。使用离散余弦变换降低频率。
平均哈希算法过于严&#26684;,不够精确,更适合搜索缩略图,为了获得更精确的结果可以选择感知哈希算法,它采用的是DCT(离散余弦变换)来降低频率的方法
1.缩小尺寸
pHash以小图片开始,但图片大于,是最好的。这样做的目的是简化了的计算,而不是减小频率。
2.简化色彩
将图片转化成灰度图像,进一步简化计算量。
DCT是把图片分解频率聚集和梯状形,虽然JPEG使用的变换,在这里使用的变换。
虽然的结果是大小的矩阵,但我们只要保留左上角的的矩阵,这部分呈现了图片中的最低频率。
5.计算平均&#20540;
如同均&#20540;哈希一样,计算的均&#20540;,
6.进一步减小DCT
这是最主要的一步,根据的矩阵,设置或的位的&#20540;,大于等于均&#20540;的设为”1”,小于均&#20540;的设为“0”。结果并不能告诉我们真实性的低频率,只能粗略地告诉我们相对于平均&#20540;频率的相对比例。只要图片的整体结构保持不变,结果&#20540;就不变。能够避免伽马校正或颜色直方图被调整带来的影响。
7.构造hash&#20540;
将设置成位的长整型,组合的次序并不重要,只要保证所有图片都采用同样次序就行了。将的转换成的图像。
与均&#20540;哈希一样,同样可以用汉明距离来进行比较。只需要比较每一位对应的位置并算计不同的位的个数
1.缩小图片:32 * 32是一个较好的大小,这样方便DCT计算
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图。(具体算法见平均哈希算法步骤)
3.计算DCT:DCT把图片分离成分率的集合
4.缩小DCT:DCT是32*32,保留左上角的8*8,这些代表的图片的最低频率
5.计算平均&#20540;:计算缩小DCT后的所有像素点的平均&#20540;。
6.进一步减小DCT:大于平均&#20540;记录为1,反之记录为0.
7.得到信息指纹:组合64个信息位,顺序随意保持一致性即可。
8.对比指纹:计算两幅图片的指纹,计算汉明距离(从一个指纹到另一个指纹需要变几次),汉明距离越大则说明图片越不一致,反之,汉明距离越小则说明图片越相&#20284;,当距离为0时,说明完全相同。(通常认为距离&10 就是两张完全不同的图片)
使用matlab实现 PHash 算法
% read image
I = imread(&#39;cameraman.tif&#39;);
% cosine transform and reduction
d = dct2(I);
d = d(1:8,1:8);
% compute average
a = mean(mean(d));
% set bits, here unclear whether & or &= shall be used
% maybe convert to string:
string = num2str(b(:)&#39;);
同类中的最佳算法?
自从我做了大量关于数码照片取证和巨幅图片的收集工作之后,我需要一种方法来搜索图片,所以,我用了一些不同的感知哈希算法做一个图片搜索工具,根据我并不很科学但长期使用的经验来看,我发现均&#20540;哈希比显著地要快。如果你找一些明确的东西,均&#20540;是一个极好的算法,例如我有一张图片的小缩略图,并且我知道它的大图存在于一个容器的某个地方,均&#20540;哈希能算法快速地找到它。然而,如果图片有些修改,如过都添加了一些内容或头部叠加在一起,均&#20540;哈希就无法处理,虽然比较慢,但它能很好地容忍一些小的变型(变型度小于的图片。
其次,如果,你运行的服务器像这样,你就可以不用每次都计算&#20540;,我确信它们肯定之前就把&#20540;保存在数据库中,核心的比较系统非常快,所以只需花费一次计算的时间,并且几秒之内能进行成千上百次的比较,非常有实用价&#20540;。
有许多感知哈希算法的变形能改进它的识别率,例如,在减小尺寸之前可以被剪裁,通过这种方法,主体部分周围额外的空白区域不会产生不同。也可以对图片进行分割,例如,你有一个人脸识别算法,然后你需要计算每张脸的&#20540;,可以跟踪一般性的着色例如,她的头发比蓝色或绿色更红,而背景比黑色更接近白色或线的相对位置。
如果你能比较图片,那么你就可以做一些很酷的事情。例如,&你可以在GazoPa搜索引擎拖动图片,和一样,我并不知道GazoPa工作的细节,然而它&#20284;乎用的是感知哈希算法的变形,由于哈希把所有东西降低到最低频率,我三个人物线条画的素描可以和其它的图片进行比较——如匹配含有三个人的照片。
三、差异哈希算法dHash
相比pHash,dHash的速度要快的多,相比aHash,dHash在效率几乎相同的情况下的效果要更好,它是基于渐变实现的。
1.缩小图片:收缩到9*8的大小,一遍它有72的像素点
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图。(具体算法见平均哈希算法步骤)
3.计算差异&#20540;:dHash算法工作在相邻像素之间,这样每行9个像素之间产生了8个不同的差异,一共8行,则产生了64个差异&#20540;
4.获得指纹:如果左边的像素比右边的更亮,则记录为1,否则为0.
四、直方图相&#20284;度
&每张图片都可以生成其灰度图像直方图(histogram)。如果两张图片的直方图很接近,就可以认为它们很相&#20284;。
&&&&&因此,此处我们利用两幅图像的直方图来进行相&#20284;度的比较。原理较为简单,具体算法如下:
1、获得输入灰度图像的直方图分布;
2、将直方图划分为64个区,每个区为连续的4个灰度等级;
3、对每个区的4个&#20540;进行求和运算,得到1个数据,如此,会得到64个数据,即为该幅图像的一个向量(指纹);
4、根据步骤【1、2、3】,我们将输入的两幅图像转化为了2个向量,记为A、B;
5、计算两个向量的相&#20284;度,可以用皮尔逊相关系数或者余弦相&#20284;度计算,这里我们采用【余弦相&#20284;度】;
下面就顺便介绍一下余弦相&#20284;度的概念及用法:
&&&&&&对于两个向量,我们可以把它们想象成空间中的两条线段,都是从原点([0,
0, ...])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合;如果夹角为90度,意味着形成直角,方向完全不相&#20284;;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相&#20284;程度。夹角越小,就代表越相&#20284;。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
以二维空间为例,上图的a和b是两个向量,我们要计算它们的夹角θ。告诉我们,可以用下面的公式求得:
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
假定a向量是[x1, y1],b向量是[x2, y2],那么可以将余弦定理改写成下面的形式:
&&&&&&&&&&&&&
&&&&&&&&&&&&
数学家已经证明,余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,A是 [A1, A2, ..., An] ,B是 [B1, B2, ..., Bn] ,则A与B的夹角θ的余弦等于:
使用这个公式,我们就可以得到,句子A与句子B的夹角的余弦。
余弦&#20540;越接近1,就表明夹角越接近0度,也就是两个向量越相&#20284;,这就叫&余弦相&#20284;性&。
6、得到两个向量的夹角之后,我们就可以通过角度的大小来判别它们的相&#20284;程度。
7、至此,我们就完成了两幅图像的相&#20284;度计算,因此,可以通过此算法来寻找相&#20284;的图像。
下面给出matlab实现直方图分布相&#20284;度
%相似图像搜索:利用直方图分布相似度
%1:获得输入两幅图片的直方图分布
%2:将直方图依次划分为64个区,即每个区有4个灰度等级
%3:分别将各自的64个区生成64个元素,即一个向量(图像指纹)
%4:计算两个向量的余弦相似度
%5:判断,若相似度
function v=tineyesearch_hist(picture1,picture2)
t1=picture1;
[a1,b1]=size(t1);
t2=picture2;
t2=imresize(t2,[a1 b1],&#39;bicubic&#39;);%缩放为一致大小
t1=round(t1);
t2=round(t2);
e1=zeros(1,256);
e2=zeros(1,256);
%获取直方图分布
for i=1:a1
for j=1:b1
n1=t1(i,j)+1;
n2=t2(i,j)+1;
e1(n1)=e1(n1)+1;
e2(n2)=e2(n2)+1;
imhist(uint8(t1));
imhist(uint8(t2));
%将直方图分为64个区
m1=zeros(1,64);
m2=zeros(1,64);
for i=0:63
m1(1,i+1)=e1(4*i+1)+e1(4*i+2)+e1(4*i+3)+e1(4*i+4);
m2(1,i+1)=e2(4*i+1)+e2(4*i+2)+e2(4*i+3)+e2(4*i+4);
%计算余弦相似度
A=sqrt(sum(sum(m1.^2)));
B=sqrt(sum(sum(m2.^2)));
C=sum(sum(m1.*m2));
cos1=C/(A*B);%计算余弦值
cos2=acos(cos1);%弧度
v=cos2*180/%换算成角度
imshow(uint8([t1,t2]));
title([&#39;余弦值为:&#39;,num2str(cos1),&#39;
&#39;,&#39;余弦夹角为:&#39;,num2str(v),&#39;&#176;&#39;]);
%.cn/s/blog_b27fgpep.html
srcDir=uigetdir(&#39;Choose source directory.&#39;);
cd(srcDir);
allnames=struct2cell(dir(&#39;*.jpg&#39;));
[k,len]=size(allnames);
FinalResult = {};
for i=1:len
name=allnames{1,i};
picture1 = imread(name);
picture2 = imread(&#39;006.jpg&#39;);
v=tineyesearch_hist(picture1,picture2);
FinalResult{i,1} = char(&#39;006.jgp&#39;);
FinalResult{i,2} =
FinalResult{i,3} =
figure(&#39;NumberTitle&#39;, &#39;off&#39;, &#39;Name&#39;, &#39;统计表&#39;);
columnname =
{&#39;ReferenceImage&#39;,&#39;TestImage&#39;, &#39;SimilarScore&#39;};
%各列的名称
% columnformat = {&#39;numeric&#39;, &#39;bank&#39;, &#39;numeric&#39;};
%各列的数据类型
columneditable =
[false true true];
%各列是否是可编辑的,true是可以编辑,false是不可编辑
t = uitable(&#39;Units&#39;,&#39;normalized&#39;,&#39;Position&#39;,...
[0.1 0.1 0.9 0.9], &#39;Data&#39;, FinalResult,...
&#39;ColumnName&#39;, columnname,...
&#39;ColumnEditable&#39;, columneditable);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:41144次
积分:1265
积分:1265
排名:千里之外
原创:66篇
转载:117篇
评论:19条
(22)(7)(8)(12)(33)(25)(24)(3)(1)(1)(1)(6)(1)(2)(1)(37)

我要回帖

更多关于 gazopa 的文章

 

随机推荐