Как выполнить пороговое значение?

Когда я применяю пороговое значение, я получаю сообщение об ошибке:

import SimpleITK as sitk
img = sitk.ReadImage("Sub1.png")
img=img>20

Ошибка:

RuntimeError                              Traceback (most recent call last)
<ipython-input-48-a1d4494dca15> in <module>()
      1 #img = sitk.Image(img.GetSize(), sitk.sitkUInt8)
----> 2 img=img>20

~/sitkpy/lib/python3.5/site-packages/SimpleITK/SimpleITK.py in __gt__(self, other)
   4424            return Greater( self, other )
   4425         try:
-> 4426            return Greater( self, float(other) )
   4427         except (ValueError, TypeError):
   4428            return NotImplemented

~/sitkpy/lib/python3.5/site-packages/SimpleITK/SimpleITK.py in Greater(*args)
  34345 
  34346     """
> 34347     return _SimpleITK.Greater(*args)
  34348 class GridImageSource(ImageFilter_0):
  34349     """

RuntimeError: Exception thrown in SimpleITK Greater: /tmp/SimpleITK/Code/Common/include/sitkMemberFunctionFactory.hxx:209:
sitk::ERROR: Pixel type: vector of 8-bit unsigned integer is not supported in 2D byN3itk6simple18GreaterImageFilterE

Я применил img = sitk.Image(img.GetSize(), sitk.sitkUInt8), но получаю черное изображение.

Есть ли в Python такой вариант, как double(img) или im2bw? нормализует работу? print(img) дает следующее

VectorImage (0x2f57af0) Информация о типе RTTI: itk::VectorImage Количество ссылок: 1 Время изменения: 1289 Отладка: Выкл. Имя объекта: Наблюдатели: нет Источник: (нет) Выходное имя источника: (нет) Данные выпуска: Выкл. Данные выпущены: False Global Release Данные: Off PipelineMTime: 1278 UpdateMTime: 1288 RealTimeStamp: 0 секунд LargestPossibleRegion: Dimension: 2 Index: [0, 0] Size: [305, 305] BufferedRegion: Dimension: 2 Index: [0, 0] Size: [305, 305] ] RequestedRegion: Dimension: 2 Index: [0, 0] Size: [305, 305] Spacing: [1, 1] Origin: [0, 0] Direction: 1 0 0 1

Индекстопоинтматрикс: 1 0 0 1

Пойнттоиндексматрикс: 1 0 0 1

Обратное направление: 1 0 0 1

VectorLength: 4 PixelContainer: ImportImageContainer (0x24ba950) RTTI typeinfo: itk::ImportImageContainer Счетчик ссылок: 1 Время изменения: 1285 Отладка: Выкл Имя объекта: Наблюдатели: нет Указатель: 0x30bb390 Контейнер управляет памятью: true Размер: 372100 Емкость: 372100


person stu dent    schedule 28.06.2018    source источник


Ответы (1)


Ваше исключение гласит: RuntimeError: Exception thrown in SimpleITK Greater: /tmp/SimpleITK/Code/Common/include/sitkMemberFunctionFactory.hxx:209: sitk::ERROR: Pixel type: vector of 8-bit unsigned integer is not supported in 2D byN3itk6simple18GreaterImageFilterE

Попробуйте запустить: import SimpleITK as sitk img = sitk.ReadImage("Sub1.png") print img

Это означает, что ваше входное изображение НЕ является скалярным изображением, это изображение с несколькими компонентами. Символ «>» или sitk.GraterThan не поддерживает векторные изображения. Он поддерживает только скалярные изображения.

Вопрос в том, должно ли ваше изображение быть изображением RGB? А как вы хотите бороться с "запорогом" многоканального изображения?

person blowekamp    schedule 28.06.2018
comment
На самом деле я сохранил изображение nii в png, используя itksnap. как установить порог? я отредактировал вопрос с печатью - person stu dent; 28.06.2018
comment
можете ли вы помочь мне извлечь фрагменты из изображения 305 * 305 * 39 nii - person stu dent; 28.06.2018
comment
print(img.GetNumberOfComponentsPerPixel()) возвращает 4 - person stu dent; 28.06.2018
comment
Похоже, ваша ошибка заключалась в том, что вы сохранили медицинское изображение в формате png. помогите извлечь? это разные вопросы. Вопрос редактирования с плохо отформатированным выводом print указывает на то, что количество компонентов равно 4. - person blowekamp; 28.06.2018
comment
количество компонентов 4 - person stu dent; 28.06.2018