GetArrayFromImage - RuntimeError: 没有找到合适的模板参数。Python ITK

问题描述 投票:0回答:1

我想问你关于分水岭3D.我试过这个页面的算法。https:/www.kaggle.comkmaderitk-watershed-to-label-bubbles我还使用了他们的数据集

def apply_watershed(in_vol, 
                    threshold = 0.01, 
                    level = 0.5):
    #(A rule of thumb is to set the Threshold to be about 1 / 100 of the Level.)
    Dimension = len(np.shape(in_vol))
    # convert to itk array and normalize
    itk_vol_img = itk.GetImageFromArray((in_vol*255.0).clip(0,255).astype(np.uint8))
    InputImageType = itk.Image[itk.ctype('unsigned char'), Dimension]
    OutputImageType = itk.Image[itk.ctype('float'), Dimension]
    dmapOp = itk.SignedMaurerDistanceMapImageFilter[InputImageType, OutputImageType].New(Input = itk_vol_img)
    dmapOp.SetInsideIsPositive(False)
    watershedOp = itk.WatershedImageFilter.New(Input=dmapOp.GetOutput())
    watershedOp.SetThreshold(threshold)
    watershedOp.SetLevel(level)
    watershedOp.Update()
    return itk.GetArrayFromImage(dmapOp), itk.GetArrayFromImage(watershedOp)

dmap_vol, ws_vol = apply_watershed(bubble_image) 

但我得到这个错误。

itk.GetArrayFromImage(watershedOp)
Error: line 248, in _GetArrayFromImage
raise RuntimeError("No suitable template parameter can be found.")
RuntimeError: No suitable template parameter can be found.

这个错误发生在 itk.GetArrayFromImage(watershedOp)该错误不会发生在 itk.GetArrayFromImage(dmapOp).

谢谢你的任何帮助!我想问你关于Watershad3D。

python itk
1个回答
0
投票

我认为这个错误是因为变量 watershedOp 是一个 ITKWatershedImageFilter 对象,而不是图像。你可以使用 GetOutput() 方法来检索输出图像。

return itk.GetArrayFromImage(dmapOp.GetOutput()), itk.GetArrayFromImage(watershedOp.GetOutput())
© www.soinside.com 2019 - 2024. All rights reserved.