颜色识别基于高斯混合模型(GMM)的查找表分类器(LUT)

文章目录

  • create_class_gmm 创建高斯混合模型(GMM)以进行分类任务
  • add_samples_image_class_gmm 提取训练样本,并将其添加到高斯混合模型 (GMM) 的训练数据集中
  • train_class_gmm 训练一个高斯混合模型 (GMM)
  • clear_class_gmm 清除模型
  • create_class_lut_gmm 基于已训练的高斯混合模型 (GMM) 创建一个查找表 (LUT),用于分类字节图像
  • classify_image_class_lut 使用查找表 (LUT) 分类器对字节图像进行分类。
  • clear_class_lut 清除分类器
  • 示例

create_class_gmm 创建高斯混合模型(GMM)以进行分类任务

create_class_gmm( : : NumDim, NumClasses, NumCenters, CovarType, Preprocessing, NumComponents, RandSeed : GMMHandle)NumDim (输入控制):指定特征空间的维度数量。这是用来对数据点进行分类的特征或属性的数量。NumClasses (输入控制):定义 GMM 应该能够区分的不同类别的数量。每个类别代表分类任务中的一个不同的类别或标签。NumCenters (输入控制):为每个类别指定中心的数量。这些中心代表每个类别的高斯分布的均值位置。可以为每个类别指定不同的中心数量。CovarType (输入控制):设置协方差矩阵的类型。这决定了每个高斯分布形状的复杂度。可选值包括:'spherical':球形协方差,表示各方向上的方差相同。'diag':对角线协方差,表示各方向上的方差不同但相互独立。'full':完全协方差,表示各个方向上都有不同的方差并且方向之间有相关性。Preprocessing (输入控制):指定用于变换特征向量的预处理类型。预处理可以改善分类性能。可选值包括:'normalization':归一化,将所有特征缩放到相同的尺度。'principal_components':主成分分析,使用主成分分析来减少特征维数。'canonical_variates':规范变量,使用规范变量分析来减少特征维数并最大化类别间的差异。'none':不进行预处理。NumComponents (输入控制):如果选择了 'principal_components''canonical_variates' 预处理方法,则需要指定转换后的特征数量。当预处理为 'none''normalization' 时,此参数被忽略。RandSeed (输入控制):设置随机数生成器的种子值,用于初始化 GMM 的随机值。这有助于复现实验结果。GMMHandle (输出控制):返回创建的 GMM 的句柄,以便后续操作使用。

add_samples_image_class_gmm 提取训练样本,并将其添加到高斯混合模型 (GMM) 的训练数据集中

add_samples_image_class_gmm(Image, ClassRegions : : GMMHandle, Randomize : )Image (输入对象): 这是用于训练的图像。通常是一张或多张通道的图像,如灰度图像、彩色图像等。ClassRegions (输入对象): 这是包含各个类别区域的区域数组。每个区域对应于图像中的一个类别或类别的一部分。这些区域通常是由用户手动标注或者通过其他方法自动分割得到的。GMMHandle (输入控制, 状态被修改): 这是之前使用 create_class_gmm 创建的 GMM 的句柄。此操作符会修改这个 GMM 的状态,即向其中添加训练样本。Randomize (输入控制): 这是一个实数值,表示要添加到训练数据中的高斯噪声的标准差。默认情况下为 0.0,意味着不添加任何噪声。可以通过添加一定标准差的高斯噪声来增强模型的鲁棒性,使其能够在面对噪声数据时有更好的表现。

train_class_gmm 训练一个高斯混合模型 (GMM)

train_class_gmm( : : GMMHandle, MaxIter, Threshold, ClassPriors, Regularize : Centers, Iter)GMMHandle (输入控制, 状态被修改): 这是之前使用 create_class_gmm 创建的 GMM 的句柄。此操作符会修改这个 GMM 的状态,即对其进行训练。MaxIter (输入控制): 指定期望最大化算法的最大迭代次数。这是一个整数值,用于控制训练过程中的最大迭代轮数。Threshold (输入控制): 设置期望最大化算法终止的相对误差阈值。当连续两次迭代之间的变化小于这个阈值时,算法将停止。这是一个实数值,取值范围为 [0.0, 1.0]ClassPriors (输入控制): 确定类别先验概率的方式。可以选择以下两种模式:'training': 根据训练数据中的类别频率计算先验概率。'uniform': 所有类别的先验概率相等。Regularize (输入控制): 为了防止协方差矩阵奇异而使用的正则化值。这是一个实数值,用于调整协方差矩阵中的对角元素,以确保其非奇异。取值范围为 [0.0, 1.0)Centers (输出控制): 训练完成后每个类别找到的中心数量。这是一个整数数组,长度与类别数量相同。Iter (输出控制): 每个类别执行的实际迭代次数。这也是一个整数数组,长度与类别数量相同。

clear_class_gmm 清除模型

clear_class_gmm( : : GMMHandle : )

create_class_lut_gmm 基于已训练的高斯混合模型 (GMM) 创建一个查找表 (LUT),用于分类字节图像

create_class_lut_gmm( : : GMMHandle, GenParamName, GenParamValue : ClassLUTHandle)GMMHandle (输入控制): 这是已经使用 train_class_gmm 训练好的 GMM 的句柄。该 GMM 用于生成 LUT 分类器的基础。GenParamName (输入控制): 一个字符串数组,包含通用参数的名字,这些参数可以在创建 LUT 分类器时进行调整。可选的参数名称包括:'bit_depth': 表示用于创建 LUT 的位深度。'class_selection': 控制如何选择类别进行分类。例如,可以选择“fast”快速选择或者“best”最佳选择。'rejection_threshold': 设置拒绝阈值,用于确定哪些像素应该被拒绝分类。GenParamValue (输入控制): 一个数组,包含与 GenParamName 中指定的通用参数相对应的值。这些值可以根据具体的应用场景进行调整。ClassLUTHandle (输出控制): 返回创建的 LUT 分类器的句柄,用于后续的分类任务。

classify_image_class_lut 使用查找表 (LUT) 分类器对字节图像进行分类。

classify_image_class_lut(Image : ClassRegions : ClassLUTHandle : )Image (输入对象): 这是需要分类的输入字节图像。也可以接受多通道图像。ClassRegions (输出对象): 输出的是分割出的区域数组,代表图像中分类后的各个区域。每个区域对应于图像中的一个分类结果。ClassLUTHandle (输入控制): 这是之前使用 create_class_lut_gmm 创建的 LUT 分类器的句柄。此操作符使用该分类器对图像进行分类。

clear_class_lut 清除分类器

clear_class_lut( : : ClassLUTHandle : )

示例

在这里插入图片描述

* In this example five different color fuses are segmented with
* a look-up table classifier (LUT) based on a Gaussian Mixture
* Model (GMM).
* 读取图片
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 800, 600, 'white', WindowHandle)
dev_set_draw ('margin')
ImageRootName := 'color/color_fuses_0'
FuseTypes := [5,10,15,20,30]
FuseColors := ['Orange','Red','Blue','Yellow','Green']
FuseHighlight := ['orange','red','blue','goldenrod','forest green']
DisplayTextShift := [85,65,75,85,85]
dev_set_color ('white')
dev_set_line_width (2)
read_image (Image, ImageRootName + '0')
dev_display (Image)
* 
* Define ROIs for the training data of the classifier
* 定义ROI 进行颜色分类
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
gen_rectangle1 (FuseOrange, 195, 90, 230, 120)
dev_display (FuseOrange)
disp_message (WindowHandle, 'Orange Fuse', 'image', 160, 90 - 65, 'black', 'true')
gen_rectangle1 (FuseRed, 191, 280, 226, 310)
dev_display (FuseRed)
disp_message (WindowHandle, 'Red Fuse', 'image', 160, 280 - 55, 'black', 'true')
gen_rectangle1 (FuseBlue, 190, 470, 225, 500)
dev_display (FuseBlue)
disp_message (WindowHandle, 'Blue Fuse', 'image', 160, 470 - 60, 'black', 'true')
gen_rectangle1 (FuseYellow, 192, 672, 227, 702)
dev_display (FuseYellow)
disp_message (WindowHandle, 'Yellow Fuse', 'image', 160, 672 - 70, 'black', 'true')
gen_rectangle1 (FuseGreen, 197, 880, 232, 910)
dev_display (FuseGreen)
disp_message (WindowHandle, 'Green Fuse', 'image', 160, 880 - 65, 'black', 'true')
* 产生一个空的分类
gen_empty_obj (Classes)
* 将颜色逐一访日
concat_obj (FuseOrange, FuseRed, Classes)
concat_obj (Classes, FuseBlue, Classes)
concat_obj (Classes, FuseYellow, Classes)
concat_obj (Classes, FuseGreen, Classes)
disp_message (WindowHandle, 'ROIs for the training data', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* Create the GMM classifier, add the samples, and train it
* 创建模型
create_class_gmm (3, 5, 1, 'full', 'none', 3, 42, GMMHandle)
* 将图片和归类放入模型
add_samples_image_class_gmm (Image, Classes, GMMHandle, 0)
disp_message (WindowHandle, 'Training GMM classifier...', 'window', 48, 12, 'black', 'true')
* 进行高斯训练
train_class_gmm (GMMHandle, 100, 0.001, 'training', 0.001, Centers, Iter)
* 
* Create the GMM-based LUT classifier
disp_message (WindowHandle, 'Creating LUT classifier...', 'window', 84, 12, 'black', 'true')
* 创建分类器
create_class_lut_gmm (GMMHandle, ['bit_depth','rejection_threshold'], [6,0.03], ClassLUTHandle)
* 清除高斯句柄
clear_class_gmm (GMMHandle)
* 
* Segment images with LUT classifier
for Img := 0 to 3 by 1read_image (Image, ImageRootName + Img)count_seconds (T1)* 进行分类classify_image_class_lut (Image, ClassRegions, ClassLUTHandle)count_seconds (T2)TimeToClassify := (T2 - T1) * 1000dev_display (Image)dev_set_line_width (3)for Fuse := 1 to 5 by 1* * Perform post-processing on returned classescopy_obj (ClassRegions, ObjectsSelected, Fuse, 1)* 闭运算先膨胀再腐蚀closing_circle (ObjectsSelected, RegionClosing, 3.5)* 形成单独的连通域connection (RegionClosing, ConnectedRegions)* 选取像素点的大小select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2500, 99999)*进行填充fill_up (SelectedRegions, RegionFillUp)* 获取坐标点的位置area_center (RegionFillUp, Area, Row, Column)* 包凸shape_trans (RegionFillUp, RegionTrans, 'convex')dev_set_color (FuseHighlight[Fuse - 1])dev_display (RegionTrans)* disp_message (WindowHandle, FuseColors[Fuse - 1] + ' ' + FuseTypes[Fuse - 1] + ' A', 'image', Row - 10, Column - DisplayTextShift[Fuse - 1], FuseHighlight[Fuse - 1], 'white')endfordisp_message (WindowHandle, TimeToClassify$'.1f' + ' ms', 'window', 12, 12, 'black', 'true')if (Img < 3)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif
endfor
* 
clear_class_lut (ClassLUTHandle)
disp_message (WindowHandle, 'No more lines to execute', 'window', 50, 12, 'black', 'true')

在这里插入图片描述

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

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

相关文章

Fiddler学习笔记

目录 前言 简介 原理 界面 前言 测试可以使用fiddler工具&#xff0c;通过抓包的方式修改前端参数和模拟后端返回&#xff0c;快速定位缺陷。 简介 Fiddler是HTTP协议调试代理工具&#xff0c;可以记录并检查所有客户端和服务器之间的HTTP和HTTPS请求&#xff0c;允许监视…

题解 - 修改回文(二)(上海月赛2024.7乙组T4)

题目描述 给定一个仅由小写字母组成的字符串 s &#xff0c;你可以添加一些字符&#xff08;也可以不加&#xff09;&#xff0c;使其构成回文串。 请你输出在添加字符数最少的前提下&#xff0c;能够构成字典序最小的回文串。 输入格式 输入共一行&#xff0c;一个字符串 s…

快速幂算法

函数 pow_mod 计算 (x^y \mod \text{mod}) 的值&#xff0c;其中 (x) 是基数&#xff0c;(y) 是指数&#xff0c;(\text{mod}) 是模数。它使用的是“快速幂”算法&#xff0c;这是一种高效计算大整数幂的方法&#xff0c;并在每一步计算中都取模以防止溢出。这个算法的时间复杂…

Python seaborn美化篇-风格style

本文分享Python seaborn中通过风格style美化图形。 风格(style),用于设置the general style of the plots,例如,图中网格线是否开启、颜色、线宽等。 5.2 style设置图形通用样式 5.2.1 axes_style查看style内容 一张图的style包含的内容可通过axes_style()查看, sns…

2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛补题3、4)

题4&#xff1a;RC-u4 章鱼图的判断 分数 25 题目&#xff1a; 对于无向图 G(V,E)&#xff0c;我们将有且只有一个环的、大于 2 个顶点的无向连通图称之为章鱼图&#xff0c;因为其形状像是一个环&#xff08;身体&#xff09;带着若干个树&#xff08;触手&#xff09;&a…

QT报红色错误,实际可以编译

QT报红色错误&#xff0c;实际可以编译&#xff0c;看着难受&#xff0c;如何去掉报警 进入插件 勾选框去掉&#xff0c;然后重启QT

Java——循环控制for,while,do...while

目录 1.for循环控制 基本介绍 基本语法 流程分析 案例演示&#xff1a; 注意事项和细节说明 练习题 2.while循环控制 基本语法 流程图 案例演示1 注意事项和细节说明 案例演示2 ​3.do...while循环控制 基本语法 说明 流程图 注意事项和细节说明 练习题…

杂项运算符及运算符的优先级

文章目录 常见的杂项运算符运算符的优先级特殊运算符运算符重载运算符的结合性实际应用中的注意事项1. 空条件运算符 (Null Coalescing Operator)JavaScript 示例: 2. 范围运算符 (Range Operator)Swift 示例: 3. 模式匹配运算符 (Pattern Matching)Rust 示例: 4. 解构赋值运算…

电信运营商推销套餐涉嫌侵犯消费者权益,如何维护自身权益?

近日&#xff0c;有消费者反映某电信运营商在推荐业务时存在误导和欺骗行为&#xff0c;侵犯了消费者的合法权益。本文将分析该事件中运营商的违规行为&#xff0c;以及消费者可以采取的维权措施。 一、运营商涉嫌违规的行为 1. 误导推销&#xff0c;未充分履行告知义务 工作…

2024年获客新渠道,大数据爬虫获客:技术实现精准抓取数据资源

**2024年获客新渠道&#xff1a;大数据爬虫获客及技术实现精准抓取数据资源** ### 一、大数据爬虫获客概述 在2024年&#xff0c;随着大数据技术的不断发展和互联网的普及&#xff0c;大数据爬虫获客已经成为企业获取客户信息、实现精准营销的重要渠道。爬虫技术通过自动化程…

C# 12 新增功能实操!

前言 今天咱们一起来探索并实践 C# 12 引入的全新功能&#xff01; C#/.NET该如何自学入门&#xff1f; 注意&#xff1a;使用这些功能需要使用最新的 Visual Studio 2022 版本或安装 .NET 8 SDK 。 主构造函数 主构造函数允许你直接在类定义中声明构造函数参数&#xff0c;…

从零开始编写一个Chrome插件:详细教程

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

Pytorch笔记1

建议点赞收藏关注&#xff01;持续更新至pytorch大部分内容更完。 整体框架如下 目录 gpu加速数据数据结构张量TensorVariable 预处理数据增强 模型构建模块组织复杂网络初始化网络参数定义网络层 损失函数创建损失函数设置损失函数超参数选择损失函数 优化器管理模型参数管理…

“八股文”:程序员的福音还是梦魇?

——一场关于面试题的“代码战争” 在程序员的世界里&#xff0c;“八股文”这个词儿可谓是“如雷贯耳”。不&#xff0c;咱们可不是说古代科举考试中的那种八股文&#xff0c;而是指程序员面试中的那些固定套路的题目。如今&#xff0c;各大中小企业在招聘程序员时&#xff0…

无为自然与机巧器械

无为自然与机巧器械 一天&#xff0c;庄周与蔺且正在整理这些天来为求道之人回答的谈话录&#xff0c;又来了一位士。这位士提了这样一个问题&#xff1a;   “庄周先生&#xff0c;您的学说以无为自然为主&#xff0c;那么&#xff0c;您是不是主张将一切人所创造出来的机巧…

vite解决前端跨域步骤

Vite 解决跨域问题的原理主要是通过其内置的开发服务器功能实现的&#xff0c;具体来说&#xff0c;是通过 HTTP 代理&#xff08;HTTP Proxy&#xff09;机制。在开发环境中&#xff0c;Vite 服务器可以配置为一个代理服务器&#xff0c;将前端应用发出的请求转发到实际的后端…

Overlay网络

Overlay 介绍 Overlay网络是将已有的物理网络&#xff08;Underlay网络&#xff09;作为基础&#xff0c;在其上建立叠加的逻辑网络&#xff0c;实现网络资源的虚拟化。 传统网络带来了以下一些问题&#xff1a; ● 虚拟机规模受 网络规格限制在传统二层网络环境下&#xff0…

ConcurrentHashMap 和 Hashtable的区别

ConcurrentHashMap 和 Hashtable 的区别&#xff1a; 1. 线程安全机制&#xff1a; - ConcurrentHashMap 采用分段锁&#xff08;Segment&#xff09;的机制实现线程安全。它将数据分成多个段&#xff08;Segment&#xff09;&#xff0c;每个段都有一个独立的锁。这样&#xf…

暑期计划总结

每日安排 早上用来学习新知识 中午用于巩固 晚上再尝试难一点的 注意背单词&#xff0c;题目老是看不明白 重心放在图论 目标 cf立志上1600

泰迪智能科技大数据实验室——陕西省高校合作成功案例

近年来&#xff0c;陕西省紧跟国家大数据发展战略&#xff0c;积极推进大数据产业发展。在政策扶持、产业布局、技术创新等方面取得显著成效。泰迪智能科技大数据实验室立足陕西&#xff0c;携手西安邮电大学、西安财经大学、陕西科技大学镐京学院、宝鸡文理学院、渭南师范学院…