私はPythonの新規ユーザーであり、簡単な画像処理を行いたいと思っています。基本的に、動的な医用画像を作成します。これは、3D配列として保存したいさまざまな時点での一連の2D画像です。スキャン技術の性質上、特定のイメージングフレーム中に患者の動きが時折発生し、データが使用できなくなる可能性があります。そのようなフレームを削除して、配列を再キャストしたいと思います-新しい次元(n-1、256、256)。フレームを削除した後、画像の表示を更新したいと思います。この目標を達成するための最良の方法は何ですか?これが私がこれまでに持っているスケルトンコードです:
import dicom
import numpy as np
import pylab
from matplotlib.widgets import Slider, Button
ds = dicom.read_file("/home/moadeep/Dropbox/FS1.dcm")
#data = ds.pixel_array
data = np.random.rand(16,256,256)
nframes = data.shape[0]
ax = pylab.subplot(111)
pylab.subplots_adjust(left=0.25, bottom=0.25)
frame = 0
l = pylab.imshow(data[frame,:,:]) #shows 1024x256 imagge, i.e. 0th frame*
axcolor = 'lightgoldenrodyellow'
axframe = pylab.axes([0.35, 0.1, 0.5, 0.03], axisbg=axcolor)
#add slider to scroll image frames
sframe = Slider(axframe, 'Frame', 0, nframes, valinit=0,valfmt='%1d'+'/'+str(nframes))
ax_delete = pylab.axes([0.8,0.025,0.1,0.04], axisbg=axcolor)
#add slider to scroll image frames
#Delete button to delete frame from data set
bDelete = Button(ax_delete, 'Delete')
def update(val):
frame = np.around(sframe.val)
pylab.subplot(111)
pylab.subplots_adjust(left=0.25, bottom=0.25)
pylab.imshow(data[frame,:,:])
sframe.on_changed(update)
pylab.gray()
pylab.show()