Я использую SimpleITK для загрузки многослойного tiff-изображения, его объемное изображение имеет 30 плоскостей / срезов.
Много поиграв с skimage
и imageio
Я обнаружил, что SimpleITK
- лучший способ обработки объемных изображений, но проблема в том, что ни одна из функций не работает для моего изображения.
img = sitk.ReadImage(path)
После прочтения изображения я могу легко преобразовать его в numpy
и даже отобразить его, используя sitk.Show()
, чтобы оно правильно загружалось. но любая функция, которую я использую, например:
img_s = sitk.CurvatureFlow(img, 0.125, 5)
# or
sitk.IntensityWindowing(img)
# or
img_m = sitk.ConnectedThreshold(img, (257,419,7))
выдает предупреждение:
sitk :: ОШИБКА: Тип пикселя: вектор 16-разрядного целого числа без знака не является
поддерживается в 3D byclass itk :: simple ::
Я также пытался привести к любому другому типу данных, но я снова получаю ошибки:
img2 = sitk.Cast(img, sitk.sitkFloat32)
sitk :: ОШИБКА: фильтр не поддерживает приведение из вектора приведения
16-разрядное целое число без знака до 32-разрядного числа с плавающей запятой
Я также попробовал 2D вариант:
img_m = sitk.ConnectedThreshold(img2[:,:,7], [(257,419)])
но на этот раз я получил ошибку:
sitk :: ERROR: Тип пикселя: вектор 64-битного числа с плавающей запятой не поддерживается в 2D
byclass itk :: simple :: ConnectedThresholdImageFilter
Есть идеи, что может быть причиной этого?
P.S. Я прочитал вопрос: SimpleITK N4BiasFieldCorrection, не работает с любым типом данных , и я считаю, что это не дубликат, поскольку его проблема решается с помощью приведения, тогда как моя не работает даже при приведении.
Спасибо