• Keine Ergebnisse gefunden

Bildverarbeitung Praktikum ¨Ubung 9, Abgabe 02.07.2020

N/A
N/A
Protected

Academic year: 2021

Aktie "Bildverarbeitung Praktikum ¨Ubung 9, Abgabe 02.07.2020"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Bildverarbeitung Praktikum

Ubung 9, Abgabe 02.07.2020¨

Dr. Christina Gillmann June 25, 2020

1 Aufgabe 0: Installieren von VTK und laden eines Ladensatzes

F¨ur diese Aufgabe ben¨otigen sie eine neue Bibliothek namens VTK (Visualization Toolkit).

Mit dieser Bibliothek erhalten sie alle wichtigen Werkzeuge f¨ur fortgeschrittene Visual- isierungen. Generell bietet VTK sehr viele Algorithmen zur Visualisierung (nicht nur im Rahmen der Bildverarbeitung).

Zur Installation ben¨otigen sie folgenden Befehl:

conda i n s t a l l −c anaconda vt k

VTK ist ziemlich groß und die Installation kann einige Minuten dauern.

Sie sollen diese Woche mit einem speziellen Datensatz arbeiten. Es handelt sich um den 3D CT scan eines Motors. Ich habe diesen Datensatz (engine.raw) in der Dropbox hinterlegt. Hierbei handelt es sich um ein sehr primitives Datenformat indem alle Werte einfach nur in einer Datei gespeichert sind (ohne header, der zus¨atzliche Informationen bietet). Deshalb m¨ussen Parameter wie Gr¨oße des Bildes und Pixel angegeben werden.

Sie finden folgend den Code der ihnen das Laden des Datensatzes erm¨oglicht.

Den Datensatz k¨onnen sie wie folgt laden:

i m p o r t v t k

# Read 3D RAW image

r e a d e r=v tk . vtkImageReader ( )

r e a d e r . S e t D a t a S c a l a r T y p e ( v tk . VTK UNSIGNED CHAR) # u n s i g n e d i n t 8 r e a d e r . SetFileName ( ’ e n g i n e . raw ’ )

r e a d e r . SetNumberOfScalarComponents ( 1 ) r e a d e r . S e t F i l e D i m e n s i o n a l i t y ( 3 )

r e a d e r . S e t D a t a B y t e O r d e r T o L i t t l e E n d i a n ( ) r e a d e r . S e t D a t a E x t e n t ( 0 , 2 5 5 , 0 , 2 5 5 , 0 , 1 2 7 ) r e a d e r . S e t D a t a S p a c i n g ( 1 . 0 , 1 . 0 , 1 . 0 )

r e a d e r . Update ( )

1

(2)

2 Aufgabe 1: Volume Rendering

Sie sollen den geladenen Datensatz mit Hilfe des Volume Renderings und einer 1-D Transferfunktion darstellen. Hieryu ben¨otigen sie folgenden Code:

renWin = vt k . vtkRenderWindow ( ) renWin . AddRenderer ( r e n 1 )

i r e n = vt k . v t k R e n d e r W i n d o w I n t e r a c t o r ( ) i r e n . SetRenderWindow ( renWin )

# Mit d i e s e r Funktion bestimmen s i e d i e O p a c i t y

# d e r j e w e i l i g e n Grauwerte im B i l d

o p a c i t y T r a n s f e r F u n c t i o n = v t k . v t k P i e c e w i s e F u n c t i o n ( ) o p a c i t y T r a n s f e r F u n c t i o n . AddPoint ( 2 0 , 0 . 0 )

o p a c i t y T r a n s f e r F u n c t i o n . AddPoint ( 2 5 5 , 0 . 2 )

# C r e a t e t r a n s f e r mapping s c a l a r v a l u e t o c o l o r .

c o l o r T r a n s f e r F u n c t i o n = v t k . v t k C o l o r T r a n s f e r F u n c t i o n ( ) c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 0 . 0 , 0 . 0 , 0 . 0 , 0 . 0 ) c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 6 4 . 0 , 1 . 0 , 0 . 0 , 0 . 0 ) c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 1 2 8 . 0 , 0 . 0 , 0 . 0 , 1 . 0 ) c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 1 9 2 . 0 , 0 . 0 , 1 . 0 , 0 . 0 ) c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 2 5 5 . 0 , 0 . 0 , 0 . 2 , 0 . 0 )

# The p r o p e r t y d e s c r i b e s how t h e d a t a w i l l l o o k . v o l u m e P r o p e r t y = vt k . vtkVolumeProperty ( )

v o l u m e P r o p e r t y . S e t C o l o r ( c o l o r T r a n s f e r F u n c t i o n )

v o l u m e P r o p e r t y . S e t S c a l a r O p a c i t y ( o p a c i t y T r a n s f e r F u n c t i o n ) v o l u m e P r o p e r t y . ShadeOn ( )

v o l u m e P r o p e r t y . S e t I n t e r p o l a t i o n T y p e T o L i n e a r ( )

# The mapper / r a y c a s t f u n c t i o n know how t o r e n d e r t h e d a t a . volumeMapper = v tk . vtkFixedPointVolumeRayCastMapper ( )

volumeMapper . S e t I n p u t C o n n e c t i o n ( r e a d e r . GetOutputPort ( ) )

# The volume h o l d s t h e mapper and t h e p r o p e r t y and

# can be u s e d t o p o s i t i o n / o r i e n t t h e volume . volume = v t k . vtkVolume ( )

volume . SetMapper ( volumeMapper ) volume . S e t P r o p e r t y ( v o l u m e P r o p e r t y ) r e n 1 . AddVolume ( r e a d e r . getOutput ( ) ) r e n 1 . ResetCamera ( )

2

(3)

renWin . S e t S i z e ( 6 0 0 , 6 0 0 ) renWin . Render ( )

i r e n . S t a r t ( )

a) Machen sie sich mit den Klassen ColorTransferFunction und OpacityTransferFunc- tion vertraut. Mit diesen sollen sie eine passende Transfer Funktion erstellen. Hierbei ist die Dokumentation von VTK hilfreich

b) Erstellen sie ein Histogramm des Eingangsbildes. Zeigen sie dieses an

c) Erstellen sie eine Transferfunktion mit Hilfe der Parameter in ColorTransferFunc- tion und OpacityTransferFunction. Sie k¨onnen dort beliebig viele Punkte f¨ur Trans- parenz und Farben einf¨ugen. Zwischen diesen Punkten wird VTK automatisch inter- polieren.

3 Aufgabe 2: Indirect Volume Rendering

In dieser Aufgabe sollen sie den Datensatz durch inderektes Volumen Rendering visual- isieren. Hierzu ben¨otigen sie folgenden Code.

# V i s u a l i z a t i o n

c o n t o u r=v t k . vtkMarchingCubes ( ) # v t k . v t k C o n t o u r F i l t e r ( ) c o n t o u r . S e t I n p u t C o n n e c t i o n ( r e a d e r . GetOutputPort ( ) )

c o n t o u r . ComputeNormalsOn ( ) c o n t o u r . S e t V a l u e ( 0 , 1 )

mapper = v t k . vtkPolyDataMapper ( )

mapper . S e t I n p u t C o n n e c t i o n ( c o n t o u r . GetOutputPort ( ) ) mapper . S c a l a r V i s i b i l i t y O f f ( )

a c t o r = v t k . v t k A c t o r ( ) a c t o r . SetMapper ( mapper ) r e n d e r e r=v t k . v t k R e n d e r e r ( ) r e n d e r e r . AddActor ( a c t o r )

window = v tk . vtkRenderWindow ( ) window . S e t S i z e ( 6 0 0 , 6 0 0 )

window . AddRenderer ( r e n d e r e r )

# C r e a t e i n t e r a c t o r , add window & add o b s e r v e r s i n t e r a c t o r = v tk . v t k R e n d e r W i n d o w I n t e r a c t o r ( ) i n t e r a c t o r . SetRenderWindow ( window )

# S t a r t r e n d e r e r & i n t e r a c t o r

3

(4)

window . Render ( )

i n t e r a c t o r . I n i t i a l i z e ( )

a) Finden sie einen guten Parameter f¨ur die Funktion setValue im Algorithmus March- ing Cubes. Hierbei kann ihnen das Histogramm Aufschluss geben.

b) Vergleichen sie die Visualisierungen aus beiden Aufgaben und diskutieren sie welche Vor und Nachteile der jeweilige Ansatz hat.

4

Referenzen

ÄHNLICHE DOKUMENTE

Neurale Netze sind an der Stelle eine Art Blackbox in der sie etwas reinf¨ uttern und ein Ergebnis bekommen, jedoch k¨ onnen sie nicht nachvollziehen wie diese Berechnung

Schreiben sie eine Funktion U nsicherheitLaplace, die ein Bild und eine Unsicherheit- squantifizierung dieses Bildes als Eingabe erh¨ alt. Sie sollen nun ¨ ahnlich wie im Beispiel

Für jede richtige Antwort erhalten Sie einen Punkt, für jede falsche wird Ihnen ein halber Punkt abgezogen (bis zu einer Untergrenze von 0 Punkten). Nicht bearbeitete Sachver-

RHEINISCH- WESTF¨ ALISCHE TECHNISCHE HOCHSCHULE AACHEN. LEHR- UND FORSCHUNGSGEBIET

F¨ ur ein Elektron mit Spin- 1 2 im Coulombpotential des Atomkernes betrachten wir nur die Zust¨ ande |(ν = 1)lmi |αi und |(ν = 2)lmi |αi, wobei |αi den Spinanteil beschreibt und

Wenn Sie jetzt denken „na, nu übertreibt er aber!“, dann will ich Ihnen zu bedenken geben, daß wir noch immer in einer fetten, vollgefressenen und daher etwas dekadenten Gesellschaft

(Nicht ganz schlüssig an dieser Stelle erschien mir, woher die Dörfl er das Brennholz als einzig verfügbarem Energieträger nahmen, wenn doch der Wald Tabu war, und wie sie

Der altbacken erhobene moralische Zeigefi nger Fouqués, der nichts, aber auch gar nichts von dem unseriös erworbenen Reichtum in den Händen seinen Protagonisten beließ, in dessen