【发布时间】:2018-11-14 01:15:31
【问题描述】:
我有一个大小为512*512*30 的 3D 图像。我还有一个 csv 文件,其中存储了兴趣点。我想在兴趣点周围裁剪大小为32*32*16 的3D 体积,该点位于其中心。我写了以下内容来实现这一点:
block = [32, 32, 16]
img = imageio.volread('path\\to\\tiff\\file')
x, y, z = 191, 303, 17
img_block = img_block[x - int(block[0] / 2):x + int(block[0] / 2),
y - int(block[1] / 2):y + int(block[1] / 2),
z - int(block[2] / 2):z + int(block[2] / 2)]
这在上述情况下有效,但当我在边缘有一个 x、y、z 点时失败,例如在 z = 28 我得到一个超出范围的错误,这是预期的。
如何避免这个问题并确保顺利完成?
谢谢
【问题讨论】:
-
答案在一定程度上取决于您想对异常值做什么。处理该问题的典型方法称为“边界检查”。你可以用零填充你的数组,在边界镜像或者只是丢弃值。什么最适合您?
-
另外:如果一个点在中心,大小应该是奇数而不是偶数。
标签: python numpy image-processing