scipy.ndimage.measurements.find_objects()
从标签数据,确切地说是从打上标签的连通成分中,输出各个连通成分的最小边界框。
本博文先讲解find_objects()]的使用方法,并对输出数据进行详细解释;
然后,讲解如何修改find_objects()]的输出。

import numpy as np
from scipy.ndimage.measurements import label,find_objects
seg_array = np.array([[[0, 0, 0, 0, 0, 0],[0, 1, 1, 0, 0, 0],[0, 1, 1, 0, 0, 0],[0, 1, 1, 0, 0, 1],[0, 0, 0, 0, 0, 1],[0, 0, 0, 0, 0, 0]],[[0, 0, 0, 0, 0, 0],[0, 1, 1, 0, 0, 0],[0, 1, 1, 0, 0, 0],[0, 1, 1, 0, 0, 1],[0, 0, 0, 0, 0, 1],[0, 0, 0, 0, 0, 0]],[[0, 0, 0, 0, 0, 0],[0, 1, 1, 0, 0, 0],[0, 1, 1, 0, 0, 0],[0, 1, 1, 0, 0, 1],[0, 0, 0, 0, 0, 1],[0, 0, 0, 0, 0, 0]]])
mask_lesion, num_predicted = label(seg_array, output=np.int16)
print(mask_lesion)
locations = find_objects(mask_lesion)
print(locations)
for loc in locations:print(seg_array[loc])

输出

# print(mask_lesion)
[[[0 0 0 0 0 0][0 1 1 0 0 0][0 1 1 0 0 0][0 1 1 0 0 2][0 0 0 0 0 2][0 0 0 0 0 0]][[0 0 0 0 0 0][0 1 1 0 0 0][0 1 1 0 0 0][0 1 1 0 0 2][0 0 0 0 0 2][0 0 0 0 0 0]][[0 0 0 0 0 0][0 1 1 0 0 0][0 1 1 0 0 0][0 1 1 0 0 2][0 0 0 0 0 2][0 0 0 0 0 0]]]
# print(locations)
[(slice(0, 3, None), slice(1, 4, None), slice(1, 3, None)), (slice(0, 3, None), slice(3, 5, None), slice(5, 6, None))]
# print(seg_array[loc])
[[[1 1][1 1][1 1]][[1 1][1 1][1 1]][[1 1][1 1][1 1]]]
[[[1][1]][[1][1]][[1][1]]]

1. 理解find_objects()

注意事项:

find_objects()的输入须是按连通成分打过标签的数据。

输出解释:

[(slice(0, 3, None), slice(1, 4, None), slice(1, 3, None)),
(slice(0, 3, None), slice(3, 5, None), slice(5, 6, None))]
  1. 输出的类型是元组list;
  2. 因为mask_lesion中有两个连通成分,所以list中有两个元组,分别代表两个连通成分的具体位置信息;
  3. 因为数据是三维的,所以每个元组有三个silice,分别对应z,x,y轴的下限和上限索引值,遵循索引得左闭右开性质。
    e.g. (slice(0, 3, None), slice(1, 4, None), slice(1, 3, None))翻译过来就是[0:3,1:4,1:3 ]这样的索引。

2. 修改find_objects()的输出

查看slice类型和属性

print(slice)
print(dir(slice))

输出

<class 'slice'>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'indices', 'start', 'step', 'stop']

由此,我们可以利用slice的后三个属性来读写对应的slice

print(locations[0][0].start)
print(locations[0][0].stop)
print(locations[0][0].step)

输出

0
3
None

附:
Python slice() 函数
Python dir() 函数

scipy.ndimage.measurements.find_objects()相关推荐

  1. scipy 图像处理(scipy.misc、scipy.ndimage)、matplotlib 图像处理

    from scipy.misc import imread / imsave / imshow imresize / imrotate / imfilter 1. scipy.misc 下的图像处理 ...

  2. 图片操作scipy.ndimage.imread和scipy.misc.imresize

    读图片str or file object--ndarray scipy.ndimage.imread(*args, **kwds) imread is deprecated! imread is d ...

  3. scipy.ndimage.zoom上采样与下采样

    插值 Bilinear interpolation would be order=1, nearest is order=0, and cubic is the default (order=3). ...

  4. scipy.ndimage.filters.gaussian_filter()

    scipy.ndimage.filters.gaussian_filter() 多维高斯滤波器 scipy.ndimage.filters.gaussian_filter(input, sigma, ...

  5. scipy.ndimage.morphology

    scipy.ndimage.morphology.generate_binary_structure scipy.ndimage.morphology.generate_binary_structur ...

  6. scipy.ndimage.distance_transform_edt 和 cv2.distanceTransform用法

    scipy.ndimage.distance_transform_edt 和 cv2.distanceTransform 的作用都是计算一张图上每个前景像素点到背景的最近距离. import cv2 ...

  7. python 读png的值变了_python – 为什么scipy.ndimage.io.imread返回PngImageFile,而不是值数组...

    您可能有一个不完整的Python成像库(PIL)安装,SciPy依赖它来读取图像. PIL依赖于libjpeg加载JPEG图像和libz来加载PNG图像,但是可以在没有任何图像的情况下安装(在这种情况 ...

  8. 【scipy】 scipy.ndimage 数学形态学(Mathematical morphology)

    ____tz_zs笔记 形态学 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构.而我们图像处理中指的形态学,往往表示的是数学形态学. 数学形态学(Math ...

  9. 【Python基础】科学计算库Scipy简易入门

    0.导语 Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工 ...

  10. 【机器学习基础】Scipy(科学计算库) 手把手手把手

    0.导语 Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工 ...

最新文章

  1. KDE发布四月份更新(4.6.2),与GNOME同祝
  2. Android事件机制:事件传递和消费
  3. python基础:try...except...的详细用法
  4. 左神算法:加强堆的实现(Java)
  5. mac 设置mysql开机自启动
  6. node获取图片路径_使用软连接来解决 Drupal jsonapi 中 Node 节点图片相对路径的问题...
  7. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
  8. Array.prototype.slice.call()方法详解
  9. 史上最全最白话RNN原理
  10. 从 0 开始了解 Docker(ubuntu )
  11. c语言程序设计输出函数,输出函数C语言程序设计.pdf
  12. windows环境下sqlmap安装教程及问题详解
  13. 74ls138和与非门设计全减器_用74ls138和门电路设计1位二进制全减器
  14. 360浏览器兼容性问题
  15. 小白学 Python 数据分析(4):Pandas——数据导入
  16. 先电iaas云平台搭建(openstack)————搭建过程
  17. ffmpeg rtmp 花屏_使用FFMPEG进行视频转码
  18. 射频识别系统及WMS仓库管理系统功能介绍
  19. selenium模拟登陆豆瓣并获取cookies
  20. 【Python网络爬虫】基本原理

热门文章

  1. 清北学堂(2019 4 30 ) part 3
  2. php yii 微信支付宝,Yii使用easywechat实现微信支付
  3. 聊聊千古名方逍遥丸【转载】
  4. 2020年全球及中国干细胞医疗行业发展现状及竞争情况分析,美国领先于世界,北上广领先于中国「图」
  5. svn提交变慢,svn update提示Node remains in conflict报错解决办法
  6. MySQL数据库基础03 韩顺平 自学笔记
  7. 网络通信优化之通信协议:如何优化RPC网络通信?
  8. 【已解决】点击Import Package没有Environment与Effects等问题(从官网下载Environment等相关资源包)
  9. [常用类]Instant类的使用
  10. Daring Fireball