猿问

当兴趣点位于图像边缘时如何裁剪 3D 图像?

我有一个大小为 的 3D 图像512*512*30。我还有一个 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我得到超出范围的错误时,这是预期的。


如何避免此问题并确保顺利应对?


慕尼黑8549860
浏览 221回答 1
1回答

慕码人2483693

填充的答案可能如下所示:import numpy as nppoint = [0,1,2]img = imageio.volread('path\\to\\tiff\\file')block = [32,32,16]img_x, img_y, img_z = img.shapeimg_padded = np.pad(img, block, 'constant', constant_values=0) #lookup np.pad for other padding optionsimg_block = img_padded[point[0]-block[0]/2:point[0]+block[0]/2...]
随时随地看视频慕课网APP

相关分类

Python
我要回答