问题是您必须向greycomatrix传递一个整数数组,但是np.nan的类型是float(有关详细信息,请查看this thread)。因此,您不能将ROI之外的像素编码为NaN。在

处理非矩形ROI的一个近似解决方法是将ROI之外的像素设置为0,并使用mahotas库中的函数haralick。此函数返回从四个不同的GLCM中提取的13个Haralick特征,对应于四个二维方向和距离参数的特定值。在

根据文件:ignore_zeros can be used to have the function ignore any zero-valued

pixels (as background).

总之,您需要遮罩那些不在ROI范围内的像素,并在对haralick的调用中将ignore_zeros设置为True。在

演示

首先,让我们生成一些模拟数据:In [213]: import numpy as np

In [214]: shape = (3, 4)

In [215]: levels = 8

In [216]: np.random.seed(2017)

In [217]: x = np.random.randint(0, levels, size=shape)

In [218]: x

Out[218]:

array([[3, 1, 6, 5],

[2, 0, 2, 2],

[3, 7, 7, 7]])

然后我们必须从图像中去除所有的零,因为在这种方法中,零强度级别是为ROI之外的像素保留的。值得指出的是,将强度0和{}合并为一个强度1会导致结果不准确。在

^{pr2}$

下一步是为ROI之外的像素定义一个掩码(在这个玩具示例中,是图像的四个角),并将这些像素设置为0。在In [221]: non_roi = np.zeros(shape=shape, dtype=np.bool)

In [222]: non_roi[np.ix_([0, -1], [0, -1])] = True

In [223]: non_roi

Out[223]:

array([[ True, False, False, True],

[False, False, False, False],

[ True, False, False, True]], dtype=bool)

In [224]: x[non_roi] = 0

In [225]: x

Out[225]:

array([[0, 1, 6, 0],

[2, 1, 2, 2],

[0, 7, 7, 0]])

我们现在可以从非矩形ROI的GLCM中执行特征提取:In [226]: import mahotas.features.texture as mht

In [227]: features = mht.haralick(x, ignore_zeros=True)

In [228]: features.size

Out[228]: 52

In [229]: features.ravel()

Out[229]: array([ 0.18 , 5.4 , 0.5254833 , ..., 0.81127812,

-0.68810414, 0.96300727])

检查共现矩阵的外观可能很有用。例如,“右侧像素”GLCM将是:In [230]: mht.cooccurence(x, 0)

Out[230]:

array([[0, 1, 0, ..., 0, 1, 2],

[1, 0, 2, ..., 0, 1, 0],

[0, 2, 2, ..., 0, 0, 0],

...,

[0, 0, 0, ..., 0, 0, 0],

[1, 1, 0, ..., 0, 0, 0],

[2, 0, 0, ..., 0, 0, 2]])

python取非_Python:取非矩形区域的GLCM相关推荐

  1. python取整数_python 取整函数

    向下取整的运算称为Floor,用数学符号⌊⌋表示:向上取整的运算称为Ceiling,用数学符号⌈⌉表示.例如: ⌊59/60⌋=0 ⌈59/60⌉=1 ⌊-59/60⌋=-1 ⌈-59/60⌉=0 向 ...

  2. python的取整和取余_python取余运算符是什么?

    python取余运算符是什么? python取余运算符是%,即表示取模,返回除法的余数. 假设变量: a=10,b=20: 那么b % a 输出结果 0 Python语言支持以下类型的运算符: (1) ...

  3. python四舍五入取整_Python取整——向上取整、向下取整、四舍五入取整、向0取整...

    废话少叙,直接上code: 首先,不得不提醒大家一个容易被忽视或者搞混的问题--一般的,0.5这种末尾是5的小数,四舍五入取整应进位.这个进位的意思是:-0.5 → -1:0.5 → 1.即正负情况不 ...

  4. python的取整和取余_python取余取整

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 取余的公式:余数=除数-被除数*商python的的余数是按照整除(向下取整)得到 ...

  5. python数组取数_python 取数组

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在python中计算一个多维数组的任意百分比分位数,只需用np.percenti ...

  6. python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......

    怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...

  7. python怎么取小数_python取小数点

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本篇主要介绍python的变量,标识符,转义字符,几个基本的数据类型字符串(包括 ...

  8. python websocet回调_python – 线程,非阻塞websocket客户端

    他们的 github page中有一个例子可以做到这一点.看起来你从那个例子开始并从on_open中每秒发送一次消息并在run_forever调用之后粘贴它,BTW一直运行直到套接字断开. 也许你在这 ...

  9. pythonsqrt取整函数_python取整函数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! round(5.6)6运算取整时保留整数的下界,int则是剪去小数部分,只保留前 ...

  10. 用python画长方形_Python+opencv:绘制矩形,编写文本,PythonOpenCV,画,矩形框

    #用 OpenCV 标注 bounding box主要用到下面两个工具--cv2.rectangle() 和 cv2.putText().用法如下: # cv2.rectangle() # 输入参数分 ...

最新文章

  1. 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
  2. SAP SD基础知识之输出控制(Output Control)
  3. IE二级链接无法打开
  4. Javascript(6)
  5. 一次 Young GC 的优化实践
  6. vue子父组件间传值
  7. jQuery实现一个图片左右滚动
  8. 让Apache日志不记录图片等指定扩展名文件的设置方法
  9. 行政区域村级划分数据库_最新行政区划省市区街道乡镇数据库 每月更新版
  10. 物联网背景的智慧农业 能否搭上顺风车
  11. 嵌入式开发有必要学习python吗?
  12. 面试官问:为什么 Java 线程没有Running状态?我懵了
  13. web端接收读卡器卡片信息
  14. H5+微信公众号扫二维码页面跳转功能 vue实现
  15. 支持本地挂载的网盘文件列表工具AList
  16. BigDecimel转人民币大写
  17. WebGL,Cesium以及GeoJSON数据的简单介绍
  18. Java中如果被除数是零时的异常处理
  19. 亚马逊、eBay、速卖通、lazada、Shopee等跨境平台,如何快速打造爆款
  20. 数据库MySQL的使用,带GUI界面

热门文章

  1. struts2 空文件上传解决
  2. springboot-20-全局异常处理
  3. 《NX-OS与Cisco Nexus交换技术:下一代数据中心架构(第2版)》一2.9 本章小结...
  4. 配置追踪者—Scylla v1(***测试工具)
  5. PIL 图片压缩处理
  6. 「轻阅读」如何设计全链路99.99%高可用架构?
  7. linux7.2 网卡设置,CentOS 7.2网络配置
  8. ELK logstash grok匹配失败存另外的es表
  9. phpqrcode 生成二维码
  10. tomcat端口被占用的解决方式