Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fnndsc/ami

AMI Medical Imaging (AMI) JS ToolKit
https://github.com/fnndsc/ami

ami dicom dicom-images fs javascript medical nifti nifti-format nrrd stl threejs trk volume-rendering vtk webgl xtk

Last synced: about 1 month ago
JSON representation

AMI Medical Imaging (AMI) JS ToolKit

Awesome Lists containing this project

README

        





Build Status


CDNJS Version


NPM Version


Slack

----------

### Content

1. [Hello AMI](#hello-ami)
2. [Features](#features)
3. [Usage](#yarn)
4. [Developer corner](#developer-corner)
5. [Change log](#change-log)
6. [Credits](#credits)
7. [Citations](#citations)

## Hello AMI




lesson00




Lesson 00: Load


Load DICOM Data and get a nice Series/Stack/Frame structure.




lesson01




Lesson 01: Visualize 3D


Look at the data we loaded in 3D.




lesson00




Lesson 02: Mesh


Add a mesh to the scene.




lesson00




Lesson 03: Visualize 2D


Look at the data in 2D.




lesson00




Lesson 04: Labelmap


Overlays on top of you data.










Lesson 05: TRK


TRK - coming soon.




lesson00




Lesson 06: Volume Rendering


Volume Rendering.










Lesson 07: Lookup tables


Lookup Tables - coming soon.




lesson00




Lesson 08: Custom progress bar


Custom progress bars.

### (more) Advanced demos

Volume rendering, 2D viewer, arbitrary reslicing and more examples and advanced demos [there](https://fnndsc.github.io/ami)!

## Features

> ✅ READY
> 🔶 IN PROGRESS OR LIMITED SUPPORT
> ❌ ON ROADMAP

| Capabilities | Volumes | Meshes | Widgets |
|--------------------|--------------|------------------|------------------------|
| ✅ 2D Visulization | ✅ Dicom | ✅ VTK (THREEJS) | 🔶 Handle (2D/3D) |
| ✅ 3D Visualization | ✅ NRRD | ✅ STL (THREEJS) | 🔶 Probe (2D/3D) |
| ✅ Volume Rendering | ✅ Nifti | ✅ TRK | 🔶 Ruler (2D/3D) |
| ✅ Lookup Tables | ✅ MHD/(Z)RAW | ✅ FSM | 🔶 Orientation (2D/3D) |
| ✅ Label Maps | ✅ MGH/MGZ | ❌ CURV | 🔶 Angle (2D/3D) |
| | ❌ JPEG | | |

## Usage

### Pre-requisites

- ES2015 promises support. (consider using polyfills if needed)
- Load THREEJS your index.html **BEFORE** AMI.

```hmtl

```

### Yarn

```bash

$> yarn add ami.js

```

*Note*: you might need to include [babel](https://github.com/babel/babel) transforms in you build process.

```javascript

// app.js
import * as AMI form 'ami.js';
window.console.log('Ready to rock!!');

```

### ami.js

Check-out the [lessons](#lessons) to get started quickly.

**New:** Use the new factory not to have to include `three` in index.html.
```javascript
import * as THREE from 'three';
import {stackHelperFactory} from 'ami.js';

const StackHelper = stackHelperFactory(THREE);
const stackHelper = new StackHelper();
```

Add AMI in your index.html **after** THREEJS.
```html

#app.js
const AMI = AMI;
window.console.log('Ready to rock!!');

```

## Developer corner

Get the source code and related packages.

```bash

$> git clone https://github.com/FNNDSC/ami.git
$> cd ami
$> yarn install

```

To run examples (browserify/babelify/serve the example)

```bash

$> yarn example

#run the geometries_slice example
$> yarn example geometries_slice

```

Build standalone library to `lib/`

```bash

$> yarn build:ami

```

Build minified standalone version run

```bash

$> yarn build:ami:prod

```

Tests

```bash

$> yarn test

```

Documentation

```bash

$> yarn doc

```

Build and deploy dist/ to gh-pages

```bash

$> yarn deploy

```

Find out more about the [API](https://fnndsc.github.io/ami/doc).

# [Change log](https://github.com/FNNDSC/ami/releases)

# Credits

AMI would not exist without them:

##### [THREEJS](https://github.com/mrdoob/three.js/)

- Base components such as Vectors, Matrices and Objects3D.
- HTML template for example page.
- Author(s): [mrdoob](https://github.com/mrdoob)

##### [DicomParser](https://github.com/chafey/dicomParser)

- DICOM parsing relies on it.
- Author(s): [chafey](https://github.com/chafey)

##### [CornerstoneWADOImageLoader](https://github.com/chafey/cornerstoneWADOImageLoader)

- Was used to figure out how to use the dicom parser properly.
- Author(s): [chafey](https://github.com/chafey)

##### [NIFTI-Reader-JS](https://github.com/rii-mango/NIFTI-Reader-JS)

- Nifti parsing relies on it.
- Author(s): [rii-mango](https://github.com/rii-mango)

##### [NRRD-JS](https://github.com/scijs/nrrd-js)

- NRRD parsing relies on it.
- Author(s): [jaspervdg](https://github.com/jaspervdg)

##### [JPEGLosslessDecoderJS](https://github.com/rii-mango/JPEGLosslessDecoderJS)

- JPEG Lossless Decoder for DICOM images
- Author(s): [rii-mango](https://github.com/rii-mango)

##### [Image-JPEG2000](https://github.com/OHIF/image-JPEG2000)

- JPEG 2000 Decoder for DICOM images
- Author(s): [jpambrun](https://github.com/jpambrun), [mozilla](https://github.com/mozilla/pdf.js/)

##### [Pako](https://github.com/nodeca/pako)

- GZ file decompression
- Author(s): [nodeca](https://github.com/nodeca)

# Citations
### 2017
- [From brain imaging to weather imaging - McCaie - informaticslab, Met Office (blog post)](http://www.informaticslab.co.uk/side-projects/weather/3d/visualisations/2017/04/04/from-brain-imaging-to-weather-imaging.html)
- [Medical imaging in the browser with the A* Medical Imaging (AMI) toolkit. - Rannou et al. - ESMRMB 2017 (poster)](http://epostersonline.com/esmrmb2017/node/3443)
- [Reusable Client-Side JavaScript Modules for Immersive Web-Based Real-Time Collaborative Neuroimage Visualization - Bernal-Rusiel et al. - Frontiers in Neuroinformatics 2017 (article)](http://journal.frontiersin.org/article/10.3389/fninf.2017.00032/full)
### 2016
- [Volume Visualization Tools for Medical Applications in Ubiquitous Platforms - Arbelaiz et al. - LNICST 2016 (article)](https://link.springer.com/chapter/10.1007/978-3-319-49655-9_54)
- [Interoperable communication of quantitative image analysis results using DICOM standard (DICOM4QI) - Fedorov et al. - RSNA 2016 (poster)](https://docs.google.com/presentation/d/16mZbPiXqU7tKTRAcB7bnP1RGybBLqF-O0319raUWYHo/edit#slide=id.p)