灰度共生矩阵GLCM及其matlab实现
来源:互联网 发布:ipad保护套 知乎 编辑:程序博客网 时间:2024/05/17 04:19
Prerequisites
概念
计算方式
对于精度要求高且纹理细密的纹理分布,我们取像素间距为
我们来看,matlab内置工具箱中的灰度共生矩阵的生成函数graycomatrix(gray-level co-occurrence matrix)对方向的说明:
如上图所示,方向是在每一个像素点(pixel of interest)的邻域(当然,边界点除外)中获得的,只不过这里的坐标系变为了:
δ=(0,±1) 为水平方向扫描,也即θ=0∘orθ=180∘ ;δ=(±1,0) 为垂直扫描(θ=90∘orθ=−90∘ );δ=(1,−1),δ=(−1,1) 是−45∘ 或135∘ 扫描;δ=(1,1),δ=(−1,−1) 是45∘ 扫描。
一旦像素间距离
GLCM所表示的是纹理图像的某些统计特性,所谓统计,通俗地讲就是累计某种情况出现的次数,用这一次数除以总的情况数,即可得其统计意义上的概率。
我们来统计灰度级2与2在-45度和135度方向上(也即
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 0 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1SI = 2 2 6 7 9 9 3 4 6 8 1 3 1 3 4 6 7 8
demo
这里先写一个demo,稍微有点难懂的地方在于灰度共生矩阵的计算方式,然后是一些编程上的循环判断。其他方向的情况还未考虑(在第三和第四层循环的地方可能会略有不同),以及将其封装成一个函数的操作还是留待以后吧:
clear, clcP = [ 0 1 2 0 1 2 1 2 0 1 2 0 2 0 1 2 0 1 0 1 2 0 1 2 1 2 0 1 2 0 2 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; end end end G(p, q) = cnt; endendG
References
[1] <图像特征提取——灰度共生矩阵(GLCM)>
- 灰度共生矩阵GLCM及其matlab实现
- 灰度共生矩阵(GLCM) 及matlab代码实现
- GLCM灰度共生矩阵
- 灰度共生矩阵(GLCM)
- GLCM(灰度共生矩阵)
- GLCM灰度共生矩阵
- 灰度共生矩阵GLCM
- 灰度共生矩阵(GLCM)
- 计算灰度共生矩阵GLCM
- 计算灰度共生矩阵GLCM
- 灰度共生矩阵(GLCM)
- 计算灰度共生矩阵GLCM
- 灰度共生矩阵(GLCM)
- 计算灰度共生矩阵GLCM
- 图像的灰度共生矩阵GLCM(matlab 函数帮助)
- 图像的灰度共生矩阵GLCM(matlab 函数帮助)
- 转:GLCM(灰度共生矩阵)
- 灰度共生矩阵(GLCM)理解
- PL/SQL Developer使用技巧、快捷键
- linux下解压命令大全
- AFN
- 过拟合问题,通常会考虑两种途径来解决:a) 减少特征的数量:b) 正则化.
- CocoaPods 最近的一点小变化
- 灰度共生矩阵GLCM及其matlab实现
- Authenticate
- DG环境下 redo和 standby redo的增加和删除--及相关遇到的问题
- Linux路由表的配置
- win7 64位旗舰版安装英文语言包方法
- Android Studio打成jar包
- C语言——符号的声明与定义
- 异常com.google.gson.internal.StringMap cannot cast to..原因&解决方案
- MVC与MVVM区别?