ASTex is an open-source library for texture analysis and synthesis. The term “texture” must be understood as in computer graphics. The purpose of this library is to support collaborative coding and to allow for comparison with recently published algorithms.
Main features are:
- C++ source code is freely available on github
- It is based on ITK (Insight Segmentation and Registration Toolkit)
- Linux / Windows / Mac compliant
- No graphical interface
- CPU implementations for maximum compatibility
News
10/24 ASTex available on github 10/27 Continuous integration online develop branch of github repository
Managers, contributors and contact
The library is developed in the IGG team of the ICube laboratory of Strasbourg.
Resarch manager:
Technical manager:
Contributors:
- Rémi Allegre
- Jean-Michel Dischler
- Geoffrey Guingo
- Frédéric Larue
- Nicolas Lutz
- Pascal Guehl
Architecture
ASTex is based on the library ITK. As ITK can perform its algorithms (filters) on images of different dimension, its syntax is often complex. Its system of filter pipeline is perfect for an high level usage, but is boring for quickly prototype application which need development of its own new filters.
In order to easily and quickly prototype texture generation application, we propose a syntax overlay for 2D image manipulation.
Lots of usefull types (Index, Offset, Region, …) are instancied in 2D cand can easily generated with simple fonction.
We propose also a new traversal syntax for_all_pixels which parameter is a lambda (or functor or function) that can have different kind of signature:
- [const] PixelType [&]
- [const] PixelType [&], int x, int y
And also for the parallel version:
- [const] PixelType [&], int16 thread_index
- [const] PixelType [&], int x, int y, int16 thread_index
Algorithms writen with new syntax can easily be encapsulated into ITK filter system. And the two syntaxes can also be mixed to profit of provided ITK algorithms.
Inheritance
All classes of supported image type follow this kind of inheritance diagram:
- the ImageBase class is only used for type checking
- the ImageGrayBase class is the real gray image class. I contains a pointer on itk::image, some type definitions and methods which depends on image type.
- the ImageCommon class enhance its param image class with all code that is common to image types. The second parameter allow the definition of normal Image and class ConstImage. It is important to allow the writing of filters with out wild const_cast.