在dicom图像中的python中轮廓数据旋转

时间:2018-02-23 12:47:52

标签: python matplotlib rotation dicom

我有一个庞大的数据文本文件。我将这些数据绘制在CT图像上,结果可以在下图中看到。但是我怎样才能将我的剂量数据轴旋转到与我的CT图像相同的位置?

enter image description here

到目前为止我的代码:

%matplotlib notebook
import numpy as np
import dicom
import matplotlib.pyplot as plt
from itertools import islice
import matplotlib.colors as colors
import matplotlib.cm as cm
data = dicom.read_file("NEW.dcm")
plt.set_cmap("gray")

pixel_array = data.pixel_array

plt.pcolormesh(pixel_array)
plt.gca().set_aspect("equal")
plt.show()
CS=plt.contour(xi,yi,zi,cmap=plt.cm.jet)

import numpy as np
import matplotlib.pyplot as plt

a = np.loadtxt('New.txt')
i = a[:,1]
j = a[:,2]
energies = a[:,3]
xi = np.linspace(i.min(), i.max())
yi = np.linspace(j.min(), j.max())
zi = scipy.interpolate.griddata((i, j), energies, (xi[None,:], yi[:,None]), method='cubic')
fig = plt.figure()
CS=plt.contour(xi, yi, zi,colors='k',  norm=plt.Normalize(vmax=abs(zi).max(), vmin=-abs(zi).max()))
CS = plt.contourf(xi,yi,zi,15,cmap=plt.cm.jet)

数据提取

30  1   2   0.00951305
30  1   3   0.0110269
30  1   4   0.0141366
30  1   5   0.00468656
30  1   6   0.0144487
30  1   7   0.0253241
30  1   8   0.0239877
30  1   9   0.0175475
30  1   10  0.0134009
…

(完整代码和可用数据here

谢谢你。

1 个答案:

答案 0 :(得分:1)

如果转置z网格,则会轮换轮廓。最后两行将z更改为z.T

CS=plt.contour(xi, yi, zi.T,colors='k', norm=plt.Normalize(vmax=abs(zi).max(), vmin=-abs(zi).max()))
CS = plt.contourf(xi, yi, zi.T,15,cmap=plt.cm.jet)

请记住,在图片X中,轴是水平的,Y是垂直的,但对于矩阵,第一维(X)是垂直的,第二维(Y)是水平的。