原型基于颜色的图像检索与MATLAB

news2024/10/18 6:15:29

原型基于颜色的图像检索与MATLAB

摘要

  基于内容的检索数据库(图像)已经变得越来越受欢迎。为了达到这一目的,需要发展算法检测/模拟工具,但市场上没有合适的商业工具。

本文介绍了一个模拟环境,能够从数据库中检索图像直方图的相似之处。该环境允许使用不同的色彩空间及柱,通过MATLAB实现算法。每一种颜色体系都有自己的m-files文件。

  这个阶段的软件建设过程是从系统出发设计的pre-sented图形用户界面(GUI),对GUI作了简短的功能描述。

1.介绍

  现阶段图像数据库有成千上万的数字图像,如果用户想要找一个适合他/她目的的图象,他/她必须寻遍整个数据库直到检索出正确的图片,或使用相关资料或者一些智能软件。为了最终用户,视频点播服务也需要一个智能搜索系统。视频点播系统的检索方式与图像数据库检索方式略有不同。

  如果图像采用一个有效的方法排列,一些相关资料是一个不错的选择,例如:1)X畴:动物、旗帜等等;2)名字(需要一个好的命名法);3)日期:一位有经验的用户可以如同文本检索(关键词必须插入一个数据库)一样,有效地运用这些系统。还有使用多语言系统的情况。一种基于图象特性的工具可以是语言独立的,一种独立语言系统可以利用最佳属性进行搜索,这些属性可以有颜色、形态、质感、空间定位的形状等。

  在MuVi-project中,这种工具正在建设中,它涵盖了以上各种性质。对基于内容的图像检索的研究工作,已经在文献[2 - 6]中完成了。该系统,文中已经提到过,是一种模拟环境,在它上面,基于颜色内容检索的MuVi已经开发并测试了。

2. 系统开发

MATLAB是一种有效的矢量和矩阵的数据处理程序。它包含了完整的矩阵运算函数和图像可视化功能且允许程序有模块化结构。因为以上这些因素,MATLAB被选为原型软件。

2.1系统设计

要在撰写m-files之前,完成这个系统设计。HSV(色调、饱和度、亮度)系统设计,颜色系统检索过程如图1。类似的设计已为所有颜色系统使用。

   图1:HSV颜色空间及27个柱的流程图。

Tesths27是这个颜色系统及这些柱的最主要功能。它可以根据需要调用其他功能(hs27read,dif_hsv和image_pos)。每个颜色系统都有自己的主要功能和可变数目(2-3)的子功能。如果需要颜色空间转换,在功能表的第一个分支上有两个或者三个此功能。

主函数的调用功能:

matches=tesths27(imagen,directory,num)

imagen指定变量名称及查询图像的路径。

Directory是图像数据库的路径,num是图像检索的预期数字。

2.2功能

到目前为止已实现了四个色彩空间:HSV、L*a*b*、RGB和 XYZ。每一种颜色空间已从2到4实现了不同数量的柱。共计14个主要功能。

  对于某些颜色系统使得这些动态功能成为可能,即动态直方图计算。每个颜色系统/柱组需要依靠自身直方图,这些可以仅用一个详尽的方法(像素x像素)实现。直方图计算每X图片要花费½- 5分钟,每X大约320×240个像素,根据每150MHz 奔腾上,颜色空间的复杂性。因此让每个用户自由选择每个柱的编号是不切实际的,特别是在大型数据库。

这些函数之所以如此命名,是因为这些名称当中包含了色彩空间的选择,函数功能柱的数目。一些函数,比如image_pos已经应用于许多或许所有的主函数当中,并且这些函数并未按照上述方法命名。

  主函数的功能测试,如果这个函数调用是正确的。如果这个查询图像的名字不包含路径,该函数就会默认图像位于数据库目录下。除此之外,最主要的功能测试,查询图像的直方图是否已经位于当前数据库中。如果被查询的直方图不在数据库中,则调用图像读取(例如hs27read)函数。该函数还可以使像素值规格化,以及将图像矩阵数据矢量化。该阶段之后,将调用一个颜色空间转换函数(如有需要)。最后调用一个量化函数根据正确数目的柱建立直方图。

该直方图将被保存到数据库目录下。如果直方图已经存在,之前的三步骤将不会被执行。现在对这个查询图像的已经完成分析。然后主函数将依照查询图像,采用相似性算法,将图像数据库目录下的所有图像检索一遍,不同的是,现在将会在当前的检索图像直方图与查询图像直方图之间有一个的差异计算。最后image_pos函数将查询图像以及检索出来的要求数目的相似图像显示出来。

2.3在主函数和子函数未之前要运行一个程序是不可能的。主函数将通过命令行或通过图形用户界面调运,本文将后面陈述。这两种函数调用的原理相同。对于多级搜索功能分开的主要函数已经实现,但它可以利用普通程序并添加一个参数,其中最匹配的数组可以转为第二阶段的比较函数。
主要的函数通过图像名称调用图像阅读取函数,直方图将返回到主函数。如果需要彩色空间转换,转换函数被读取函数通过R、G、B向量调用。直方图将返回到调用函数。最后,将通过转换后的颜色向量,调用直方图建立函数。该函数返回一个量化的直方图,它将遍历调用所有函数,直到实现主函数。
主要函数根据两个直方图向量,调用直方图差函数,并响应一个得到的差值。差值函数使用欧氏距离计算,但它可以依据程序的模块性很容易地更改为另一种算法。如果差值小于最佳匹配表中的最大差值,该结果将覆盖最佳匹配表中的最后一条纪录。最后,再将该表按照差值大小升序排列。当所有的图像分析完成后,最佳匹配的排序表,在所需的输出图像的数量,查询图像的名称,检索图像的路径和数据库路径均传递给image_pos函数。这些值可以传递到更大的组件(向量/容器)。现在,可以通过输入几个参数而快速实现,不需要从容器中查找变量。

2.4图形用户界面

图形用户界面(GUI)是一个软件开发的重要组成部分。该图形用户界面设计要解决以下问题:学习时间,速度的性能,用户的错误率,随着时间的推移保留和主观满意度。该软件目前仅预期用于测试目的,该软件最重要的性能是可以快速看到不同的测试查询的结果,且结果可以安全地保存在磁盘上。因此,可视化设计倒不如商业软件产品来得重要。
在图2中呈现的屏幕是基于GUI的,按钮、菜单和其他组件的功能将稍后介绍。如果这个软件要开发成商业产品,菜单栏将被禁用,并将在画布上添加退出和帮助按钮。

图2:选择查询图像之前的GUI。

图3查询界面在开始查询之前弹出。该用户选择一个查询图像,这样他/她可以断定,查询到正确的图像。

图3:进行查询之前的GUI。

数据的结果将以图像6中的界面显示出来。

3. 软件的使用

  第一个界面已经出现在图2当中。用户可以从弹出式菜单中选择(见下图),如果该系统是单色或多级检索系统。在一个一级检索系统中一个粗量化或更精确的直方图从一次循环(一种颜色系统)中得到。

图4:系统颜色选择从弹出式菜单当中。
菜单中的第二项被禁用,因为选择了单级检索。  

 在一个多级检索当中,使用两种不同颜色系统/颜色直方图。在第一循环中,得到粗量化直方图,在第二重循环中,为了最佳匹配利用第一次循环从而得到更准确直方图。颜色系统的第二个循环可以与第一个循环相同或不同。对于一级检索,二级颜色系统的选择被禁用。用户可以选择图像检索在最后阶段的数目。该软件可以到许多图像数据库,用户可以选择设定数据库用来查询。
 用户选择一个查询图像,可以从查询设定的同一(默认)数据库当中或从他/她的PC下的任意目录中,该选择将以图5中的文件-打开对话框出现,该列表可以通过“重置”按钮被清除,通过“检索”按钮可以执行检索。最后,搜索结果将以一个独立的窗口显示在屏幕上的,如图6。早些时候,该软件将每一X图都以一个独立窗口打开,计算和保存结果都比改进之后更困难。在顶部左上角是原来的查询的图像,在该图像的下面是从左到右、从上到下,按照相似度降序排列的最佳匹配图像。用户可以进一步使用“复制选择”或 “打印选择”按钮选择合适的图像。 “新检索”按钮将关闭此列表,并又回到了原来的搜索列表。 “相似检索”按钮执行一个新的检索在查询直方图是由所有选定图像的直方图组成时。如果用户选择了更大的数目超过了21,作为“匹配图像组”,最佳匹配将在多级界面上显示。用户可以通过“上一页”和“下页” 按钮浏览页面。


图5:选择查询图片对话框。对话框的语言决于操作系统使用的语言。


图6:查询结果以列表方式。


4. 摘要
基于颜色内容的检索需要能提供直观正确结果的算法,在模拟前不能选择正确运算的算法。本文介绍的软件以测试为目的的。一些功能还能够扩展,假如该软件想要开发成商业产品,一些修改正在逐步实施过程。该软件已被用来作为直方图量化测试的测试平台。该软件的模块化使得在新算法能够在很短的时间内成为软件的一部分。MATLAB的使得快速原型的建造成为可能,使得直接在磁盘上快速保存数据(检索结果),实现了软件的要求。在结果可视化分析完成之后,最佳算法将成为这个最终软件的一部分。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2217583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习率 Learing Rate 的调整

🚀 机器学习系列前期回顾 1、初识机器学习 2、线性模型到神经网络 3、local minima 的问题如何解决 4、batch和momentum 🚀在初识机器学习中,了解了机器学习是如何工作的并引入了线性模型, 🚀在线性模型到神经网络这节…

远控代码的重构-远控网络编程的设计上

套路化代码 但是我们这是一个MFC工程,我们需要考虑不是所有操作都需要到main函数里面实现,有些操作可以在main函数之前完成,有些可以在main函数返回以后完成,静态全局变量满足这个需求,我们需要添加一个自己的类 编辑器细节1 添加类和添加类向导的区别,一个是添加自己的类,一…

Python之爬虫读取网页数据

目录: 1、简介2、代码示例3、验证4、项目示例5、网页数据提取 1、简介 选择Python作为爬虫开发的首选语言‌,主要是因为Python具有简洁易学的语法、丰富的库支持、跨平台特性、强大的社区支持、动态类型、可扩展性以及异步编程支持等优势。‌ ‌简洁易学…

4.7 大数据应用场景

文章目录 今天,我非常荣幸能与大家分享一个充满潜力和变革的主题——大数据的应用场景。在这个信息爆炸的时代,大数据已经成为推动各行各业发展的重要驱动力。接下来,我将带领大家探索大数据在不同行业中的神奇应用。 首先,让我们…

计算机领域快刊合集,无版面费,初审仅2天!

投稿选刊不迷路,就到科检易学术 本期主要给大家介绍,计算领域方向的期刊,无需版面费,非常适合正在毕业or晋升的学者。 期刊一 APPLIED INTELLIGENCE IF:3.4 JCR2区中科院3区 【自引率】11.8% 【年发文量】1000篇左右 初审…

python函数返回值是什么

函数返回值简介 1、简单介绍print和return的区别,print仅仅是打印在控制台,而return则是将return后面的部分作为返回值:作为函数的输出,可以用变量接走,继续使用该返回值做其它事。 2、函数需要先定义后调用&#xf…

详解Oracle审计(二)

题记: 本文将承接上篇详细介绍oracle的审计功能,基于11g版本,但对12c,19c也同样适用。 1. 语句审计实操演示实例 sqlplus / as sysdba show parameter audit_trail alter system set audit_traildb_extended scopespfile; star…

从0开始深度学习(11)——多层感知机

前面介绍了线性神经网络,但是线性模型是有可能出错的,因为线性模型意味着是单调假设,但是现实中往往很复杂。例如,我们想要根据体温预测死亡率。 对体温高于37摄氏度的人来说,温度越高风险越大。 然而,对体…

LeetCode 3200.三角形的最大高度:枚举

【LetMeFly】3200.三角形的最大高度:枚举 力扣题目链接:https://leetcode.cn/problems/maximum-height-of-a-triangle/ 给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行…

远距离长航时低成本泡沫垂直起降固定翼无人机技术详解

关于远距离长航时低成本泡沫垂直起降固定翼无人机技术,以下是一个详细的技术解析: 一、技术概述 远距离长航时低成本泡沫垂直起降固定翼无人机是一种结合了垂直起降技术和固定翼设计优势的无人机系统。该技术通过采用泡沫材料制造无人机机体&#xff0…

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中,完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台工具生成的IPA文件,上传到App Store的流程都是类似的。苹果…

车易泊车位管理相机 —— 智能管理,停车无忧

在现代城市生活中,停车问题一直是困扰着车主和城市管理者的难题。车位难找、停车管理混乱等问题不仅浪费了人们的时间和精力,也影响了城市的交通秩序和形象。而车易泊车位管理相机的出现,为解决这些问题提供了一种高效、智能的解决方案。 一、…

DataWhale10月动手实践——Bot应用开发task03学习笔记

一、工作流 1. 工作流的定义 工作流由多个节点组成,这些节点可以包括大语言模型(LLM)、代码模块、逻辑判断工具、插件等。每个节点需要不同的信息来执行其功能。工作流的核心含义是:对工作流程及其操作步骤之间的业务规则进行抽…

无人机之位置信息计算篇

一、主要导航技术 卫星导航 全球定位系统(GPS):无人机上装有专门的接收器,用于捕获GPS系统发射的无线电信号。当无人机接收到来自至少四颗卫星的信号时,通过计算信号抵达时间的微小差异,即可运用三角定位…

SQL语句查询

SQL语句查询 查询产生一个虚拟表 看到的是表形式显示的结果&#xff0c;但结果并不真正存储 每次执行查询只是从数据表中提取数据&#xff0c;并按照表的形式显示出来 查询语法 SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] SELECT …

插齿刀的齿数选择不同会有什么影响?

插齿——作为一种常用的制齿手段&#xff0c;经常被用到有台肩的齿轮以及空刀槽很窄的双联或多联齿轮&#xff0c;以及各种内齿加工中。虽然强力车齿在现在应用的越来越多了&#xff0c;但是插齿这种加工应该在相当长的一段时间内还是会继续服役的。中这期咱们聊聊插齿刀齿数对…

显示指定目录下所有.c文件中出现指定字符串的行号 Linux环境 C语言实现

问题&#xff1a;显示指定目录及其后代目录下所有.c文件中出现指定字符串的行号 算法&#xff1a; 分为两个文件编写 &#xff1a; display_string_lineno.c &#xff0c; Read_line.c 分为三个函数编写 &#xff1a; void display_lineno(char* dirname,const char *pstr)…

sankey.top - 桑基图/桑吉图/流程图/能量流/物料流/能量分析

sankey.top 桑基图大师(SankeyMaster)是您创建复杂桑基图表的首选工具。轻松输入数据并创建桑基图表&#xff0c;准确揭示复杂的数据关系&#xff01; 应用 https://apps.apple.com/cn/app/sankeymaster-sankey-diagram/id6474908221 在线编辑器 https://studio.sankeymaste…

解决ultralytics中的YOLOv8在执行task.py文件添加模块操作出现的KeyError报错

报错详情&#xff1a; 在ultralytics项目文件夹内运行/home/xxx/ultralytics/train.py进行单GPU训练的时候训练可以正常进行 from ultralytics import YOLO# Load a model model YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/v8/yolov8s-FASFF.yaml") # …

Github学生包的JetBrains认证过期/idea认证过期如何解决?

官网通过Github更新状态即可JetBrains Account 注意要到邮箱走流程