halcon SVM 缺陷检测分类

news2024/12/28 9:15:48

一、概述

训练数据

二、算子解释

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)
else
    tuple_split (HalconImages, ':', HalconImages)
endif
ReadOK := false
for k := 0 to |HalconImages| - 1 by 1
    try
        read_image (Image, HalconImages[k] + '/halogen_bulb/halogen_bulb_01.png')
        ReadPath := HalconImages[k] + '/halogen_bulb/'
        ReadOK := true
        break
    catch (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 bulbs

classify_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.coloradmin.cn/o/1712057.html

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

相关文章

如何关闭MySQL凌晨12点自动弹窗?

要关闭 MySQL 在凌晨 12 点自动弹窗的行为,首先需要确定弹窗的具体原因。 打开“任务计划程序”: 按 Win R,输入 taskschd.msc,然后按 Enter。 在左侧导航栏中,选择“任务计划程序库”。 查找与 MySQL 相关的任务&…

12-常用类

1. 包装类 针对八种基本数据类型封装的相应的引用类型。 有了类的特点,就可以调用类中的方法。(为什么要封装) 基本数据类型包装类booleanBooleanchar CharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble 1.1 …

LeetCode 518.零钱兑换Ⅱ

思路: 这题和之前做的不大一样,之前的动态规划转化成背包问题一般都是求能放入的最大重量,这个是求组合数。 求组合数的状态转移方程之前在1和0提到过: dp[j]dp[j-nums[]i]; 这里重点分析一下遍历顺序: 这段代码里面是…

算法学习笔记(7)-贪心算法

##什么是贪心算法 一种常见的解决优化类型的问题,基本的思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优解的决策,以期待获得全局最优解。 ##贪心算法与动态规划的区别(二者都为解决优化…

苏洵,大器晚成的家风塑造者

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 苏洵,字明允,号老泉,生于宋真宗大中祥符二年(公元1009年),卒于宋英宗治平…

linux解压.zip文件命令详解

在Linux中解压.zip文件,你可以使用unzip命令。如果你的系统中没有安装unzip,你可以使用包管理器来安装它。 Debian的系统(Ubuntu),安装命令: sudo apt-get install unzip基于Red Hat的系统(如…

想让企业“火力全开”?找六西格玛培训公司就对了!

在如今的市场环境中,企业面临着不断变化的挑战和无限的可能。要在这场竞争中独领风骚,实现稳健的增长,六西格玛作为一种以数据驱动的管理理论,提供了实际可行的解决方案。六西格玛培训公司,作为这一领域的专家&#xf…

广东海上丝绸之路文化促进会正式批复荐世界酒中国菜的指导单位

广东海上丝绸之路文化促进会正式批复成为“世界酒中国菜”系列活动指导单位 近日,广东海上丝绸之路文化促进会近日正式批复荐酒师国际认证(广州)有限公司,成为备受瞩目的“世界酒中国菜”系列活动的指导单位。此举旨在通过双方的…

香橙派OrangePI AiPro测评

实物 为AI而生 打开盒子 截图电源开机进入 作为一个AI产品,必须有一个人机交互的界面才行。大家都在跑算法,于是我就开始进行整理着手整理搭建Qt的环境。 1、下载源码 wget https://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz待…

网吧|基于SprinBoot+vue的网吧管理系统(源码+数据库+文档)

网吧管理系统 目录 基于SprinBootvue的网吧管理系统 一、前言 二、系统设计 三、系统功能设计 1 管理员功能模块 2 网管功能模块 3 会员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#…

C++之类(class)的三种访问修饰符(public、private、protected)----成员变量与函数权限

1、背景介绍 在C中,类(class)的三种访问修饰符(access specifiers)用于控制类的成员(属性和方法)的访问权限。这些修饰符决定了类成员在类的外部是否可以被访问。以下是这三种访问修饰符的详细…

软件架构设计之质量属性浅析

引言 在数字化浪潮席卷而来的今天,软件已经渗透到我们生活的方方面面,从手机APP到大型企业级系统,无一不彰显着软件技术的魅力。然而,在这背后,软件架构设计作为软件开发的基石,其质量属性的重要性不言而喻…

前端开发工程师——AngularJS

一.表达式和语句 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

win10修改conda环境和缓存默认路径

win10修改conda环境和缓存默认路径 conda环境和缓存的默认路径&#xff08;envs directories 和 package cache&#xff09;不一定要默认存储在用户目录&#xff0c;我们可以将他们设置到盈余空间稍大的其他目录来缓解这种空间压力&#xff0c;只要保证不同用户之间的设置不同…

【2】:向量与矩阵

向量 既有大小又有方向的量叫做向量 向量的模 向量的长度 单位向量 (只表示方向不表示长度) 向量的加减运算 向量求和 行向量与列向量的置换 图形学中竖着写 向量的长度计算 点乘&#xff08;计算向量间夹角&#xff09; 点乘满足的运算规律 交换律、结合律、分配…

C语言⾼位优先与低位优先的不同之处是什么?

一、问题 C语⾔的最⼤特⾊就是可移植性好。根据机器类型的不同&#xff0c;⾼位优先与低位优先也不同。那么&#xff0c;最好的可移植的 C 程序应该同时适⽤这两种类型的计算机。下⾯了解⼀下⾼位优先与低位优先的不同之处。 二、解答 所谓的⾼位优先&#xff0c;就是最低的地…

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(2)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | Linux | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 哈希函数与哈希 之 哈希桶解决哈希冲突 的相关内容。 如果看到最后…

SpringSecurity6从入门到实战之SpringSecurity快速入门

SpringSecurity6从入门到实战之SpringSecurity快速入门 环境准备 依赖版本号springsecurity6.0.8springboot3.0.12JDK17 这里尽量与我依赖一致,免得在学习过程中出现位置的bug等 创建工程 这里直接选择springboot初始化快速搭建工程,导入对应的jdk17进行创建 直接勾选一个web…

20240529代码沉思--------聊聊清单革命

以下内容取自百度&#xff1a; 清单革命 清单革命是一场观念革命&#xff0c;旨在通过列出清晰、明确的清单来避免犯错和提高效率。以下是关于清单革命的一些核心观点和原则&#xff1a; 核心观点&#xff1a; 人类的错误主要分为两类&#xff1a;“无知之错”和“无能之错…

[ C++ ] 类和对象( 下 )

初始化列表 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟 一个放在括号中的初始值或表达式。 class Date { public: Date(int year, int month, int day): _year(year), _month(month), _d…