【综合实训】数字图像处理——基于内容的图像检索系统设计与实现

文章目录

摘要

图像作为最基本,最重要的多媒体信息交流形式之一,已经随着信息技术和网络技术的发展,而越来越广泛地应用于人们的社会生活和工作密切相关的各个领域。人们希望能够利用图像自身的可视化特征对图像信息进行检索。

基于内容的图像检索系统(Content Based Image Retrieval, 以下简称 CBIR),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。典型的 CBIR 系统,允许用户输入一张图像,在图像数据库(或本地机、或网络)中查找具有相同或相似内容的其它图片。本实训的基本功能要求是实现基于视觉特征的图像检索。具体包括:(1)实现基于颜色信息的图像检索,采用颜色直方图和颜色中心矩两种方法实现。(2)实现基于纹理特征的图像检索,采用了灰度共生矩阵法实现。(3)实现基于形状特征的图像检索,采用了形状不变矩法实现。(4)实现基于phash的图像检索。(5)实现HOG+SVM进行图片分类检索。

关键词:颜色直方图;颜色中心矩;灰度共生矩阵;形状不变矩;phash;HOG;SVM

Abstract

As one of the most basic and important forms of multimedia information communication, images have been used more and more widely in various fields closely related to people’s social life and work with the development of information technology and network technology. People hope to be able to retrieve image information using the visual features of the image itself.

Content Based Image Retrieval (hereinafter referred to as CBIR) is a research branch in the field of computer vision that focuses on large-scale digital image content retrieval. A typical CBIR system allows the user to input an image and search for other images with the same or similar content in the image database (or local computer, or network). The basic functional requirement of this training is to realize image retrieval based on visual features. Specifically include: (1) To achieve image retrieval based on color information, using two methods: color histogram and color center moments. (2) Realize image retrieval based on texture features, using gray-level co-occurrence matrix method. (3) Realize image retrieval based on shape features, using shape invariant moment method. (4) Realize image retrieval based on phash. (5) Realize HOG+SVM for image classification and retrieval.

Keywords: color histogram; color central moment; gray-level co-occurrence matrix; shape invariant moment; phash; HOG; SVM

1 绪论

1.1 课题研究背景

图像作为最基本,最重要的多媒体信息交流形式之一,已经随着信息技术和网络技术的发展,而越来越广泛地应用于人们的社会生活和工作密切相关的各个领域。人们希望能够利用图像自身的可视化特征对图像信息进行检索。

1.2 课题研究目的与意义

通过该课题的研究,可以用不同的方法进行图片检索比如:基于颜色特征的检索、基于纹理特征的检索、基于形状特征的检索、基于phash的检索、基于HOG特征和SVM分析的检索。通过这些方法能比较出各个图片的适应情况,为不同的图片选择更好的检索方法。也为之后图片进行自动化机器学习打下基础。

2 系统设计

2.1 图像检索系统框架

基于内容的图像检索系统框架如图1所示,系统的核心是图像特征数据库。图像特征既可以从图像本身提取得到, 也可以通过用户交互获得, 并用于计算图像之间的相似度计算。 系统框架应主要包含以下几个基本功能模块:检索方法设置、检索结果浏览、数据库管理维护等。其逻辑结构如图2所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G2sad9cd-1638684024960)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38C8.tmp.jpg)]

图1 基于内容的图像检索框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z45IyN5I-1638684024963)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38D9.tmp.jpg)]

图2 基于内容的图像检索系统逻辑模型

2.2 图像检索系统展示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bOnz8vdC-1638684024968)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38DA.tmp.png)]

图3 运行主函数窗口

3 数据集处理

3.1 数据预处理

(1)统一图片大小为120*150;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pdes5Xp6-1638684024970)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38DB.tmp.jpg)]
图4 统一图片大小

(2)图片降噪,避免噪声影响,采用中值滤波方法实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YSKrskTT-1638684024973)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38DC.tmp.jpg)]
图5 中值滤波

(3)图像增强,主要用来增强对比度等,采用直方图均衡化方法实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xfg4OKW-1638684024975)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38DD.tmp.jpg)]
图6 直方图均衡化

3.2 预处理结果展示

图7为处理前的数据集,图8为预处理之后的数据集。经过比较从原来的5.13MB压缩至2.19MB,而且所有图片的大小相同,便于开展之后工作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Any60Q6v-1638684024978)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38DE.tmp.png)]
图7 预处理之前
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rRr08C0D-1638684024980)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38DF.tmp.png)]
图8 预处理之后

4 基于颜色特征的图像检索

4.1 颜色直方图特征

4.1.1 颜色直方图特征介绍

在RGB颜色空间中,R、G、B各颜色分量彼此独立。RGB颜色空间的缺点在于不符合人眼的视觉特性,直接处理多有不便,因此通常需要转换到其他颜色空间进行处理。HSI色彩空间是从人的视觉系统出发。HSI颜色空间中,H是Hue(色度)的缩写,S是Saturation(饱和度)的缩写,I是Intensity(强度)的缩写。

颜色相关直方图(color correlogram),结合了图像中的颜色与空间信息,用颜色之间(不同颜色或相同颜色)的量化距离来构建直方图。颜色直方图有许多的优点:对图像进行旋转之后,它的颜色直方图不发生改变;颜色直方图容易提取,且比较容易计算两个直方图之间的相似度。

4.1.2 颜色直方图特征提取步骤

(1)图像灰度化 Gray=0.30R+0.59G+0.11*B;

(2)将图像从RGB颜色空间转至HSI颜色空间;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nTm1ArMS-1638684024984)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38E0.tmp.jpg)]
图9 RGB到HSI的转换

(3)量化HIS参数以及通过加权公式将H,I,S三个特征值合成一个一维的特征值;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgHtvzCB-1638684024986)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F0.tmp.jpg)]

图10 量化HIS参数

(4)提取出现频率较高的特征值;

(5)将特征值存放在图像特征数据库中。

4.1.3 颜色直方图特征存储结果

颜色直方图的特征值统一存放在数据库中,数据库的表名为histogram,特征值分别为取的前10个出现频率最高的值,id是每张图片的标号,path是每张图片存储地址,数据库表中具体信息如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcF4YWaC-1638684024987)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F1.tmp.jpg)]

图11 histogram表

同时也把这些特征值存在HistogramFeature.txt文件中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CL2bMnzt-1638684024989)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F2.tmp.jpg)]

图12 HistogramFeature.txt文件

4.1.4 相似度度量方法

对于颜色直方图特征,选择的是用加权的欧氏距离来进行相似度度量,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eRvioiFa-1638684024991)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F3.tmp.jpg)]

图13 加权欧氏距离

4.1.5 检索结果展示

选择图片后点击颜色检索后,就会出现如下结果,依次输出与被选择图片最相近的15张图片,同时输出相应的度量结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDXFSobJ-1638684024992)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F4.tmp.jpg)]

图14 界面输出结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oTws4sMS-1638684024994)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F5.tmp.jpg)]

图15 前15张图片的度量结果

同时也保存了所有参与检索的图片的度量结果,存放在HistogramResult.txt文件中,按照相似度度量结果进行排序,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkjNg65V-1638684024995)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F6.tmp.jpg)]

图16 所有图片的度量结果

4.2 颜色中心矩特征

4.2.1 颜色中心矩特征介绍

颜色矩是一种简单有效的颜色特征表示方法,有一阶矩(也就是均值,mean)、二阶矩(也就是标准差, variance)和三阶矩(斜度,skewness)等,由于颜色信息主要分布于低阶矩中,所以用一阶矩,二阶矩和三阶矩足以表达图像的颜色分布,颜色矩已证明可有效地表示图像中的颜色分布。HSI颜色空间不适合显示器系统,但是更符合人眼的视觉特性,因此通常会将颜色从RGB空间域转换到HSV颜色空间进行处理。

4.2.2 颜色中心矩特征提取步骤

(1)图像灰度化 Gray=0.30R+0.59G+0.11*B;

(2)将图像从RGB颜色空间转至HSI颜色空间;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F69CfX5a-1638684024997)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F7.tmp.jpg)]

图17 RGB到HSI的转换

(3)对HSI模型的三个分量分别求其前三阶中心矩,得到9个特征值;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kHFvUb1e-1638684024999)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps38F8.tmp.jpg)]

图18 一阶中心矩

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0DfSOgg-1638684025001)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3909.tmp.jpg)]

图19 二阶中心矩和三阶中心矩

(4)将特征值存放在图像特征数据库中。

4.2.3 颜色中心矩特征存储结果

颜色中心矩的特征值统一存放在数据库中,数据库的表名为matrix,特征值分别为HIS模型三个分量的一阶、二阶、三阶中心矩,id是每张图片的标号,path是每张图片存储地址,数据库表中具体信息如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OIimlItq-1638684025003)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps390A.tmp.jpg)]

图20 matrix表

同时也把这些特征值存在MatrixFeature.txt文件中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENGsboGa-1638684025005)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps390B.tmp.jpg)]

图21 MatrixFeature.txt文件

4.2.4 相似度度量方法

对于颜色中心矩特征,选择的是用余弦相似度来进行相似度度量,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lWh4CjcX-1638684025006)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps390C.tmp.jpg)]

图22 余弦相似度

4.2.5 检索结果展示

选择图片后点击颜色检索后,就会出现如下结果,依次输出与被选择图片最相近的15张图片,同时输出相应的度量结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6hjJmrS-1638684025008)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps390D.tmp.jpg)]

图23 界面输出结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxk0tYzP-1638684025010)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps390E.tmp.jpg)]

图24 前15张图片的度量结果

同时也保存了所有参与检索的图片的度量结果,存放在MatrixResult.txt文件中,按照相似度度量结果进行排序,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sH1dSuQU-1638684025011)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps390F.tmp.jpg)]

图25 所有图片的度量结果

5 基于纹理特征的图像检索

5.1 灰度共生矩阵法提取特征原理

由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两象素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。

灰度共生矩阵是像素距离和角度的矩阵函数,它通过计算图像中一定距离和一定方向的两点灰度之间的相关性,来反映图像在方向、间隔、变化幅度及快慢上的综合信息。

共生矩阵0度的计算式:

p1(IN(M,N)+1,IN(M,N+1)+1)= p1(IN(M,N)+1,IN(M,N+1)+1)+1;

共生矩阵45度的计算式:

p1(IN(M,N)+1,IN(M-1,N+1)+1)= p1(IN(M,N)+1,IN(M-1,N+1)+1)+1;

共生矩阵90度的计算式:

p1(IN(M,N)+1,IN(M-1,N)+1)= p1(IN(M,N)+1,IN(M-1,N)+1)+1;

共生矩阵135度的计算式:

p1(IN(M,N)+1,IN(M-1,N-1)+1)= p1(IN(M,N)+1,IN(M-1,N-1)+1)+1;

5.2 灰度共生矩阵法提取特征步骤

(1)图像灰度化 Gray=0.30R+0.59G+0.11*B;

(2)降低图像灰度等级,把图像256个灰度级按顺序分为8个区间;

(3)然后获得图像 0 度,45 度,90 度,135 度四个方向的灰度共生矩阵;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RzLNfacR-1638684025013)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3910.tmp.jpg)]

图26 0度方向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TwAiTYyR-1638684025015)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3911.tmp.jpg)]

图27 45度方向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwsCWOoy-1638684025017)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3912.tmp.jpg)]

图28 90度方向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gk2d7ZJR-1638684025020)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3922.tmp.jpg)]

图29 135度方向

(4)求每个灰度共生矩阵的纹理一致性,纹理对比度,纹理熵,纹理相关性;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bILYiyU9-1638684025022)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3923.tmp.jpg)]

图30 纹理参数

(5)求每个灰度共生矩阵的四个值的期望和标准差,得到8个特征值;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PgPTtm6-1638684025023)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3924.tmp.jpg)]

图31 计算期望与标准差

5.3 灰度共生矩阵法特征存储结果

灰度共生矩阵的特征值统一存放在数据库中,数据库的表名为texture,特征值分别为四个方向灰度共生矩阵四个属性的期望和标准差,id是每张图片的标号,path是每张图片存储地址,数据库表中具体信息如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W4K8f5mY-1638684025025)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3925.tmp.jpg)]

图32 texture表

同时也把这些特征值存在TextureFeature.txt文件中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPstS4RF-1638684025026)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3926.tmp.jpg)]

图33 TextureFeature.txt文件

5.4 相似度度量方法

对于纹理特征,选择的是用余弦相似度来进行相似度度量,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzNbbHj9-1638684025030)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3927.tmp.jpg)]

图34 余弦相似度

5.5 检索结果展示

选择图片后点击纹理检索后,就会出现如下结果,依次输出与被选择图片最相近的15张图片,同时输出相应的度量结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q5v9B4aG-1638684025032)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3928.tmp.jpg)]

图35 界面输出结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8hmmWsV-1638684025034)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3929.tmp.jpg)]

图36 前15张图片的度量结果

同时也保存了所有参与检索的图片的度量结果,存放在TextureResult.txt文件中,按照相似度度量结果进行排序,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIQiXtm4-1638684025035)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps392A.tmp.jpg)]

图37 所有图片的度量结果

6 基于形状特征的图像检索

6.1 形状不变矩法提取特征原理

形状是描述图像内容的本质特征, 在实际检索中, 很多查询可能并不针对图像的颜色, 因为同一物体可能有各种不同的颜色, 但其形状总是相似的。如检索某辆汽车的图像,汽车可以是红的、绿的等, 但形状决不会像飞机的外形。另外, 对于图形来说, 形状是它唯一重要的特征。目前用于图像检索的形状描述方法主要有两类:基于边缘和基于区域的形状方法。

作为一组关于形状的统计值,矩不变量的表示形式有多种,如 Hu 矩,具有对图像的旋转、平移和尺度变化的不变性。基本思想就是用图像的 Hu 不变矩 u1~u7 和离心率 e 作为图像的形状特征索引,使用适当的相似性距离定义,计算出两幅图像的相似性距离。当距离足够小时,就认为两幅图像是相似的。

Hu不变矩表征图像区域的几何特征,具有旋转、平移、尺度等特性的不变特征。矩在统计学中被用来反映随机变量的散布情形,推广到力学中,它被用作描绘空间物体的质量散布。同样的原理,如果将图像的灰度值看作是一个二维或三维的密度散布函数,那么矩方式即可用于图像剖析范畴并用作图像特征的提取。在图像处理领域,Hu不变矩可以作为目标物体的特征向量,用于物体的分类。

6.2 形状不变矩法提取特征步骤

(1)图像灰度化 Gray=0.30R+0.59G+0.11*B;

(2)用中值滤波算法对图像进行平滑滤波,用于消除噪声干扰,其中需要用到排序算法, 将 3*3 窗口的像素值进行排序取中间值;

(3)用 sobel 算子对图像进行锐化;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-km2QpD51-1638684025037)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps392B.tmp.jpg)]

图38 sobel算子锐化

(4)对锐化后的图像用迭代阈值法进行二值化;

①选择一个初始阈值 t1,根据 t1将图像分割为 G1和 G2两部分,G1包含所有小于等于 t1的像素,G2包含所有大于 t1像素;

②分别求出 G1和 G2的平均灰度值 u1和 u2;

③计算新的阈值 t2=( u1+ u2)/2;

④如果| t1- t2|<=t0(t0为预先指定的很小的正数),即迭代过程中前后两次阈值很接近时,中止迭代,否则 t1= t2,重复上述过程。

(5)计算图像的 Hu 不变矩作为特征值,并对其进行归一化;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jaCLbhTU-1638684025039)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps393C.tmp.jpg)]

图39 获取图像的区域重心

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDbNmxnp-1638684025040)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps393D.tmp.jpg)]

图40 计算不变矩

(6)将特征值存入数据库;

6.3 形状不变矩法特征存储结果

形状不变矩的特征值统一存放在数据库中,数据库的表名为shape,特征值分别为u1、u2、u3、u4、u5、u6、u7归一化之后的特征值,id是每张图片的标号,path是每张图片存储地址,数据库表中具体信息如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7vf3SKG-1638684025042)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps393E.tmp.jpg)]

图41 shape表

同时也把这些特征值存在ShapeFeature.txt文件中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kd8CHwqm-1638684025043)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps393F.tmp.jpg)]

图42 ShapeFeature.txt文件

6.4 相似度度量方法

对于形状特征,选择的是用余弦相似度来进行相似度度量,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqXbb5XC-1638684025045)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3940.tmp.jpg)]

图43 余弦相似度

6.5 检索结果展示

选择图片后点击形状检索后,就会出现如下结果,依次输出与被选择图片最相近的15张图片,同时输出相应的度量结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqYsL3ak-1638684025046)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3941.tmp.jpg)]

图44 界面输出结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1M84MDYO-1638684025048)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3942.tmp.jpg)]

图45 前15张图片的度量结果

同时也保存了所有参与检索的图片的度量结果,存放在ShapeResult.txt文件中,按照相似度度量结果进行排序,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KSKbSxs0-1638684025050)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3943.tmp.jpg)]

图46 所有图片的度量结果

7 基于phash的图像检索

7.1 感知哈希算法原理介绍

感知哈希算法是一类哈希算法的总称,其作用在于生成每张图像的“指纹”(fingerprint)字符串,比较不同图像的指纹信息来判断图像的相似性。结果越接近图像越相似。感知哈希算法包括均值哈希(aHash)、感知哈希(pHash)和dHash(差异值哈希)。
aHash速度较快,但精确度较低;pHash则反其道而行之,精确度较高但速度较慢;dHash兼顾二者,精确度较高且速度较快。
在得到64位hash值后,使用汉明距离量化两张图像的相似性。汉明距离越大,图像的相似度越小,汉明距离越小,图像的相似度越大。

7.2 phash算法哈希值计算步骤

(1)缩小尺寸。pHash以小图片开始,但图片大于88,3232是最好的。这样做的目的是简化了DCT的计算,而不是减小频率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vrz3lSux-1638684025052)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3954.tmp.jpg)]

图47 缩小尺寸至32*32的大小

(2)简化色彩。将图片转化成灰度图像,进一步简化计算量。

(3)计算DCT。DCT是把图片分解频率聚集和梯状形,虽然JPEG使用88的DCT变换,在这里使用3232的DCT变换。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtnsscTo-1638684025055)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3955.tmp.jpg)]

图48 离散余弦变换

(4)缩小DCT。虽然DCT的结果是3232大小的矩阵,但我们只要保留左上角的88的矩阵,这部分呈现了图片中的最低频率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXLJr9Tr-1638684025057)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3956.tmp.jpg)]

图49 缩小DCT

(5)计算平均值。如同均值哈希一样,计算DCT的均值。

(6)进一步减小DCT并计算hash值。

这是最主要的一步,根据8*8的DCT矩阵,设置0或1的64位的hash值,大于等于DCT均值的设为”1”,小于DCT均值的设为“0”。结果并不能告诉我们真实性的低频率,只能粗略地告诉我们相对于平均值频率的相对比例。只要图片的整体结构保持不变,hash结果值就不变。能够避免伽马校正或颜色直方图被调整带来的影响。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0m4LukHI-1638684025059)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3957.tmp.jpg)]

图50 计算hash值

7.3 哈希值存储结果

计算得到的哈希值统一存放在数据库中,数据库的表名为hash,hash为计算得到的哈希值,id是每张图片的标号,path是每张图片存储地址,数据库表中具体信息如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-smUuXZKz-1638684025061)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3958.tmp.jpg)]

图51 hash表

同时也把这些特征值存在HashFeature.txt文件中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PDrP7F0U-1638684025064)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3959.tmp.jpg)]

图52 HashFeature.txt文件

7.4 相似度度量方法

对于phash算法得到的哈希值,选择的是用汉明距离来进行相似度度量,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nedFmcRK-1638684025067)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps395A.tmp.jpg)]

图53 汉明距离

7.5 检索结果展示

选择图片后点击phash检索后,就会出现如下结果,依次输出与被选择图片最相近的15张图片,同时输出相应的度量结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvJtSBiH-1638684025069)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps395B.tmp.jpg)]

图54 界面输出结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzJnq4V7-1638684025072)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps395C.tmp.jpg)]

图55 前15张图片的度量结果

同时也保存了所有参与检索的图片的度量结果,存放在HashResult.txt文件中,按照相似度度量结果进行排序,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3EytDDOp-1638684025076)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps396C.tmp.jpg)]

图56 所有图片的度量结果

8 基于Hog和SVM的图像检索

8.1 Hog特征介绍

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。

在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。

由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性。

它的基本思想是利用梯度信息能很好的反映图像目标的边缘信息并通过局部梯度的大小将图像局部的外观和形状特征化。

把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。

例如,对于64128的图像而言,每22的单元(1616的像素)构成一个块,每个块内有49=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64128的图片,总共有367*15=3780个特征。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9KX1vUoZ-1638684025078)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps396D.tmp.jpg)]

图57 Hog特征提取流程

8.2 SVM算法介绍

给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。

如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的目标是要在n维的数据空间中找到一个超平面(hyper plane),将x的数据点分成两类,且超平面距离两边的数据的间隔最大。

训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以 SVM 不太容易产生过拟合。

SVM 训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。

一个 SVM 如果训练得出的支持向量个数比较少,那么SVM 训练出的模型比较容易被泛化。

8.3 基于Hog和SVM特征值提取步骤

(1)图像灰度化 Gray=0.30R+0.59G+0.11*B;

(2)计算每一个像素点的梯度;

(3)在单元内进行区间投影,计算投影和;

(4)在块内构建HOG特征;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uDYGeK50-1638684025080)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps396E.tmp.jpg)]

图58 计算Hog特征

(5)将HOG特征保存在txt中;

(6)对于HOG提取的特征进行SVM建模,生成对应模型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J8d1c6R4-1638684025082)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps396F.tmp.jpg)]

图59 建模并生成模型

8.4 Hog特征和模型存储结果

Hog特征存储在HogFeature.txt中,模型存储在model.txt中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KodUFIz8-1638684025084)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3970.tmp.jpg)]

图60 HogFeature.txt文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQpkQyQa-1638684025086)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3971.tmp.jpg)]

图61 model.txt文件

8.5 检索结果展示

首先对测试集提取Hog特征,存在HogTest.txt中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wFyFf4r-1638684025088)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3972.tmp.jpg)]

图62 HogTest.txt文件

之后运行主函数,选择测试集中的第一张图片,对整个测试集进行预测,并输出经过训练得到的SVM模型之后得到的预测标签,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KyQOmvNJ-1638684025089)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3973.tmp.jpg)]

图63 界面结果展示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PQWZcTml-1638684025092)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3974.tmp.jpg)]

图64 开始测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-grze3roI-1638684025093)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3985.tmp.jpg)]

图65 测试结束

同时把所有的测试结果存入predict.txt文件中,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yafyAgtb-1638684025094)(file:///C:\Users\User\AppData\Local\Temp\ksohtml\wps3986.tmp.jpg)]

图66 predict.txt文件

9 结果分析与心得体会

9.1结果分析

9.1.1颜色直方图和颜色中心矩的比较

由观察可以发现,颜色直方图的结果好于颜色中心距方法的检索结果。

颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。

颜色中心距的提取只有9个特征值,也不需要颜色空间量化,特征向量维数低;但实验发现该方法的检索效率比较低,因而在实际应用中往往用来过滤图像以缩小检索范围。

综合以上两点可以看出,如果检索图片与期望检索结果颜色分布相差不大,更适合用颜色直方图算法进行提取,而因为颜色中心距方法只有9个特征值,更适合做过滤。

9.1.2纹理特征与形状特征的结果分析

综合之前纹理特征结果发现,纹理特征检索并不能通过眼睛特别直观的看出,只能看出大致的纹理。从这个角度分析,基于纹理检索也较为准确。

通过之前形状特征的对比结果知道,形状单一,有球型和圆柱形,所以检索的几张图片都具有如下的特征,但是当图片形状比较多时,检索的结果不是很准确。综上所述,该形状检索比较适合形状不太多的图形,而不适合整体没有一个明显的框架。

9.1.3 phash特征提取的结果分析

通过之前hash检索的结果可以知道,在得到64位hash值后,使用汉明距离量化两张图像的相似性。汉明距离越大,图像的相似度越小,汉明距离越小,图像的相似度越大。

总体来说识别的效果还可以,但是仅限经过DCT之后图像的变换相差不大的图像,所以phash具备较好的对不同变化的抗干扰性,一般应用在要求不高的图像拷贝检索场景中。

9.1.4 Hog+SVM特征提取的结果分析

当种类数目增加时,SVM结果却不能令人满意。实验检索不准确原因可能是每一个集合内部图片数据差异过大,以至于SVM分析每个集合的特征时,不能找到完全能将102个集合分开的超平面。SVM在多值分类时并没有找到一个好的算法,比如可以需要每次计算一个类,作为正样本,其他所有类别作为负样本,如此循环,直至所有类型都充当正样本。但这个方法会造成负样本的数据量过多,而且有可能有些集合本身相差较近,可能会导致结果不准确。每次选一个类的样本作正类样本,而负样本则变成只选一个类,这可以解决之前所说的正负样本相差较大的问题,但是他执行的时间复杂度却平方次的上涨。

9.1.5 欧氏距离和余弦相似度的结果分析

余弦相似度通过计算检索原图和检索图库中向量的余弦夹角来判断检索结果,而欧式距离相似度计算如图14所示,在直方图中采用加权距离函数来突出前面特征的频率大的特点。

欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异。

余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。

9.2 心得体会

通过这次基于内容的图像检索系统的设计与实现,懂得了基于颜色特征检索的基本原理和具体方法,懂得每一步的具体操作,比如如何将RGB颜色特征转化为HIS颜色特征,如何提取每个方向的三个低阶矩,如何将计算出现频率高的像素值。通过对于颜色特征检索的两个方法颜色中心矩和颜色直方图得出:对于颜色相近的同分类图像更适合用颜色直方图,而颜色中心距适合做过滤操作。懂得了基于纹理特征检索的基本原理和方法,懂得如何计算4个度数的灰度共生矩阵,通过对于不同纹理图片检索结果的分析,该方法基本可以选择到纹理相近的图片,但由于光纤角度问题,检索同一类型的图片的结果不算理想。懂得了基于形状特征检索的基本原理和方法,明白如何计算不变矩的u1-u7,通过分析该方法:如果图像大体形状清晰,或者整体形状单一检索结果比较满意;如果形状比较复杂或者没有大体清晰轮廓,则不能很好的检测。懂得了基于phash的图像检索,学习了如何通过汉明距离去判断两幅图片的相似度。懂得了HOG+SVM检索过程和原理,懂得HOG特征提取的计算流程和个数计算。通过对比发现:如果类型比较多,或者每类的图片差异过大或者类与类之间差异较小都会使得结果不准确。

在之后的学习中,要继续优化纹理和形状特征的提取方法,找到如何将SVM进行多类分析的较为准确的算法,或者研究深度卷积神经网络在基于内容的图像检索的运用。

最后,感谢图像组所有的实训老师和其他同学在这次实验中给予我的帮助,不胜感激!

参考文献

[1]周明全, 耿国华, 韦娜. 基于内容图像检索技术[M]. 清华大学出版社, 2007.

[2]https://blog.csdn.net/discxuwei/article/details/5298893?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.compare

[3]L. Fei-Fei, R. Fergus and P. Perona. Learning generative visual models from few training examples: an incremental Bayesian approach tested on 101 object categories. IEEE. CVPR 2004, Workshop on Generative-Model Based Vision. 2004

[4]https://blog.csdn.net/dianyimo9099/article/details/101884358?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.compare

[5]项立明,基于内容的图像检索系统的设计与实现[M].软件工程师,2015

[6]https://blog.csdn.net/M_WBCG/article/details/75092947?utm_source=blogxgwz8

[7]https://www.cnblogs.com/yhzhou/p/9114958.html

[8]P. H. Chen, C. J. Lin, and B. Schölkopf, A tutorial on ν-support vector machines, Appl. Stoch. Models. Bus. Ind. 2005, 21, 111-136.

[9]C. J. C. Burges, A tutorial on Support Vector Machines for pattern recognition, Data Min. Knowl. Discov. 1998, 2, 121-167.

884358?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.compare

[5]项立明,基于内容的图像检索系统的设计与实现[M].软件工程师,2015

[6]https://blog.csdn.net/M_WBCG/article/details/75092947?utm_source=blogxgwz8

[7]https://www.cnblogs.com/yhzhou/p/9114958.html

[8]P. H. Chen, C. J. Lin, and B. Schölkopf, A tutorial on ν-support vector machines, Appl. Stoch. Models. Bus. Ind. 2005, 21, 111-136.

[9]C. J. C. Burges, A tutorial on Support Vector Machines for pattern recognition, Data Min. Knowl. Discov. 1998, 2, 121-167.

猜你喜欢

转载自blog.csdn.net/qq_44528283/article/details/121728730