Hi,
I am trying to create a simple height map from a numpy array. Everything is zero, except for a peak in the center. The peak is hexagonal, and tilted, and so it’s not symmetrical. I want to create a spectrogram, but hexagonal peaks are going to really skew the figure.
The code and resulting figure are given below. Help greatly appreciated. Please!
import numpy as np
import vtk
def main():
##############################
# 0. INITIALIZE
##############################
# data
imgImport = vtk.vtkImageImport()
imageData = vtk.vtkImageData() # data (image)
# processing (visualization pipline)
geometry = vtk.vtkImageDataGeometryFilter() # image->poly
warp = vtk.vtkWarpScalar() # filter
mapper = vtk.vtkPolyDataMapper() # mapper
# view (graphics pipeline)
actor_axes = vtk.vtkAxesActor() # actor: axes
actor = vtk.vtkActor() # actor: main
ren = vtk.vtkRenderer() # renderer
renWin = vtk.vtkRenderWindow() # window
iren = vtk.vtkRenderWindowInteractor() # interactor
##############################
# I. INPUT
##############################
data_matrix = np.zeros([10,10], dtype=np.float32)
data_matrix[4,4] = 3
sz = data_matrix.shape
R, C = sz[0], sz[1]
imgImport.SetImportVoidPointer(data_matrix) # len(data_string)
imgImport.SetDataScalarTypeToFloat()
imgImport.SetDataExtent(0, C-1, 0, R-1, 0, 0)
imgImport.SetWholeExtent(0, C-1, 0, R-1, 0, 0)
imgImport.Update()
imageData = imgImport.GetOutput()
##############################
# II. PROCESS
##############################
##############################
# IIIa. VISUALIZATION PIPELINE
##############################
# Filter 1: image data to polydata
geometry.SetInputData(imageData)
geometry.Update()
# Filter 2: warp
warp.SetInputConnection(geometry.GetOutputPort())
# Mapper
mapper.SetInputConnection(warp.GetOutputPort())
##############################
# IIIb. RENDER PIPELINE
##############################
# 1/4. Actor
actor.SetMapper(mapper)
# 2/4. Renderer
ren.AddActor(actor_axes)
ren.AddActor(actor)
ren.ResetCamera()
# 3/4. Window
renWin.AddRenderer(ren)
# 4/4. Interactor
iren.SetRenderWindow(renWin)
iren.Initialize()
iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
iren.Start()
######################################
if name == ‘main’:
main()