python取非_Python:取非矩形区域的GLCM
问题是您必须向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相关推荐
- python取整数_python 取整函数
向下取整的运算称为Floor,用数学符号⌊⌋表示:向上取整的运算称为Ceiling,用数学符号⌈⌉表示.例如: ⌊59/60⌋=0 ⌈59/60⌉=1 ⌊-59/60⌋=-1 ⌈-59/60⌉=0 向 ...
- python的取整和取余_python取余运算符是什么?
python取余运算符是什么? python取余运算符是%,即表示取模,返回除法的余数. 假设变量: a=10,b=20: 那么b % a 输出结果 0 Python语言支持以下类型的运算符: (1) ...
- python四舍五入取整_Python取整——向上取整、向下取整、四舍五入取整、向0取整...
废话少叙,直接上code: 首先,不得不提醒大家一个容易被忽视或者搞混的问题--一般的,0.5这种末尾是5的小数,四舍五入取整应进位.这个进位的意思是:-0.5 → -1:0.5 → 1.即正负情况不 ...
- python的取整和取余_python取余取整
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 取余的公式:余数=除数-被除数*商python的的余数是按照整除(向下取整)得到 ...
- python数组取数_python 取数组
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在python中计算一个多维数组的任意百分比分位数,只需用np.percenti ...
- python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......
怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...
- python怎么取小数_python取小数点
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本篇主要介绍python的变量,标识符,转义字符,几个基本的数据类型字符串(包括 ...
- python websocet回调_python – 线程,非阻塞websocket客户端
他们的 github page中有一个例子可以做到这一点.看起来你从那个例子开始并从on_open中每秒发送一次消息并在run_forever调用之后粘贴它,BTW一直运行直到套接字断开. 也许你在这 ...
- pythonsqrt取整函数_python取整函数
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! round(5.6)6运算取整时保留整数的下界,int则是剪去小数部分,只保留前 ...
- 用python画长方形_Python+opencv:绘制矩形,编写文本,PythonOpenCV,画,矩形框
#用 OpenCV 标注 bounding box主要用到下面两个工具--cv2.rectangle() 和 cv2.putText().用法如下: # cv2.rectangle() # 输入参数分 ...
最新文章
- autoware使用相机和深度学习进行目标检测(六)
- Mac中MacPorts安装和使用
- 程序员的朋友圈应该是这样的。。。
- 编写一个函数进行左移或右移的位运算
- iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)...
- EXTjs grid与json数据 转载
- 词云(WordCloud)参数详情
- 调用本地电脑摄像头并进行按P进行捕获照片并保存,按下Q退出
- 16 FI配置-财务会计-为准备激活销售会计核算的成本
- 数据 3 分钟 | Oracle 首度失去榜首位置、PingCAP 发布 TiDB 荣耀体验官活动、华为召开开发者大会 2021
- apipost提示error:invalid protocol的解决方案
- 在svn中发布多个工程
- Python 目录及文件操作(os.模块)
- java保存文件filedialog保存路径 文件名_FileDialog文件名过滤问题
- 银行转账java代码事务实现_Spring事务银行转账示例
- 《人类简史》二、认知革命——上帝之手的秘密
- 2005年计算机图书出版路在何方——出版崩溃了吗?
- Markdown初体验
- Team Foundation Power Tools 1.2发布
- CUDA thrust