halcon知识:共生矩阵
一、共生矩阵基本概念
共现矩阵或共现分布(也称为:灰度共现矩阵 GLCM)是在图像上定义为同时出现的像素值(灰度值或颜色)的分布的矩阵) 在给定的偏移量处。它被用作具有各种应用的纹理分析方法,特别是在医学图像分析中。
给定灰度图像,共生矩阵计算图像中具有特定值和偏移量组成一个偶对的像素对出现的频率(这是不是类似直方图?对的,就是二维图内两个相对位置像素对的直方统计)。
- 灰度级别化(scales):指灰度按照对数取划分等级,如0-255灰度可写成,共8个等级
- 偏移量: 是一个位置算子,可以应用于图像中的任何像素(忽略边缘效应):例如, 可以表示“向下一格,向右两格”。
取图像(N×N)中任意一点(x,y)及偏离它的另一点(x+a,y+b),设该点序的灰度值为(g1,g2)和(g2,g1)。令点(x,y)在整个画面上移动,则会得到各种(g1,g2)和(g2,g1)值。
- 对于给定的偏移量,具有 不同像素的图像将产生一个维度的共现矩阵。
- 共现矩阵的值给出了图像中出现的次数 和 像素值出现在偏移量给出的关系中。
对于具有 个不同像素值的图像, 共现矩阵 C 定义在图像,由偏移量 参数化,如:
其中: 和 是像素值;和 是图像中的空间位置;偏移量 定义了计算该矩阵的空间关系; 表示像素 处的像素值。
对于8bit的图像,灰度共生矩阵为矩阵。
图像的“值”最初指的是指定像素的灰度值,但可以推广成任何值,从二进制开/关值到32位整数等等。(请注意,32位颜色将生成232×232共生矩阵!)
共现矩阵也可以根据距离和角度来参数化,而不是偏移量。
任何矩阵或矩阵对都可以用来生成共生矩阵,尽管它们最常见的应用是测量图像中的纹理,因此如上所述的典型定义假定矩阵是图像。
也可以跨两个不同的图像定义矩阵。这样的矩阵可以用于颜色映射。
二、以上看不懂吗?请看下面举例后再回头看就懂了
这里有的灰度图像:
2.1 分级(scales)
; 因此,原图被分成四级,转化成:
2.2 求规定偏移的共生矩阵
关于0,90,45,135度的偏移(向右向下为正方向):
2.2.1 水平偏移(度)
对的每个像素进行的偶对采集,如下:
(0,0),(0,0),(0,3),(3,0)
(1,1),(1,1),(1,2),(2,1)
(1,2),(2,1),(2,3),(3,2)
统计以上偶对,形成下表:
0 | 1 | 2 | 3 | |
0 | 2 | 0 | 0 | 1 |
1 | 0 | 2 | 2 | 0 |
2 | 0 | 2 | 0 | 1 |
3 | 1 | 0 | 1 | 0 |
这就是的共生矩阵:
2.2.2 垂直方向的偏移(9度)
对的每个像素进行的偶对采集,如下:
(0,1),(1,0),(1,1),(1,1)
(0,1),(1,0),(1,2),(2,1)
(3,2),(2,3),(2,3),(3,2)
统计以上偶对,形成下表:
0 | 1 | 2 | 3 | |
0 | 0 | 2 | 0 | 0 |
1 | 2 | 2 | 1 | 0 |
2 | 0 | 1 | 0 | 2 |
3 | 0 | 0 | 2 | 0 |
2.2.3 1-3象限方向的偏移(45度)
(此处表示向下一格,向右-1格,别搞错了!)
对的每个像素进行的偶对采集,如下:
(1,1),(1,1),(2,2),(2,2)
(1,0),(0,1),(1,3),(3,1)
统计以上偶对,形成下表:
0 | 1 | 2 | 3 | |
0 | 0 | 1 | 0 | 0 |
1 | 1 | 2 | 0 | 1 |
2 | 0 | 0 | 2 | 0 |
3 | 0 | 1 | 0 | 0 |
2.2.4 2-4象限方向的偏移(135度)
对的每个像素进行的偶对采集,如下:
(0,1),(1,0),(0,2),(2,0)
(1,2),(2,1),(1,3),(3,1)
统计以上偶对,形成下表:
0 | 1 | 2 | 3 | |
0 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 1 |
2 | 1 | 1 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
至此,图像的四个方向共生矩阵都求出了。
三、参考代码
以下代码求两个区域的共生矩阵,并用热图打印出来。
3.1 原图:
3.2 锁定区域
3.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知识:共生矩阵相关推荐
- halcon知识:圆度和紧凑度
一.说明 本文是halcon知识:select_shape究竟怎么用(1)的继续,关于select_shape的用途说的还不够,因为这些属性很多,有必要分开介绍. 二.圆度和紧凑度的直观演示 2.1 ...
- halcon知识:图像纹理特征提取cooc_feature_matrix
一.关于共生矩阵 如果不懂啥叫共生矩阵,将无法阅读该文.如果试图搞明白啥叫共生矩阵,请看我的另一篇博文,<hjalcon知识:共生矩阵> 本片介绍共生矩阵产生的其它属性:能量.相关性.同质 ...
- Halcon知识:如何用mfc显示halcon读入图象
一.说明 直接用VC++/MFC图像,只能是BMP格式.然而,在OpenCV或Halcon显示各类图像(JPG.PNG等)却很容易.本篇叙述如何利用halcon组件读取图片,然后在MFC的窗口显示.当 ...
- halcon知识:【1】二维码原理
1 QR码的历史 1994 年, DENSO WAVE子公司需要更好.更快.更强大的条码技术来处理更多字符并帮助他们跟踪车辆和零件. Masahiro Hara 和一个两人团队承担了开发我们现在知道和 ...
- halcon知识:hough变换检出图像的直线
一.说明 用hough变换查找直线:hough的原理见文章: 图像处理:Hough变换原理分析 此文专门介绍halcon的具体算子实现. 二.示例代码 * Detect lines in an im ...
- halcon知识:差分模板variation_model
一.差分模板 这个示例程序展示了如何使用 HALCON 的变分模型算子执行典型的打印质量检查.程序检测在笔夹上的不正确打印.该程序类似于程序 print_check.hdev.主要区别是每个字符都是单 ...
- halcon知识:对空图像的系列操作
一.说明 halcon生成一个空白图像是有意义的,尤其是设计算法实验的时候.这里给出单生成通道 图像,和多通道图像方法. 二.生成灰度图像 gen_image_const(Image,'byte',5 ...
- Halcon知识:segment_contours_xld算子
一.案例说明 边界提取:以前的边缘提取都建立在前景通过thresold将区域提取出,然后从区域提出XLD,但是,如果区域无法提出就不好办了.此例子告诉大家,不必二值化提取,也能取出边缘来,edges_ ...
- Halcon知识 : 乘法图像融合
1 算子mult_image halcon提供的关于融合图像的问题mult_image算子是图像融合的工具: 其中:g1是图像omage1的像素,g2是图像omage2的像素,Mult是一个系数,Ad ...
最新文章
- 解密Elasticsearch技术,腾讯开源的万亿级分布式搜索分析引擎
- CodeBlocks集成Objective-C开发 Windows下学习Objective-C
- 【预言】分布式缓存成为操作系统的一部分
- 由树先序遍历和中序遍历输出其后续遍历
- vue 改变domclass_基于 vue 开发甘特图组件的心路历程(兼设计分享)
- jmeter+mysql+set_Jmeter中如何进行对数据库压测(上)
- Python基础教程:list深拷贝和浅拷贝
- Visual Tracking:运行ECO模型
- 北邮OJ 884. 16校赛-Average Modulo
- 使用 Apache MINA 开发高性能网络应用程序
- th:text为null报错_为什么建议你用nullptr而不是NULL?
- Supervisor进程守护监控
- makefile 编译不同目录下的源文件
- colab显示没有gpu的解决方法
- 坑了多少人?这就是乐视网负债总规模!
- CCF201604-1 折点计数(100分)
- 因果推断笔记——因果图建模之微软开源的EconML(五)
- jQuery入门视频教程
- “一路有你”——迷你TXT小说阅读器 V2.8 正式版 发布!
- win服务器接她tar.gz文件,Window平台下压缩文件为tar.gz格式的方法