SimpleITK - 如何有效地递增/递减图像中每个像素的值?

时间:2015-11-06 11:28:10

标签: python numpy itk

我想知道是否有一种有效的方法可以将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的第三方图书馆请:)

1 个答案:

答案 0 :(得分:1)

您可以使用重载的图像运算符来实现此目的。像(可能需要铸造)的东西:

image += (image<255)*value

您需要考虑一次操作整个图像,而不是逐个操作每个像素。

P.S。不幸的是,SimpleITK像素迭代器仍然很慢。