【图像检索】基于matlab Hu不变矩图像检索【含Matlab源码 755期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、简介

1 案例背景
视觉通道是人类感知外部世界的主要入口,图像则是多维度信息最直接的表现方式,更有“一图值千金”的谚语。但是,图像往往包含较多的信息量,文本方式很难表达其全面内容,因此对图像信息进行检索很难进行抽象建模。此外,随着互联网信息技术的发展,如何有效地存储、检索海量图像数据也越来越引起人们的关注。因此,通过有效构建图像数据库,搭建图像检索引擎,高效地利用图像的关键数据信息,结合已有的搜索技术来实现海量图像的智能检索系统具有重要的现实意义。目前许多主流的搜索引擎均提供了图像搜索通道,如谷歌相似图搜索、百度识图等。搜索图像时不仅可以根据与图像相关联的文字信息来搜索,而且能够按照图像内容本身来搜索,具有很高的使用价值。
本案例介绍了基于内容的图像检索的基本知识,但主要研究的是基于形状的图像检索技术,通过提取图像特征并进行建库来进行智能检索。本案例选择以图像Hu不变矩特征为标准来进行图像检索,其基本步骤为:首先,对待检索图像利用边缘检测算子进行边缘检测;其次,利用Hu的7个不变矩作为形状特征向量;再次,进行图像的相似度匹配;最后, 在图像库中检索出最相近的Top 10图像序列作为检索结果。实验结果表明, 使用该算法可以有效地检索出相似的图像,具有一定的使用价值。

2 理论基础
随着人们对多媒体信息检索需求的不断增加,传统的基于人工注解的图像检索系统无法实现灵活、高效、准确的图像检索,已远远不能满足人们的需求。为此,研究者们提出了基于内容的图像检索(Content-based Imagine Retrieval, CBIR) , 该方法有效利用了图像自身特征并参考某些模式识别技术来进行高效能图像检索,其基本思路是:将图像的可视特征如颜色特征、纹理结构、边缘轮廓、位置关系等作为图像内容来进行匹配查找,利用已有的模式识别算法进行相似度计算,实现目标检索。其中,图像特征抽取和匹配完全可以借助于数字图像处理技术自动完成,节省了人工成本,提高了执行效率。图像变换在离散数据的条件下往往是不连续的,除平移变换外,旋转和尺度等变换均会导致图像的像素数目变化,从而使计算结果产生误差,而基于不变矩的形状描述可以在一定程度上保存原有的形状信息,具有稳定性,因此可以选择不变矩作为特征进行图像检索。在实际处理过程中,图像的大小可能会影响不变矩特征值,所以在进行图像相似性匹配之前应将图像库中的图像进行尺寸统一化操作,建立标准的图像库。以一幅彩色RGB图像为例, 计算其Hu不变矩特征量的过程为:首先, 将一幅彩色RGB的图像转换为灰度图像,对其进行二值化;然后,归一化二值图像的尺寸,提取边缘图像:最后,统一计算其Hu不变矩。其中,在得到二值边缘图像后,就可以利用不变矩的公式提取不变矩,组成特征向量。在实际处理过程中,考虑到图像库不变矩的计算复杂度较高,因此可以预先执行建库算法,提取其7个Hu不变矩特征,存放于图像的形状特征索引库中,将其提供给图像检索流程来执行图像查询,返回检索结果排序。其中,计算图像Hu不变矩并建库的过程如下所述。
(1)边缘图像
确定边缘提取算子对图像进行边缘提取,得到边缘图像。
(2)提取轮廓
确定边缘图像,并进行轮廓跟踪,得到外轮廓图像。
(3)细化轮廓
确定外轮廓图像,并进行预处理:首先,平滑轮廓得到连续的轮廓线,采用自适应二值化的方法二值化该轮廓线:然后,轮廓线细化操作:最后,提取连续平滑、单像素、二值化的外轮廓图像。
(4)目标区域
确定经过细化的外轮廓图像,并进行种子填充,获取图像的外轮廓线所包围的目标区域作为输入图像。
(5)不变矩计算
确定目标区域图像,并计算目标区域的7个Hu不变矩,将其构造成这幅图像的形状特征向量。
(6)归一化
确定形状特征向量,并对其进行内部归一化处理,将特征值存入图像特征库。

3 程序实现
3.1 图像预处理
图像预处理主要包括图像灰度化、二值化操作,为后续的不变矩计算提供了图像数据。本案例采用MATLAB库函数rbg2gray进行图像灰度化操作, 采用im2bw进行图像二值化操作。

3.2 计算不变矩
根据图像不变矩计算公式,可直接将图像视为数据矩阵进行计算。

3.3 图像检索
图像不变矩计算完毕后,就需要根据其特征数据进行图像检索。本案例对图像数据库进行特征计算、对比特征值向量、计算相关度来进行检索。

3.4 结果分析
图像检索完毕后,对检索结果根据其相关度排序并进行显示。
通过实验可以看出,选择Hu不变矩作为特征来进行图像检索具有执行效率高、检索结果有效的特点。对于不同的图像,经过一系列的预处理流程,计算其Hu特征向量,再与原图像库数据进行比较, 提取To pl 0结果图像作为输出, 能在一定程度上反映图像检索的流程,具有一定的使用价值。

⛄二、部分源代码

clc; clear all; close all;
warning off all;
filename = ‘待检索图像\im1.bmp’;
[I, map] = imread(filename);
I = ind2rgb(I, map);
I1 = Gray_Convert(I, 0);
bw1 = Image_Binary(I1, 0);
Hu = Compute_HuNicolas(bw1);
[resultNames, index] = CoMatrix_Process(filename, 1);
[fresultNames, index] = Hu_Process(filename, Hu, resultNames, index);
D = Analysis(filename, fresultNames, index, 1);
function [resultNames, index] = CoMatrix_Process(filename, flag)
if nargin < 2
flag = 1;
end
if nargin < 1
filename = ‘待检索图像\im1.bmp’;
end

resultValues = [];
resultNames = {};
files = ls(‘图片库\.’);

[queryx, querymap] = imread(filename);
if isempty(querymap)
[queryx, querymap] = rgb2ind(queryx, 256);
end
for i = 1 : size(files, 1)
file = fullfile(‘图片库\’, files(i, 😃);
[pathstr, name, ext] = fileparts(file);
if length(strtrim(ext)) > 3
[X, RGBmap] = imread(file);
HSVmap = rgb2hsv(RGBmap);
D = Compute_QuadDistance(queryx, querymap, X, HSVmap);
resultValues(end+1) = D;
resultNames{end+1} = {file};
end
end
[sortedValues, index] = sort(resultValues);
query = ind2rgb(queryx, querymap);
query = rgb2gray(query);
if flag
figure;
imshow(queryx, querymap);
title(‘待检索图像’, ‘FontWeight’, ‘Bold’);
figure;
set(gcf, ‘units’, ‘normalized’, ‘position’,[0 0 1 1]);
for i = 1 : 10
tempstr = cell2mat(resultNames{index(i)});
[X, RGBmap] = imread(tempstr);
img = ind2rgb(X, RGBmap);
subplot(2, 5, i); imshow(img, []);
img = rgb2gray(img);
dm = imabsdiff(query, img);
df = (1-sum(dm(😃)/sum(query(😃))100;
xlabel(sprintf(‘相似度:%.2f%%’, abs(df)), ‘FontWeight’, ‘Bold’);
str = sprintf(‘检索结果排序%d’, i);
title(str, ‘FontWeight’, ‘Bold’);
end
end
function Hu = Compute_HuNicolas(in_image)
format long
if ndims(in_image) == 3
image = rgb2gray(in_image);
else
image = in_image;
end
image = double(image);
m00=sum(sum(image));
m10=0;
m01=0;
[row,col]=size(image);
for i=1:row
for j=1:col
m10=m10+i
image(i,j);
m01=m01+jimage(i,j);
end
end
u10=m10/m00;
u01=m01/m00;
n20 = 0;
n02 = 0;
n11 = 0;
n30 = 0;
n12 = 0;
n21 = 0;
n03 = 0;
for i=1:row
for j=1:col
n20=n20+i^2
image(i,j);
n02=n02+j^2image(i,j);
n11=n11+i
jimage(i,j);
n30=n30+i^3
image(i,j);
n03=n03+j^3image(i,j);
n12=n12+i
j^2image(i,j);
n21=n21+i^2
jimage(i,j);
end
end
n20=n20/m00^2;
n02=n02/m00^2;
n11=n11/m00^2;
n30=n30/m00^2.5;
n03=n03/m00^2.5;
n12=n12/m00^2.5;
n21=n21/m00^2.5;
h1 = n20 + n02;
h2 = (n20-n02)^2 + 4
(n11)^2;
h3 = (n30-3n12)^2 + (3n21-n03)^2;
h4 = (n30+n12)^2 + (n21+n03)^2;
h5 = (n30-3n12)(n30+n12)((n30+n12)2-3*(n21+n03)2)+(3n21-n03)(n21+n03)(3*(n30+n12)2-(n21+n03)2);
h6 = (n20-n02)((n30+n12)2-(n21+n03)2)+4n11*(n30+n12)(n21+n03);
h7 = (3
n21-n03)(n30+n12)((n30+n12)2-3*(n21+n03)2)+(3n12-n30)(n21+n03)(3(n30+n12)2-(n21+n03)2);
Hu = [h1 h2 h3 h4 h5 h6 h7];

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]阿卜杜如苏力·奥斯曼.综合颜色特征与形状特征的图像检索算法[J].计算机工程与应用. 2013,49(07)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值