GithubHelp home page GithubHelp logo

volkerh / labeleditor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from juglab/labeleditor

0.0 1.0 0.0 1.82 MB

License: BSD 2-Clause "Simplified" License

Java 98.31% Shell 0.04% Groovy 1.65%

labeleditor's Introduction

LabelEditor

The LabelEditor is a JugLab creation aiming to close the gap between segmentation algorithms and user interaction in ImageJ2 / Fiji.

For basic usage instructions see this thread on image.sc.

Implementation

core

model

The heart of this project is a mechanism to tag any label of an ImgLabeling instance with tags. A tag is of type Object so it can be anything.

view

A color can be assigned to a tag in ARGBType representation. The tag LabelEditorTag.DEFAULT can be used to assign a color to all labels with no associated tag. Renderers implementing LabelEditorRenderer will be discovered via the SciJava Plugin mechanism and translate an ImgLabeling into a RandomAccessibleInterval<ARGBType> with reference to the assigned tags and tag colors.

controller

This project uses Scijava Behaviours to bundle interaction concepts and connect them to a specific LabelEditorInterface instance (e.g. BDV or BVV).

plugins

interfaces

  • BigDataViewer: currently the main target interface
  • BigVolumeViewer: buggy proof of concept implementation

behaviours

  • currently, all existing behaviours are accessible via right-click menu
  • SelectionBehaviours work like any default selection model and uses the tags LabelEditorTag.FOCUS and LabelEditorTag.SELECTED
  • ConflictSelectionBehaviours are deselecting conflicting labels on each selection
  • ModificationBehaviours
    • delete a label
    • merge labels (assigns the label of the first one to the other selected ones)
    • [TODO] label division (watershed) (WIP)
    • [TODO] label merge
    • [TODO] fill holes
  • export options like exporting the ImgLabeling index image
  • [TODO] export ImgLabeling as image with one mask channel per label
  • [TODO] compute label regions, show information in table

renderer

  • DefaultLabelEditorRenderer: paints each pixel of a label with the color of the tag(s)
  • BorderLabelEditorRenderer: paints only the outer pixels of a label with the color of the tag(s) (the implementation here needs to be improved)
  • [TODO] render numbers next to each label section
  • [TODO] render bounding box

applications

The following application can be tested by installing this update site in Fiji: https://sites.imagej.net/LabelEditor

  • Objects Counter (IJ2): Runs threshold and CCA and displays the result in the LabelEditor

How to use the API

There is no real documentation yet, also no JavaDoc. Have a look at src/test/sc/fiji/labeleditor/howto to see how to integrate this project into your own implementation. There are also script examples here: src/main/resources/script-templates/ImageJ2/LabelEditor

Configuration

  • [TODO] Make behaviors configurable / come up with config loading / saving

Future steps

  • ask for community feedback, maybe move / split up repo into core / plugins / applications
  • join forces with Labkit
  • figure out how to move towards ROI integration

Integration efforts

labeleditor's People

Contributors

frauzufall avatar maarzt avatar tpietzsch avatar turekg avatar volkerh avatar

Watchers

 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.