Повторная выборка не помещается во всю область изображения, вызывая некоторые дополнения с помощью simpleitk - PullRequest
0 голосов
/ 23 января 2020

Я использую код от https://gist.github.com/ravnoor/a8d26c485cd39c1d9dd21af7c27ac232. Сначала это сработало, но по какой-то причине больше нет. Я не могу вспомнить, что менял что-либо

volSize = numpy.array((256,256,100), numpy.int32)
dstRes  = numpy.array((3.,3.,3.))
normDir = False
method  = SimpleITK.sitkLinear
def process_scan(scan):
    scan=SimpleITK.ReadImage(scan)
    ret = numpy.zeros(volSize, dtype=numpy.float32)
    factor = numpy.asarray(scan.GetSpacing()) / dstRes
    factorSize = numpy.asarray(scan.GetSize() * factor, dtype=numpy.float)
    newSize = numpy.max([factorSize, volSize], axis=0)
    newSize = newSize.astype(dtype=numpy.int32)
    T=SimpleITK.AffineTransform(3)
    T.SetMatrix(scan.GetDirection())
    resampler = SimpleITK.ResampleImageFilter()
    resampler.SetReferenceImage(scan)
    resampler.SetOutputSpacing(dstRes)
    resampler.SetSize(newSize.tolist())
    resampler.SetInterpolator(method)
    if normDir:
        resampler.SetTransform(T.GetInverse())

    imgResampled = resampler.Execute(scan)
    imgCentroid = numpy.asarray(newSize, dtype=numpy.float) / 2.0
    imgStartPx = (imgCentroid - numpy.array(volSize) / 2.0).astype(dtype=int)
    regionExtractor = SimpleITK.RegionOfInterestImageFilter()
    regionExtractor.SetSize(volSize.astype(dtype=numpy.int32).tolist())
    regionExtractor.SetIndex(imgStartPx.tolist())
    imgResampledCropped = regionExtractor.Execute(imgResampled)
    return numpy.transpose(
        SimpleITK.GetArrayFromImage(imgResampledCropped).astype(dtype=numpy.float),
        [2, 1, 0]
    )

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

Вот что я получу, я хочу, чтобы КТ заполнил 256 пикселей.

enter image description here

...