灰度共生矩阵GLCM及其matlab实现
Prerequisites
概念
计算方式
对于精度要求高且纹理细密的纹理分布,我们取像素间距为d=1d = 1,以下是方向的说明:
我们来看,matlab内置工具箱中的灰度共生矩阵的生成函数graycomatrix(gray-level co-occurrence matrix)对方向的说明:
如上图所示,方向是在每一个像素点(pixel of interest)的邻域(当然,边界点除外)中获得的,只不过这里的坐标系变为了:
- δ=(0,±1)\delta=(0, \pm 1)为水平方向扫描,也即θ=0∘orθ=180∘\theta = 0^\circ or \theta = 180^\circ;
- δ=(±1,0)\delta=(\pm 1, 0)为垂直扫描(θ=90∘orθ=−90∘\theta = 90^\circ or \theta = -90^\circ);
- δ=(1,−1),δ=(−1,1)\delta = (1, -1), \delta = (-1, 1)是−45∘-45^\circ或135∘135^\circ扫描;
- δ=(1,1),δ=(−1,−1)\delta = (1, 1), \delta = (-1, -1)是45∘45^\circ扫描。
一旦像素间距离dd以及像素间空间位置关系δ\delta确定,即可生成灰度共生矩阵。
GLCM所表示的是纹理图像的某些统计特性,所谓统计,通俗地讲就是累计某种情况出现的次数,用这一次数除以总的情况数,即可得其统计意义上的概率。
我们来统计灰度级2与2在-45度和135度方向上(也即δ=(1,−1)\delta = (1, -1) 或者δ=(−1,1)\delta=(-1, 1))出现的次数,如图所示,共出现九次,在两个方向上即是18次。
matlab
matlab相关工具箱函数
使用灰度共生矩阵(GLCM)描述和提取图像纹理特征,是一个强大且流行的工具,自然matlab工具箱会提供相应的函数——graycomatrix
:
给出一个图像矩阵,设置一些参数,得到其灰度共生矩阵,这就是函数的基本用法:
[glcm, SI] = graycomatrix(I, ...)
主要的参数有二个,分别是
NumLevels
(灰度级数)
最终glcm
的size是NumLevels
*NumLevels
Offset
(方向[0, 1; -1, 1; -1, 0; -1, -1]):
[0, 1]
中的1
表示的偏移数(offset),当然也可以取2
或者更多,如上文所说,对于精度要求高且图像纹理本身即很丰富的图像来说,为了更精细地刻画,我们取偏移量(offset)为1
。
我们将原始I
转换为SI
,对SI
计算GLCM,SI
中元素的值介于[1, NumLevels]之间。
I = [ 1 1 5 6 8 8; 2 3 5 7 0 2; 0 2 3 5 6 7];[glcm, SI] = graycomatrix(I, 'NumLevels', 9, 'G', [])
% 'Offset'的default值为`[0, 1]`
glcm =0 0 2 0 0 0 0 0 00 1 0 0 0 1 0 0 00 0 0 2 0 0 0 0 00 0 0 0 0 2 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 2 1 00 0 0 0 0 0 0 1 11 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 1SI =2 2 6 7 9 93 4 6 8 1 31 3 4 6 7 8
demo
这里先写一个demo,稍微有点难懂的地方在于灰度共生矩阵的计算方式,然后是一些编程上的循环判断。其他方向的情况还未考虑(在第三和第四层循环的地方可能会略有不同),以及将其封装成一个函数的操作还是留待以后吧:
clear, clc
P = [ 0 1 2 0 1 2 1 2 0 1 2 02 0 1 2 0 10 1 2 0 1 21 2 0 1 2 02 0 1 2 0 1];
[r, c] = size(P);
P_u = unique(P); % 去重,得到所有的灰度级
n = length(P_u); % 不同灰度级的个数
G = zeros(n, n); % 初始化灰度共生矩阵为全0矩阵,%% 四层循环,最外层的两层循环用来为GLCM的各个位置赋值
% 内层的两层循环时遍历原始图像矩阵,累计符合某一对应关系的的情况出现的次数for p = 1:n,for q = 1:n,cnt = 0; % GLCM刻画的是灰度图像像素的统计特性,在matlab中通过次数的统计计算得到for i = 1:r,for j = 1:c,if (j+1) <= c && ((P(i, j) == p && P(i, j+1) == q) || P(i, j) == q && P(i, j+1) == p),cnt = cnt + 1;endendendG(p, q) = cnt;end
end
G
References
[1] <图像特征提取——灰度共生矩阵(GLCM)>
灰度共生矩阵GLCM及其matlab实现相关推荐
- matlab 灰度共生矩阵熵,图像的灰度共生矩阵GLCM(matlab 函数帮助).
Gray-level co-occurrence matrix from an image 图像的灰度共生矩阵 灰度共生矩阵是像素距离和角度的矩阵函数,它穿越计算图像中定然距离和定然方向的两点灰度之间 ...
- 灰度共生矩阵(GLCM)
灰度共生矩阵(GLCM) 算法简介 灰度共生矩阵法(GLCM, Gray - level co - occurrence matrix),就是通过计算灰度图像得到它的共生矩阵,然后透过计算该共生矩阵得 ...
- 基于灰度共生矩阵(GLCM)的图像纹理分析与提取
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 灰度共生矩阵 灰度共生矩阵(Gray Level CO-Occur ...
- 计算灰度共生矩阵GLCM
灰度共生矩阵 灰度共生矩阵定义为像素对的联合分布概率,是一个对称矩阵,它不仅反映图像灰度在相邻的方向.相邻间隔.变化幅度的综合信息,但也反映了相同的灰度级像素之间的位置分布特征,是计算纹理特征的基础. ...
- 二维特征分类的基础_纹理特征1:灰度共生矩阵(GLCM)
GLCM复习备用: 纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析.纹理分析在遥感图像.X射线照片.细胞图像判读和处理方面有广泛的应用.关于纹理,还没有一个统一的数学模型.它起源于表征纺织品表面 ...
- 灰度共生矩阵及matlab实现
matlab函数: graycomatrix() 功 能:创建灰度共生矩阵 Gray-level co-occurrence matrix from an image 图像的灰度共 ...
- 关于灰度共生矩阵的一点知识(MATLAB)
目录 一.基本理论 1.背景 2.概念 3.含义 4.例证 5.规律 二.特征量 1.对比度(contrast) 2.角二阶矩(Angular Second Moment, ASM) 3.熵(entr ...
- 纹理特征分析的灰度共生矩阵(GLCM)
纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析.纹理分析在遥感图像.X射线照片.细胞图像判读和处理方面有广泛的应用.关于纹理,还没有一个统一的数学模型.它起源于表征纺织品表面性质的纹理概念,可以 ...
- 灰度共生矩阵特征提取步骤_灰度共生矩阵纹理特征提取的Matlab实现
灰度共生矩阵纹理特征提取的 Matlab 实现 焦蓬蓬 ; 郭依正 ; 刘丽娟 ; 卫星 [期刊名称] <计算机技术与发展> [年 ( 卷 ), 期] 2012(000)011 [摘要] ...
最新文章
- Vue.js 学习路线
- 百度新闻后台逻辑流程分析
- android 编译器有问题,Android Studio 3.0 Beta 2发布:解决编译器bug
- magento 高级搜索 brand实例 Magento ‘Shop By Brand’ in SideBar
- 回望2017:一个前端从业者砥砺前行的一年
- 用c语言编写最大最小值_C语言学习教程,用C语言编写扫雷游戏
- php array 删除末尾,PHP array_pop():删除数组末尾的元素
- aix 在线软件包安装 字符集 mysql安装
- 2022中国边缘计算企业20强
- 再起风云的社交电商,到底是穷途末路还是柳暗花明?
- iOS Info.plist知多少
- UNITY材质球合并
- 基于SSM框架的狼途汽车门店管理系统的设计与实现
- 高德地图API调用自定义地图使用
- 关于红帽RHCE考试的那些事儿
- Chrome如何使用
- 大话设计模式系列目录
- 燕十八 mysql 复习_燕十八 Mysql 笔记 68 课
- 快速入门CSS || 干货 自整语句大全
- 导航基础之坐标系整理——导航坐标系、地球坐标系、载体坐标系
热门文章
- 虚拟机centos7 git clone特别慢_从文件生命周期看GIT的提交流程
- excel表格导入功能
- 清空缓存的命令_布隆过滤器应用——解决Redis缓存穿透问题
- 全局负载均衡通俗介绍_“集群和负载均衡”等的通俗解释
- 51nod 1770 数数字
- 机器学习——HMM(隐马尔可夫模型的基本概念)(一)
- 数学趣事(自然数的因数)
- 用pyinstaller把python脚本编译成可执行程序(windows系统)
- 可能比文档还详细--VueRouter完全指北
- JavaScript 01