# 一. 系统设计
基于内容的图像检索系统(Content Based Image Retrieval, 以下简称 CBIR),是计算机视 觉领域中关注大规模数字图像内容检索的研究分支。典型的 CBIR 系统,允许用户输入一张图像,在图像数据库(或本地机、或网络)中查找具有相同或相似内容的其它图片。本实训
的基本功能要求是实现基于视觉特征的图像检索。具体包括:
1. 实现基于颜色信息的图像 检索,可通过颜色直方图、颜色矩、颜色一致性矢量等方法来实现。
2. 实现基于纹理特征 的图像检索,可从四个方面进行:统计法、结构法、模型法、频谱法。
3. 实现基于形状特 征的图像检索,可分别从图像的边缘信息和区域信息来实现。
4. 实现基于综合信息的图像检索。
用户通过GUI,选择使用哪一种方法来图像检索,并通过选择文件的方式打开图片,最后在结果界面上显示输入图片,最佳图片,和两张较相似的图片。
# 二. 所采用算法思想
## 1. 基于颜色特征检索
### HSV 中心距法
> colorjuData.txt 保存的是 HSV 中心距法的特征值
颜色矩(color moments)是由Stricker 和Orengo所提出的一种非常简单而有效的颜色特征。这种方法的数学基础在于图像中任何的颜色分布均可以用它的矩来表示。此外,由于颜色分布信息主要集中在低阶矩中,因此仅采用颜色的一阶矩(mean)、二阶矩(variance)和三阶矩(skewness)就足以表达图像的颜色分布。与颜色直方图相比,该方法的另一个好处在于无需对特征进行向量化。因此,图像的颜色矩一共只需要9个分量(3个颜色分量,每个分量上3个低阶矩),与其他的颜色特征相比是非常简洁的。在实际应用中,为避免低次矩较弱的分辨能力,颜色矩常和其它特征结合使用,而且一般在使用其它特征前,起到过滤缩小范围(narrow down)的作用。HSV 中心距法是基于HSV空间的因此需要将RGB空间转换为HSV空间[1]。
### 直方图相交法
> Yansezhifangtu.txt 保存的是直方图相交法的特征值。
利用图像的特征描述图像,可借助特征的统计直方图。图像特征的统计直方图实际是一个1-D的离散函数[2],
上式中k代表图像的特征取值,L是特征可取值个数,是图像中具有特征值为k的像素的个数,N是图像像素的总数,一个示例如下图:其中有8个直方条,对应图像中的8种灰度像素在总像素中的比例。
得到图像特征的统计直方图后,不同图像之间的特征匹配可借助计算直方图间的相似度量来进行,以下介绍几种常见的直方图的相似度量方法:
1. 直方图相交法
另这里写图片描述分别为两幅图像某一特征的统计直方图,则两图像之间的匹配值P(Q, D)可借助直方图相交来实现,
2. 直方图匹配法
直方图间的距离可使用一般的欧式距离函数这里写图片描述来衡量
## 2. 基于纹理特征检索
### 灰度矩阵法
> greymatrixData.txt 保存的是灰度矩阵法的特征值。
灰度共生矩阵法(GLCM, Gray-level co-occurrence matrix),就是通过计算灰度图像得到它的共生矩阵,然后透过计算该共生矩阵得到矩阵的部分特征值,来分别代表图像的某些纹理特征(纹理的定义仍是难点)。灰度共生矩阵能反映图像灰度关于方向、相邻间隔、变化幅度等综合信息,它是分析图像的局部模式和它们排列规则的基础。
对于灰度共生矩阵的理解,需要明确几个概念:方向,偏移量和灰度共生矩阵的阶数[3]。
- 方向:一般计算过程会分别选在几个不同的方向来进行,常规的是水平方向0°,垂直90°,以及45°和135°;
- 步距d:中心像元(在下面的例程中进行说明);
- 灰度共生矩阵的阶数:与灰度图像灰度值的阶数相同,即当灰度图像灰度值阶数为N时,灰度共生矩阵为N × N的矩阵;
灰度共生矩阵(Gray-Level Co-occurrence Matrix,GLCM)统计了灰度图中像素间的灰度值分布规律以区分不同的纹理。
灰度共生矩阵可以定义为一个灰度为[Math Processing Error]的像素点与另一个与之对应位置上的像素点的灰度值为[Math Processing Error]的概率。那么所有估计的值可以表示成一个矩阵的形式,以此被称为灰度共生矩阵。如:根据图像中任意一点 [Math Processing Error] 的灰度值和它所对应的点 [Math Processing Error] 的灰度值可以得到一个灰度值组合 [Math Processing Error]。统计整福图像每一种灰度值组合出现的概率矩阵 [Math Processing Error] 即为灰度共生矩阵。
由于灰度共生矩阵的维度较大,一般不直接作为区分纹理的特征,而是基于它构建的一些统计量作为纹理分类特征。例如[Math Processing Error]曾提出了14种基于灰度共生矩阵计算出来的统计量:能量、熵、对比度、均匀性、相关性、方差、和平均、和方差、和熵、差方差、差平均、差熵、相关信息测度以及最大相关系数[5]。
## 3. 基于形状特征检索
### 形状的不变矩法
> ShapeNchangeData.txt 保存的是基于形状的不变矩法特征值。
几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,具有平移、旋转和尺度不变性。
由Hu矩组成的特征量对图片进行识别,优点就是速度很快,缺点是识别率比较低,我做过手势识别,对于已经分割好的手势轮廓图,识别率也就30%左右,对于纹理比较丰富的图片,识别率更是不堪入眼,只有10%左右。这一部分原因是由于Hu不变矩只用到低阶矩(最多也就用到三阶矩),对于图像的细节未能很好的描述出来,导致对图像的描述不够完整。
Hu不变矩一般用来识别图像中大的物体,对于物体的形状描述得比较好,图像的纹理特征不能太复杂,像识别水果的形状,或者对于车牌中的简单字符的识别效果会相对好一些[4]。
### 形状边缘直方图法
> shapeHistogramData.txt 保存的是基于形状边缘直方图法特征值。
边缘分布直方图作为一种简单有效的形状表示方法,在目标检测,目标识别等方面一直有着广泛的应用。
边缘检测根本上说就是通过比较图像各点的边缘方向信息来进行识别。
一般我们采用MPEG-7对图像边缘的定义对图像中各点的边缘信息进行分类。
MPEG-7将图像边缘分为五个方向,水平、竖直、斜45度、斜135度和无方向。这五种方向分别对应五个不同的边缘描述子。
这里我们介绍一个分块的边缘直方图匹配方法,该方法适合于在大规模的图象数据中找到需要的结果,搜索速度较快。
首先对图像进行分块,然后使用图1中的五种边缘描述子对各块的边缘方向信息进行提取,并画出直方图,在数据库中搜索与各小块中直方图匹配的数据。该方法运算速度快,适合大规模图像的查找,但是没能考虑图块的位置问题,不适用与精确的图像搜索。
# 三. 详细实现过程
## HSV 中心距法
上文介绍过HSV中心距法的算法,首先就是将RGB空间转换为HSV空间,得到三个通道的值之后进行运算。每张图片获得九维的数据。
```python
# Convert BGR to HSV colorspace
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Split the channels - h,s,v
h, s, v = cv2.split(hsv)
# Initialize the color feature
color_feature = []
# N = h.shape[0] * h.shape[1]
# The first central moment - average
h_mean = np.mean(h) # np.sum(h)/float(N)
s_mean = np.mean(s) # np.sum(s)/float(N)
v_mean = np.mean(v) # np.sum(v)/float(N)
程序员无锋
- 粉丝: 3707
- 资源: 2573
最新资源
- 企业IT工程交办处理流程
- 基于广义互相关的声源定位语音信号处理实验MATLAB代码
- 机械设计折叠式登车桥sw18可编辑全套技术资料100%好用.zip
- Matlab_用于管理3D场景和基于物理的渲染的Matlab工具箱.zip
- Matlab_用于时间序列预测的定量金融变压器网络的深度学习.zip
- Matlab_用于麦克风阵列的广义旁瓣对消波束形成器.zip
- Matlab_用于信号音频和音乐分析的综合Matlab框架,阐明了音频和符号方法.zip
- Matlab_由大型球体集合加速的电磁散射.zip
- Matlab_有序回归与分类算法.zip
- Matlab_再生了曲盖和钟提出的无人机路径规划问题的心状态元启发式算法.zip
- Matlab_允许在FBMCOQAM和OFDM系统中再现双选择信道估计的所有数字.zip
- Matlab_用于运动捕捉分析的Matlab工具,包括以编程方式运行OpenSim和自动填充数据.zip
- Matlab_又一个Matlab指南.zip
- Matlab_在Matlab中模拟了LTE OFDM系统的整个传输信道和接收链.zip
- Matlab_在BeagleBone Blue上实现比例积分导数控制、线性二次高斯控制和模型预测控制等控制方案的Y6多.zip
- uniapp开发的短剧搜索平台 兼容APP、H5、微信小程序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈