Я новый пользователь Python и хотел бы выполнить простую обработку изображений. По сути, у меня будет динамическое медицинское изображение — серия 2D-изображений в разные моменты времени, которые я хотел бы сохранить в виде 3D-массива. Из-за характера метода сканирования во время определенных кадров изображения пациент может время от времени двигаться, что делает данные непригодными для использования. Я хотел бы удалить такие кадры и переделать массив - новые размеры (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()