+
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?
- 727