def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkImageHybridMedian2D(), 'Processing.', ('vtkImageData',), ('vtkImageData',), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__(self, module_manager, vtk.vtkImageHybridMedian2D(), 'Processing.', ('vtkImageData', ), ('vtkImageData', ), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def __init__(self): """ Initialization """ lib.ProcessingFilter.ProcessingFilter.__init__(self) self.vtkfilter = vtk.vtkImageHybridMedian2D() self.vtkfilter.AddObserver('ProgressEvent', lib.messenger.send) lib.messenger.connect(self.vtkfilter, "ProgressEvent", self.updateProgress) self.eventDesc = "Performing hybrid median filtering" self.filterDesc = "Computes median value from pixel value, median of corner neighbors and median of face neighbors\nInput: Grayscale image\nOutput: Grayscale image"
def median(self): """Median filter that preserves thin lines and corners. It operates on a 5x5 pixel neighborhood. It computes two values initially: the median of the + neighbors and the median of the x neighbors. It then computes the median of these two values plus the center pixel. This result of this second median is the output pixel value. """ medf = vtk.vtkImageHybridMedian2D() medf.SetInputData(self._data) medf.Update() return self._update(medf.GetOutput())
def main(): # colors = vtk.vtkNamedColors() fileName = get_program_parameters() # Read the image. readerFactory = vtk.vtkImageReader2Factory() reader = readerFactory.CreateImageReader2(fileName) reader.SetFileName(fileName) reader.Update() scalarRange = [0] * 2 scalarRange[0] = reader.GetOutput().GetPointData().GetScalars().GetRange( )[0] scalarRange[1] = reader.GetOutput().GetPointData().GetScalars().GetRange( )[1] print("Range:", scalarRange) middleSlice = (reader.GetOutput().GetExtent()[5] - reader.GetOutput().GetExtent()[4]) // 2 # Work with double images. cast = vtk.vtkImageCast() cast.SetInputConnection(reader.GetOutputPort()) cast.SetOutputScalarTypeToDouble() cast.Update() originalData = vtk.vtkImageData() originalData.DeepCopy(cast.GetOutput()) noisyData = vtk.vtkImageData() AddShotNoise(originalData, noisyData, 2000.0, 0.1, reader.GetOutput().GetExtent()) median = vtk.vtkImageMedian3D() median.SetInputData(noisyData) median.SetKernelSize(5, 5, 1) hybridMedian1 = vtk.vtkImageHybridMedian2D() hybridMedian1.SetInputData(noisyData) hybridMedian = vtk.vtkImageHybridMedian2D() hybridMedian.SetInputConnection(hybridMedian1.GetOutputPort()) colorWindow = (scalarRange[1] - scalarRange[0]) * 0.8 colorLevel = colorWindow / 2 originalActor = vtk.vtkImageActor() originalActor.GetMapper().SetInputData(originalData) originalActor.GetProperty().SetColorWindow(colorWindow) originalActor.GetProperty().SetColorLevel(colorLevel) originalActor.GetProperty().SetInterpolationTypeToNearest() originalActor.SetDisplayExtent(reader.GetDataExtent()[0], reader.GetDataExtent()[1], reader.GetDataExtent()[2], reader.GetDataExtent()[3], middleSlice, middleSlice) noisyActor = vtk.vtkImageActor() noisyActor.GetMapper().SetInputData(noisyData) noisyActor.GetProperty().SetColorWindow(colorWindow) noisyActor.GetProperty().SetColorLevel(colorLevel) noisyActor.GetProperty().SetInterpolationTypeToNearest() noisyActor.SetDisplayExtent(originalActor.GetDisplayExtent()) hybridMedianActor = vtk.vtkImageActor() hybridMedianActor.GetMapper().SetInputConnection( hybridMedian.GetOutputPort()) hybridMedianActor.GetProperty().SetColorWindow(colorWindow) hybridMedianActor.GetProperty().SetColorLevel(colorLevel) hybridMedianActor.GetProperty().SetInterpolationTypeToNearest() hybridMedianActor.SetDisplayExtent(originalActor.GetDisplayExtent()) medianActor = vtk.vtkImageActor() medianActor.GetMapper().SetInputConnection(median.GetOutputPort()) medianActor.GetProperty().SetColorWindow(colorWindow) medianActor.GetProperty().SetColorLevel(colorLevel) medianActor.GetProperty().SetInterpolationTypeToNearest() # Setup the renderers. originalRenderer = vtk.vtkRenderer() originalRenderer.AddActor(originalActor) noisyRenderer = vtk.vtkRenderer() noisyRenderer.AddActor(noisyActor) hybridRenderer = vtk.vtkRenderer() hybridRenderer.AddActor(hybridMedianActor) medianRenderer = vtk.vtkRenderer() medianRenderer.AddActor(medianActor) renderers = list() renderers.append(originalRenderer) renderers.append(noisyRenderer) renderers.append(hybridRenderer) renderers.append(medianRenderer) # Setup viewports for the renderers. rendererSize = 400 xGridDimensions = 2 yGridDimensions = 2 renderWindow = vtk.vtkRenderWindow() renderWindow.SetSize(rendererSize * xGridDimensions, rendererSize * yGridDimensions) for row in range(0, yGridDimensions): for col in range(xGridDimensions): index = row * xGridDimensions + col # (xmin, ymin, xmax, ymax) viewport = [ float(col) / xGridDimensions, float(yGridDimensions - (row + 1)) / yGridDimensions, float(col + 1) / xGridDimensions, float(yGridDimensions - row) / yGridDimensions ] renderers[index].SetViewport(viewport) renderWindow.AddRenderer(renderers[index]) renderWindowInteractor = vtk.vtkRenderWindowInteractor() style = vtk.vtkInteractorStyleImage() renderWindowInteractor.SetInteractorStyle(style) renderWindowInteractor.SetRenderWindow(renderWindow) # The renderers share one camera. renderWindow.Render() for r in range(1, len(renderers)): renderers[r].SetActiveCamera(renderers[0].GetActiveCamera()) renderWindowInteractor.Initialize() renderWindowInteractor.Start()
shotNoiseThresh2.SetInValue(-shotNoiseAmplitude) shotNoiseThresh2.SetOutValue(0.0) shotNoiseThresh2.Update() shotNoise = vtk.vtkImageMathematics() shotNoise.SetInput1Data(shotNoiseThresh1.GetOutput()) shotNoise.SetInput2Data(shotNoiseThresh2.GetOutput()) shotNoise.SetOperationToAdd() shotNoise.Update() add = vtk.vtkImageMathematics() add.SetInput1Data(shotNoise.GetOutput()) add.SetInput2Data(imageCanvas.GetOutput()) add.SetOperationToAdd() median = vtk.vtkImageMedian3D() median.SetInputConnection(add.GetOutputPort()) median.SetKernelSize(3, 3, 1) hybrid1 = vtk.vtkImageHybridMedian2D() hybrid1.SetInputConnection(add.GetOutputPort()) hybrid2 = vtk.vtkImageHybridMedian2D() hybrid2.SetInputConnection(hybrid1.GetOutputPort()) viewer = vtk.vtkImageViewer() viewer.SetInputConnection(hybrid1.GetOutputPort()) viewer.SetColorWindow(256) viewer.SetColorLevel(127.5) viewer.GetRenderWindow().SetSize(256, 256) viewer.Render()
import vtk import itk import time FILE="/media/sda12/Data/selli/selli_coloc1_8-bit.lsm" t=time.time() reader=vtk.vtkLSMReader() reader.SetFileName(FILE) reader.SetUpdateChannel(0) reader.SetUpdateTimePoint(0) medfilter = vtk.vtkImageHybridMedian2D() medfilter.SetInput(reader.GetOutput()) print "Doing median filtering",time.time()-t medfilter.Update() print "done",time.time()-t cast = vtk.vtkImageCast() cast.SetOutputScalarTypeToFloat() cast.SetInput(medfilter.GetOutput()) f3 = itk.Image.F3 vtktoitk=itk.VTKImageToImageFilter[f3].New() vtktoitk.SetInput(cast.GetOutput()) print "Moving data over to ITK side",time.time()-t vtktoitk.Update() print "done.",time.time()-t print "Doing gradient magnitude",time.time()-t gradmag = itk.GradientMagnitudeImageFilter[f3,f3].New() gradmag.SetInput(vtktoitk.GetOutput()) gradmag.Update() print "done",time.time()-t