初识图像识别之颜色特征
Posted 搜狗测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识图像识别之颜色特征相关的知识,希望对你有一定的参考价值。
Hello,大家好,又到了工作日,搜狗测试又和大家见面了。
这几年随着AI技术的突飞猛进,涌现出了大量的文字识别,图像识别等技术,对此小编也紧跟时代的步伐,今天咱们来初识图像识别中的相似度识别。
要计算图像的相似度,肯定是要找出图像的特征。这样跟你描述一个人的面貌:浓眉,双眼皮,直鼻梁,头发浓密一样。这些特征决定了这个人跟你认识的人是不是相似。图像也一样,要计算相似度,必须抽象出一些特征比如脸部,肢体等特点。那么从机器的角度来说也是这样的,先识别图像的特征,然后再相比。
很显然,在没有经过训练的计算机(即建立模型),那么计算机很难区分什么是海洋,什么是沙漠。但是计算机很容易识别到图像的像素值。
在图像识别中,颜色特征是最为常用的,那么颜色特征有哪些具体的分类呢?
备注:除了颜色特征意外,其他还有诸如纹理,形状,空间关系等特征,感兴趣的同学可以自行了解。
颜色特征主要分为以下几个方向:
1.直方图
2.颜色集合
3.颜色矩
4.聚合向量
5.相关图
实验相关的python库:
1.pillow
PIL的升级,3.x版本支持pillow,是本次用到的库。
2.PIL
PIL(Python image library)为 Python 提供了图像处理功能,并且支持数十种图像格式,但由于PIL很早就停了,所以不支持python3.x,本次没有用到。
3.openCV
python用作图像处理的相关库主要有openCV(C++编写,提供了python语言的接口),在做人脸识别的时候会用到,但本文不会涉及到。
(关于几个库的详细用法,在此处不再阐述)
在实验前,我们需要找两张相似度相同的图片来进行对比实验,小编在手机里找到两张我家小主的照片,相似度在人眼的基础下是非常高了。
图一:
图二:
在python中可以依靠Image对象的histogram()方法获取其直方图数据,但这个方法返回的结果是一个列表,如果想得到下图可视化数据,可以使用matplotlib,或者直接使用excel的图标工具搞定。
以下是本次的实验数据:
我们可以明显的发现,两张图片的直方图是近似重合的。所以利用直方图判断两张图片是否相似的方法就是计算其直方图的重合程度。
计算原理如下:
Sim(G,S)=,其中G,S为直方图,N 为颜色空间样点数。
最后计算得出的结果就是就是其相似程度,其实小编也看不懂,只管站在巨人的肩膀上就好了。
部分代码截图如下:
是的,只需要非常简单几行代码就完成了图片相似度的计算,即使加入图片读取等代码行数也不会超过50行。
最终测试十次左右的结果相似度在90%左右,结果还不错。
不过这种方法的缺点也非常明显,比如说两只不同脸的猫咪,类似的花纹,人眼是能够一眼识别的,而程序却无法识别(猫脸盲人忽略。。。)
解决这个缺点的方法是将图片等分为多个区域进行权重求和,比如将我家主子的图片切分为6块,对每一块进行相似度计算,最终得出一个平均的值。
图像的相似度计算是图像检索、识别的基础,本文只是浅尝辄止地介绍了其中最基本的计算方法,对图像识别有兴趣的同学可以动手自己手动敲一遍代码。多试用一下包括OpenCV等库。
好了,今天的文章到此结束了,更多相关开发,测试的技术尽在搜狗测试,请持续关注。
老铁来一波关注↓↓↓↓↓↓,获取免费撸各种知识的机会!
以上是关于初识图像识别之颜色特征的主要内容,如果未能解决你的问题,请参考以下文章