图片相似度比对算法_Print_lin的博客-CSDN博客_图像对比算法
图片相似度比对算法
Print_lin
于 2018-07-15 14:07:21 发布
51889
收藏
87
文章标签:
OCR
图片相似度
特征提取
图片对比
文字识别
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Print_lin/article/details/81052497
版权
Ocr文字识别其中的一大关键就是两张图片相似与否的判断,所以我们希望寻找一种或多种算法来计算图片的相似度。本文将对于项目中使用的比对算法进行介绍,并将其联合运用进行初步文字识别。
算法清单
像素点对比重心对比投影对比分块对比
前提知识
计算机处理图片并不像人这样可以直观的理解处理,在计算机中的图像可以看成一个矩阵,矩阵中的元素是一个颜色值,这个值由RGB三个参数构成,这三个参数的取值范围为0~255。当然图片的表示不只有RGB这一种,其他类型不再详述。由于0~255的范围太大了,我们应该进行图片的降维——二值化。二值化将图片变成只由黑色和白色,可以使用OTSU算法。我们再将黑色用1表示,白色用0表示,这样就得到一个矩阵,矩阵中只有数字0和1组成。
(图1:二值化后的图片) (图二:转换为01矩阵后的图片)
一、像素点对比
我们将标准图与匹配图的每个像素点进行比对,如果相等,则相似点加一。这样扫描两张完图片,我们可以得到二者之间相似点的多少,再用相似点除以总点数,就可以得到一个0~1之间的数值,这就是相似度。
(标准图) (匹配图)
如上图所示,共100个点,只有红色点[5,1]是不一样的,所以相似度等于99/100。
这种比对算法是最简单的,但是实际应用效果不尽人意。试想,如果将匹配图的左上角多了一个点,如下图。那么将会直接导致匹配率下降很多87/100。实际中的情况远远比这复杂,所以效果欠佳。
(坏点图)
二、重心对比
有些字符除了位置不一样,二者是很相似的。如[.]与[·],所以我们需要对其进行位置的比对。可以计算其重心,判断黑色点主要是集中在什么区域。
我们循环扫描每个黑色的点,将它们的横坐标与纵坐标累加起来,得到横坐标的和与纵坐标的和。再除以点的个数,得到平均横坐标与平均纵坐标。再分别将其除以横、纵坐标的总长,得到两个个在0~1区间的数,这就代表它的重心。最后计算二者重心的距离(距离的计算将会在后文介绍),得出相似度。这种算法的缺陷也是很明显的,因为除了特殊的符号外,其他字符的重心总是相差不大的,所以精确度很低。
三、投影比对
投影比对是对行与列的黑色点个数进行统计,得到一个关于图片的特征向量,再计算二者特征向量的距离(距离的计算将在后文介绍),得出相似度。
(标准图的投影) (匹配图的投影)
如上图所示,我们可以得到两组向量:
X:{10,102,2,10,10,2,2,10,10}Y:{8,8,6,6,6,6,6,6,8,8}
X:{10,102,2,9,10,2,2,10,10} Y:{7,8,6,6,6,6,6,6,8,8}
计算两组向量的距离,得出相似度。
这种算法将图片的特征缩小化了,比如二者第一列的统计结果都为9,我们无法知道缺的那个1的具体位置。但是将二维的匹配简化到向量距离的计算,这样更加利于计算机处理。
四、分块对比
上文中说到投影对比,它的缺陷是让图片的特征丢失过多。为了减少特征的丢失,我们可以将图片切割成几块,在分别对每一块进行匹配计算相似度,得到相似度向量,再计算向量距离,得到相似度。
分块对比不是一个具体算法,而是一种优化思路,让一张大图片的匹配变成许多小图片的匹配,这样可以使结果更为精确。
向量距离的计算
上文一直在提向量间距离的计算,可见向量间的距离是至关重要的。目前常用的算法是欧几里德距离算法。
我们可以建立标准字库(为每个字生成一张图片),将欲识别图片用以上算法到字库中进行分别匹配,得到多个相似度。我们让每个相似度乘以一个权重再先加,得出总相似度,总相似度最高的就是识别结果。这里涉及到一个问题,就是权重的确定,每个算法的平均准确度是不一样的,我们让准确度高的权重大一些。但是又怎么来确定权重的具体数值呢?请阅读下篇:Logistic回归的应用,通过该模型,我们会得到一个不错的结果。
Print_lin
关注
关注
16
点赞
87
收藏
打赏
评论
图片相似度比对算法
Ocr文字识别其中的一大关键就是两张图片相似与否的判断,所以我们希望寻找一种或多种算法来计算图片的相似度。本文将对于项目中使用的比对算法进行介绍,并将其联合运用进行初步文字识别。算法清单 像素点对比重心对比投影对比分块对比前提知识 计算机处理图片并不像人这样可以直观的理解处理,在计算机中的图像可以看成一个矩阵,矩阵中的元素是一个颜色值,这...
复制链接
扫一扫
图片相似度识别(纯算法)-易语言
06-14
源码名称:
图片相似图识别
主要功能:
支持识别,经过角度旋转,经过干扰,经过扭曲,完全不相同但近似的图。
论坛的很多图片相似度识别源码,大体都只能对比图片高度一致的图片才有效,对于经过了旋转角度,颜色干扰,或者根本就不是一张图,但是是一种类型的图。都起不了作用,所以自己研究搞了这个源码
相关知识点来自baidu!
功能原理:
思路源自三原色也就是RGB。
众所周知RGB
色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,
RGB
即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色。
三原色,每个原色可以生成256种颜色。三通道加一起刚好就是256*3种颜色。每张图片相同的图片。所使用的颜色数量基本上近似一致。而不相同的图片,颜色使用量可以说是差距很大。
由此想到,记录红、绿、蓝三个通道的各自256中颜色的量。进行两张图片对比。设置一个容差值 假设为-100 和 + 100
为什么设置容差值呢,因为相同的一种图片 肉眼看着一致,很多时候,颜色值还是有点差距的。但是这个差距一定是在一个范围内。因为如果范围太大的话。肉眼都能看出来颜色不一样了。所以更别说软件了。
设置容差值之后 累计 256*3 个颜色的颜色用量。进行对比。再受容差值的影响。最终计算的结果。进行一个百分比计算。就可以得出图片的相似度。
经过实际测试,一般情况下 百分之55以上的相似度,基本上可以判定位同一种类图。因为如果不是一个种类的。相似度基本上是30以下 因为颜色的用量是天壤之别。
图片相似度识别
03-06
预处理:读取图片
第一步,缩小尺寸。
将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
第二步,简化色彩。
将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
第三步,计算平均值。
计算所有64个像素的灰度平均值。
第四步,比较像素的灰度。
将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。
第五步,计算哈希值。
将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算"汉明距离"(Hammingdistance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
你可以将几张图片放在一起,也计算出他们的汉明距离对比,就可以看看两张图片是否相似。
这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。
实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。
以上内容大部分直接从阮一峰的网站上复制过来,想看原著的童鞋可以去在最上面的链接点击进去看。
评论 5
您还未登录,请先
登录
后发表或查看评论
基于Python的数字图形可视化水印系统的设计与实现
文档源码
09-29
490
现将图片水印嵌入图片当中的功能。LSB 随机间隔法算法水印嵌入由用户选择图片和隐藏信息,对图像进行随机间隔的 LSB 隐写后,将秘密信息写入,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。区域校验位算法水印嵌入由用户选择图片和隐藏信息,对图像进行区域校验位的 LSB 隐写后,将秘密信息写入,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。图像降级算法改进的界面布局和操作与图像降级算法完全相同,只是改进了对载体图像的画质的损伤,得到的嵌入水印的图像的效果要优于图像降级算法。
python图片相似度匹配, 标记出匹配区域
最新发布
weixin_44428474的博客
10-24
196
python图片相似度匹配, 标记出匹配区域
Python图像识别,图片相似度计算!
Pythoncxy的博客
08-29
9937
1.背景
要识别两张图片是否相似,首先我们可能会区分这两张图是人物照,还是风景照等......对应的风景照是蓝天还是大海......做一系列的分类。
从机器学习的的角度来说,首先要提取图片的特征,将这些特征进行分类处理,训练并建立模型,然后在进行识别。
但是让计算机去区分这些图片分别是哪一类是很不容易的,不过计算机可以知道图像的像素值的,因此,在图像识别过程中,通过颜色特征来识别是相似图片是...
【matlab】:matlab实现计算两张图片的相似度
阳光心态,健康人生的博客
04-17
6万+
通过直方图的方法
每张图片都可以生成其灰度图像直方图(histogram)。如果两张图片的直方图很接近,就可以认为它们很相似。
因此,此处我们利用两幅图像的直方图来进行相似度的比较。原理较为简单,具体算法如下:
1、获得输入灰度图像的直方图分布;
2、将直方图划分为64个区,每个区为连续的4个灰度等级;
3、对每个区的4个值进行求和运算,得到1个数据,如此,会
图像比对的三种算法
02-28
比较在图像比对中三种实现方法的执行效率和速度
深入学习OpenCV中图像相似度的算法
weixin_30672019的博客
10-16
2239
最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程。但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜索的流程整理一下,想到什么说什么吧。
首先在进行图片灰度化处理之前,我觉得有必要了解一下为什么要进行灰度化处理。
图像灰度化的目的是什么?
将彩色图像转化为灰度图像的过程是图像的灰度...
图像对比算法有哪些,图像对比算法是什么
xilao138的博客
09-02
1801
至于比较方法,比较像素点的方向是对的,不过我想它不是上来就比较像素点,因为这样效率较低,而是采用的多函数嵌套,方法如下:把图片分成几大块,比如平均分4块,然后每一块进行比对(进行图片的模糊匹配,而不是精确的像素匹配),找出不同大块,然后再分块,以此下去,找到比较小的块(这个根据编程定义到底多小算小),然后再进行像素比对,这样效率能够更加提高。进程的静态优先级的确定原则:按进程的类型给予不同的优先级。时间片长度的确定:时间片长度变化的影响过长->退化为FCFS算法,进程在一个时间片内都执行完,响应时间长。
有史以来最全的图像相似度算法
xian0710830114的专栏
07-16
1万+
使用四种方法计算图片相似度:
MD5、直方图、PSNR、SSIM
图像相似算法最全总结
weixin_52950958的博客
07-12
2081
图像相似算法最全总结
常用的图像相似度比较算法:哈希算法
youcancallmean的博客
07-29
961
哈希算法介绍
计算两幅图像的相似度总结
热门推荐
菜鸟驿站
09-17
10万+
1. SSIM(结构相似性度量)
这是一种全参考的图像质量评价指标,分别从亮度、对比度、结构三个方面度量图像相似性。
SSIM取值范围[0, 1],值越大,表示图像失真越小。
在实际应用中,可以利用滑动窗将图像分块,令分块总数为N,考虑到窗口形状对分块的影响,采用高斯加权计算每一窗口的均值、方差以及协方差,然后计算对应块的结构相似度SSIM,最后将平均值作为两图像的结构相似性度量,即平均结构...
Java图片比对算法(直方图原理)
最高永远来自最下
07-02
4622
采用直方图原理算法比对图片的细微差别效果比较好,以下两张区别很小的图片识别效果如下:
1.png3.png
识别结果:
主要代码如下:
import javax.imageio.*;
import java.awt.image.*;
import java.awt.*;
import java.io.*;
public class PhotoDigest {
publi...
java计算图片相似度_图片相似度比较--算法
weixin_36280338的博客
02-28
722
最近由于要租房,所以下载了58同城的APP,在找个人房源过程中发现,58同城会把图片相似的发帖纪录被标志出来,并警告用户此信息可能是假的。这里不讨论58同城的这方面做得人性化。而是就图片相似度算法来做一下分析。百度和谷歌都推出了“以图搜图”的功能,至今都没用过,也是挺无语的……最近翻阅了这方面的资料,属“感知哈希算法”最为成熟,“感知哈希算法”的作用是对每张图片生成一个指纹字符串,然后比较不同图片...
比较两幅图像的相似度
Junzzy的博客
12-29
6万+
现在以图搜图的功能比较火热,很好奇其原理。简单的搜索学习得知,实现相似图片搜索的关键技术是“感知哈希算法”,作用是对每一张图片按照某种规律生成一个对应的指纹字符串。比较不同图片之间的指纹字符串,结果越接近,图片越相似。现将问题简化为研究两幅图像的相似度,算法可能其他博客都有介绍了,现给出实现代码(简易版)。简易版指纹字符串的算法思想如下:1.输入图像2.灰度化3.将图像大小归一化到8*8尺寸4.简...
列举一些算法对照片、图像进行相似度对比分析比较
qq506930427的博客
06-09
4047
转:列举一些算法对照片、图像进行相似度对比分析比较
首先:图片如下
18.jpg 19.jpg
...
图片相似度识别算法公式,图片相似度检测算法
wenangou的博客
09-06
1097
SIM=StructuralSIMilarity(结构相似性),这是一种用来评测图像质量的一种方法。由于人类视觉很容易从图像中抽取出结构信息,因此计算两幅图像结构信息的相似性就可以用来作为一种检测图像质量的好坏.首先结构信息不应该受到照明的影响,因此在计算结构信息时需要去掉亮度信息,即需要减掉图像的均值;其次结构信息不应该受到图像对比度的影响,因此计算结构信息时需要归一化图像的方差;最后我们就可以对图像求取结构信息了,通常我们可以简单地计算一下这两幅处理后的图像的相关系数.然而图像质量的好坏也受到亮度信息和
测试两张照片相似度对比软件,有没有一款软件能比对两张照片是否一样?
weixin_39883670的博客
07-22
8627
可以用AI软件来对比。AI人脸比对已经变成非常常用的AI场景之一。步骤如下:1、浏览器输入网址百度AI应用,AI人脸比对。2、进入人脸比对的功能演示模块。3、点击左侧的‘本地上传’按钮,上传本地照片1。4、点击右侧的‘本地上传’按钮,上传本地照片2。5、稍等片刻,便会得出两个照片的相似度。如图所示。AI的功能:是用于研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科...
图片相相似度计算(Hash、SSIM、compareHist)
qq_36559293的博客
05-27
4860
感知哈希算法(Perceptual hash algorithm)
那这种技术的原理是什么呢?根据Neal Krawetz博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。这里的关键技术叫做感知哈希算法(Perceptual hash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。下面是一个最简单的实现:
第一步,缩小尺寸。将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片
图像识别最好的算法,图片相似度识别算法
ynca67269的博客
09-24
1597
数字图像处理技术可以帮助人们更客观、准确地认识世界,人的视觉系统可以帮助人类从外界获取3/4以上的信息,而图像、图形又是所有视觉信息的载体,尽管人眼的鉴别力很高,可以识别上千种颜色,但很多情况下,图像对于人眼来说是模糊的甚至是不可见的,通过图象增强技术,可以使模糊甚至不可见的图像变得清晰明亮。介绍Yolo只要求grid中识别的物体的中心必须在这个grid内(具体来说,若某个目标的中心点位于一个grid内,该grid输出该目标类别的概率为1,所有其他grid对该目标预测概率设置为0)。直到这个新算法的出现。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
Print_lin
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
10
原创
43万+
周排名
2万+
总排名
9万+
访问
等级
662
积分
46
粉丝
47
获赞
12
评论
218
收藏
私信
关注
最新评论
一种经纬度轨迹数据计算物理弯道的方法,轨迹弯道算法
programmer_ada:
推荐 算法 技能树:https://edu.csdn.net/skill/algorithm?utm_source=AI_act_algorithm
图片相似度比对算法
NullPointerExpection:
将一个很大的技术难题拆分成一个个相对来说难度降低的小块,逐个讲解,通俗易懂
文字切割算法-投影切割优化
FulChou:
好文章,得给个赞
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
SpringCloudGateway获取body中的参数,最优雅的方式
JMeter5.5入门到实战:HTTP+TCP+响应断言+自定义拓展+返回值获取
Dubbo3入门实践,SpringBoot+Dubbo+Nacos+DubboAdmin
2022年5篇
2018年5篇
目录
目录
最新文章
SpringCloudGateway获取body中的参数,最优雅的方式
JMeter5.5入门到实战:HTTP+TCP+响应断言+自定义拓展+返回值获取
Dubbo3入门实践,SpringBoot+Dubbo+Nacos+DubboAdmin
2022年5篇
2018年5篇
目录
评论 5
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
Print_lin
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值