Table Of Contents

Previous topic

News

Next topic

Download and installation

Introduction

Vision

The Image Processing Library & Toolbox aims to provide a comprehensive and powerful library for the electron microscopy community, in particular for the small fraction of 2d electron crystallographers among them. We use IPLT in our novel methodological development and re-implementation of existing 2DEX protocols, both for image processing as well as for diffraction processing of 2D crystals.

From the beginning on, the design emphasis of IPLT was placed on modularity, flexibility, and providing several levels for interested developers from the community to extend the framework.

Overview

At the heart of the modularity in IPLT is the concept of an algorithm object. Instead of providing a long list of image class member functions that would bloat the interface, algorithm objects ensure orthogonal design and code independence. In a nutshell, an algorithm object is applied to an image using either the Apply or ApplyIP methods of the ImageHandle interface. Each algorithm object may maintain a state, as thus makes it easier to store and retrieve potentially complicated results.

Another aspect of modularity is the availability of the main IPLT interface in two languages, namely C++ and Python. All IPLT modules are written in C++, and reflected to Python using the boost python library. While both languages have completely different features and application purposes, the IPLT syntax in both is remarkably similar.

The following code snippets demonstrate these modularity features:

C++

ImageHandle image=ost::io::LoadImage("file.png");
ost::img::alg::Stat stat;
image.Apply(stat);
std::cout << "mean is " << stat.GetMean() << std::endl;

Python

image=ost.io.LoadImage("file.png")
stat=ost.img.alg.Stat()
image.Apply(stat)
print "mean is %f"%(stat.GetMean())