Изменение размера трехмерного изображения (и повторная выборка)

У меня есть трехмерное изображение мозга (назовем его вспышкой), и в настоящее время оно составляет 263 x 256 x 185. Я хочу изменить его размер, чтобы он соответствовал размеру другого изображения (назовите его whole_brain_bravo); 256 x 256 x 176 и (будем надеяться) использовать интерполяцию Ланцоша для повторной выборки (Image.ANTIALIAS). Моя (неудачная) попытка:

from scipy import ndimage as nd
import nibabel as nib
import numpy as np



a = nib.load('flash.hdr') # nib is what I use to load the images
b = nib.load('whole_brain_bravo.hdr')

flash = a.get_data() # Access data as array (in this case memmap)
whole = b.get_data()

downed = nd.interpolation.zoom(flash, zoom=b.shape) # This obviously doesn't work

Ребята, вы когда-нибудь делали подобные вещи на 3D-изображении?

2 ответа

Решение

Из строки документации для scipy.ndimage.interpolate.zoom:

"""
zoom : float or sequence, optional
    The zoom factor along the axes. If a float, `zoom` is the same for each
    axis. If a sequence, `zoom` should contain one value for each axis.
"""

Каков масштабный коэффициент между двумя изображениями? Она постоянна по всем осям (т.е. вы масштабируете изометрически)? В таком случае zoom должно быть одно значение с плавающей точкой. В противном случае это должна быть последовательность поплавков, по одному на ось.

Например, если физические размеры whole а также flash можно считать равным, тогда вы могли бы сделать что-то вроде этого:

 dsfactor = [w/float(f) for w,f in zip(whole.shape, flash.shape)]
 downed = nd.interpolation.zoom(flash, zoom=dsfactor)

Согласно документам, zoom Аргумент "Коэффициент масштабирования по осям". Это немного расплывчато, но звучит так, будто они означают масштабный коэффициент, а не желаемое измерение.

Попробуй это:

zoomFactors = [bi/float(ai) for ai, bi in zip(a, b)]
downed = nd.interpolation.zoom(flash, zoom=zoomFactors) 

Не уверен насчет выбора фильтра - в документах упоминаются только сплайн-интерполяции разных порядков.

Другие вопросы по тегам