+

Jonathan Lurie - Armin Taheri

MCIN - November 2017

What is Pixpipe already?

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

An image processing pipeline in JS

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

with containers and filters

Why to use Pixpipe in PIVT?

  • To delegate non-viz tasks
  • Reduce complexity
  • Share the dev work
  • Because Pixpipe:
    • is client side Javascript (just like PIVT)
    • opens / saves files
    • has the structures to handle numerical data
    • is made to be efficient at pocessing large data
    • is developed by us and can easily get new features
  • No alternative for our use-case (afaik). Kind of a niche library

 

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

Image3D

  • Generic container for volumetric data (+t)
  • Infinite set of metadata
    • Some are standard and required
  • Handles 3D affine transformations (v2* and *2v)
  • Lots of methods to query information
    • coordinate transformation
    • voxel intensity
    • get a slice, given a axis and index
    • segment sampling (intensity spectrum)
    • world boundaries
    • intensity min-max
    • data copy as uint8 scaled on min-max, etc.
  • Compatible with serialization

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

Generic Decoder

  • The class Image3DGenericDecoder
  • Takes Minc, NIfTI or MGH buffer as input
  • Outputs an Image3D
  • Tries to decode in each format
  • Fixes the orientation issues (swaped matrix)
  • Worry-free interface to load a volume

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

Mesh3D

  • Generic container for surface data
  • Parser available for MNI OBJ
  • Simple and extensible structure:
    • Vertice positions
    • Vertex index per polygon
    • Normal vectors per polygons
    • Color per vertex
  • As much metadata as needed
  • Compatible with serialization

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

Signal1D and EEG

  • We want to display EEG on the web (Cuba, intracranial)
  • Pixpipe provides Filters to process the signals (FFT)
  • has parsers for MOD (cuba) and EDF (standard) files
  • Internally, EEG are stored as Signal1D objects
  • Infinite set of metadata
  • Compatible with serialization

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

* EDF: European Data Format sort of became a standard due to the lack of a real standard. It's just widely adopted.

Colormaps

  • Using the class Colormaps
  • 44 built-in color scales + create custom ones
  • Vectorial mapping: create as many samples as needed
  • Method to query colors at given positions [0, 1]
  • Export as Image2D with a given number of samples
    • easy to send to GPU for display or lookup with GLSL

5

11

50

100

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

Serialization

  • Save data and metadata to the filesystem
  • Files' original buffer or Pixpipe objects (Image3D, Signal1D...)
  • PIVT environment settings (camera, positions, curves, etc.)
  • Using the PixBin codec and format
    • Multimodality (blocks)
    • Infinite metadata per block (JSON)
    • Generic store-whatever-you-want
    • Optimized for numerical data
    • Embeded checksum validation per block
    • Internal compression per block
    • Blocks are independant and indexed in header

+

Jonathan Lurie - Armin Taheri - MCIN - November 2017

Pixpipejs in PIVT

By jonathanlurie

Pixpipejs in PIVT

What's Pixpipe's job in PIVT?

  • 618