halcon SVM 缺陷检测分类

news/2024/7/22 0:33:18/文章来源:https://blog.csdn.net/weixin_39354845/article/details/139271170

一、概述

训练数据

二、算子解释

compactness

Halcon 算子 compactness_halcon compactness-CSDN博客

*计算输入区域的紧凑度
compactness (Region, Compactness)
 原理解释

convexity  每个输入区域的凸度

Halcon 算子 convexity_halcon convexity-CSDN博客

*计算每个输入区域的凸度
convexity (Region, Convexity)   

 原理解释
moments_region_central_invar 计算区域的四个矩

 

三、halcon 代码


get_system ('image_dir', HalconImages)
get_system ('operating_system', OS)
if (OS{0:2} == 'Win')tuple_split (HalconImages, ';', HalconImages)
elsetuple_split (HalconImages, ':', HalconImages)
endif
ReadOK := false
for k := 0 to |HalconImages| - 1 by 1tryread_image (Image, HalconImages[k] + '/halogen_bulb/halogen_bulb_01.png')ReadPath := HalconImages[k] + '/halogen_bulb/'ReadOK := truebreakcatch (Exception)endtry
endfor
if (not ReadOK)disp_message (WindowHandle, 'Could not find the images in $HALCONIMAGES', 'window', 12, 12, 'black', 'true')stop ()
endif
read_image (Image, 'halogen_bulb/halogen_bulb_01.png')
get_image_pointer1 (Image, Pointer, Type, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
* 
ClassNames := ['good','bad','none']
Colors := ['forest green','red','red']
Nu := 0.05
KernelParam := 0.02
* 
* Create an SVM classifier
*NumFeatures 输入变量数
*KernelType  :内核类型  线性”,“多项式均匀”,“多项式不均匀”,“ rbf”
*KernelParam :内核参数  内核函数的附加参数。如果是RBF内核,则的值 。对于多项式核,度
*Nu      SVM的正则化常数。
*NumClasses   类数。
*Mode  SVM的模式    “新颖性检测”,“一个对所有”,“一个对一个”
*Preprocessing   用于转换特征向量的预处理类型。
*NumComponents  预处理参数:变换后的特征数量
*SVMHandle  SVM句柄。
create_class_svm (7, 'rbf', KernelParam, Nu, |ClassNames|, 'one-versus-one', 'principal_components', 7, SVMHandle)
* 
* Add samples
* 这里是只训练好的 还有 坏的的以及那个none 的
add_samples_to_svm (ClassNames, SVMHandle, WindowHandle, ReadPath)
*add_samples_to_svm 函数实现
* for ClassNumber := 0 to |ClassNames| - 1 by 1
*     list_files (ReadPath + ClassNames[ClassNumber], 'files', Files)
*     Selection := regexp_select(Files,'.*[.]png')
*     for Index := 0 to |Selection| - 1 by 1
*         read_image (Image, Selection[Index])
*         dev_display (Image)* 'Add Samples...', -1
*         threshold (Image, Region, 0, 40)
*         calculate_features (Region, Features)
*         add_sample_class_svm (SVMHandle, Features, ClassNumber)
*     endfor
* endfor*==========================================*calculate_features 的实现
*  area_center (Region, Area, Row, Column)
* 计算输入区域的紧凑度
* compactness (Region, Compactness)
* 四个不变的矩
* moments_region_central_invar (Region, PSI1, PSI2, PSI3, PSI4)
*计算每个输入区域的凸度
* convexity (Region, Convexity)   
* Features := real([Area,Compactness,PSI1,PSI2,PSI3,PSI4,Convexity])
* return ()return ()
dev_clear_window ()
* 
* Train the classifier
disp_message (WindowHandle, 'Training...', 'window', 12, 12, 'black', 'true')
*训练
*Epsilon (input_control) 精度
*TrainMode    'add_sv_to_train_set', 'default'
train_class_svm (SVMHandle, 0.001, 'default')
disp_message (WindowHandle, 'Training completed', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* Classify halogen bulbsclassify_regions_with_svm (SVMHandle, Colors, ClassNames, ReadPath)
* *list_files (ReadPath, ['files','recursive'], Files)*Selection := regexp_select(Files,'.*[.]png')*read_image (Image, Selection[0])*dev_close_window ()*get_image_size (Image, Width, Height)*dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle)*set_display_font (WindowHandle, 14, 'mono', 'true', 'false')*for Index := 0 to |Selection| - 1 by 1*    read_image (Image, Selection[Index])*    threshold (Image, Region, 0, 40)*    calculate_features (Region, Features)*    *特征*    classify_class_svm (SVMHandle, Features, 1, Class)*    dev_display (Image)*    dev_set_color (Colors[Class])*    dev_display (Region)*    disp_message (WindowHandle, 'Classified as:' + ClassNames[Class], 'window', 12, 12, 'black', 'true')*    disp_continue_message (WindowHandle, 'black', 'true')*    stop ()*endfor*dev_display (Image)*return ()
* Clear the classifier from memory
clear_class_svm (SVMHandle)

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

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

相关文章

Unity LayerMask避坑笔记

今天使用Physics2D.OverlapAreaNonAlloc进行物理检测时候,通过LayerMask.NameToLayer传入了int值的LayerMask,结果一直识别不到,经过Debug才找到问题,竟是LayerMask的“值”传输有问题,记录一下。 直接贴代码输出结果&…

《SpringBoot》系列文章目录

SpringBoot是由Pivotal团队提供的全新框架,旨在简化新Spring应用的初始搭建以及开发过程。以下是一些关于SpringBoot的详细介绍: 设计目的:SpringBoot通过特定的方式来进行配置,使得开发人员不再需要定义样板化的配置&#xff0c…

HNU-计算机体系结构-实验1-RISC-V流水线

计算机体系结构 实验1 计科210X 甘晴void 202108010XXX 1 实验目的 参考提供为了更好的理解RISC-V,通过学习RV32I Core的设计图,理解每条指令的数据流和控制信号,为之后指令流水线及乱序发射实验打下基础。 参考资料: RISC-…

【引领光子学革命:机器学习与深度学习重塑设计与应用新纪元】

光子器件的逆向设计:利用深度学习技术,可以优化多参数光子器件的设计。通过大量的数据分析和模式识别,深度学习算法能够预测和优化光子器件的性能,从而缩短设计周期并降低设计成本。 超构表面与超材料设计:在新型光学材…

浅谈金融行业数据安全分类分级

数据安全管理是一项从上而下的、多方配合开展的工作。在进行数据安全管理组织架构建设时,需要从上而下建设;从而全面推动数据安全管理工作的执行和落地;以保证数据安全的合法合规、并长效推动业务的发展和稳定运行。 金融行业机构应设立数据…

Hexo博客部署到云服务器

1、本地搭建hexo 本地搭建hexo过程详见hexo官网,步骤比较详细,按照步骤搭建即可 2、hexo主题 我使用的Butterfly主题,主题配置请查看Butterfly安装文档 3、部署到云服务器 3.1、服务器环境 nginx 搭建 使用云服务商提供的远程登陆登录进…

vscode远程登录阿里云服务器【使用密钥方式--后期无需再进行密码登录】【外包需要密码】

1:windows主机上生成【私钥】【公钥】 1.1生成公钥时不设置额外密码 1.2生成公钥时设置额外密码【给外包人员使用的方法】 2:在linux服务器中添加【公钥】 3:本地vscode连接linux服务器的配置 操作流程如下 1.1本地终端中【生成免密登录…

《TCP/IP网络编程》(第十一章)进程间通信

进程间通信意味着两个不同的进程间可以交换数据,它使得不同的进程能够协同工作,实现复杂的系统功能。 1.通过管道实现进程间通信 下图是基于 管道(PIPE) 的进程间通信结构模型 管道不属于进程的资源,属于操作系统的资…

[UE5]安卓调用外置摄像头拍照(之显示画面)

目录 部分参考文献(有些有用的我没标,没放上来) 要点 总蓝图 结果 部分参考文献(有些有用的我没标,没放上来) 【UE】获取USB摄像头画面_虚幻捕获硬件摄像头-CSDN博客 UE4安卓调用摄像头拍照确保打…

【移除链表元素】python

目录 题目: 方法: 知识: 代码: 题目: 方法: 在头节点前增加一个虚拟头节点 知识: 链表中的每一个节点只包含当前值val和指向下一个next 代码: class Solution:def removeEle…

【Linux进程篇】Linux内核——程序地址空间的初构

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 程序地址空间回顾 我们在讲C语言的时候&#xff0c;大家应该都见过这样的空间布局图&#xff1a; 为了更好的验证不同的数据在内存中的存储位置&#xff0c;下面这段代码我们可以去实验一下&#xff1a; #include<…

ChatGPT:轻松搞定论文润色,让语言更流畅

GPT从3.5一路升级到4.0&#xff0c;不仅在国外火得一塌糊涂&#xff0c;还悄悄地在我们论文润色的世界里掀起了一场革命。 首先&#xff0c;得承认&#xff0c;虽然这玩意儿是“洋货”&#xff0c;用起来可能得费点脑筋——注册个账号啦&#xff0c;买个会员啦之类的。但它对我…

SQL数据库多层嵌套 json转sql建表语句,SQL数据库里数组里对象数据怎么创建

1. uniapp sqlite 一个数组包含对象嵌套对象通过主外键方式插入数据库&#xff1a; // 假设有一个对象数组&#xff0c;对象中包含嵌套对象 const objectsArray [{parentObject: {id: 1,name: Parent 1,// 其他父对象属性},childObject: {id: 11,parentId: 1,name: Child 1 o…

Python: 使用pyotp实现OTP一次性密码验证

使用pyotp实现OTP一次性密码验证 OTP的基本原理 生成一个共享秘钥作为随机数的种子服务端通过种子计算出当前的密码客户端也通过相同的种子计算出当前的密码验证客户端生成的密码和服务端生成的密码是否匹配 服务端和客户端计算的方式一样 共享密钥 时间因子 算法 > 密…

Numba 的 CUDA 示例(1/4):踏上并行之旅

按照本系列从头开始使用 Python 学习 CUDA 编程 介绍 GPU&#xff08;图形处理单元&#xff09;&#xff0c;顾名思义&#xff0c;最初是为计算机图形学开发的。从那时起&#xff0c;它们几乎在每个需要高计算吞吐量的领域都无处不在。这一进步得益于 GPGPU&#xff08;通用 G…

关于微信小程序低功耗蓝牙ECharts实时刷新(涉及自定义缓冲区)

简单的蓝牙显示&#xff08;串口手动发数据测试&#xff09; 最近搞了这方面的东西&#xff0c;是刚刚开始接触微信小程序&#xff0c;因为是刚刚开始接触蓝牙设备&#xff0c;所以这篇文章适合既不熟悉小程序&#xff0c;又不熟悉蓝牙的新手看。 项目要求是获取到蓝牙传输过来…

JEPaaS 低代码平台 accessToTeanantInfo SQL注入漏洞复现

0x01 产品简介 JEPaaS低代码开发平台开源版 旨在帮助企业快速实现信息化和数字化转型。该平台基于可视化开发环境,让软件开发人员和业务用户通过直观的可视化界面来构建应用程序 ,而不是传统的编写代码方式。 用户可以在开发平台灵活各个图形化控件,以构建业务流程、逻辑和…

pytorch深度学习-环境搭建-2

1.1下载cudnn,解压 1.2.找到本级cuda安装路径 1.3.刚才解压文件复制到cuda安装目录 2.1 安装pytouch

Day23:Leetcode:530.二叉搜索树的最小绝对差 + 501.二叉搜索树中的众数 + 236. 二叉树的最近公共祖先

LeetCode&#xff1a;530.二叉搜索树的最小绝对差 问题描述 解决方案&#xff1a; 1.思路 中序遍历 2.代码实现 class Solution {int pre;int ans;public int getMinimumDifference(TreeNode root) {ans Integer.MAX_VALUE;pre -1;dfs(root);return ans;}public void d…

全球首例光伏电场网络攻击事件曝光

快速增长的光伏发电正面临日益严重的网络安全威胁。近日&#xff0c;日媒报道了首个针对光伏电场的网络攻击事件。 首例公开确认的光伏电网攻击 日本媒体《产经新闻》近日报道&#xff0c;黑客劫持了一个大型光伏电网中的800台远程监控设备(由工控电子制造商Contec生产的Solar…