eyelab

A mulit-modal annotation tool for retinal imaging data

https://github.com/medvisbonn/eyelab

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.3%) to scientific vocabulary

Keywords

eyepy heyex oct
Last synced: 6 months ago · JSON representation ·

Repository

A mulit-modal annotation tool for retinal imaging data

Basic Info
  • Host: GitHub
  • Owner: MedVisBonn
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 610 KB
Statistics
  • Stars: 12
  • Watchers: 3
  • Forks: 2
  • Open Issues: 2
  • Releases: 9
Topics
eyepy heyex oct
Created almost 4 years ago · Last pushed over 3 years ago
Metadata Files
Readme Changelog License Citation

README.md

EyeLab

PyPI version DOI

EyeLab is a multimodal annotation tool for ophthalmological imaging data.

EyeLab

Getting Started

If you are on Windows, download the latest executable here and double click it to start EyeLab.

For Linux there is no package, but you might want to have a look at the Developers section for how to set up EyeLab.

Importing Data

Use the File Menu on the top left of the EyeLab window to import, save or open data to your workspace.

Supported Formats

  • Data exported from HEXEX in the .xml or .vol format
  • Data from the RETOUCH challenge
  • AMD and Control Dataset from (Farsiu 2014)

You can also import B-scans from a folder (sorting the file names is expected to result in the correct B-scan order)

Annotations can be saved as .eye files, EyeLabs file format.

The Workspace:

Your workspace consists of a combined Enface and Volume view. On the right you have an overview where annotations are managed for the OCT volume as well as for the Enface image.

Navigation

You can zoom in and out using the mouse wheel. With the standard Inspection tool you can move the image around if you want to see another part. If you press CTRL while using the mouse wheel on the Volume view, you scroll through adjacent B-scans. Use CRTL + x to toggle a linked navigation where B-scans change based on your mouse position in the enface.

Area Annotations

An area annotation in Eyelab is a pixel_map on top of the underlying image. Its color can be changed, as well as its visibility.

Adding a new Area Annotation

Create a new area using the (+) symbol in the overview on the right. Specify a name and select Areas from the "Type" dropdown.

Changing Area Annotations

First select the area you want to annotate from the overview on the right. Selecting an area automatically enables the Pen tool. You can now make annotations. The size of the Pen tool can be changed on the right.

If you want to pan around in the image select the Inspection tool on the right.

Layer Annotations

An OCT Layer in Eyelab is combination of explicit layer heights provided per A-scan, and a cubic spline curve which can be manipulated by adding, removing or moving the curves knots.

Adding a new Layer Annotation

Create a new layer using the (+) symbol in the overview on the right. Specify a name and select Layers from the Type dropdown.

Changing Layer Annotations

First select the layer you want to annotate from the overview on the right. Selecting a layer automatically enables the Curve tool. You can now start adding control points of a cubic spline curve, by double click on the desired location. You can move control points by left click and hold and delete them with a right click. These control points consist of a red circle the curve has to pass through and two blue rectangles which control at which angle the curve enters and leaves the red control point

If you want to pan around in the image select the Inspection tool on the right.

The layer heights are constantly updated to represent the position of the current cubic spline curve.

The .eye format

.eye files are zip archives of the following structure: file.eye │ meta.json │ raw_volume.npy # unprocessed by eyepy │ └───localizer │ │ meta.json │ │ lcoalizer.npy │ │ │ └───annotations │ └───pixel │ │ meta.json │ │ pixel_maps.npy │ └───annotations └───layers │ │ meta.json │ │ layer_heights.npy │ └───voxels │ meta.json │ voxel_maps.npy

Since Eyelab builds on the eyepy Python package, annotations stored by Eyelab in the .eye formt can be easily loaded with eyepy:

python import eyepy as ep ev = ep.EyeVolume.load("path/to/file.eye")

Development

Clone the repository, install python poetry and run poetry install after navigating into the project folder.

To run EyeLab run poetry run eyelab/main.py

Building the Windows executable

shell poetry runpyinstaller --hidden-import imagecodecs --collect-submodules imagecodecs --name EyeLab -i icon.ico eyelab\main.py --onefile

Related Projects:

  • eyepie: The Python package EyeLab uses in the back
  • OCT-Converter: Extract raw optical coherence tomography (OCT) and fundus data from proprietary file formats. (.fds/.fda/.e2e/.img/.oct/.dcm)

Owner

  • Name: MedVisBonn
  • Login: MedVisBonn
  • Kind: organization

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: EyeLab
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Olivier
    family-names: Morelle
    email: oli4morelle@gmail.com
    orcid: 'https://orcid.org/0000-0001-6404-2726'
    affiliation: >-
      University of Bonn - Bonn-Aachen International
      Center for Information Technology (b-it) /
      University Hospital Bonn - Department of
      Ophthalmology
identifiers:
  - type: url
    value: 'https://github.com/MedVisBonn/eyelab/tree/v0.4.2'
repository-code: 'https://github.com/MedVisBonn/eyelab/tree/v0.4.2'
abstract: >-
  Annotation of eye imaging data such as OCT or
  fundus images is a common task when building a
  dataset for model training or evaluating clinical
  studies. While annotation tools for individual
  modalities exist, the integrated study of multiple
  modalities is often hindered by the tedious process
  of acquiring multi-modal annotations.

  EyeLab is a multi-modal annotation tool designed to
  ease the annotation process for eye imaging data,
  and thereby accelerate advancements in ophthalmological
  research.
keywords:
  - OCT
  - Fundus
  - Annotation
  - Drusen
  - Layers
  - Areas
  - HEYEX
license: MIT
version: v0.4.2
date-released: '2022-03-31'

GitHub Events

Total
  • Watch event: 6
Last Year
  • Watch event: 6

Dependencies

poetry.lock pypi
  • altgraph 0.17.2 develop
  • argcomplete 1.12.3 develop
  • atomicwrites 1.4.0 develop
  • attrs 21.4.0 develop
  • cfgv 3.3.1 develop
  • colorama 0.4.5 develop
  • commitizen 2.28.0 develop
  • coverage 6.4.1 develop
  • decli 0.5.2 develop
  • distlib 0.3.4 develop
  • filelock 3.7.1 develop
  • future 0.18.2 develop
  • identify 2.5.1 develop
  • iniconfig 1.1.1 develop
  • jinja2 3.1.2 develop
  • macholib 1.16 develop
  • markupsafe 2.1.1 develop
  • nodeenv 1.7.0 develop
  • pefile 2022.5.30 develop
  • platformdirs 2.5.2 develop
  • pluggy 1.0.0 develop
  • pre-commit 2.19.0 develop
  • prompt-toolkit 3.0.30 develop
  • py 1.11.0 develop
  • pyinstaller 4.10 develop
  • pyinstaller-hooks-contrib 2022.7 develop
  • pytest 6.2.5 develop
  • pytest-cov 3.0.0 develop
  • pywin32-ctypes 0.2.0 develop
  • pyyaml 6.0 develop
  • questionary 1.10.0 develop
  • termcolor 1.1.0 develop
  • toml 0.10.2 develop
  • tomlkit 0.11.0 develop
  • virtualenv 20.15.1 develop
  • wcwidth 0.2.5 develop
  • certifi 2022.6.15
  • charset-normalizer 2.1.0
  • cycler 0.11.0
  • eyepie 0.6.7
  • fonttools 4.33.3
  • idna 3.3
  • imagecodecs 2021.11.20
  • imageio 2.19.3
  • itk 5.2.1.post1
  • itk-core 5.2.1.post1
  • itk-filtering 5.2.1.post1
  • itk-io 5.2.1.post1
  • itk-numerics 5.2.1.post1
  • itk-registration 5.2.1.post1
  • itk-segmentation 5.2.1.post1
  • kiwisolver 1.4.3
  • matplotlib 3.5.2
  • networkx 2.8.4
  • numpy 1.23.0
  • packaging 21.3
  • pillow 9.2.0
  • pyparsing 3.0.9
  • pyside6 6.1.3
  • python-dateutil 2.8.2
  • pywavelets 1.3.0
  • qimage2ndarray 1.9.0
  • requests 2.28.1
  • scikit-image 0.19.3
  • scipy 1.8.1
  • setuptools-scm 7.0.4
  • shiboken6 6.1.3
  • six 1.16.0
  • tifffile 2022.5.4
  • tomli 2.0.1
  • typing-extensions 4.3.0
  • urllib3 1.26.9
pyproject.toml pypi
  • commitizen ^2.20.4 develop
  • pre-commit ^2.17.0 develop
  • pyinstaller ^4.8 develop
  • pytest ^6.2.5 develop
  • pytest-cov ^3.0.0 develop
  • PySide6 6.1.3
  • eyepie ^0.6.7
  • numpy >=1.22
  • python >=3.8,<3.10
  • qimage2ndarray 1.9.0
  • requests ^2.27.1
  • scikit-image ^0.19.1