我想知道是否有一种有效的方法可以将ITK-Image-Object中每个像素的值递增或递减1。
def increment_image(image,value):
imageSize = image.GetSize()
for z in range(imageSize[2]):
for y in range(imageSize[1]):
for x in range(imageSize[0]):
if (image.GetPixel(x,y,z) + value) > 255:
image.SetPixel(x,y,z,255)
else:
image.SetPixel(x,y,z,image.GetPixel(x,y,z)+value)
这是我制作它的方式,基本上它只是循环我的3D图像的每个像素,并将值加1 ....
这种方法有效,但效率非常低,512x512x25大小的图像在我的机器上大约需要10分钟,它应该可以使用大于此的图像大小,所以你们可能有想法:)
感谢您的帮助:)
PS:没有SITK / NumPy的第三方图书馆请:)
答案 0 :(得分:1)
您可以使用重载的图像运算符来实现此目的。像(可能需要铸造)的东西:
image += (image<255)*value
您需要考虑一次操作整个图像,而不是逐个操作每个像素。
P.S。不幸的是,SimpleITK像素迭代器仍然很慢。