我正在使用SciPy识别CT图像中的肿瘤。一旦我确定了包含肿瘤的切片,我将使用以下命令检索切片:
slice_x, slice_y = ndimage.find_objects(label_im==label)[0]然后我绘制完整的图像,如下所示:
plt.imshow(image, cmap='gray')我希望将提取的切片(包含肿瘤)的轮廓覆盖在原始图像的适当位置上。然而,我不能让等高线图位于适当区域的顶部。相反,等高线图始终位于图像的左上角。下面是我使用的代码:
plt.contour(mask[slice_x, slice_y], position=(slice_x.start, \
slice_y.start), linewidths=2, colors='r')结果如下:

如何在主图中设置轮廓图的位置?谢谢!
发布于 2012-11-15 11:23:12
您需要使用extent关键字参数而不是position。然而,你需要指定一个最大值和一个起始值(即它需要为extent=[xmin, xmax, ymin, ymax])
在您的示例中,它看起来如下所示:
extent=[xslice.start, xslice.stop+1, yslice.start, yslice.stop+1]
plt.contour(mask[xslice, yslice], extent=extent)请注意,您可能需要使用origin关键字参数(或翻转ymin和ymax)来控制解释输入数据的方式。
或者,您可以执行类似以下操作:
x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, mask[xslcie, yslice])如果你工作的区域很大,效率会有点低,但它要干净得多。
作为后一种方法的完整示例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
data = np.random.random((100,100))
xslice, yslice = slice(20, 30), slice(45, 65)
plt.imshow(data, cmap=cm.gray)
x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, data[xslice, yslice])
plt.show()

https://stackoverflow.com/questions/13390993
复制相似问题