怎么对比两张图片的相似度

1、首先打开微信,选择底部“发现”。如图所示。2、然后在点击进入“小程序”。如图所示。3、然后输入“腾讯AI体验中心”搜索,点击进入。4、选择“人脸对比”。如图所示。

5、上传两张图片上去,点击“人脸比对”。6、最后两个人的相似度就出来了。完成效果图。

谷歌人工智能写作项目:神经网络伪原创

C#怎么来判断2张图片相似度

很麻烦,而且计算量很大,这个属于人工智能的范畴文案狗。如果这“两张相似图片”可以规定很多前提,比如相同分辨率,黑白,简单几何图形。。。

那么可以用基本的算法去算一下“相似度”,也就是楼上说的,读取两张照片的像素点,然后遍历去对比灰度差值。

这些有很多现成的算法,也有很多网站提供这方面的计算(直接调用API即可),但是只能得出数字化的“相似度”。如果你要的就是两张图片像素点之间的差异,那么就去找算法即可实现。

看一参考这个网站:这个是国外比较知名的图像处理的网站。但是,两张图片如果尺寸不一呢?如果比例不一样呢?如果有留白呢?彩色的呢?

所以目前最成熟的编程算法也就是识别一下字母和数字(比如谷歌可以识别照片上的门牌号和街道号),人脸识别也只是拿几个标本部位来大致判断相似度(眼睛的大小,鼻梁的高度,脸颊的宽瘦和比例),以人眼的标准完整的去比较两张图片是否一样是很难的,目前应该还没有这方面成熟的技术。

如何使用opencv中的NCC算法实现两幅图像的相似性判断

图像相似度计算之哈希值方法OpenCV实现分类:OpenCVImageProcessing2014-12-2521:27180人阅读评论(0)收藏举报感知哈希算法(perceptualhashalgorithm),它的作用是对每张图像生成一个“指纹”(fingerprint)字符串,然后比较不同图像的指纹。

结果越接近,就说明图像越相似。实现步骤:1.缩小尺寸:将图像缩小到8*8的尺寸,总共64个像素。

这一步的作用是去除图像的细节,只保留结构/明暗等基本信息,摒弃不同尺寸/比例带来的图像差异;2.简化色彩:将缩小后的图像,转为64级灰度,即所有像素点总共只有64种颜色;3.计算平均值:计算所有64个像素的灰度平均值;4.比较像素的灰度:将每个像素的灰度,与平均值进行比较,大于或等于平均值记为1,小于平均值记为0;5.计算哈希值:将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图像的指纹。

组合的次序并不重要,只要保证所有图像都采用同样次序就行了;6.得到指纹以后,就可以对比不同的图像,看看64位中有多少位是不一样的。

在理论上,这等同于”汉明距离”(Hammingdistance,在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数)。

如果不相同的数据位数不超过5,就说明两张图像很相似;如果大于10,就说明这是两张不同的图像。

以上内容摘自:下面是用OpenCV实现的测试代码:[cpp]viewplaincopyprint?stringstrSrcImageName="";cv::MatmatSrc,matSrc1,matSrc2;matSrc=cv::imread(strSrcImageName,CV_LOAD_IMAGE_COLOR);CV_Assert(matSrc.channels()==3);cv::resize(matSrc,matSrc1,cv::Size(357,419),0,0,cv::INTER_NEAREST);//cv::flip(matSrc1,matSrc1,1);cv::resize(matSrc,matSrc2,cv::Size(2177,3233),0,0,cv::INTER_LANCZOS4);cv::MatmatDst1,matDst2;cv::resize(matSrc1,matDst1,cv::Size(8,8),0,0,cv::INTER_CUBIC);cv::resize(matSrc2,matDst2,cv::Size(8,8),0,0,cv::INTER_CUBIC);cv::cvtColor(matDst1,matDst1,CV_BGR2GRAY);cv::cvtColor(matDst2,matDst2,CV_BGR2GRAY);intiAvg1=0,iAvg2=0;intarr1[64],arr2[64];for(inti=0;i<8;i++){uchar*data1=(i);uchar*data2=(i);inttmp=i*8;for(intj=0;j<8;j++){inttmp1=tmp+j;arr1[tmp1]=data1[j]/4*4;arr2[tmp1]=data2[j]/4*4;iAvg1+=arr1[tmp1];iAvg2+=arr2[tmp1];}}iAvg1/=64;iAvg2/=64;for(inti=0;i<64;i++){arr1[i]=(arr1[i]>=iAvg1)?1:0;arr2[i]=(arr2[i]>=iAvg2)?1:0;}intiDiffNum=0;for(inti=0;i<64;i++)if(arr1[i]!=arr2[i])++iDiffNum;cout。

C#灰度图像通过相似度算法找出相似度最高的图片

这种以图搜图可以用感知哈希算法,第一步缩小图片尺寸将图片缩小到8x8的尺寸,总共64个像素.这一步的作用是去除各种图片尺寸和图片比例的差异,只保留结构、明暗等基本信息.第二步转为灰度图片将缩小后的图片,转为64级灰度图片.第三步计算灰度平均值计算图片中所有像素的灰度平均值第四步比较像素的灰度将每个像素的灰度与平均值进行比较,如果大于或等于平均值记为1,小于平均值记为0.第五步计算哈希值将上一步的比较结果,组合在一起,就构成了一个64位的二进制整数,这就是这张图片的指纹.第六步对比图片指纹得到图片的指纹后,就可以对比不同的图片的指纹,计算出64位中有多少位是不一样的.如果不相同的数据位数不超过5,就说明两张图片很相似,如果大于10,说明它们是两张不同的图片.具体的c#代码可以看using System;using ;using System.Drawing; namespace SimilarPhoto{    class SimilarPhoto    {        Image SourceImg;         public SimilarPhoto(string filePath)        {            SourceImg = Image.FromFile(filePath);        }         public SimilarPhoto(Stream stream)        {            SourceImg = Image.FromStream(stream);        }         public String GetHash()        {            Image image = ReduceSize();            Byte[] grayValues = ReduceColor(image);            Byte average = CalcAverage(grayValues);            String reslut = ComputeBits(grayValues, average);            return reslut;        }         // Step 1 : Reduce size to 8*8        private Image ReduceSize(int width = 8, int height = 8)        {            Image image = SourceImg.GetThumbnailImage(width, height, () => { return false; }, );            return image;        }         // Step 2 : Reduce Color        private Byte[] ReduceColor(Image image)        {            Bitmap bitMap = new Bitmap(image);            Byte[] grayValues = new Byte[image.Width * image.Height];             for(int x = 0; x。

相似图片搜索的原理是怎样的?

2011年,Google把“相似图片搜索”正式放上了首页。你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。一个对话框会出现。

你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员AlysonHannigan。

上传后,Google返回如下结果类似的”相似图片搜索引擎”还有不少,TinEye甚至可以找出照片的拍摄背景。这种技术的原理是什么?计算机怎么知道两张图片相似呢?

根据NealKrawetz博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。

这里的关键技术叫做”感知哈希算法”(Perceptualhashalgorithm),它的作用是对每张图片生成一个”指纹”(fingerprint)字符串,然后比较不同图片的指纹。

结果越接近,就说明图片越相似。下面是一个最简单的实现:第一步,缩小尺寸。将图片缩小到8×8的尺寸,总共64个像素。

这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。第二步,简化色彩。将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。

第三步,计算平均值。计算所有64个像素的灰度平均值。第四步,比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。第五步,计算哈希值。

将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算”汉明距离”(Hammingdistance)。

如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。具体的代码实现,可以参见Wote用python语言写的。代码很短,只有53行。

使用的时候,第一个参数是基准图片,第二个参数是用来比较的其他图片所在的目录,返回结果是两张图片之间不相同的数据位数量(汉明距离)。

这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。

实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。

这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。转注:阮一峰第一篇写于2011年。下面是第二篇,写于2013年。

相似图片搜索的原理(2)我在isnowfy的网站看到,还有其他两种方法也很简单,这里做一些笔记。一、颜色分布法每张图片都可以生成颜色分布的直方图(colorhistogram)。

如果两张图片的直方图很接近,就可以认为它们很相似。任何一种颜色都是由红绿蓝三原色(RGB)构成的,所以上图共有4张直方图(三原色直方图+最后合成的直方图)。

如果每种原色都可以取256个值,那么整个颜色空间共有1600万种颜色(256的三次方)。针对这1600万种颜色比较直方图,计算量实在太大了,因此需要采用简化方法。

可以将0~255分成四个区:0~63为第0区,64~127为第1区,128~191为第2区,192~255为第3区。这意味着红绿蓝分别有4个区,总共可以构成64种组合(4的3次方)。

任何一种颜色必然属于这64种组合中的一种,这样就可以统计每一种组合包含的像素数量。

上图是某张图片的颜色分布表,将表中最后一栏提取出来,组成一个64维向量(7414,230,0,0,8,…,109,0,0,3415,53929)。

这个向量就是这张图片的特征值或者叫”指纹”。于是,寻找相似图片就变成了找出与其最相似的向量。这可以用皮尔逊相关系数或者余弦相似度算出。二、内容特征法除了颜色构成,还可以从比较图片内容的相似性入手。

首先,将原图转成一张较小的灰度图片,假定为50×50像素。然后,确定一个阈值,将灰度图片转成黑白图片。如果两张图片很相似,它们的黑白轮廓应该是相近的。

于是,问题就变成了,第一步如何确定一个合理的阈值,正确呈现照片中的轮廓?显然,前景色与背景色反差越大,轮廓就越明显。

这意味着,如果我们找到一个值,可以使得前景色和背景色各自的”类内差异最小”(minimizingtheintra-classvariance),或者”类间差异最大”(maximizingtheinter-classvariance),那么这个值就是理想的阈值。

1979年,日本学者大津展之证明了,”类内差异最小”与”类间差异最大”是同一件事,即对应同一个阈值。他提出一种简单的算法,可以求出这个阈值,这被称为”大津法”(Otsu’smethod)。

下面就是他的计算方法。假定一张图片共有n个像素,其中灰度值小于阈值的像素为n1个,大于等于阈值的像素为n2个(n1+n2=n)。w1和w2表示这两种像素各自的比重。

w1=n1/nw2=n2/n再假定,所有灰度值小于阈值的像素的平均值和方差分别为μ1和σ1,所有灰度值大于等于阈值的像素的平均值和方差分别为μ2和σ2。

于是,可以得到类内差异=w1(σ1的平方)+w2(σ2的平方)类间差异=w1w2(μ1-μ2)^2可以证明,这两个式子是等价的:得到”类内差异”的最小值,等同于得到”类间差异”的最大值。

不过,从计算难度看,后者的计算要容易一些。下一步用”穷举法”,将阈值从灰度的最低值到最高值,依次取一遍,分别代入上面的算式。使得”类内差异最小”或”类间差异最大”的那个值,就是最终的阈值。

具体的实例和Java算法,请看这里。有了50×50像素的黑白缩略图,就等于有了一个50×50的0-1矩阵。矩阵的每个值对应原图的一个像素,0表示黑色,1表示白色。这个矩阵就是一张图片的特征矩阵。

两个特征矩阵的不同之处越少,就代表两张图片越相似。这可以用”异或运算”实现(即两个值之中只有一个为1,则运算结果为1,否则运算结果为0)。

对不同图片的特征矩阵进行”异或运算”,结果中的1越少,就是越相似的图片。

Java 如何对比两张图片的相似度

有什么可以对比两张图片得出相似度的软件。

急急急!求matlab图像求二值图像相似度,在线等!

图像1和2为RGB图,放在m文件夹下;直接输入二值的话就不用im2bw了,pio是相似比I1=imread('1.jpg');I2=imread('2.jpg');I1_bw=im2bw(I1);%%二值化I2_bw=im2bw(I2);[h,w]=size(I1_bw);%%获取图的宽高h/wsum=0;fori=1:hforj=1:wifI1_bw(i,j)==I2_bw(i,j)%%逐点比较相似sum=sum+1;endendendpio=double(sum)/h/w;。

现在人脸识别最有效的算法是什么?

最好的人脸识别系统在理想情况下比人类识别的表现要好的多。但是一旦环境情况变糟,系统的表现就差强人意了。而计算机科学家们当然是非常想要开发出一种算法,在各种情况下都能够表现优异。

现在,中国香港大学的汤晓鸥教授和他的学生路超超(音译)宣布他们攻克了这个难题。他们开发了一种叫“高斯”的人脸识别算法首次超过了人类自身。

新的识别系统对于各种平台都能够提供人类级别的识别能力,从手机到电脑游戏中的人脸识别,从安全系统到密码控制等等。任何一个人脸自动识别程序,首先要考虑的就是去构建一个合适的数据集来测试算法。

那需要一个非常大范围的,各种各样的,带着各种复杂动作、光线和表情的,不同脸的图像,各种人种、年龄和性别都要考虑在内。然后还要考察服装、发型以及化妆等其他因素的影响。

比较幸运的是,已经有这么一个拥有各种不同人脸的标准数据库——LabelledFaces。它拥有超过13,000张不同人脸的图片,它们是从网络上收集的6000个不同的公众人物。

更重要的是,每个人都拥有不止一张人脸图片。当然也存在其他的人脸数据库,但是Labelledfaces目前是计算机科学家们所公认的最具参考价值的测试数据集。

面部识别的任务是去比较两张不同的图片,然后判断他们是否是同一个人。(你可以试试看,能否看出这里展示的每对图片是否是同一个人。)人类在这个数据库上的表现可以达到97.53%的准确度。

但是没有任何一个计算机算法能够达到这个成绩。直到这个新算法的出现。新的算法依照5点图片特征,把每张脸图规格化成一个150*120的像素图,这些特征分别是:两只眼睛、鼻子和嘴角的位置。

然后,算法把每张图片划分成重叠的25*25像素的区域,并用一个数学向量来描述每一个区域的基本特征。做完了这些,就可以比较两张图片的相似度了。但是首先需要知道的是到底要比较什么。

这个时候就需要用到训练数据集了。一般的方法是使用一个独立的数据集来训练算法,然后用同一个数据集中的图片来测试算法。但是当算法面对训练集中完全不同的两张图片的时候,经常都会识别失败。

“当图片的分布发生改变的时候,这种训练方法就一点都不好了。”超超和晓鸥说到。相反,他们用四个拥有不同图片的,完全不同的数据集来测试“高斯”算法。

举个例子,其中一个数据集是著名的Multi-PIE数据库,它包含了337个不同的物体,从15种不同的角度,在19种不同的光照情况下,分别拍摄4组图片。

另一个数据库叫做LifePhotes包含400个不同的人物,每个人物拥有10张图片。用这些数据库训练了算法后,他们最终让新算法在LabelledFaces数据库上进行测试。

目标是去识别出所有匹配和不匹配的图片对。请记住人类在这个数据库上的表现是97.53%的精确度。“我们的“高斯”算法能够达到98.52%的精确度,这也是识别算法第一次击败人类。”超超和晓鸥说到。

这是一个令人印象深刻的结果,因为数据中的照片包含各种各样不同的情况。超超和晓鸥指出,仍然有很多挑战在等着他们。现实情况中,人们可以利用各种附加的线索来识别,比如脖子和肩膀的位置。

“超过人类的表现也许只是一个象征性的成就罢了”他们说。另一个问题是花费在训练新算法上的时间,还有算法需要的内存大小以及识别两幅图所需要的时间。这可以用并行计算和特制处理器等技术来加快算法的运行时间。

总之,精确的人脸自动识别算法已经到来了,而且鉴于现在的事实,这只会更快。

图片对比相似度算法标准,图片相似度匹配算法相关推荐

  1. 海量图片相似度算法软件,海量数据相似度匹配

    计算图像相似度的算法有哪些 SIM=StructuralSIMilarity(结构相似性),这是一种用来评测图像质量的一种方法. 由于人类视觉很容易从图像中抽取出结构信息,因此计算两幅图像结构信息的相 ...

  2. 【推荐系统->相似度算法】余弦相似度

    转自相似度算法之余弦相似度 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量. 余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫&qu ...

  3. 使用余弦相似度算法计算文本相似度-数学

    20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势,相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0, ...

  4. java图片等比缩小算法,java 图片的放大与缩小--等距采样算法

    package test; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; ...

  5. 相似度算法之余弦相似度

    转自:http://blog.csdn.net/u012160689/article/details/15341303 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间 ...

  6. 使用余弦相似度算法计算文本相似度

    在求相似度的时候经常会有以下一些方法, 1.基于词向量 余弦相似度 曼哈顿距离 欧几里得距离 明式距离(是前两种距离测度的推广),在极限情况下的距离是切比雪夫距离 2.基于字符的 编辑距离 simha ...

  7. NEO4J-相似度算法05-重叠相似度算法应用场景简介

    说明:使用neo4j算法库时需引入跟neo4j数据库对应的算法库插件或自定义算法库 1.简介 重叠相似度算法就是先把两个向量表示成两个长度相等得一维坐标,即映射到一维空间,再进行重合度加权求和,它即不 ...

  8. python中文相似度_基于TF-IDF、余弦相似度算法实现文本相似度算法的Python应用

    基于TF-IDF算法.余弦相似度算法实现相似文本推荐--文本相似度算法,主要应用于文本聚类.相似文本推荐等场景. 设计说明 使用jieba切词,设置自定义字典 使用TF-IDF算法,找出文章的关键词: ...

  9. java余弦相似度算法_余弦相似度计算

    余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小.余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性". 我们知道,对于两个向量, ...

最新文章

  1. 用Golang写一个搜索引擎(0x05)--- 文本相关性排序
  2. 后端_Laravel
  3. Win2008 R2 RemoteApp深度体验之四,RemoteApp程序测试
  4. 快速排序算法_基于位运算的快速排序算法
  5. UI   控件 —UITextFile
  6. java链接mysql出问题_java连接MySQL出现问题
  7. 简略图解:输入 url 到出现页面,浏览器做了什么?
  8. 带参的信号、lamda表达式及坐标系统
  9. python基础——变量
  10. Spring-----多环境中加载资源配置文件
  11. Java这些多线程基础知识你会吗?
  12. ubuntu下集群设置静态ip
  13. AI语音入门:认识词错率WER与字错率CER
  14. 从入门到入土:恶意代码Lab03-03.exe|分析实验|运行截图|问题回答|
  15. mysql 查出数据后插入新建表
  16. JPA的常用操作和配置总结
  17. Keil编译后——代码长度超过版本限制
  18. 计算机电源不能启动不了,电脑不开机,常见原因有哪些,怎么处理,黑屏怎么办...
  19. 5种类型的图像注释简介
  20. 数学公式截图转Latex格式

热门文章

  1. 三星html查看器怎么取消默认,三星galaxy note各种使用小技巧
  2. 淘淘商城第53讲——商品搜索之dao层开发
  3. 强买强卖算是抢劫吗?
  4. 【原创分析】从技术角度分析陈冠希事件的必然性
  5. java实现网上在线支付--13java在线支付所有源码
  6. [附源码]PHP计算机毕业设计红色主题旅游网站(程序+LW)
  7. linux怎么验证tacacs认证,使用TACACS(Cisco ACS)验证Linux sshd
  8. C# 获取URL地址中文件名
  9. 夏季来临,怎样掉丢“蛇皮腿”
  10. Spring Data JDBC 详解