преобразовать изображение в rgb, чтобы я мог визуализировать изображение

#python-3.x #image-resizing #simpleitk

#python-3.x #изменение размера изображения #simpleitk

Вопрос:

Я пытаюсь сегментировать изображение, но не могу применить к изображению изменение интенсивности

Я попытался изменить форму изображения и применить масштабирование, но не смог этого добиться

  def load_sitk_image(path,vol_size=np.array([128,128,64]),dst_res=[1,1,1],method = sitk.sitkLinear ) :

img = sitk.ReadImage(path)

ret = np.zeros([vol_size[0], vol_size[1], vol_size[2]], dtype=np.float32)

#we rotate the image according to its transformation using the direction and according to the final spacing we want

factor = np.asarray(img.GetSpacing()) / [dst_res[0], dst_res[1],dst_res[2]]

factorSize = np.asarray(img.GetSize() * factor, dtype=float)

newSize = np.max([factorSize, vol_size], axis=0)

newSize = newSize.astype(dtype='int')

T=sitk.AffineTransform(3)

T.SetMatrix(img.GetDirection())

resampler = sitk.ResampleImageFilter()

resampler.SetReferenceImage(img)

resampler.SetOutputSpacing([dst_res[0], dst_res[1], dst_res[2]])

resampler.SetSize(newSize.tolist())

resampler.SetInterpolator(method)

imgResampled = resampler.Execute(img)

imgCentroid = np.asarray(newSize, dtype=float) / 2.0

imgStartPx = (imgCentroid - vol_size / 2.0).astype(dtype='int')

regionExtractor = sitk.RegionOfInterestImageFilter()

size_2_set = vol_size.astype(dtype='int')

regionExtractor.SetSize(size_2_set.tolist())

regionExtractor.SetIndex(imgStartPx.tolist())

imgResampledCropped = regionExtractor.Execute(imgResampled)

ret = np.transpose(sitk.GetArrayFromImage(imgResampledCropped).astype(dtype=float),[0,1,2])

ret = (ret - ret.min())/(ret.max()-ret.min())

#ret = (ret - ret.mean())/ret.std()

return ret

img_T1 = load_sitk_image(path = r"C:UserschinnuDesktoppost processing projecttraining part 1case01.mhd")

img_T2 = load_sitk_image(path =r"C:UserschinnuDesktoppost processing projecttrainingCase01_segmentation.mhd")


img_T1_255 = sitk.Cast(sitk.RescaleIntensity(img_T1), sitk.sitkUInt8)
  

> ошибка:

Обратная трассировка ошибки типа (последний вызов) в () 3 4 —-> 5 img_T1_255 = sitk.Приведение (sitk.Изменить масштаб (img_T1), sitk.sitkUInt8)

~ Anaconda3libsite-packagesSimpleITKSimpleITK.py в режиме масштабирования (image1, outputMinimum, outputMaximum) 59087 59088 «»»

59089 возвращает _SimpleITK.Масштабирование (image1, outputMinimum, outputMaximum) 59090 класс RichardsonLucyDeconvolutionImageFilter(ImageFilter_2): 59091 «»»

Ошибка типа: в методе ‘RescaleIntensity’ аргумент 1 типа ‘itk::simple::Image const amp;’

я ожидаю такого результата, как будто я могу применить интенсивность масштабирования

Комментарии:

1. можете ли вы отформатировать этот вопрос, чтобы весь код был немного понятнее, и предоставить используемые входные данные?

2. я отредактировал код, пожалуйста, ознакомьтесь с ним

3. проверьте тип ‘img_T1’ — я думаю, вы возвращаете массив numpy в вашей функции load_sitk_image. Вам нужно использовать GetImageFromArray, чтобы вернуть SimpleITK. Изображение

Ответ №1:

проверьте тип ‘img_T1’ — я думаю, вы возвращаете массив numpy в вашей функции load_sitk_image. Вам нужно использовать GetImageFromArray, чтобы вернуть SimpleITK.Изображение