【发布时间】:2015-10-30 21:01:48
【问题描述】:
我正在尝试叠加两个图像。第一个是 512x512 NumPy 阵列(来自 CT 图像)。第二个也是一个 512x512 NumPy 数组,但我只对值大于 0 的像素感兴趣(功能图像)。
为此,我正在尝试创建一个掩码数组。
import numpy as np
import numpy.ma as ma
import matplotlib.pyplot as plt
# Both images are loaded from a dicom. Both are numpy arrays of (512,512)
Image1 = readimage(path)
Image2 = readimage(path)
# Create image 2 mask
mask = ma.masked_where(Image2>0, Image2)
Image2_mask = ma.masked_array(Image2,mask)
# Plot images
plt.figure(dpi=300)
y, x = np.mgrid[1:513,1:513]
plt.axes().set_aspect('equal', 'datalim')
plt.set_cmap(plt.gray())
plt.pcolormesh(x, y, Image1,cmap='gray')
plt.pcolormesh(x, y, Image2_mask,cmap='jet')
plt.axis([x.min(), x.max(), y.min(), y.max()])
plt.colorbar()
plt.show()
此代码不显示任何叠加层。我做错了什么?有没有直接的方法?我来自 Matlab 环境,对 Python 还是很陌生。
【问题讨论】:
-
能否请您也提供这段代码的开头?
e.g. ma = ... -
我编辑了帖子以包含代码的第一部分。这两个图像都是从一个从 CT dicom 中提取的函数加载的,我相信这并不重要。图片类型为:
Image.dtype Out[33]: dtype('int16')
标签: python arrays image numpy matplotlib