Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 30 additions & 6 deletions Wrappers/Python/ccpi/viewer/CILViewer2D.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,10 @@ def InitialiseBox(self, clickPosition):
def OnMouseWheelForward(self, interactor, event):
if self.GetInputData() is None:
return
maxSlice = self.GetInputData().GetExtent()[self.GetSliceOrientation() * 2 + 1]
if self._viewer._reader is None:
maxSlice = self.GetInputData().GetExtent()[self.GetSliceOrientation() * 2 + 1]
else:
maxSlice = self._viewer._reader.GetWholeExtent()[self.GetSliceOrientation() * 2 + 1]
shift = interactor.GetShiftKey()
advance = 1
if shift:
Expand All @@ -265,6 +268,10 @@ def OnMouseWheelBackward(self, interactor, event):
if self.GetInputData() is None:
return
minSlice = self.GetInputData().GetExtent()[self.GetSliceOrientation() * 2]
if self._viewer._reader is None:
minSlice = self.GetInputData().GetExtent()[self.GetSliceOrientation() * 2]
else:
minSlice = self._viewer._reader.GetWholeExtent()[self.GetSliceOrientation() * 2]
shift = interactor.GetShiftKey()
advance = 1
if shift:
Expand Down Expand Up @@ -1140,6 +1147,9 @@ def __init__(self, dimx=600, dimy=600, ren=None, renWin=None, iren=None, debug=T
self.imageTracer.AutoCloseOn()
self.imageTracer.AddObserver(vtk.vtkWidgetEvent.Select, self.style.OnTracerModifiedEvent, 1.0)

# input reader
self._reader = None

self.__vis_mode = CILViewer2D.IMAGE_WITH_OVERLAY
self.setVisualisationToImageWithOverlay()

Expand All @@ -1153,10 +1163,23 @@ def setInput3DData(self, imageData):

def setInputData(self, imageData):
self.log("setInputData")
self.img3D = imageData
self._img3D = imageData
self.installPipeline()
self.axes_initialised = True

def setInputDataReader(self, reader):
self._reader = reader
self.installPipeline()
self.axes_initialised = True

@property
def img3D(self):
if self._reader is None:
return self._img3D
else:
self._reader.Update()
return self._reader.GetOutput()

def setInputData2(self, imageData):
self.image2 = imageData
# TODO resample on image1
Expand Down Expand Up @@ -1196,9 +1219,9 @@ def setInputAsNumpy(self,
shiftScaler.SetShift(-iMin)
shiftScaler.SetOutputScalarType(dtype)
shiftScaler.Update()
self.img3D = shiftScaler.GetOutput()
self._img3D = shiftScaler.GetOutput()
else:
self.img3D = importer.GetOutput()
self._img3D = importer.GetOutput()

self.installPipeline()

Expand Down Expand Up @@ -1228,6 +1251,9 @@ def updateMainVOI(self):
extent = [i for i in self.img3D.GetExtent()]
extent[self.sliceOrientation * 2] = self.getActiveSlice()
extent[self.sliceOrientation * 2 + 1] = self.getActiveSlice()
if self._reader is not None:
self._reader.SetTargetZExtent((extent[4], extent[5]))
self._reader.Update()
self.voi.SetVOI(extent[0], extent[1], extent[2], extent[3], extent[4], extent[5])
self.log("extent {0}".format(extent))
self.voi.Update()
Expand Down Expand Up @@ -1352,8 +1378,6 @@ def installImageWithOverlayPipeline(self):

self.voi.SetVOI(extent[0], extent[1], extent[2], extent[3], extent[4], extent[5])

self.voi.SetVOI(extent[0], extent[1], extent[2], extent[3], extent[4], extent[5])

self.voi.Update()

# set window/level for slice based on values in entire volume:
Expand Down
25 changes: 17 additions & 8 deletions Wrappers/Python/ccpi/viewer/utils/conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import os
import math
import numpy
import vtk
import vtkmodules.all as vtk
from vtk.util.vtkAlgorithm import VTKPythonAlgorithmBase
from vtk.util import numpy_support

Expand Down Expand Up @@ -1421,6 +1421,21 @@ def GetTargetZExtent(self):
Get the target extent to crop to on the z axis.
'''
return self._TargetZExtent

def GetShape(self):
readshape = self.GetStoredArrayShape()
is_fortran = self.GetIsFortran()

if is_fortran:
shape = list(readshape)
else:
shape = list(readshape)[::-1]
return shape

def GetWholeExtent(self):
shape = self.GetShape()
extent = (0, shape[0] - 1, 0, shape[1] - 1, 0, shape[2] - 1)
return extent

def RequestData(self, request, inInfo, outInfo):
outData = vtk.vtkImageData.GetData(outInfo)
Expand All @@ -1429,14 +1444,8 @@ def RequestData(self, request, inInfo, outInfo):

# get basic info
big_endian = self.GetBigEndian()
readshape = self.GetStoredArrayShape()
file_header_length = self.GetFileHeaderLength()
is_fortran = self.GetIsFortran()

if is_fortran:
shape = list(readshape)
else:
shape = list(readshape)[::-1]
shape = self.GetShape()

tmpdir = tempfile.mkdtemp()
header_filename = os.path.join(tmpdir, "header.mhd")
Expand Down
26 changes: 26 additions & 0 deletions Wrappers/Python/examples/display_full_slice.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from ccpi.viewer import viewer2D
from ccpi.viewer.utils.conversion import cilTIFFCroppedReader, cilNumpyCroppedReader
import os, glob


data_dir = os.path.abspath('C:/Users/ofn77899/Data/dvc/')

ftype = 'tiff'

if ftype == 'npy':
fname = os.path.abspath('C:/Users/ofn77899/Data/dvc/frame_000_f.npy')
reader = cilNumpyCroppedReader()
reader.SetFileName(fname)
elif ftype == 'tiff':
reader = cilTIFFCroppedReader()
data_dir = os.path.abspath('C:/Users/ofn77899/Data/dvc/frame_000')
fnames = glob.glob(os.path.join(data_dir, '*.tiff'))
reader.SetFileName(fnames)


v = viewer2D()

v.setInputDataReader(reader)

v.startRenderLoop()