ODDS: Object Description Driven by Semantic

Main contributors:

  • Thomas Dietenbeck
  • Jean-Marie Favreau

Associate collaborators:

  • Fakhri Torkhani
  • Ahlem Othmani
  • Arash Akbarinia

Mesh segmentation and semantic annotation are used as preprocessing steps for many applications, including shape retrieval, mesh abstraction, and adaptive simplification. In current practice, these two steps are done sequencially: a purely geometrical analysis is employed to extract the relevant parts, and then these parts are annotated.

We introduce an original framework where annotation and segmentation are performed simultaneously, so that each of the two steps can take advantage of the other. Inspired by existing methods used in image processing, we employ an expert's knowledge of the context to drive the process while minimizing the use of geometric analysis. For each expert domain, a multi-layer ontology can be designed on top of a basic shape knowledge layer, containing object features concepts (geometry, topology, attributes, …), each associated with an elementary algorithm for its detection. An expert can define the upper layers of the ontology to address a specific domain without the need to reconsider the elementary algorithms. This approach has a twofold advantage: on one hand it allows to leverage domain knowledge from experts even if they have limited or no skills in geometry processing and computer programming; on the other hand, it provides a solid ground to be easily extended in different contexts with a limited effort.

This project is part of the 3DCI project, funded with support from FEDER and BPI France (was Oseo). The aim of the 3DCI project (FUI AAP14) consists in developping an original and innovative system for default detection during the inspection phase of electronic components of electronic board manufacturing.

In the 3DCI project, I was involved with ISIT (UMR 6284 UdA – CNRS) to design new segmentation methods driven by expert knowledge and using abstract descriptions (such as graphs). The two application contexts are the present project and the medical imaging segmentation.

  • T. Dietenbeck, F. Torkhani, A. Othmani, M. Attene, Favreau J.-M. Multi-layer Ontologies for Integrated 3D Shape Segmentation and Annotation. In Advances in Knowledge Discovery and Management. Springer International Publishing Switzerland. (2016). bibtex
  • T. Dietenbeck, A. Othmani, M. Attene, Favreau J.-M. A Framework for Mesh Segmentation and Annotation using Ontologies. In Extraction et gestion des connaissances (EGC'2015), Actes, 27 au 30 janvier 2015, Luxembourg. (2015). bibtex

A complete archive with ontologies, mesh examples and source code is available for download here:

This software is available under GPL3 license, and it comes with a documentation described in readme.txt files available in each key directory.

The source code is separated into two parts: C⧺ and java.

The C⧺ side corresponds to mesh manipulation, while java side corresponds to the ontology manipulation. The communication between the two sides is done using sockets.

This software has been compiled and used with success under Debian GNU/Linux (unstable, 2014 and 2015) and Debian Ubuntu (2014).

The following dependencies are required (software versions are given as indications, and it may work with other versions):

  • GNU C⧺ compiler
  • boost (1.55 or 1.58)
  • CGAL (4.6.1)
  • cmake (3.3.2)
  • Eclipse, which comes with maven and OWL API
  • Create a directory build in code/cpp/src/odds/ and use cmake .. to prepare the compilation using code/cpp/src/odds/CMakeLists.txt (you can also use qtcreator)
  • build the project

Install development environment

  • install the eclipse software from the official website (debian version not fully functional)
  • menu “help” → “Eclipse marketplace…”
  • install “maven development”

Load the project

  • menu “file” → “import” then select “existing maven project”
  • “browse” and select the directory “odds/code/java” where the pom.xml is present
  • import the ODDS project
  • on the “package explorer”, right clic on “src” folder, and select it as source (in the “build path” entry)

We provide for development usage a complete documentation for both C⧺ and Java classes, available at the following addresses: