Как обрезать 3D-изображение, когда интересующий объект лежит на краю изображения? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть 3D изображение размером 512*512*30.У меня также есть файл CSV с сохраненными в нем точками интереса.Я хочу обрезать объем 3D размером 32*32*16 вокруг интересующей точки с точкой в ​​ее центре.Я написал следующее для достижения этой цели:

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 Я получаю выход за пределыожидаемая ошибка.

Как избежать этой проблемы и обеспечить плавное копирование?

Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

Ответ для заполнения может выглядеть так:

import numpy as np

point = [0,1,2]
img = imageio.volread('path\\to\\tiff\\file')
block = [32,32,16]
img_x, img_y, img_z = img.shape
img_padded = np.pad(img, block, 'constant', constant_values=0) #lookup np.pad for other padding options
img_block = img_padded[point[0]-block[0]/2:point[0]+block[0]/2...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...