Population
Image processing library in C++

Matrix In > Matrix Out (threshold operators, morphological operators, gradient, edge detectors, region growing,...) More...
Classes  
struct  pop::Processing 
Matrix In > Matrix Out (threshold operators, morphological operators, gradient, edge detectors, region growing,...)
Processing refers to a dataprocess where input and output are matrixs. We classify the algorithms in how the operator act. Concerning the application of these algorithms, you can read the segmentation tutorials.
The output matrix h is defined as follows, h(x) = H(), where g is the generating function. For H() = c, we fill the input matrix with a constant value and for H()=X with X independent and identically distributed random variables following the probability distribution , we generate an homgeneous random field.
In Point algorithm, we iterate globally a process on the Points of the matrixs, e.g. the threshold operator. The complexity is linear with the number of pixels/voxels.
In neightborhood algorithm, the iteration is twofold: globally and locally (see Neighborhood). In each Point of the global iteration, we iterate a local iteration. The computational time is proportionnel to the radius power the dimension multiply by the number of pixels/voxels. The radius is the characteristic size of the local iteration.
In convolution algorithm as neightborhood algorithm, the iteration is twofold: globally and locally (see Convolution) except that we keep the local position in the local iteration.
A recursive algorithm uses one or more of its outputs as an input at each step (see Recursive).
Many fields in computer science, stereovision mathematical morphology, use algorithm which principle is Region Growing. This method consists in initializing each region with a seed and then iterate pixel by pixel growth controlling by a metric until convergence. A large literature is dedicated to the definition of the metric divided into two distinct categories: the object feature like the tint and the object boundary discontinuity. The implementation of each algorithm can be daunting since many datastructures should interact in the algorithm. To overcome that, I introduced a conceptual framework with a modern architecture design for the localization and the organization of the growing process. The following video shows the growing process for the watershed algorithm on the topographic surface defined by the gradient magnitude of the original matrix :