###  | #  |

# Boost Generic Image Library

The Generic Image Library (GIL) is a C++14 header-only library that abstracts image representations from algorithms and allows writing code that can work on a variety of images with performance similar to hand-writing for a specific image type.

## Quickstart

- Installation
- Tutorial: Video Lecture
- Tutorial: Histogram
- Tutorial: Image Gradient
- Naming Conventions

## Core Library Documentation

- Design Guide
  - Basics
  - Concepts
  - Point
  - Channel
  - Color Space and Layout
  - Color Base
  - Pixel
  - Pixel Iterator
  - Pixel Locator
  - Image View
  - Image
  - Dynamic images and image views
  - Metafunctions
  - Examples
  - Technicalities
  - Extending
  - Conclusions
- Image Processing
  - Overview
  - Basics
  - Affine region detectors
  - Contrast Enhancement
- Histogram
  - Overview
  - Create a histogram
  - Fill histogram
  - Making a sub-histogram
  - Making a cumulative histogram
  - STL compatibility
  - Utilities
  - Extending the class
  - Limitations
  - Extensions
- API Reference

## Extensions Documentation

- IO extensions
  - Overview
  - Supported Platforms
  - Tutorial
  - Using IO
  - Running gil::io tests
- ToolBox extension
  - Overview
  - Folder Structure
  - Acknowledgements
  - Reference
- Numeric extension
  - Overview
- Extensions
  - Overview
  - STD extension

## Examples

- `x_gradient.cpp`: Writing an algorithm that operates on generic images

- `dynamic_image.cpp`: Using images whose properties (color space, channel type) are specified at run time

- `histogram.cpp`: Creating a histogram

- `interleaved_ptr.cpp`, `interleaved_ptr.hpp`, `interleaved_ref.hpp`: Creating your own pixel reference and pixel iterator

- `mandelbrot.cpp`: Creating a synthetic image defined by a function

- `packed_pixel.cpp`: Defining bitmasks and images whose channels or pixels are not byte-aligned

- `resize.cpp`: Rescaling an image using bilinear sampling (requires the optional Numeric extension)

- `affine.cpp`: Applying an affine transformation to an image (requires the optional Numeric extension)

- `convolution.cpp`: Blurring images (requires the optional Numeric extension)