我想问你关于Watershed3D的事。我尝试了这个页面中的https://www.kaggle.com/kmader/itk-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)时不会出现错误。
谢谢你的帮助!
发布于 2020-06-04 05:54:22
我认为错误是因为变量watershedOp是一个ITKWatershedImageFilter对象,而不是一个图像。您可以使用GetOutput()方法来检索输出图像。
return itk.GetArrayFromImage(dmapOp.GetOutput()), itk.GetArrayFromImage(watershedOp.GetOutput())https://stackoverflow.com/questions/60760494
复制相似问题