使用RGB数据将输入数据剪切到imshow的有效范围(浮点数为[0..1],整数为[0..255])

时间:2018-04-04 06:05:11

标签: python-3.x image-processing medical

在将其转换为PNG格式后,我试图为一片MRI运行图形切割算法。我一直遇到以下问题:

  

使用RGB数据剪切输入数据到imshow的有效范围(浮点数为[0..1],整数为[0..255])。

这甚至在设置vmin和vmax后如下:

plt.imshow(out,vmin=0,vmax=255)

4 个答案:

答案 0 :(得分:18)

在缩放np.uint8范围后将图像投射到[0, 255]将消除此警告。如本issue所述,它似乎是matplotlib中的功能。

plt.imshow((out * 255).astype(np.uint8))

答案 1 :(得分:2)

使用plt.imshow(out)代替plt.imshow(out.astype('uint8'))。就是这样!

答案 2 :(得分:1)

如果您想要展示它,可以使用img/255。我还没弄清楚发生了什么。

np.array(img,np.int32)

答案 3 :(得分:1)

正如警告所言,它正在裁剪(0,1)...之间的数据。 我尝试了上述方法,但警告消失了,但是我的图像缺少像素值。 因此,我尝试对numpy数组Image(64、64、3)执行以下步骤。 第1步:检查数组的最小值和最大值

logcat

在我的情况下,图像的最小值为负,最大值为正,但所有图像均介于(-1,1.5)之间,因此 第2步:我只是在imshow by之前剪切了数据

maxValue = np.amax(Image)
minValue = np.amin(Image)

请注意,如果您的像素值的范围在(-84,317)之类,则可以使用以下步骤

Image = np.clip(Image, 0, 1)
plt.imshow(Image)