While completing image library, be inspired of best pratices. Don't hesitate to look at other image processing sdk over the net:
Look also at image processing, Image Processing Fundamentals, Image Processing Learning Ressources, Algorithms library, Image Processing Labs, TraitImage.
Geometry
Enrich interface eLynx::Image::IImageGeometry interface
- Add border, Expand to enlarge image DONE, Christophe,
- Binning DONE, Mike,
- Crop DONE, Christophe,
- Flip (horizontal,vertical) DONE, Christophe,
- Resample with filters (bilinear, bicubic, mitchell, lanzcos ...) DONE, Christophe,
- Resize, Zoom DONE, Christophe,
- Rotation by 90°, 180°, with double angle DONE, Christophe,
- Insert image at a given position DONE, Christophe,
- Shifting by less than pixel size (double) TODO,
- Shrink TODO,
- deskew TODO,
Analyse
Enrich interface eLynx::Image::IImageAnalyse interface see Image analyse glossary.
- Compute entropy DONE, Mike,
- Compute energy DONE, Christophe,
- Compute min, max, mean DONE, Christophe,
- Compute median DONE, Christophe,
- Compute standard deviation DONE, Christophe,
- Compute local (window NxM) min, max, average, variance TODO,
- Compute histogram (generalisation by template resolution type < ubyte >,< ushort >, < double >) TODO,
- Look at this
Operators
Enrich interface eLynx::Image::IImageOperators interface
- arithmetic operators with constant (ex add(double value)) DONE, Christophe,
- arithmetic operators with another image (ex add(image2) ) DONE, Christophe,
- operators with image list
- Add DONE, Christophe,
- Max,Min DONE, Christophe,
- Mul DONE, Christophe,
- Mean DONE, Christophe,
- Median DONE, Christophe,
- Kappa-sigma clipping: first extreme values are rejected iteratively then the remaining values are averaged DONE, Mike,
- Median Kappa-sigma clipping: the same but instead of averaging remaining values, the median of the remaining values is used DONE, Mike,
- Auto Adaptive weighted average: see details, iterative process that does not remove extreme values but instead give them a very low weight. So all the values are kept but the weight of each value depends on how far the value is from the mean. DONE, Mike,
- Entropy Weighted average: see details, and here, DONE, Mike,
Point to point processing
Enrich interface eLynx::Image::IImagePointProcessing interface
- White balance DONE, Christophe,
- Brigthness DONE, Christophe,
- Contrast DONE, Christophe,
- Gamma correction DONE, Christophe,
- Blend DONE, Christophe,
- Colorize DONE, Christophe,
- Solarize DONE, Christophe,
- Posterize DONE, Christophe,
- Colorize DONE, Christophe,
- Adjust Hue/Saturation DONE, Mike, Christophe,
- Adjust Midtones DONE, Christophe,
- Adjust Sigmoid DONE, Christophe,
- Binarize DONE, Christophe,
Local to point processing
Enrich interface eLynx::Image::IImageLocalProcessing interface
- Implement ConvolutionWxH DONE, Mike,
- Convolution with separable kernels Wx1,1xH DONE, Christophe,
- optimisations for Convolution with separative kernels DONE, Mike,
- Local to point generic engine with processor for 3x3, 5x5 and WxH DONE, Christophe,
- Gaussian filter DONE, Christophe,
- Box blur DONE, Christophe,
- Selective blur DONE, Christophe,
- Bilateral filter DONE, Mike, Christophe,
- Remove isolated pixel DONE, Mike,
- Build collection of convolution kernels TODO, all,
Convolution kernels to implement as filters (image operators)
Morphological processing
Enrich interface eLynx::Image::IImageMorphologicalProcessing interface
- Morphological filter (median, erode, dilate, open, close, top hat) sorted by channels or by luminance DONE, Mike,Christophe,
- Adaptive median IN WORK, Mike (implement all cases),
Edge detection
Enrich interface eLynx::Image::IImageEdgeProcessing interface
- Edge detection with gradient, DONE, Christophe,
- Threshold, DONE, Mike,
- Edge enhancement by suppressing non-maxima edges, DONE, Mike,Christophe,
- Robert Cross, DONE, Mike,Christophe,
- Zero crossing, IN WORK, Mike,Christophe,
- Canny, IN WORK, Mike,Christophe,
Global to point processing
Enrich interface eLynx::Image::IImageGlobalProcessing interface
- Normalization DONE, Christophe,
- Auto Brigthness correction TODO,
- Auto Contrast correction TODO,
- Auto Color correction TODO,
- Histogram enhancement TODO,
- Deconvolution: IN WORK, Zbynek,
Richardson-Lucy deconvolution on Wikipedia
An iterative technique for the rectification of observed distributions just for math-enabled people
Iterative blind deconvolution method using Lucy's algorithm
- Implement transformation from time to frequency domain for filtering (Fast Fourier Transform=FFT). DONE, Christophe
- Wavelets transform for composition. Have a look at ESO-MIDAS project TODO,
Misceallenous processing
Enrich interface eLynx::Image::IImageMiscProcessing interface
- Debloom: IN WORK, Christophe,
- Rotational gradient (Larson-Sekanina) IN WORK, Mike,Christophe,
- Auto remove gradient Gradiant removal IN WORK, Mike,Christophe
Rasterization
Enrich interface eLynx::Image::IImageRasterization interface
- Clear DONE, Christophe,
- Fill DONE, Christophe,
- Draw plots, lines, rectangles, framed triangles DONE, Christophe,
- Draw circles, ellipses DONE, Christophe,
- Draw flat or gouraud shaded 2d triangles with or without texture DONE, Christophe,
- Draw flat or gouraud shaded 2d quad with or without texture TODO
- Draw flat or gouraud shaded 3d triangles with or without texture and perspective correction TODO
- Draw flat or gouraud shaded 3d quad with or without texture and perspective correction TODO
Demosaicing algorithms (Bayer to color)
- Raw, Nearest, Linear, Bilinear, Bicubic, Adaptive DONE, Christophe,
- ChangTan, ChuanLin, Cok, Freeman, Hamilton, Adams, HamiltonAdams DONE, Christophe,
- Kimmel, LarochePrescott, LukinKubasov, MalvarHeCutler, WangLinXue, WemmiaoLu DONE, Christophe,
- PMI, PRI, VNG DONE, Christophe,
- HIGH-QUALITY LINEAR INTERPOLATION DONE, Christophe,
- Interpolation using a Threshold-based variable number of gradients DONE, Mike,
- Adaptive Homogeneity-Directed interpolation DONE, Mike & Christophe,
- System and method for image enhancement TODO,
- Demosaicing for digital imaging device using perceptually uniform color space TODO
- a novel demosaicing technique TODO,
- Demosaicing in the Kodak DC210 Digital Camera TODO,
- Research Source Codes Release TODO,
- Demosaicing with Directional Filtering and a Posteriori Decision TODO,
- Exploiting the Sparse Derivative Prior for Super-Resolution and Image Demosaicing TODO,
Other image processing
- Get ideas from java IP
- Complete pixel format conversions from different mode/color space, DONE, Christophe,
- Rank filter TODO,
- Add noise TODO,
- High dynamic range TODO,
- Conversion from grey to false color = palette creation TODO,
- Think about how to open sdk to external processing services TODO,