我已经把CT扫描加载到SimpleITK了。我想做一些在NumPy中非常简单的事情,但还没有想好如何在SimpleITK中做到这一点。为了提高速度,我想用SimpleITK来完成它们。
# NumPy: Changes all values of 100 to now become 500
nparr = nparr[nparr == 100] = 500
# SimpleITK:
???SimpleITK image==100将生成相同尺寸的二进制图像,其中所有intensities==100都为1/True。这是我们想要的。但不幸的是,我不相信SimpleITK支持布尔索引。实现这一目标的最有效方法是什么?
我想出了这个看起来很时髦的东西;但我希望找到实现这一点的预期方法/最佳实践手段:
# Cast because data type returned is uint8 otherwise
difference = 500 - 100
offset = SimpleITK.Cast( image == 100), sitk.sitkInt32 ) * difference
image += offset发布于 2017-10-03 03:40:25
您可以使用BinaryTheshold过滤器。
结果= sitk.BinaryThreshold(图像,100,101,500,0)
这应该只选择强度为100的像素。
发布于 2017-04-05 02:07:51
您正在使用SimpleITK图像对象,要以numpy样式使用它,您需要使用GetArrayFromImage和GetImageFromArray方法,然后通过将imagedata转换为numpy数组来获取像素访问。
import SimpleITK as sitk
difference = 500 - 100
img_arr = sitk.GetArrayFromImage(image)
offset = img_arr[img_arr == 100] * difference
output = sitk.GetImageFromArray(image += offset)https://stackoverflow.com/questions/42651105
复制相似问题