17
Efficient Volume Efficient Volume Visualization of Large Visualization of Large Medical Datasets Medical Datasets Stefan Bruckner Stefan Bruckner Institute of Computer Graphics and Institute of Computer Graphics and Algorithms Algorithms Vienna University of Technology Vienna University of Technology

Efficient Volume Visualization of Large Medical Datasets Stefan Bruckner Institute of Computer Graphics and Algorithms Vienna University of Technology

Embed Size (px)

Citation preview

Efficient Volume Visualization Efficient Volume Visualization of Large Medical Datasetsof Large Medical Datasets

Stefan BrucknerStefan Bruckner

Institute of Computer Graphics and AlgorithmsInstitute of Computer Graphics and Algorithms

Vienna University of TechnologyVienna University of Technology

2Stefan Bruckner Computergraphik @ TU Wien

MotivationMotivation Volume visualization: Volume visualization:

Important tool in medical Important tool in medical environmentsenvironments

CT angiography run-offs CT angiography run-offs (> 1000 slices) are used (> 1000 slices) are used in clinical practicein clinical practice

Scanner resolutions are Scanner resolutions are getting higher getting higher (1024x1024 per slice)(1024x1024 per slice)

Memory access is increasingly Memory access is increasingly becoming a bottleneckbecoming a bottleneck

3Stefan Bruckner Computergraphik @ TU Wien

OutlineOutline

Memory hierarchyMemory hierarchy

Linear memory layoutsLinear memory layouts

Bricked memory layoutsBricked memory layouts

Gradient cachingGradient caching

Empty space skippingEmpty space skipping

ResultsResults

4Stefan Bruckner Computergraphik @ TU Wien

Memory HierarchyMemory Hierarchy Hierarchy of successively larger but slower Hierarchy of successively larger but slower

memory technologymemory technology Avoid frequent access to higher levels (like Avoid frequent access to higher levels (like

main memory)main memory) Exploit spatial and temporal locality Exploit spatial and temporal locality

L1 cacheL1 cachemain memorymain memory

L2 cacheL2 cachehard diskhard disk

CPUCPU

5Stefan Bruckner Computergraphik @ TU Wien

Linear Memory LayoutLinear Memory Layoutvolume

rays

Store volume Store volume as a stack of as a stack of 2D images 2D images (slices)(slices)

Bad cache Bad cache behavior forbehavior fordifferent different viewing viewing directionsdirections

6Stefan Bruckner Computergraphik @ TU Wien

Bricked Memory Layout (1)Bricked Memory Layout (1)volume

rays

Store volume Store volume as a set of as a set of equally sized equally sized cubes (bricks)cubes (bricks)

Nearly Nearly constant cache constant cache behavior for all behavior for all viewing viewing directionsdirections

7Stefan Bruckner Computergraphik @ TU Wien

Bricked Memory Layout (2)Bricked Memory Layout (2)volume

rays

Process all Process all resample resample locations locations within a brick within a brick before going before going to the next oneto the next one

Each brick is Each brick is only loaded only loaded from memory from memory onceonce

8Stefan Bruckner Computergraphik @ TU Wien

Bricked Memory Layout (3)Bricked Memory Layout (3)volume

rays

11 22 33

44 55 66

77 88 99Process all Process all resample resample locations locations within a brick within a brick before going before going to the next oneto the next one

Brick-wise Brick-wise processing processing schemescheme

9Stefan Bruckner Computergraphik @ TU Wien

Bricked Memory Layout (4)Bricked Memory Layout (4) How to efficiently access neighboring How to efficiently access neighboring

samples?samples? Problem: A certain neighborhood of Problem: A certain neighborhood of

samples is needed at every resample samples is needed at every resample locationlocation

Offsets to neighboring samples are Offsets to neighboring samples are constant in linear volume layoutconstant in linear volume layout

More complicated for bricked volume More complicated for bricked volume layoutslayouts

10Stefan Bruckner Computergraphik @ TU Wien

Bricked Memory Layout (5)Bricked Memory Layout (5) How to efficiently access neighboring How to efficiently access neighboring

samples?samples?brick boundary sample

11Stefan Bruckner Computergraphik @ TU Wien

Bricked Memory Layout (6)Bricked Memory Layout (6) How to efficiently access neighboring How to efficiently access neighboring

samples?samples? 27 distinct cases in 3D for a 26-27 distinct cases in 3D for a 26-

neighborhoodneighborhood Determine case from current position Determine case from current position

within brickwithin brick Offsets to neighboring samples are Offsets to neighboring samples are

stored in lookup tablestored in lookup table

12Stefan Bruckner Computergraphik @ TU Wien

Linear vs. Bricked Memory LayoutLinear vs. Bricked Memory Layout

brick sizein KB

8 64 512 4096

1

3

4

2

1 32768

linearvolumelayout

cache thrashing + bricking overhead

optimal brick size

speedup factor

speedup: 2.8

13Stefan Bruckner Computergraphik @ TU Wien

Gradient CachingGradient Caching Pre-computed gradientsPre-computed gradients

For sufficient quality, memory For sufficient quality, memory requirements are at least doubledrequirements are at least doubled

Compute gradients on-the-flyCompute gradients on-the-fly Caching has to be performedCaching has to be performed Brick-wise traversal is beneficialBrick-wise traversal is beneficial Store gradients in a brick-sized cacheStore gradients in a brick-sized cache

14Stefan Bruckner Computergraphik @ TU Wien

Empty Space SkippingEmpty Space Skipping Medical datasets contain large empty regions Medical datasets contain large empty regions How do we quickly traverse this empty space?How do we quickly traverse this empty space?

Project all non-transparent bricks onto image Project all non-transparent bricks onto image plane to find first entry points of raysplane to find first entry points of rays

For finer resolution, use a min-max octree per For finer resolution, use a min-max octree per brick and project the octreebrick and project the octree

At cell level, store one bit for each cell classified At cell level, store one bit for each cell classified as transparent to quickly skip itas transparent to quickly skip it

15Stefan Bruckner Computergraphik @ TU Wien

Results (1)Results (1)

16Stefan Bruckner Computergraphik @ TU Wien

Results (2)Results (2)

Intel Pentium M 1600 MHzIntel Pentium M 1600 MHz(software capture)(software capture)

Visible MaleVisible Male(587 x 341 x 1878)(587 x 341 x 1878)

17Stefan Bruckner Computergraphik @ TU Wien

ConclusionsConclusions Alternative memory layouts are the key to Alternative memory layouts are the key to

handling large datasetshandling large datasets Sub second frame rates for large datasets Sub second frame rates for large datasets

on a standard notebookon a standard notebook Fully interactive volume visualization of large Fully interactive volume visualization of large

data on commodity hardware is within reachdata on commodity hardware is within reach Future work: Use bricked memory layout for Future work: Use bricked memory layout for

compression and out-of-core renderingcompression and out-of-core rendering