我写了一个多语言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()
有关正在发生的事情的任何帮助?
答案 0 :(得分:3)
可能无法正确设置图像的显示范围。
尝试
outputImp.resetDisplayRange()
或
outputImp.setDisplayRange(Stats.min, Stats.max)
有关详细信息,请参阅ImagePlus
javadoc。