如何计算两幅图像的相似度,计算两张图片相似度

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

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

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

谷歌人工智能写作项目:小发猫

使用Python 制作对比图片相似度的程序怎么比较?

就是给出以下几个function的def越多越好:1、red_average(Picture)算出pic众pixels的平均红值python神经网络算法实例说明,python神经网络案例

2、scale_red(Picture,int)调整图片红值并确保其不超过255。3、expand_width(Picture,int) 。

4、reduce_width(Picture,int)放大和缩小宽值都是乘或者除的,distance(Pixel,Pixel)以红蓝绿值为标准计算两个pixel之间的距离(类似于xyz坐标轴中两点距离)。

5、simple_difference(Picture,Picture)简单计算两张图片有多相似不必考虑长宽。

6、smart_difference(Picture,Picture)这个方程的步骤需为:判断图片大小。如必要乘除高度。如必要乘除宽度。调整图片颜色使之相同平均红蓝绿值。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。

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/c++ 做比较两张图片相似度的代码

循环for[i,j]{读出图片A一点(像素)的RGB数值。计算出灰度YA[j][i]=0.3*R+0.59*G+0.11*B读出图片B一点(像素)的RGB数值。

计算出灰度YB[j][i]=0.3*R+0.59*G+0.11*B计算一点的相似系数,例如灰度差除以两点平均灰度:fabs(YA[j][i]-YB[j][i])/((YA[j][i]+YB[j][i])/2.0)--数值越小越相似}有了所有点的相似系数,做统计算,例如,把相似系数分20档,计算落入各档的像素点的个数--就是概率啦。

画概率分布图和累加概率分布图。当然,你可以设累加概率等于几的地方为相似度判据。

两张相似的照片的数对之间有什么联系

可以这样理解。

位似与相似既有联系又有区别,相似仅要求两个图形形状完全相同;而位似是在相似的基础上要求对应点的连线相交于一点.如果两个图形是位似图形那么这两个图形必是相似图形,但是相似的两个图形不一定是位似图形,因此位似是相似的特殊情况.利用位似,可以把一个图形放大或缩小。

Ocr_字识别其中的__关键就是两张图_相似与否的判断,所以我们希望寻找_种或多种算法来计算图_的相似度。

算法清单1.像素点对_2.重_对_3.投影对_4.分块对_计算机处理图_并不像_这样可以直观的理解处理,在计算机中的图像可以看成_个矩阵,矩阵中的元素是_个颜_值,这个值由RGB三个参数构成,这三个参数的取值范围为0~255。

当然图_的表_不只有RGB这_种,其他类型不再详述。由于0~255的范围太_了,我们应该进_图_的降维——_值化。_值化将图_变成只由__和__,可以使_OTSU算法。

我们再将___1表_,___0表_,这样就得到_个矩阵,矩阵中只有数字0和1组成。

使用Python 制作对比图片相似度的程序

importmediadefred_average(pic):'''Returnanintegerthatrepresentstheaverageredofthepicture.'''total=0forpixelinpic:total=total+media.get_red(pixel)red_average=total/(media.get_width(pic)*media.get_height(pic))returnred_averagedefgreen_average(pic):'''Returnanintegerthatrepresentstheaveragegreenofthepicture'''total=0forpixelinpic:total=total+media.get_green(pixel)green_average=total/(media.get_width(pic)*media.get_height(pic))returngreen_averagedefblue_average(pic):'''Returnanintegerthatrepresentstheaverageblueofthepicture'''total=0forpixelinpic:total=total+media.get_blue(pixel)blue_average=total/(media.get_width(pic)*media.get_height(pic))returnblue_averagedefscale_red(pic,value):'''Returnthepicturethattheaverageoftheredisvaluewhichhasbeenset.'''averaged=red_average(pic)factor=float(value)/averagedforpixelinpic:new_red=min(255,int(factor*media.get_red(pixel)))media.set_red(pixel,new_red)returnpicdefscale_green(pic,value):'''Returnthepicturethattheaverageofthegreenisvaluewhichhasbeenset.'''averaged=green_average(pic)factor=float(value)/averagedforpixelinpic:new_green=min(255,int(factor*media.get_green(pixel)))media.set_green(pixel,new_green)returnpicdefscale_blue(pic,value):'''Returnthepicturethattheaverageoftheblueisvaluewhichhasbeenset.'''averaged=blue_average(pic)factor=float(value)/averagedforpixelinpic:new_blue=min(255,int(factor*media.get_blue(pixel)))media.set_blue(pixel,new_blue)returnpicdefexpand_height(pic,factor):'''Returnanewpicturethathasbeenverticallystretchedbythefactorwhichhasbeenset.'''new_width=pic.get_width()new_height=pic.get_height()*factornewpic=media.create_pic(new_width,new_height,media.black)forpixelinpic:x=media.get_x(pixel)y=media.get_y(pixel)newpixel=media.get_pixel(newpic,x,y*factor)fornewpixelinnewpic:new_red=media.get_red(pixel)new_green=media.get_green(pixel)new_blue=media.get_blue(pixel)media.set_red(newpixel,new_red)media.set_green(newpixel,new_green)media.set_blue(newpixel,new_blue)returnnewpicdefexpand_width(pic,factor):'''Returnanewpicturethathasbeenhorizontallystretchedbythefactorwhichhasbeenset.'''new_width=pic.get_width()*factornew_height=pic.get_height()newpic=media.create_pic(new_width,new_height,media.black)fornewpixelinnewpic:x=media.get_x(newpixel)y=media.get_y(newpixel)pixel=media.get_pixel(pic,x/factor,y)new_red=media.get_red(pixel)new_green=media.get_green(pixel)new_blue=media.get_blue(pixel)media.set_red(newpixel,new_red)media.set_green(newpixel,new_green)media.set_blue(newpixel,new_blue)returnnewpicdefreduce_height(pic,factor):'''returnanewpicthathasbeencompressedverticallybythefactorwhichhasbeenset'''#Createanew,all-blackpicwiththeappropriatenewheightand#oldwidth;(allcolourcomponentsarezero).new_width=pic.get_widthnew_height=(pic.get_height()-1)/factor+1newpic=media.create_pic(new_width,new_height,media.black)#Iteratethroughallthepixelsintheoriginal(large)image,andcopy#aportionofeachpixel'scolourcomponentsintothecorrect#pixelpositioninthesmallerimage.forpixelinpic:#Findthecorrespondingpixelinthenewpic.x=media.get_x(pixel)y=media.get_y(pixel)newpixel=media.get_pixel(newpic,x,y/factor)#Addtheappropriatefractionofthispixel'scolourcomponents#tothecomponentsofthecorrespondingpixelinthenewpic.new_red=new_red()+_red()/factornew_green=new_green()+_green()/factornew_blue=new_blue()+_blue()/fctormedia.set_red(newpixel,new_red)media.set_green(newpixel,new_green)media.set_blue(newpixel,new_blue)returnnewpicdefreduce_width(pic,factor):'''Returnanewpicthathasbeenhorizontallycompressedbythefactorwhichhasbeenset.'''new_width=(media.get_width()-1)/factor+1new_height=media.get_height()newpic=media.create_pic(new_width,new_height,media.black)forpixelinpic:x=media.get_x(pixel)y=media.get_y(pixel)new_pixel=media.get_pixel(newpic,x/factor,y)new_red=new_red()+_red()/factornew_green=new_green()+()/factornew_blue=new_blue()+()/factormedia.set_red(newpixel,new_red)media.set_green(newpixel,new_green)media.set_blue(newpixel,new_blue)returnnewpicdefdistance(pixel1,pixel2):red1=media.get_red(pixel1)green1=media.get_green(pixel1)blue1=media.get_blue(pixel1)red2=media.get_red(pixel2)green2=media.get_green(pixel2)blue2=media.get_blue(pixel2)sum=abs(red1-red2)+abs(green1-green2)+abs(blue1-blu2)returnsumdefsimple_difference(pic1,pic2):forpixelinpic1:x=media.get_x(pixel)y=media.get_y(pixel)pixel2=media.get_pixel(pic2,x,y)sum=media.distance(pixel,pixel2)returnsumdefsmart_difference(pic1,pic2):height1=media.get_height(pic1)height2=media.get_height(pic2)factorh=float(height1/height2)iffactorh>=1:height1=media.reduce_height(pic1,factorh)else:height2=media.reduce_height(pic2,1/factorh)width1=media.get_width(pic1)width2=media.get_width(pic2)factorw=float(width1/width2)iffactorw>=1:width1=reduce_width(pic1,factorw)else:width2=reduce_width(pic2,1/factorw)red1=red_average(pic1)green1=green_average(pic1)blue1=blue_average(pic1)red2=media.scale_red(pic2,red1)green2=media.scale_green(pic2,green1)blue2=media.scale_blue(pic2,blue1)#if__name__=='__main__':(newpic)。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值