Git Product home page Git Product logo

cornerstonetools's Introduction

NPM version NPM downloads MIT License Build Status Coverage Status

cornerstoneTools

cornerstoneTools is a library built on top of cornerstone that provides a set of common tools needed in medical imaging to work with images and stacks of images.

Features

WW/WC Tool Example Zoom Tool Example Pan Tool Example Length Tool Example
WW/WC Zoom Pan Length
Example / Source Example / Source Example / Source Example / Source
ย 
Rectangle ROI Tool Example Elliptical ROI Tool Example Pixel Probe Tool Example Angle Tool Example
Rectangle ROI Elliptical ROI Pixel Probe Angle
Example / Source Example / Source Example / Source Example / Source
ย 
Scroll Tool Example Cross reference lines Tool Example
Scroll Reference Lines Many More!
Example / Source Example / Source Click Here to See a Full List

Other Features:

  • Time Series Tools
    • Play
    • Scroll
    • Probe
  • Synchronization Tools
    • By image index
    • By image position
    • By zoom and pan
    • By ww/wc and inversion
  • Measurement Manager
  • Support for binding each tool to different mouse inputs:
    • Left mouse button
    • Middle mouse button
    • Right mouse button
    • Mouse Wheel
  • Support for touch based gestures
    • Drag
    • Pinch
  • Tool framework that can be used to simplify development of new tools that work in a consistent manner with the included tools
  • Provides API to access measurement data for serialization purposes (e.g. save measurements to database)

Getting Started

Install

Via NPM: (preferred)

npm install --save cornerstone-tools

Get a packaged source file:

UNPKG offers a quick/neat solution for grabbing versioned copies of the source. For example:

https://unpkg.com/<package-name>@<package-version>/path/to/desired-file.js

  • For development, to get the latest minified source:
    • <script src="https://unpkg.com/cornerstone-tools"></script>
  • For production, specify a package version:

Usage

See the live examples and wiki for documentation (Soon to be replaced by tools.cornerstonejs.org) on how to use this library

A common setup when using modules:

// Load NPM packages
import Hammer from 'hammerjs';                    // npm install --save hammerjs
import * as cornerstone from 'cornerstone-core';  // npm install --save cornerstone-core
import * as cornerstoneTools from 'cornerstone-tools';

// Specify external dependencies
cornerstoneTools.external.cornerstone = cornerstone;
cornerstoneTools.external.Hammer = Hammer;

*Note: cornerstoneTools.external's only need to be specified in cornerstone-tools versions 1.0.0+

A common setup when using package source files:

// Load Packaged Sources
<script src="https://unpkg.com/[email protected]/hammer.js"></script>
<script src="https://unpkg.com/[email protected]/dist/cornerstone.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/cornerstoneTools.min.js"></script>

// Specify external dependencies
cornerstoneTools.external.cornerstone = cornerstone;
cornerstoneTools.external.Hammer = Hammer;

*Note: cornerstoneTools.external's only need to be specified in cornerstone-tools versions 1.0.0+

Contributing

We love contributions, and we have plenty of work queued up for all skill levels. If you have an idea, feel free to create a new topic on our community discussion board, or comment on an existing enhancement, up-for-grabs, bug, documentation issue. A quick "here is how I intend to approach this problem", with sign-off from someone like @swederik, will go a long way toward increasing the chances your hard work will be merged ๐Ÿ‘

How To Contribute:

  1. Fork this repository
  2. Clone the forked repository
  3. Before committing code, create a branch-per-feature, or branch-per-bug
  4. Create pull requests against cornerstonejs/cornerstoneTools/master

What To Contribute:

If you're looking to get your feet wet, start by:

  • Read existing wiki documentation as you implement your solution. Notice any holes? Fill them in.
  • Can't find an example of a tool? Or think an example can be improved? Improve it.
  • Creating your first tool and learned some lessons along the way? Add documentation to help others.

Can't think of anything? Weigh in on and claim an outstanding issue in the backlog.

Versioning

cornerstoneTools will be maintained under the Semantic Versioning Guidelines as much as possible. Releases will be numbered with the following format:

<major>.<minor>.<patch>

And constructed with the following guidelines:

  • Breaking backward compatibility bumps the major (and resets the minor and patch)
    • Information on how to navigate breaking changes will be included in our Change Log
  • New additions, including new icons, without breaking backward compatibility bumps the minor (and resets the patch)
  • Bug fixes, changes to brand logos, and misc changes bumps the patch

Build System

This project uses webpack to build the software.

Requirements:

Common Tasks:

Update dependencies (after each pull):

npm install

Running the build:

npm start

Automatically running the build and unit tests after each source change:

npm run watch

Backlog

  • Updating related handles while resizing (e.g. resize top left handle of a rect and update the bottom left and top right as it changes)
  • measurement calibration tool
  • Config object that allows tool appearance to be customized (e.g. line color, text color, handle size, shape, etc)
  • automatically disabling tools when the enabled element is disabled
  • reconsider the state management api, it is a bit clunky
  • add support for pointer events as an input source
  • Reference line renderer for first/last/active
  • key press input source - so user can interact with tools via keyboard (e.g. scroll stack image using arrow keys)

cornerstonetools's People

Contributors

andrebot avatar brunoalvesdefaria avatar chafey avatar dannyrb avatar diego0020 avatar doncharkowsky avatar emfol avatar evren217 avatar freund17 avatar jdnarvaez avatar jmhmd avatar jpambrun avatar kofifus avatar leonardorame avatar lscoder avatar maistho avatar medihack avatar mscheper avatar nicomlas avatar prasathit2007 avatar ra00l avatar rionmonster avatar sevenm7 avatar sirrrich avatar swederik avatar zachasme avatar zelle-github avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.