显示具有NaN值的32位图像(ImageJ)

时间:2015-06-22 11:40:43

标签: python image-processing imagej

我写了一个多语言3-D图像去噪ImageJ插件,它对图像进行一些操作,并将去噪图像作为1-D数组返回。 1-D阵列包含NaN值(边缘周围)。 1-D阵列被转换回图像堆栈并显示。它只是黑色。我保存了图像堆栈并再次在ImageJ中打开它。我将光标移到图像上,看到值会按原样改变。在某些地方(我认为是神经元),像素值在1000-4000的范围内。然而,整个图像只是漆黑。下面是代码片段,最后将数组转换为图像堆栈:

# Image-denoising routines written in C (this is where the nan values are introduced)
fimg = JNApackage.NativeCodeJNA.NativeCall(InputImgArray, medfiltArray, int(searchradius), int(patchradius), beta , int(x), int(y), int(z))



# Optimal Inverse Anscombe Transform (Some more operations in Jython)
fimg = InverseAnscombe.InvAnscombe(fimg)

InputImg.flush()

outputstack = ImageStack(x, y, z )  

for i in xrange(0, z):  
    # Get the slice at index i and assign array elements corresponding to it.
    outputstack.setPixels(fimg[int(i*x*y):int((i+1)*x*y)], i+1)

print 'Preparing denoised image for display '
outputImp = ImagePlus("Output Image", outputstack)    
#print "OutputImage Stats:"
Stats = StackStatistics(outputImp)
print "mean:", Stats.mean, "minimum:", Stats.min, "maximum:", Stats.max 

outputImp.show()

有关正在发生的事情的任何帮助?

1 个答案:

答案 0 :(得分:3)

可能无法正确设置图像的显示范围。

尝试

outputImp.resetDisplayRange()

outputImp.setDisplayRange(Stats.min, Stats.max)

有关详细信息,请参阅ImagePlus javadoc