最近,我一直在尝试使用Pillow的Image.open()
将一些灰度图像加载到Python程序中。然而,我发现图像被扭曲了,所有的值都被极化了
这是Mac预览生成的图像:
这是由Image.open()
函数生成的图像:
我的代码如下:
from PIL import Image, ImageOps
from pathlib import Path
import matplotlib.pyplot as plt
mod_path2 = Path("/Volumes/Sans/ROI/Images/sub-S03046_ses-E06791_run-1_bp-chest_vp-pa_dx.png")
b = Image.open(str(mod_path2))
plt.imshow(b)
plt.show()
并且,通过预览的图像的特征是:
我相信这可能与图像的颜色空间或缺少alpha通道有关,因为两个通道都已正确加载
没有
float
值,但您的CT扫描是16位无符号整数灰度图像。当使用Image.open
打开此图像时,对应的mode用I
给出,这在这里是错误的,因为I
是“32位有符号整数像素”,而我们更希望使用模式I;16
,它是“16位无符号整数像素”输出:
现在,一般来说,^{} 能够显示}中设置{}和{}在这里也不起作用
Image
对象,但在显示I
模式Image
对象时似乎存在一个问题:似乎(请参见下图,请参见绘图窗口的右下角),假定的32位被解释为RGBA值。因此,即使在{奇怪的是,当转换到模式
I;16
时,整个图像(仍然)被剪辑在32767
处,这我不理解也无法解释。因此,相应的绘图仍然存在错误(参见下图)从
plt.imshow
获得正确输出的唯一方法似乎是将图像转换为某个NumPy数组,显式地将dtype
设置为np.uint16
,然后使用模式I;16
将其转换回枕状Image
对象:输出:
相关问题 更多 >
编程相关推荐