当前位置:首页 » 操作系统 » 相似图片算法

相似图片算法

发布时间: 2022-10-05 20:42:14

① 比较图片中人脸的相似程度是使用什么样的算法,并且计算得到眼睛,鼻子等相似程度有没有具体的实现

OPENCV里就有。安装后,DATA目录下,haarcascades目录下,haarcascade_frontalface_default.xml就不错。这是人脸识别的数据。
用法请根据这个文件名找吧,记得就是调用OPENCV里的某个函数(C++),用这个文件名和图作参数,返回的就是图中人脸的位置。
这里是你用得着的部分:
const char* cascadeFile = "haarcascade_frontalface_alt.xml";
const char* folder = "C:\\Program Files\\OpenCV\\data\\haarcascades\\";
char path[1024];
sprintf(path, "%s%s", folder, cascadeFile);
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*) cvLoad(path, 0, 0, 0);
//然后cascade就存着需要的那个CvHaarClassifierCascade了。
......
CvSeq* faces = cvHaarDetectObjects(img, cascade, storage,
1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
cvSize(source->getWidth() >> 7, source->getHeight() >> 7));
这句中,img是一个IplImage*,我自己的项目是从摄像头弄来的,我估计你需要直接用opencv载入图片。cascade就是载入的OPENCV的样本数据,storage是一个空间,我用的CvMemStorage* storage = cvCreateMemStorage(0)创建的,detect objects之前我还用了cvClearMemStorage(storage),1.1是缩放,2是检测像素大小,CV_HAAR_DO_CANNY_PRUNING是比较方法, 一个OPENCV自带的常量。最后cvSize的返回值是允许的最小脸部大小。每个变量都解释到了吧。
之后faces->total就是找到几个脸。用cvGetSeqElem(faces, i)来取每个脸的数据,取出来的东西是(CvRect*),要记得TYPECAST,例如CvRect face1 = *((CvRect*) cvGetSeqElem(faces, 0))。这样得到的CvRect有4个变量face1.x,face1.y,face1.width,face1.height就是人脸在图片中的位置了。

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

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

有了50×50像素的黑白缩略图,就等于有了一个50×50的0-1矩阵。矩阵的每个值对应原图的一个像素,0表示黑色,1表示白色。这个矩阵就是一张图片的特征矩阵。

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

③ 谁能告诉我怎么可以搜到更多类似的图片

10款相似图片搜索引擎

1. Picitup
一个相似图片搜索引擎, 很简单, 输入关键词搜索, 似乎没什么好说的. 但它的搜索过程真的是让人觉得非常专业, 比如我输入”android”进行图片搜索, 可以在搜索结果页通过”面部”, “风景”, “产品”和”颜色”来进行过滤.在过滤后的图片搜索结果页面又可以通过点击某张图片下面的”Similar Pictures”进行再次过滤。
2. Gazopa
一个全新的图片搜索引擎,并非传统的使用关键词搜索,而是自动分析图像中的元数据,作为搜索的关键数据,例如,颜色、形状等,寻找相似的图片。它能根据图像自身的特征从互联网上搜索相似的图像,而不是依靠人为设置的文字描述来搜索。
3. Tiltomo
Flickr 开发的一个搜索工具,主要用来维护Flickr 自己的图片数据库, Tiltomo的搜索算法主要是基于相似的主题风格或相似的色调和材质:
4. Tineye.com
一种新的在线图片搜索引擎:不像其它图片搜索引擎是根据你提交的关键字进行搜索,Tineye.com根据你上传的图片去搜索相似的图片。迄今为止,尽管Tineye.com的数据库还不够庞大,但它一直在迅速地成长中。Tineye.com需要注册才能使用,不过大多时候它的搜索结果确实是很精确。
5. Byo image search
是根据你上传的图片来搜索相似的图片,算法主要是基于色彩,不过也包括主题风格:
6. Live.com
允许你进行一次关键字搜索后再执行相似性的搜索。你可以为Live索引中的任意一张图片寻找相似的图片。但搜索结果看起来并不是很精确:
7. Xcavator
Live.com很相似,你需要先输入一个关键字,然后在搜索结果中挑选一张图片,在根据这张图片的特点来进行搜索:
8. Incogna
搜索速度非常快,主要是基于色彩和形状上的相似性:.
9. Terragalleria
主要基于视觉上的相似性,而不考虑图片的内容。
10. Google相似图片搜索
还待在Google实验室中的相似图片搜索服务,虽然出生名门,但比起那些专业的相似图片搜索来说,在它走出实验室之前,确实应该再弄的高级点。

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

很麻烦,而且计算量很大,这个属于人工智能的范畴。

如果这“两张相似图片”可以规定很多前提,比如相同分辨率,黑白,简单几何图形。。。那么可以用基本的算法去算一下“相似度”, 也就是楼上说的,读取两张照片的像素点,然后遍历去对比灰度差值。这些有很多现成的算法,也有很多网站提供这方面的计算(直接调用API即可),但是只能得出数字化的“相似度”。


如果你要的就是两张图片像素点之间的差异,那么就去找算法即可实现。

看一参考这个网站:www.aforgenet.com 这个是国外比较知名的图像处理的网站。


但是,两张图片如果尺寸不一呢? 如果比例不一样呢? 如果有留白呢?彩色的呢?

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

⑤ IOS 解决问题:相似、截屏照片清理和图片压缩

用来提供相册的清理相似图片、清理截屏图片、压缩图片三个功能。

额外需要引入的框架:

Photos 引用了系统的 AssetsLibrary 框架,需要额外导入,否则会报错:

引入方式:

作用是无需创建实例,通过类方法直接调用。

在这个方法中加载的图片包括相似图、截屏图以及可瘦身的图片,所以是公共部分。

第一步: 加载照片之前首先要清除旧数据。

第二步: 判断相册授权状态。如果相册授权状态为没决定,则开启权限提示,在 info.plist 中添加上 Privacy - Photo Library Usage Description ,提示语句可为:获取相册权限。

如果相册授权状态为拒绝,则弹出提示框,点击前往设置则跳转到设置APP开启权限。

第三步: 如果已经授权则直接获取相册中的数据。

第四步: requestImageWithIndex: 方法通过图片索引位置来获取 assetArray 中对应的图片。这个方法在 index+1 后不断递归调用自己,直到遍历完整个 assetArray 。传入缩略图和原图后,即进入了本文章的关键部分,即图片的处理流程了。

第五步: 图片的处理方法 dealImageWithIndex: 对传入的缩略图和原图进行三步处理,分别判断其是否为相似图片、截屏图片、可以瘦身的图片,如果是则将其加入到对应数组中保存作为数据源。处理完一张图片后将 index+1 ,再调用 requestImageWithIndex: 处理下一张图片,这是个递归过程,直到全部图片处理完成。

因为图片资源数组 assetArray 是按照创建时间排序的,所以可以通过和上一个图片的创建时间相比较来对图片按照是否为同一天创建的标准来分组显示。如果是同一天创建的图片,则将其分为一组。是否为同一天的比较方法如下:

第六步: 图片加载完成,计算相似、截屏、可瘦身的图片的数量和可节省内存的大小,最后将各类可节省内存的大小加起来得到总的可节省内存的大小。

其中获取图片数量及可以节省的内存空间大小的 getInfoWithDataArray: 方法的实现如下:

在 ClearPhotoManager 中定义:

当我们在相册新增加了一张图片的时候,控制台输出如下:

在 ClearPhotoViewController 中使用:页面显示前或者相册发生变动了则更新数据源

在 中使用:删除后通知更新相册和数据源

在 ThinPhotoViewController 中使用:压缩后通知更新相册和数据源

删除一张图片后的内存变化:

注意:这里进行了个小实验,可以看到即使照片相同,但是如果创建日期不同的话,APP也对它进行了单独分组,因为我们是按照日期的标准来划分组的。实际使用过程中,这种情况很少,因为会产生相似图片的原因大都是复制和连拍,而复制的图片、连拍的图片日期都是相同的。

属性的懒加载方法实现如下:

这里用到了图片相似度算法,其原理包括五步:
1、缩小尺寸
2、简化色彩
3、计算平均值
4、比较像素的灰度
5、计算哈希值

该算法的具体实现我们不用去关心,只需要导入 ImageCompare.h 这个文件即可。在该文件内部用到了:

所以还需要导入这个框架: opencv2.framework 。这两份文件在我的 demo 里都已经提供了。

如果上一张图片存在并且是现在的图片的创建时间是同一天,而且还满足相似度算法,则更新相似图片数据源,否则说明和上一张图片并不相似。

其中以创建日期作为字典的 key ,其方法 stringWithDate: 的实现如下:

这是最关键的一步,也是非常绕脑袋的一步,理解的关键是分清楚下面的数组和字典的作用和区别:

similarArray的内容打印结果如下:

similarArray中每一个lastDictionary打印结果如下:

lastDictionary的allValues:

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

这种以图搜图可以用感知哈希算法,


第一步 缩小图片尺寸

将图片缩小到8x8的尺寸, 总共64个像素. 这一步的作用是去除各种图片尺寸和图片比例的差异, 只保留结构、明暗等基本信息.

第二步 转为灰度图片

将缩小后的图片, 转为64级灰度图片.

第三步 计算灰度平均值

计算图片中所有像素的灰度平均值

第四步 比较像素的灰度

将每个像素的灰度与平均值进行比较, 如果大于或等于平均值记为1, 小于平均值记为0.

第五步 计算哈希值

将上一步的比较结果, 组合在一起, 就构成了一个64位的二进制整数, 这就是这张图片的指纹.

第六步 对比图片指纹

得到图片的指纹后, 就可以对比不同的图片的指纹, 计算出64位中有多少位是不一样的. 如果不相同的数据位数不超过5, 就说明两张图片很相似, 如果大于10, 说明它们是两张不同的图片.

具体的c#代码可以看

usingSystem;
usingSystem.IO;
usingSystem.Drawing;

namespaceSimilarPhoto
{
classSimilarPhoto
{
ImageSourceImg;

publicSimilarPhoto(stringfilePath)
{
SourceImg=Image.FromFile(filePath);
}

publicSimilarPhoto(Streamstream)
{
SourceImg=Image.FromStream(stream);
}

publicStringGetHash()
{
Imageimage=ReceSize();
Byte[]grayValues=ReceColor(image);
Byteaverage=CalcAverage(grayValues);
Stringreslut=ComputeBits(grayValues,average);
returnreslut;
}

//Step1:Recesizeto8*8
privateImageReceSize(intwidth=8,intheight=8)
{
Imageimage=SourceImg.GetThumbnailImage(width,height,()=>{returnfalse;},IntPtr.Zero);
returnimage;
}

//Step2:ReceColor
privateByte[]ReceColor(Imageimage)
{
BitmapbitMap=newBitmap(image);
Byte[]grayValues=newByte[image.Width*image.Height];

for(intx=0;x<image.Width;x++)
for(inty=0;y<image.Height;y++)
{
Colorcolor=bitMap.GetPixel(x,y);
bytegrayValue=(byte)((color.R*30+color.G*59+color.B*11)/100);
grayValues[x*image.Width+y]=grayValue;
}
returngrayValues;
}

//Step3:Averagethecolors
privateByteCalcAverage(byte[]values)
{
intsum=0;
for(inti=0;i<values.Length;i++)
sum+=(int)values[i];
returnConvert.ToByte(sum/values.Length);
}

//Step4:Computethebits
privateStringComputeBits(byte[]values,byteaverageValue)
{
char[]result=newchar[values.Length];
for(inti=0;i<values.Length;i++)
{
if(values[i]<averageValue)
result[i]='0';
else
result[i]='1';
}
returnnewString(result);
}

//Comparehash
(stringa,stringb)
{
if(a.Length!=b.Length)
thrownewArgumentException();
intcount=0;
for(inti=0;i<a.Length;i++)
{
if(a[i]!=b[i])
count++;
}
returncount;
}
}
}

⑦ 相片相似度在线测试,两段语音相似度对比,什么算法识别率高

提起相片相似度在线测试,大家都知道,有人问两段相似度对比,什么算法识别率高?另外,还有人想问在网上怎样才找到跟自己相似度很高的照片,你知道这是怎么回事?其实有没有什么软件可以对两张照片对比相似度的,下面就一起来看看两段相似度对比,什么算法识别率高?希望能够帮助到大家!

相片相似度在线测试

1、相片相似度在线测试:两段相似度对比,什么算法识别率高?

可以用两个软件测试测试,说出同样的一段话就好了,就知道哪个识别率好了,就像录音转文字助手就可以把转换成文字。

点开里边的录音识别功能,说出你要测试的,就可以把转成文字了,你可以去跟其他的比较一下。

2、相片相似度在线测试:在网上怎样才找到跟自己相似度很高的照片

可以用识图来检索相似度高的图片,而且成功率很高。照片相似度对比在线测试软件。

识图是图片搜索近期推出的一项新功能。常规的图片搜索,是通过输入关键词的形式搜索到互联网上相关的图片,而识图则能实现用户通过上传图片或输入图片的url地址,从而搜索到互联网上与这张图片相似的其他图片,同时也能找到这张图片相关的信息。

看到说可以用PS对比照片相似度,想知道怎么做?我的是PS7.0的唔。。是比对人脸的相似度之类的。。听人说是PS可以,自己不知道怎么用。

看到说可以用PS对比照片相似度,想知道怎么做?我的是PS7.0的

有没有什么软件可以对两张照片对比相似度的

照片的相似度?

这个问题太笼统了.夫妻相测试免费。

如果是想看看两个一样的照片有没有什么不同处的话,在PS里把一个直接拖到另一个里面,然后在图层里把上面的图层透明度调小点,你会看到两个照片的,没重叠在一起的就是不同处,

如果你想看两个照片的风格,或相机和相机参数,用PS没相机自带软件好.

3、相片相似度在线测试:有没有什么软件可以对两张照片对比相似度的

1、Mix滤镜。

IX滤镜免费提供将近款默认滤镜,包括景深滤镜,散景滤镜,经典纹理,漏光滤镜,更多自定义编辑工具和完善的自定义编辑参数。MIX滤镜是一款自定义手动编辑应用,在创造的过程中,能满足对照片的想象。两张照片 在脸比对。

2、光影术手。

光影术手为一款针对图像画质进行改善提升及效果处理的软件;简单、易用,不需要任何专业的图像技术,就可以制作出专业胶片摄影的色彩效果,其具有许多独特之处,如反转片效果、黑白效果、数码补光、冲版排版等,且其批量处理功能非常强大,是摄影作品后期处理、图片快速美容、数码照片冲印整理时必备的图像处理软件,能够满足绝大部分人照片后期处理的需要。

3、美图秀秀。

美图秀秀的图片、美容、拼图、场景、边框、饰品等功能,可以1分钟做出影楼级照片,还能一键分享到新浪微博、人人网、QQ空间等。

年4月推出美图社交圈,鼓励年轻人秀真我,让社交更好看,美图秀秀也从影像工具升级为社区。

4、图。

图(原图精灵)是BeijingBaiNetcomScience&TechnologyCo.,Ltd的一款掌上美图工具,致力于提供手机上图片拍摄、美化、分享和云端相册的一站式图片服务。

调节亮度、对比度、裁剪、旋转翻转图片等等,对图片基本的色彩校正和技术处理。采用曲线调节技术,用户拖动滑杆即可达到。支持iOS及Android系统,已成为时下的图片美化工具。

5、可牛影像。人脸相似度在线测试软件。

可牛影像为一款强大的免费照片处理管理软件。可牛影像内嵌上千张日历、宝宝照、大头贴、婚纱照、非主流场景,无须任何PS技巧识即可制作支持多图场景,一张日历、婚纱、宝宝照中可内嵌多张照片,制作效果很酷。软件集成了超强人像美容及影楼智能人像柔焦美容,1秒钟呈现朦胧艺术感觉,像冷蓝、冷绿、暖黄、复古影楼,冷艳、唯美、风情。人脸相似度对比在线测试。

以上就是与两段相似度对比,什么算法识别率高?相关内容,是关于两段相似度对比,什么算法识别率高?的分享。看完相片相似度在线测试后,希望这对大家有所帮助!

⑧ 相似图片检测:感知哈希算法之dHash的Python实现

某些情况下,我们需要检测图片之间的相似性,进行我们需要的处理:删除同一张图片、标记盗版等。
如何判断是同一张图片呢?最简单的方法是使用加密哈希(例如MD5, SHA-1)判断。但是局限性非常大。例如一个txt文档,其MD5值是根据这个txt的二进制数据计算的,如果是这个txt文档的完全复制版,那他们的MD5值是完全相同的。但是,一旦改变副本的内容,哪怕只是副本的缩进格式,其MD5也会天差地别。因此加密哈希只能用于判断两个完全一致、未经修改的文件,如果是一张经过调色或者缩放的图片,根本无法判断其与另一张图片是否为同一张图片。
那么如何判断一张被PS过的图片是否与另一张图片本质上相同呢?比较简单、易用的解决方案是采用感知哈希算法(Perceptual Hash Algorithm)。

感知哈希算法是一类算法的总称,包括aHash、pHash、dHash。顾名思义,感知哈希不是以严格的方式计算Hash值,而是以更加相对的方式计算哈希值,因为“相似”与否,就是一种相对的判定。

如果我们要计算上图的dHash值,第一步是把它 缩放到足够小 。为什么需要缩放呢?因为原图的分辨率一般都非常高。一张 200*200 的图片,就有整整4万个像素点,每一个像素点都保存着一个RGB值,4万个RGB,是相当庞大的信息量,非常多的细节需要处理。因此,我们需要把图片缩放到非常小,隐藏它的细节部分,只见森林,不见树木。建议缩放为9*8,虽然可以缩放为任意大小,但是这个值是相对合理的。而且宽度为9,有利于我们转换为hash值,往下面看,你就明白了。

(感谢评论区 隔壁万能的小黑 同学,建议在 image.resize 中加上Image.ANTIALIAS参数,加上此参数将会对所有可以影响输出像素的输入像素进行高质量的重采样滤波)

dHash全名为差异值hash,通过计算相邻像素之间的颜色强度差异得出。我们缩放后的图片,细节已经被隐藏,信息量已经变少。但是还不够,因为它是彩色的,由RGB值组成。白色表示为(255,255,255),黑色表示为(0,0,0),值越大颜色越亮,越小则越暗。每种颜色都由3个数值组成,也就是红、绿、蓝的值 。如果直接使用RGB值对比颜色强度差异,相当复杂,因此我们转化为灰度值——只由一个0到255的整数表示灰度。这样的话就将三维的比较简化为了一维比较。

差异值是通过计算每行相邻像素的强度对比得出的。我们的图片为9*8的分辨率,那么就有8行,每行9个像素。差异值是每行分别计算的,也就是第二行的第一个像素不会与第一行的任何像素比较。每一行有9个像素,那么就会产生8个差异值,这也是为何我们选择9作为宽度,因为8bit刚好可以组成一个byte,方便转换为16进制值。
如果前一个像素的颜色强度大于第二个像素,那么差异值就设置为True(也就是1),如果不大于第二个像素,就设置为False(也就是0)。

我们将差异值数组中每一个值看做一个bit,每8个bit组成为一个16进制值,将16进制值连接起来转换为字符串,就得出了最后的dHash值。

汉明距离这个概念不止运用于图片对比领域,也被使用于众多领域,具体的介绍可以参见Wikipedia。
汉明距离表示将A修改成为B,需要多少个步骤。比如字符串“abc”与“ab3”,汉明距离为1,因为只需要修改“c”为“3”即可。
dHash中的汉明距离是通过计算差异值的修改位数。我们的差异值是用0、1表示的,可以看做二进制。二进制0110与1111的汉明距离为2。
我们将两张图片的dHash值转换为二进制difference,并取异或。计算异或结果的“1”的位数,也就是不相同的位数,这就是汉明距离。

如果传入的参数不是两张图的dHash值,而是直接比较两张图片,那么不需要生成dHash值,直接用Step3中的difference数组,统计不相同的位数,就是汉明距离。

一般来说,汉明距离小于5,基本就是同一张图片。大家可以根据自己的实际情况,判断汉明距离临界值为多少。

https://github.com/hjaurum/DHash

⑨ 计算图像相似度的算法有哪些

SIM = Structural SIMilarity(结构相似性),这是一种用来评测图像质量的一种方法。由于人类视觉很容易从图像中抽取出结构信息,因此计算两幅图像结构信息的相似性就可以用来作为一种检测图像质量的好坏.

首先结构信息不应该受到照明的影响,因此在计算结构信息时需要去掉亮度信息,即需要减掉图像的均值;其次结构信息不应该受到图像对比度的影响,因此计算结构信息时需要归一化图像的方差;最后我们就可以对图像求取结构信息了,通常我们可以简单地计算一下这两幅处理后的图像的相关系数.

然而图像质量的好坏也受到亮度信息和对比度信息的制约,因此在计算图像质量好坏时,在考虑结构信息的同时也需要考虑这两者的影响.通常使用的计算方法如下,其中C1,C2,C3用来增加计算结果的稳定性:
2u(x)u(y) + C1
L(X,Y) = ------------------------ ,u(x), u(y)为图像的均值
u(x)^2 + u(y)^2 + C1

2d(x)d(y) + C2
C(X,Y) = ------------------------,d(x),d(y)为图像的方差
d(x)^2 + d(y)^2 + C2

d(x,y) + C3
S(X,Y) = ----------------------,d(x,y)为图像x,y的协方差
d(x)d(y) + C3

而图像质量Q = [L(X,Y)^a] x [C(X,Y)^b] x [S(X,Y)^c],其中a,b,c分别用来控制三个要素的重要性,为了计算方便可以均选择为1,C1,C2,C3为比较小的数值,通常C1=(K1 x L)^2, C2=(K2 xL)^2, C3 = C2/2, K1 << 1, K2 << 1, L为像素的最大值(通常为255).
希望对你能有所帮助。

java 对比图片相似度的算法。。说说想法也行

每张图分成四块,将每部分的图片混成一种纯色,对比这四个纯色可以筛掉大部分的图片

热点内容
数据库的酸性 发布:2025-05-16 11:03:17 浏览:123
phpmysql长连接 发布:2025-05-16 10:51:50 浏览:733
android横屏全屏 发布:2025-05-16 10:47:43 浏览:474
服务器直链下载搭建 发布:2025-05-16 10:47:38 浏览:174
编译不成功怎么办 发布:2025-05-16 10:35:54 浏览:612
如何修改密码找回 发布:2025-05-16 10:35:53 浏览:570
怎么才能编译本书 发布:2025-05-16 10:27:47 浏览:759
ssd服务器电脑 发布:2025-05-16 10:26:25 浏览:829
水果忍者源码 发布:2025-05-16 10:26:22 浏览:474
python中ord函数 发布:2025-05-16 10:14:25 浏览:341