Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Ejercicios visualización de datos, Ejercicios de Visión Computacional

Ejercicios visualización de datos

Tipo: Ejercicios

2019/2020

Subido el 06/11/2022

alariza
alariza 🇪🇸

1 documento

1 / 8

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
In![1]:
import
vtk
vtk
.
VTK_VERSION
Copia la siguiente función en tu notebook para poder ver la visualización como resultado
vtk_show(renderer) saca un captura y la muestra en el notebook
renderWindowInteractor.Start()
que hasta que no se cierra la
ventana no deja al notebook ejecutar nada más
In![2]:
from
IPython.display
import
Image
def
vtk_show
(
renderer
,
width
=
600
,
height
=
450
):
"""
Takes vtkRenderer instance and returns an IPython Image with the rendering.
"""
renderWindow
=
vtk
.
vtkRenderWindow
()
renderWindow
.
SetOffScreenRendering
(
1
)
renderWindow
.
AddRenderer
(
renderer
)
renderWindow
.
SetSize
(
width
,
height
)
renderWindow
.
Render
()
windowToImageFilter
=
vtk
.
vtkWindowToImageFilter
()
windowToImageFilter
.
SetInput
(
renderWindow
)
windowToImageFilter
.
Update
()
writer
=
vtk
.
vtkPNGWriter
()
writer
.
SetWriteToMemory
(
1
)
writer
.
SetInputConnection
(
windowToImageFilter
.
GetOutputPort
())
writer
.
Write
()
data
=
memoryview
(
writer
.
GetResult
())
return
Image
(
data
)
Hola mundo
In![3]:
coneSource
=
vtk
.
vtkConeSource
()
coneSource
.
SetResolution
(
10
)
mapper
=
vtk
.
vtkPolyDataMapper
()
mapper
.
SetInputConnection
(
coneSource
.
GetOutputPort
())
actor
=
vtk
.
vtkActor
()
actor
.
SetMapper
(
mapper
)
renderer
=
vtk
.
vtkRenderer
()
renderer
.
AddActor
(
actor
)
renderWindow
=
vtk
.
vtkRenderWindow
()
renderWindow
.
AddRenderer
(
renderer
)
renderWindowInteractor
=
vtk
.
vtkRenderWindowInteractor
()
renderWindowInteractor
.
SetRenderWindow
(
renderWindow
)
renderWindow
.
Render
()
renderWindowInteractor
.
Start
()
Out[1]:
'8.2.0'
pf3
pf4
pf5
pf8

Vista previa parcial del texto

¡Descarga Ejercicios visualización de datos y más Ejercicios en PDF de Visión Computacional solo en Docsity!

In [1]: import vtk vtk.VTK_VERSION Copia la siguiente función en tu notebook para poder ver la visualización como resultado vtk_show(renderer) saca un captura y la muestra en el notebook Esto no bloquea la interfaz, no como renderWindowInteractor.Start() que hasta que no se cierra la ventana no deja al notebook ejecutar nada más In [2]: from IPython.display import Image def vtk_show(renderer, width= 600 , height= 450 ): """ Takes vtkRenderer instance and returns an IPython Image with the rendering. """ renderWindow = vtk.vtkRenderWindow() renderWindow.SetOffScreenRendering( 1 ) renderWindow.AddRenderer(renderer) renderWindow.SetSize(width, height) renderWindow.Render() windowToImageFilter = vtk.vtkWindowToImageFilter() windowToImageFilter.SetInput(renderWindow) windowToImageFilter.Update() writer = vtk.vtkPNGWriter() writer.SetWriteToMemory( 1 ) writer.SetInputConnection(windowToImageFilter.GetOutputPort()) writer.Write() data = memoryview(writer.GetResult()) return Image(data)

Hola mundo

In [3]: coneSource = vtk.vtkConeSource() coneSource.SetResolution( 10 ) mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(coneSource.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) renderer = vtk.vtkRenderer() renderer.AddActor(actor) renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderWindow.Render() renderWindowInteractor.Start() Out[1]: '8.2.0'

In [4]: vtk_show(renderer) Out[4]:

Ejercicio 2

Utiliza un Cilindro como Source Cambiando las propiedades de color del actor consigue una imágen como la siguiente

Ejercicio 3

Cambia el estilo de interacción a vtkInteractorStyleTrackballCamera Añade un observer al interactor que escuche por 'LeftButtonPressEvent' y cambie el color del cilindro a uno aleatorio

Ejercicio 4 (vale 2 puntos)

Carga las posiciones, conexiones y radio de los átomos y píntalos todos como en la figura. Una posibilidad sería crear tres funciones, parsePoints , parseScalars y parseConnections. Cada una abriría su fichero, leería y parsearía la información y crearía los vtkPoints , vtkFloatArray y vtkCellArray tal como se describe a continuación: Crea un sólo vtkPolyData y rellenalo con los datos: SetPoints para los átomos. Todos los puntos están en atoms-coordinates.txt Hay que rellenar un vtkPoints SetLines para las conexiones. Todos las conexiones están en atoms-radius.txt Hay que rellenar un vtkCellArray Cada conexión requiere meter una nueva Cell de 2 puntos con InsertNextCell(2) y a continuación meter los dos puntos de la conexión con InsertCellPoint GetPointData().SetScalars para los radios Todos los radios están en atoms-connections.txt Hay que rellenar un vtkFloatArray Combina vtkSphereSource y vtkGlyph3D para generar todas las esferas vtkGlyph3D tiene un método SetSourceConnection al que se le pasaría la salida del source para que pueda replicar una espera por cada punto del PolyData Colorea las esferas según su radio con vtkColorTransferFunction Pinta las conexiones con vtkTubeFilter Si le cambiais el color a algún actor pero pinta otros colores diferentes es posible que sea el mapper que esté pintando sus escalares.Para que no los pinte es útil la función ScalarVisibilityOff Calcula el boundingBox con vtkOutlineFilter y píntalo junto con los demás actores

Ejercicio 6

Carga el dataset "asymmetric.tiff". Es un stack de imágenes donde el background vale 0 y los vóxeles de cada objeto están marcados con un número correlativo, donde cada objeto tiene un número diferente y todos los vóxeles del mismo objeto el mismo número. A este tipo de datos se le llama labelmap y se usa mucho para representar el resultado de una segmentación de imágenes. Debería tener 15 objetos diferentes. Con GetScalarRange() obten el rango de etiquetas en el labelmap Haz un renderizado volumétrico utilizando las clases: vtkPiecewiseFunction para poner la opacidad del background a 0 y de todos los objetos a 1 vtkColorTransferFunction para asignar un color diferente a cada objeto, eg: interpolarlos desde rojo el primer objeto al azul el último objeto vtkVolumeProperty establece el color y la opacidad de los vóxeles Añade el volúmen a un mapper ( vtkGPUVolumeRayCastMapper ) y este a su vez a un actor ( vtkVolume )

Ejercicio 7

Renderiza el "One-third_resolution_stack.tif" como el widget vtkImagePlaneWidget Pon su orientazón al Eje Z Añadele el Interactor y muéstalo con EnabledOn Usa como transfer function vtkDiscretizableColorTransferFunction Para generar colores distinguibles para objetos correlativos usa vtkColorSeries y su GetColorRepeating

Ejercicio 8 (vale 2 puntos)

Renderiza el mismo dataset "asymmetric.tif" esta vez convirtiendo a malla el labelmap utilizando Marching Cubes Haz lo mismo con "symmetric.tif" Colorea todos los objetos de symmetric de rojo y los de asymmetric de verde