【halcon知识】:共生矩阵

2024-02-21 07:59
文章标签 知识 矩阵 halcon 共生

本文主要是介绍【halcon知识】:共生矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、共生矩阵基本概念

二、以上看不懂吗?请看下面举例后再回头看就懂了

  2.1 分级(scales)

 2.2 求规定偏移的共生矩阵

2.2.1 水平偏移(度)

2.2.2 垂直方向的偏移(9度)

 2.2.3 1-3象限方向的偏移(45度)

 2.2.4  2-4象限方向的偏移(135度)

三、参考代码

3.1 原图:

 3.2 锁定区域

3.3 求出共生矩阵代码 

3.4 结果:


一、说明

        共生矩阵是一种用于图像分析和特征提取的工具,常用于纹理分析。它是由二维灰度图像中像素对之间的空间关系和灰度级别共同定义的矩阵。共生矩阵可以描述图像中不同方向上像素之间的灰度值对比关系,并通过统计这些关系的频率来提取纹理特征。共生矩阵通常包括四个性质:方向、距离、灰度级和共生概率。

二、共生矩阵基本概念
 

        共现矩阵或共现分布(也称为:灰度共现矩阵 GLCM)是在图像上定义为同时出现的像素值(灰度值或颜色)的分布的矩阵) 在给定的偏移量处。它被用作具有各种应用的纹理分析方法,特别是在医学图像分析中。

        给定灰度图像I,共生矩阵计算图像中具有特定值偏移量组成一个偶对像素对出现的频率(这是不是类似直方图?对的,就是二维图内两个相对位置像素序偶对的直方统计)。

  • 灰度级别化(scales):指灰度按照对数取划分等级,如0-255灰度可写成2^0-1\rightarrow 2^8-1,共8个等级
  • 偏移量: {\displaystyle (\Delta x,\Delta y)} 是一个位置算子,可以应用于图像中的任何像素(忽略边缘效应):例如,{\displaystyle (1,2)} 可以表示“向下一格,向右两格”。

取图像(N×N)中任意一点(x,y)及偏离它的另一点(x+a,y+b),设该点序的灰度值为(g1,g2)和(g2,g1)。令点(x,y)在整个画面上移动,则会得到各种(g1,g2)和(g2,g1)值。

  • 对于给定的偏移量,具有{\displaystyle p} 不同像素的图像将产生一个{\displaystyle p\times p}维度的共现矩阵。
  • 共现矩阵的{\displaystyle (i,j)^{\text{th}}}值给出了图像中出现的次数{\displaystyle i^{\text{th}}}{\displaystyle j^{\text{th}}} 像素值出现在偏移量给出的关系中。

        对于具有 {\displaystyle p}个不同像素值的图像,p\times p 共现矩阵 C 定义在n\times m图像I,由偏移量{\displaystyle (\Delta x,\Delta y)} 参数化,如:

{\displaystyle C_{\Delta x,\Delta y}(i,j)=\sum _{x=1}^{n}\sum _{y=1}^{m}{\begin{cases}1,&{\text{if }}I(x,y)=i{\text{ and }}I(x+\Delta x,y+\Delta y)=j\\0,&{\text{otherwise}}\end{cases}}}

        其中:{\displaystyle i}{\displaystyle j} 是像素值;{\displaystyle x}{\displaystyle y} 是图像I中的空间位置;偏移量 {\displaystyle (\Delta x,\Delta y)}定义了计算该矩阵的空间关系;{\displaystyle I(x,y)} 表示像素{\displaystyle (x,y)} 处的像素值。

        对于8bit的图像,灰度共生矩阵为8\times 8矩阵。

        图像的“值”最初指的是指定像素的灰度值,但可以推广成任何值,从二进制开/关值到32位整数等等。(请注意,32位颜色将生成232×232共生矩阵!)

        共现矩阵也可以根据距离{\displaystyle d}和角度{\displaystyle\theta}来参数化,而不是偏移量{\displaystyle (\Delta x,\Delta y)}

        任何矩阵或矩阵对都可以用来生成共生矩阵,尽管它们最常见的应用是测量图像中的纹理,因此如上所述的典型定义假定矩阵是图像。

        也可以跨两个不同的图像定义矩阵。这样的矩阵可以用于颜色映射。

三、以上看不懂吗?请看下面举例后再回头看就懂了

3.1 分级的图例

        这里有3\times 3的灰度图像,试看我们如何对灰度分级处理:

        分级后(scales)

         0 = 2^0-1;         \\1 = 2^1-1;       3=2^2-1;    7=2^3-1  因此,原图被分成四级,转化成:

3.2 求规定偏移的共生矩阵

        关于0,90,45,135度的偏移(向右向下为正方向):

3.2.1 水平偏移(0度)

{\displaystyle (\Delta x,\Delta y)}={\displaystyle (1,0)}

\begin{Bmatrix} 0 & 0 &3 \\ 1& 1 & 2\\ 1& 2& 3 \end{Bmatrix}的每个像素进行offset = {\displaystyle (\Delta x,\Delta y)}={\displaystyle (1,0)}的偶对采集,如下:

(0,0),(0,0),(0,3),(3,0)

(1,1),(1,1),(1,2),(2,1)

(1,2),(2,1),(2,3),(3,2)

统计以上偶对,形成下表:

0123
02001
10220
20201
31010

这就是offset = {\displaystyle (\Delta x,\Delta y)}={\displaystyle (1,0)}的共生矩阵:

 \begin{Bmatrix} 2 & 0 & 0& 1\\ 0 & 2&2& 0\\ 0& 2& 0&1 \\ 1&0 & 1& 0\end{Bmatrix}

3.2.2 垂直方向的偏移(90度)

{\displaystyle (\Delta x,\Delta y)}={\displaystyle (0,1)}

 对\begin{Bmatrix} 0 & 0 &3 \\ 1& 1 & 2\\ 1& 2& 3 \end{Bmatrix}的每个像素进行offset = {\displaystyle (\Delta x,\Delta y)}={\displaystyle (0,1)}的偶对采集,如下:

(0,1),(1,0),(1,1),(1,1)

(0,1),(1,0),(1,2),(2,1)

(3,2),(2,3),(2,3),(3,2)

统计以上偶对,形成下表:

0123
00200
12210
20102
30020

 \begin{Bmatrix} 0 & 2 & 0& 0\\ 2 & 2&1& 0\\ 1& 2& 0&2 \\ 0&0 & 2& 0\end{Bmatrix}

3.2.3 1-3象限方向的偏移(45度)

{\displaystyle (\Delta x,\Delta y)}={\displaystyle ( 1,-1)} (此处表示向下一格,向右-1格,别搞错了!

 对\begin{Bmatrix} 0 & 0 &3 \\ 1& 1 & 2\\ 1& 2& 3 \end{Bmatrix}的每个像素进行offset = {\displaystyle (\Delta x,\Delta y)}={\displaystyle (1,-1)}的偶对采集,如下:

(1,1),(1,1),(2,2),(2,2)

(1,0),(0,1),(1,3),(3,1)

统计以上偶对,形成下表:

0123
00100
11201
20020
30100

 \begin{Bmatrix} 0 & 1 & 0& 0\\ 1 & 2&0& 1\\ 0& 0& 2&0 \\ 0&1 & 0& 0\end{Bmatrix}

 2.2.4  2-4象限方向的偏移(135度)

{\displaystyle (\Delta x,\Delta y)}={\displaystyle ( 1,1)}

 对\begin{Bmatrix} 0 & 0 &3 \\ 1& 1 & 2\\ 1& 2& 3 \end{Bmatrix}的每个像素进行offset = {\displaystyle (\Delta x,\Delta y)}={\displaystyle (1,1)}的偶对采集,如下:

(0,1),(1,0),(0,2),(2,0)

(1,2),(2,1),(1,3),(3,1)

统计以上偶对,形成下表:

0123
00110
11011
21100
30100

 \begin{Bmatrix} 0 & 1 & 1& 0\\ 1 & 0&1& 1\\ 1& 1& 0&0 \\ 0&1 & 0& 0\end{Bmatrix}

至此,图像的四个方向共生矩阵都求出了。

四、参考代码

        以下代码求两个区域的共生矩阵,并用热图打印出来。

4.1 原图:

4.2 锁定区域

4.3 求出共生矩阵代码 

* Calculate the co-occurrence matrices of two regions in an image
* 
read_image (Image, 'mreut')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowID)
dev_display (Image)
dev_set_draw ('margin')
* Create two rectangles parallel to the coordinate axes
gen_rectangle1 (Rectangle1, 350, 100, 450, 200)
gen_rectangle1 (Rectangle2, 100, 200, 200, 300)
* set look-up-table of the output window
dev_set_lut ('temperature')
gen_cooc_matrix (Rectangle1, Image, Matrix1, 6, 0)
gen_cooc_matrix (Rectangle2, Image, Matrix2, 6, 0)
dev_set_lut ('default')

3.4 结果:

对比两个共生矩阵,上图对应区域像素单一,因而能量集中。下图像素复杂多变,故能量分散

这篇关于【halcon知识】:共生矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731079

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

AI模型的未来之路:全能与专精的博弈与共生

人工智能(AI)领域正迅速发展,伴随着技术的不断进步,AI模型的应用范围也在不断扩展。当前,AI模型的设计和使用面临两个主要趋势:全能型模型和专精型模型。这两者之间的博弈与共生将塑造未来的AI技术格局。本文将从以下七个方面探讨AI模型的未来之路,并提供实用的代码示例,以助于研究人员和从业者更好地理解和应用这些技术。 一、AI模型的全面评估与比较 1.1 全能型模型 全能型AI模型旨在在多

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x