Try   HackMD

Implémentation C++ et Python et intégration à une bibliothèque de traitement d'images.

RORPO

  • By Odyssee Merveille

Mathematical morphology

The basic operators:

  • Erosion
  • Dilation
  • Opening
  • Closing

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

How it works

  • Relies on path operators

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

C++ directional features

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

RORPO: recuperer des features directionnelles, objets tubulaires
Dans l'exemple: indiquer vecteur directionel

  1. Pointwise Rank Filter
  2. Find orientation of interest
  3. Combine orientations

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Dans l'exemple: la separation qui minimise le mieux la formule est la bleue

Implementation

Parametres optionel:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Iterer pixels image:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Chercher la bonne separation des groupes:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Combiner orientations sur un meme vecteur:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

PyRORPO

Python module

Librairie entierement en C++ pour Python
Methods:

  • RORPO
  • RORPO_multiscale
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

Bindings libs:

  • Ctypes
  • CFFI
  • Boost::Python

Why pybind11:

  • Focus on C++
  • Use of c++ to specify the module
  • Simple to use

Bindings

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

A droite: definir la methode de notre module python
mapping de notre fonction chapeau

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

BINDING_OF_TYPE: defini tous nos bindings a chaque ligne

Documentation

The documentation on how to create shared library, import shared module in python, on each available function

New options for C++ progran

  • uint8: convert image in uint8
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
  • normalize: input mage normalized
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

Tests

  • pytest
  • virtualenv integretaion machine

Tests:

  • Float/double input image
  • Input image containging negative values
  • uint8 option
  • windows option

Isotropic images

Isotropy is uniformity in all orientations
Use of:
itk::ResampleImageFilter<TInputImage, TOutputImage, TInterpolarPrecisionType, TTransformationPrecisionType>

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Encountered difficulties

  • Creation of a PIP package
    • Pas forcement de documentation: package en C++ pour python
    • Package pas installable et distribuables sur differentes plateformes
  • Isotropic images

Questions

Guillaume Tochon

Package pip manquant mais hors ca est-ce que le produit est considere fini ?

Pour les features implementees, le produit est termine, est fonctionel et fonctionne comme planifie au debut

Applications concretes de tout ca?

Non, hors celle de Odyssee. Odyssee a fourni des images synthetiques pour tester le programme et verifier que les resultats marchaient.

Quels ont ete les cours suivis dans la majeur les plus utiles ?

Le cours TK et morpho de maths

Elody Puybareau

Question sur RORPO:

  1. Vous avez montre l'exemple avec un nifty, marche que sur nifty ou d'autres types d'image?

Ca marche sur d'autres type d'image, marche sur n'importe quel type d'image. Le "load to numpy" n'est qu'un exemple

  1. Comment vous gerer la conversation en uint8? Par exemple les donnees medicales sont souvent en 16bits, regarde en details les histoire de dynamique ?

Gerer automatiquement: lorsqu'on recoit des images de type uint16, directement gerer par RORPO

Comment a ete decoupe le travail en equipe ? Tous ensembles, separes les differentes taches, etc. ?

Separer les differentes taches

Pression de faire des points avec Odyssee qui a permis d'avancer ou auto-motive ?

Lorsqu'on a plusieurs projets en simultanes, oui les reunions avec Odyssee permette de progresser regulierement. Repartir bredouille d'une reunion permet de se motiver pour la fois d'apres.

Eleves

Qu'est-ce qui a bloque le developpement du package pip?

Que ce soit pas du full python, pas de facon propre de bind une librairie en C++

Odyssee

Ressenti et travail fourni: projet long a demarrer au debut mais pas mal de background pour comprendre RORPO, beaucoup de code pas forcement hype propre a prendre en main et aussi beaucoup de projets en parallele.
Gael et Anna ont propose des solutions satisfaisantes pour le binding, Anna a meme trouve des bugs dans le code original.
Le binding en python est suffisant et librairie deja en cours d'utilisation et au final tres satisfaite du travail.
Travail pas tres axe recherche mais plus dev et amelioration.