因为最近有用到灰度共生矩阵来提取图像的纹理特征,所以感觉有必要对这个理论进行讲述一下。灰度共生矩阵也称为联合概率矩阵法,是一种用图像中某一灰度级结构重复出现的概率来描述纹理信息的方法。该方法用条件概率提取纹理的特征,通过统计空间上具有某种位置关系(像素间的方向和距离)的一对像素的灰度值对出现的概率构造矩阵,然后通从该矩阵提取有意义的统计特征来描述纹理。理论不适合讲太多,下面我将按照提取纹理特征的顺序来讲如何提取一幅图片的纹理特征。

首先介绍一个库scikit-image,访问网址在下面,这可是提取灰度共生矩阵以及纹理特征的法宝噢:

https://scikit-image.org/

1.图像灰度级降级

在提取纹理特征之前,十分有必要对图像的灰度级进行降级,灰度共生矩阵的大小也与灰度级大小数量上是相等的,如果所以如果灰度级太大,会导致灰度共生矩阵太大,会导致计算量特别大,导致程序所运行的时间特别长,同时效果也不是说灰度共生矩阵越大,效果就会越好,需要根据实际的情况来选定灰度共生矩阵大小,常用的灰度级数有,3,4到16等。

2.计算灰度共生矩阵

这时就要用到上面介绍的法宝啦,skimage.graymatrix,引用skimage官网中的一个例子进行讲解

>>> image = np.array([[0, 0, 1, 1],
...                   [0, 0, 1, 1],
...                   [0, 2, 2, 2],
...                   [2, 2, 3, 3]], dtype=np.uint8)
>>> g = graycomatrix(image, [1, 2], [0, np.pi/2], levels=4,
...                  normed=True, symmetric=True)
>>> contrast = graycoprops(g, 'contrast')
>>> contrast
array([[0.58333333, 1.        ],[1.25      , 2.75      ]])

此时上面输入的image是已经经过灰度级降级的图片,此时的灰度级为4

skimage.feature.graycomatrix(imagedistancesangleslevels=Nonesymmetric=Falsenormed=False)

image:经过灰度级降级的图像

distances:生成共生矩阵时像素点之间的距离

angles:灰度共生矩阵生成的方向,可以为0°,45°, 90°,135°,可以列表的形式存储多个角度,上面的例子中仅提取了两个方面。

symmetric:统计正向结果,还是正向结果和反向结果均统计

然后用利用skimage.feature.graycoprops提取特征

官网上给出了如下特征:

显示不太全面,可以考虑访问这个网址

Module: feature — skimage v0.19.2 docs (scikit-image.org)

举个栗子:

假如你想提取ASM

只需输入下面的命令语句:

skimage.feature.graycoprops(P, prop='ASM')

P是利用graycomatrix提取的灰度共生矩阵,给prop赋不同的值,便可以提取不同的纹理特征值

skimage现在提供的纹理特征值有:

contrast’, ‘dissimilarity’, ‘homogeneity’, ‘energy’, ‘correlation’, ‘ASM’

这篇文章主要讲述了如何利用skimage库提取纹理特征,相比于自己手写提取纹理特征的程序可方便太多了。有关灰度共生矩阵的具体理论知识,读者可自行去查看数字图像处理这本书。

建立在灰度共生矩阵理论知识的基础之上,利用skimage提取数字图像的纹理特征相关推荐

  1. 二维特征分类的基础_纹理特征1:灰度共生矩阵(GLCM)

    GLCM复习备用: 纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析.纹理分析在遥感图像.X射线照片.细胞图像判读和处理方面有广泛的应用.关于纹理,还没有一个统一的数学模型.它起源于表征纺织品表面 ...

  2. 知识图谱基础知识(一): 概念和构建

    推荐: 知识图谱构建技术一览 知识图谱基础知识之三--知识图谱的构建过程 目录 一.什么是知识图谱 二.知识图谱的分层架构 三.知识图谱构架技术 (一)数据获取(Data Acquisition) ( ...

  3. 如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据

    如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232  作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据产品的体 ...

  4. 计算机专业技能知识,2017年度计算机专业技能知识资料基础知识资料试题'及其答案...

    2017年度计算机专业技能知识资料基础知识资料试题'及其答案 (19页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 ''第一部分   一 ...

  5. 15版计算机应用基础知识整理,[电脑基础知识]计算机应用基础.ppt

    [电脑基础知识]计算机应用基础 计算机应用基础 统考 主要内容 考试大纲分析 考题类型与所占比例 考试环境 各章节考点讲解 计算机基础知识 Windows操作 Word.Excel.Powerpoin ...

  6. Linux的基本知识和基础操作

    Linux的基本知识和基础操作 一.基本知识 Linux是基于Unix的 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种 ...

  7. GPU硬件知识和基础概念 : AI时代程序员都应该了解的GPU基础知识

    金融建模.自动驾驶.智能机器人.新材料发现.脑神经科学.医学影像分析-人工智能时代的科学研究极度依赖计算力的支持.提供算力的各家硬件芯片厂商中,最抢镜的当属英伟达Nvidia了.这家做显卡起家的芯片公 ...

  8. 视频相关的理论知识与基础概念

    本文将视频相关的理论知识与基础概念划分为 11 个知识点,如下: 视频 分辨率 比特率 采样率 帧率 视频编码 编码标准 视频封装格式 视频解码 视频播放原理 视频与流媒体 1.视频 根据人眼视觉暂留 ...

  9. 一篇文章帮你建立自己的大数据知识体系!

    现在大数据非常火爆,相信你一定看过不少关于大数据的书.文章.资讯,但基本上获取的都是零碎的知识点,不成系统,没有形成自己的知识体系,"看过很多知识点但依然搞不懂大数据",然并卵.那 ...

最新文章

  1. mysql 字符编码
  2. WPF实例秀——如何获取UI元素的图像
  3. swift和OC混编
  4. [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【三】
  5. 【java】线程 ExecutorService 原理 源码 解释
  6. mongodb 全文搜索---ttlsa教程系列之mongodb(十)
  7. [译] APT分析报告:05.Turla新型水坑攻击后门(NetFlash和PyFlash)
  8. android View的生命周期
  9. 利用adsl拨号服务器VPS构建代理IP池
  10. 可水解盐类pH值的计算
  11. [导入]冰刃Icesword 1.22测试版发布
  12. auto.js启动app
  13. 代码打字速度_使用VueJS创建打字速度效果
  14. 媒体查询支持ie浏览器各版本的方法
  15. 开篇词:为什什么要学习 Spring Boot
  16. 零阶保持器(ZOH)与一阶低通滤波器频率特性分析
  17. win10下安装gcc
  18. java从项目里下载excel模板
  19. 我们在配置OpenAL的时候到底做了什么
  20. 利用HTML5 canvas元素+原生JS编写贪吃蛇

热门文章

  1. three.js之访问几何体数据与几何体的旋转平移
  2. RestEasy的入门与使用
  3. 射频天线设计-阻抗匹配
  4. 解决pandas TypeError: bad operand type for unary ~: 'float'
  5. [这货不是游戏]细胞分裂
  6. MongoDB Capped Collection介绍
  7. Python一日一练08----鸡尾酒排序
  8. python 线性插值处理_Python中的线性插值
  9. N63044-第七周
  10. 小学python都学哪些内容_python是什么?连小学生都开始学Python,你还等什么?