Halcon基于laws纹理特征的SVM分类

news2024/12/23 21:15:50

        与基于区域特征的 SVM 分类不同,针对图像特征的 SVM 分类的算子不需要直接提取

特征,下面介绍基于 Laws 纹理特征的 SVM 分类。

       纹理在计算机视觉领域的图像分割、模式识别等方面都有着重要的意义和广泛的应

用。纹理是指由于物体表面的物理属性不同所引起的灰度或颜色变化,不同的物体表面会

产生不同的纹理图像,所以纹理是图像的一种十分重要的属性。

       纹理虽然很容易从直观上查看,但却很难用精准的数学公式来表述,它是由非单一颜

色或明暗度所呈现出来的某种规律性特征。纹理包含物体表面组织结构排列的重要信息及其与周围环境的联系。纹理基元是基本的纹理元素,它可以是一个像素的灰度,也可以是具有特定性质的连通像素集合。准确而高效的纹理特征提取是成功进行图像纹理描述、分类与分割的前提,因为提取的纹理特征直接影响后续处理的图像质量

 a )墙类纹理

( b )金属纹理

( c )木质纹理

( d )布花纹纹理

       1、纹理分析法

       在涉及具体的纹理特征提取时,研究学者们总是习惯于先寻找更多的能够反映纹理特征的度量方式,然后通过分析或者变换提取有效的特征,以用于纹理的描述和分类。提取的目标纹理特征应满足:特征维数小,鉴别能力强,稳健性好,提取过程消耗时间短,空间复杂度小,易于实际应用等,常用的纹理分析法主要有以下四类:

       1)统计法

       统计法是目前研究最多,应用最早且占主导的一种纹理分析法。纹理特征在局部上表现出很大的随机性,但从整体和统计意义上看存在某种规律性。从区域统计方面分析纹理图像的方法称为基于统计的分析方法,简称统计法。统计法主要利用图像的统计特性求出某种特征值,再基于图像特征的一致性进行分析。典型的统计法包括灰度共生矩阵、滤波模板、随机模型等。

       2)结构法

       结构法是建立在纹理基元理论基础上的一种纹理特征分析方法。纹理基元理论认为,复杂的纹理可以由若干简单的纹理基元以一定的有规律的形式重复排列组合构成。若纹理基元能够单独被分割和描述,则要使用结构法,即首先确定纹理基元的形状,然后确定控制这些纹理基元位置的规则。

       结构法大致可以分为以下两步:

       第一步,确定图像中纹理基元的位置并提取图像中的纹理基元;

       第二步,确定纹理基元的排列方式,即研究纹理基元间的结构关系。

       其中,第一步描述了图像的局部纹理特征,第二步将整幅图像中的不同纹理基元进行统计分析,得到纹理基元的排列规律,也就获得了整幅图像全面的纹理信息。结构法中比较有影响的算法是 Voronoi 棋盘格特征分析法。

       结构法的优点是纹理构成易理解,适合于高层检索以及描述规则的人工纹理。但对于不规则的自然纹理,由于纹理基元本身提取困难以及纹理基元之间的排布规则复杂,因此结构法受到很大的限制。

       3)模型法

       模型法以图像模型为基础,通过构造图像模型,利用模型的参数作为其纹理特征。模型法的关键在于构造模型,使模型表示出来的纹理图像能最接近原来的图像。最典型的模型法是随机场模型法,如马尔可夫( Markov )随机场模型法和 Gibbs 随机场模型法。

       4)频谱法

       频谱法是依赖图像的频谱特性来描述纹理特征的方法。常用的频谱法主要包括傅里叶功率频谱法、塔式小波变换法、 Gabor 变换法等。

       在图像处理中,一种生成纹理特征的方案是利用局部模板来检测不同类型的纹理。 Laws 纹理掩膜就是一种典型的基于模板卷积的纹理描述方法。

       对于滤波模板, Laws 进行了深入研究,首先定义一维滤波模板,然后通过卷积运算形成了用于检测和度量纹理结构信息的一系列一维和二维滤波模板。

        Laws 选定了三组一维滤波模板,分别用于检测灰度、边缘、点特征,模板如下:

       1=[121]

        e =[-101]

        s =[-12-1]

       两个一维滤波模板经过卷积形成长度为5的五组一维向量,分别检测灰度、边缘、点、波、涟漪特征,模板如下:

       1=[1  4  6  4  1]

        e =[-1  -2  0  2  1]

        s =[-1  0  2  0  -1]

        w =[-1  2  0  -2  1]

        r =[1  -4  6  -4  1]

       由滤波模板与图像卷积运算可以得到不同的纹理能量信息。利用 Laws 纹理提取纹理信息,结合 SVM 分类器可进行纹理缺陷检测。由于 Laws 纹理滤波模板少,所以可将纹理图组合成多通道纹理图以便得到准确的检测结果。

       2.基于 Laws 纹理特征的相关算子

      1), texture _ laws ( Image : ImageTexture ; FilterTypes , Shift , FilterSize ;)

       功能:使用 Laws 纹理滤波模板对图像进行纹理滤波处理。

        Image :准备进行纹理滤波处理的图像。

        ImageTexture :滤波后得到的纹理图像。

        FilterTypes :滤波形式,包括' el '、'' es '、' Is '等。

        Shift :灰度值放缩因子。

        FilterSize :滤波大小。

      2), add _ samples _ image _ class _ svm ( Image , ClassRegions :: SVMHandle :)

       功能:增加训练样本图像到支持向量机。

       Image :训练图像。

        ClassRegions :图像中用于训练的区域。

        SVMHandle :支持向量机句柄。

      3), reduce _ class _ svm (:: SVMHandle , Method , MinRemainingSV , MaxError :

 SVMHandleReduced )

       功能:通过简化支持向量机实现支持向量机的近似,从而进行更快地分类。

        SVMHandle :原始的支持向量机句柄。

        Method :处理后类型,以减少支持向量的数量。

        MinRemainingSV :剩余支持向量的最小数量。

        MaxError :减少误差的最大允许值。

        SVMHandleReduced :简化后的支持向量机句柄。

       4), classify _ image _ class _ svm ( Image : ClassRegions : SVMHandle :)

       功能:使用支持向量机对图像进行分类。

        Image :待分类的图像(多通道)。

        ClassRegions :待分类的各个区域。

        SVMHandle : SVM 句柄。

案例分析

1,创建,训练SVM模型

read_image (Image, 'plastic_mesh/plastic_mesh_01')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_color ('red')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*用于分类的纹理过滤器将返回图像边界处的伪影,因为待检查的塑料网格图像不包含整数网格单元。由于这\
将导致在图像边界处被错误地检测到错误,因此我们必须将靠近图像边界的区域排除在训练和分类之外。这是\
用下面的矩形完成的。注意,该图像随后被按2倍的比例缩小。
gen_rectangle1 (Rectangle, 10, 10, Height / 2 - 11, Width / 2 - 11)
*创建SVM分类器模型
create_class_svm (5, 'rbf', 0.01, 0.0005, 1, 'novelty-detection', 'normalization', 5, SVMHandle)
* 循环读取图像冰利用SVM进行训练
for J := 1 to 5 by 1
    read_image (Image, 'plastic_mesh/plastic_mesh_' + J$'02')
    * 由于网格的分辨率非常高,图像被缩小了。可以节省了大量的处理时间。
    zoom_image_factor (Image, ImageZoomed, 0.5, 0.5, 'constant')
    dev_display (ImageZoomed)
    disp_message (WindowHandle, 'Adding training samples...', 'window', 12, 12, 'black', 'true')
    *生成纹理图像
    *‘el’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageEL, 'el', 5, 5)
    *‘le’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageLE, 'le', 5, 5)
    *‘es’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageES, 'es', 1, 5)
    *‘se’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageSE, 'se', 1, 5)
    *‘ee’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageEE, 'ee', 2, 5)
    compose5 (ImageEL, ImageLE, ImageES, ImageSE, ImageEE, ImageLaws)
    smooth_image (ImageLaws, ImageTexture, 'gauss', 5)
    *将样本添加到分类器中
    add_samples_image_class_svm (ImageTexture, Rectangle, SVMHandle)
endfor
dev_display (ImageZoomed)
disp_message (WindowHandle, 'Training SVM...', 'window', 12, 12, 'black', 'true')
* 训练支持向量机。这将生成相当多的支持向量。
train_class_svm (SVMHandle, 0.001, 'default')

2,推断验证模型

* 为了提高分类速度,减少支持向量的数量。
reduce_class_svm (SVMHandle, 'bottom_up', 2, 0.001, SVMHandleReduced)
* 推断
dev_set_draw ('margin')
dev_set_line_width (3)
for J := 1 to 14 by 1
    read_image (Image, 'plastic_mesh/plastic_mesh_' + J$'02')
    zoom_image_factor (Image, ImageZoomed, 0.5, 0.5, 'constant')
    dev_display (ImageZoomed)
    dev_set_color ('white')
    dev_display (Rectangle)
     *‘el’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageEL, 'el', 5, 5)
    *‘le’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageLE, 'le', 5, 5)
    *‘es’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageES, 'es', 1, 5)
    *‘se’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageSE, 'se', 1, 5)
    *‘ee’模板Laws纹理滤波卷积
    texture_laws (ImageZoomed, ImageEE, 'ee', 2, 5)
    compose5 (ImageEL, ImageLE, ImageES, ImageSE, ImageEE, ImageLaws)
    smooth_image (ImageLaws, ImageTexture, 'gauss', 5)
    reduce_domain (ImageTexture, Rectangle, ImageTextureReduced)
    * 使用支持向量机进行分类
    classify_image_class_svm (ImageTextureReduced, Errors, SVMHandleReduced)
    * 通过开运算和闭运算去掉干扰部分
    opening_circle (Errors, ErrorsOpening, 3.5)
    closing_circle (ErrorsOpening, ErrorsClosing, 10.5)
    connection (ErrorsClosing, ErrorsConnected)
    select_shape (ErrorsConnected, FinalErrors, 'area', 'and', 300, 1000000)
    count_obj (FinalErrors, NumErrors)
    dev_set_color ('red')
    dev_display (FinalErrors)
    if (NumErrors > 0)
        disp_message (WindowHandle, 'Mesh NG', 'window', 12, 12, 'red', 'true')
    else
        disp_message (WindowHandle, 'Mesh OK', 'window', 12, 12, 'forest green', 'true')
    endif
    stop ()
endfor

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

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

相关文章

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …

基于Spring Boot+Vue的养老院管理系统【原创】

一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框架Vue.js;UI库:ElementUI; 开发工具&…

Maven 中央仓库地址 mvnrepository.com

下载一些 jar 包驱动,不需用去官网下了,直接去 Maven 中央仓库,高效、简单 Maven 中央仓库地址 https://mvnrepository.com/open-source 我们下期见,拜拜!

2024 年将 Postman 文档导出为 HTML 或 Markdown

2024 年将 Postman 文档导出为 HTML 或 Markdown

Anaconda安装库

相信有些人可能遇到pip直接安装失败,conda直接安装失败,pip镜像安装仍然失败的可能性,下面我记录一下我的一种解决方法。 我使用的是上面的miniconda3配置。 1.创建虚拟环境 首先,先新建一个虚拟环境 conda create -n py39 pyt…

linux命令详解,openssl+历史命令详解

openssl openssl是一个开源的加密工具包,提供了各种加密、解密、签名、验证等功能 openssl passwd -1 123password表示这个命令用于处理密码相关的操作,-1参数指定使用MD5加密算法对密码“123”进行加密处理。MD5是一种常用的哈希算法,它将…

Flink运行时架构以及核心概念

1.运行构架 1.提交作业后启动一个客户端进程,客户端解析参数(-d -t 等等),后进行封装由Actor通信系统提交,取消,更新任务给JobManager。 2.JobManager(进程)通信系统一个组件叫分发…

解决C盘空间不足的三种方案

方案一:网上盛传的C盘磁盘碎片整理🧩(原理:将分散的文件片段整理到相邻的磁盘区域,减少文件的碎片化程度)(效果不明显) 方案二:把其他盘的空间给C盘 💽(效果显著&#xf…

echarts-gl 3D柱状图配置

1. 源码 此demo可以直接在echarts的编辑器中运行 option {title: {text: 产量图,textStyle: {color: rgba(255, 255, 255, 1),fontSize: 17},left: center},tooltip: {},legend: {show: false,orient: vertical,x: left,top: 0,right: 20,textStyle: {fontSize: 12}},visualM…

C++笔记---智能指针

1. 什么是智能指针 1.1 RALL设计思想 RAII(Resource Acquisition Is Initialization,资源获取即初始化)是一种资源管理类的设计思想,广泛应用于C等支持对象导向编程的语言中。它的核心思想是将资源的管理与对象的生命周期紧密绑定…

「QT」几何数据类 之 QVector4D 四维向量类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

docker desktop运行rabittmq容器,控制台无法访问

docker desktop运行rabittmq容器,控制台无法访问 启动过程:…此处缺略,网上一大堆 原因 原因是在Docker上运行的RabbitMQ,默认情况下是没有启用管理插件和管理页面的 解决办法 使用命令 docker exec -it 容器id /bin/bash 进…

MySQL-事务(详细版)

目录 事务的含义 举一个例子 事务的特征(面试高频) 原子性 一致性 隔离性 持久性 事务结束 查看事务提交方式 查看事务提交的变量值:on 自动提交 off 不是自动提交 实例 事务回滚 验证事务回滚 事务实现:是数据库提…

Python “文件和IO操作” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

本文主要是作为Python中“文件和IO操作”的一些题目,方便学习完Python的函数之后进行一些知识检验,感兴趣的小伙伴可以试一试,含选择题、判断题、填空题。 在做题之前可以先学习或者温习一下Python的异常处理机制,推荐阅读下面这篇…

【Docker】自定义网络:实现容器之间通过域名相互通讯

文章目录 一. 默认网络:docker0网络的问题二. 自定义网络三. nginx容器指之间通过主机名进行内部通讯四. redis集群容器(跳过宿主机)内部网络通讯1. 集群描述2. 基于bitnami镜像的环境变量快速构建redis集群 一. 默认网络:docker0…

Kafka-Eagle的配置——kafka可视化界面

通过百度网盘分享的文件:kafka-eagle-bin-2.0.8.tar.gz 链接:https://pan.baidu.com/s/1H3YONkL97uXbLTPMZHrfdg?pwdsltu 提取码:sltu 一、界面展示 二、软件配置 1、关闭kafka集群 kf.sh stop 2、将该软件上传到/opt/modules下 cd /opt…

计算机图形学论文 | 木工设计与制造计划的共同优化

🦌🦌🦌读论文 我们的系统共同探索离散设计变量和制造计划的空间,以生成(设计,制造计划)对的帕累托前沿,使制造成本最小化。在该图中,(a)是椅子的输入设计和仅探索该设计的…

【百日算法计划】:每日一题,见证成长(023)

题目 每日温度 请根据每日气温列表,重新生成一个列表,对应的位置的输出为:要想观测到更高的气温,至少需要等待的天数.如果气温在这之后都不再升高,则该位置用0代替. 例如,给定一个列表[73, 74, 65, 80,] 你的输出应该是[1, 2, 1, 0] 思路 首先,我们先来画图分析一…

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…

推动AI云产业向深向实,云·AI·算力创新发展大会即将启幕

近年来,以AIGC为代表的新兴技术正加速演进,全球站在智能化变革的起点,人工智能与云计算的深度融合,也驱动云计算进入第三次发展浪潮,迎来前所未有的机遇。 伴随AI的快速发展,2024年《政府工作报告》明确提…