颜色识别基于高斯混合模型(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;允许监视…

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. 解构赋值运算…

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…

Overlay网络

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

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

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

使用Selenium爬虫批量下载AlphaFold数据库中的PDB文件

注意&#xff1a;本方法使用了python&#xff0c;下载速度一般&#xff0c;如果需要更快的大批量下载可以考虑使用其他方法&#xff0c;例如FTP Alphafold数据库其实提供了许多物种的蛋白质组&#xff1a; AlphaFold Protein Structure Database 但是如果你搜索的物种不在这个…

【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 前言 上节课完成了里程计数据与坐标变换发布&#xff0c;但是还没有测试&#xff0c;本节进行测试&#xff0c;测试之前需要知道一件事&#xff0c;上位机也就是开发板一般不做可视化用&#xff0c;因…

Python 教程(七):match...case 模式匹配

目录 专栏列表前言基本语法match 语句case 语句 模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配 模式匹配的优势总结 专栏列表 Python教程&#xff08;一&#xff09;&#xff1a;环境搭建及PyCharm安装Python 教程&#xff08;二&#xff09;&…

NASA:水瓶座官方发布的第 3 级辅助雷诺兹海面温度标准映射图像降序年度数据 V3.0

Aquarius Official Release Level 3 Ancillary Reynolds Sea Surface Temperature Standard Mapped Image Descending Annual Data V5.0 水瓶座官方发布的第 3 级辅助雷诺兹海面温度标准映射图像降序年度数据 V5.0 (AQUARIUS_L3_ANCILLARY_SST_SMID_ANNUAL_V5) 简介 水瓶座 3…

Golang | Leetcode Golang题解之第301题删除无效的括号

题目&#xff1a; 题解&#xff1a; func checkValid(str string, lmask, rmask int, left, right []int) bool {cnt : 0pos1, pos2 : 0, 0for i : range str {if pos1 < len(left) && i left[pos1] {if lmask>>pos1&1 0 {cnt}pos1} else if pos2 <…

FFmpeg实战 - 解复用解码

文章目录 前置知识音视频基础概念解复用、解码的流程分析FFMPEG有8个常用库 常见音视频格式的介绍aac格式介绍h264格式介绍flv格式介绍mp4格式介绍 FFmpeg解码解封装实战数据包和数据帧&#xff08;AVPacket/AVFrame&#xff09;AVPacket/AVFrame的引用计数问题API介绍注意事项…

实习日志2之windows上大模型(qwen2-7b)部署

一、模型部署 1、下载ollama(大模型本地部署工具)&#xff0c;并安装 下载网址&#xff1a;https://ollama.com/ ollama是大模型部署方案&#xff0c;对应docker&#xff0c;本质也是基于docker的容器化技术。 2、下载大模型 在命令框&#xff0c;如windows系统在cmd窗口输…

笔试练习day1

目录 数字统计题目解析解法(枚举数字拆分)代码 两个数组的交集题目解析解法哈希表代码 点击消除题目解析解法栈代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f97…

开源AI智能名片小程序源码在对立型定位策略中的应用与深入探索

摘要&#xff1a;在当今数字化营销风起云涌的时代&#xff0c;开源AI智能名片小程序源码作为技术创新的前沿阵地&#xff0c;为中小企业及后发创业品牌提供了实现差异化竞争与市场突破的利器。本文旨在深入探讨开源AI智能名片小程序源码如何有效融入对立型定位策略之中&#xf…

二进制部署k8s集群之master节点和etcd数据库集群(上)

目录 1.操作系统初始化配置 2.升级Linux内核 3.部署docker引擎 4.部署etcd集群 4.1 了解etcdctl工具对etcd做增删改查 4.2 通过etcdctl工具实现数据库的备份和恢复 5.部署Master组件 6.部署 Worker Node 组件 二进制搭建 Kubernetes v1.20 k8s集群master01&#xff1a…