diff --git a/html/_sources/design/dynamic_image.rst.txt b/html/_sources/design/dynamic_image.rst.txt index 546bfa4d9..ec9b01e3f 100644 --- a/html/_sources/design/dynamic_image.rst.txt +++ b/html/_sources/design/dynamic_image.rst.txt @@ -159,14 +159,14 @@ upside down: .. code-block:: cpp - #include + #include template // Could be rgb8_image_t or any_image<...> void save_180rot(const std::string& file_name) { Image img; - jpeg_read_image(file_name, img); - jpeg_write_view(file_name, rotated180_view(view(img))); + read_image(file_name, img, jpeg_tag()); + write_view(file_name, rotated180_view(view(img)), jpeg_tag()); } It can be instantiated with either a compile-time or a runtime image diff --git a/html/_sources/io.rst.txt b/html/_sources/io.rst.txt index 01462dbc9..6f4737167 100644 --- a/html/_sources/io.rst.txt +++ b/html/_sources/io.rst.txt @@ -172,6 +172,8 @@ provides access to the so-called backend. For instance:: + typedef bmp_tag tag_t; + typedef get_reader_backend< const std::string , tag_t >::type backend_t; @@ -245,7 +247,7 @@ The following example shows this feature:: , gray16_image_t , rgb8_image_t , rgba8_image_t - > my_img_types > runtime_image; + > runtime_image; read_image( filename , runtime_image @@ -323,7 +325,7 @@ Writing an any_image<...> is supported. See the following example:: , gray16_image_t , rgb8_image_t , rgba8_image_t - > my_img_types > runtime_image; + > runtime_image; // fill any_image diff --git a/html/_static/boost.css b/html/_static/boost.css index 28f893599..582f421eb 100644 --- a/html/_static/boost.css +++ b/html/_static/boost.css @@ -714,3 +714,22 @@ span.purple { color: purple; } span.gold { color: gold; } span.silver { color: silver; } /* lighter gray */ span.gray { color: #808080; } /* light gray */ + +/* 2022 fix */ + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} diff --git a/html/design/basics.html b/html/design/basics.html index 5653b699e..dfec5ddd6 100644 --- a/html/design/basics.html +++ b/html/design/basics.html @@ -22,6 +22,9 @@ + + + @@ -115,7 +118,7 @@

Basics

diff --git a/html/design/channel.html b/html/design/channel.html index afcb9695a..ba6cad271 100644 --- a/html/design/channel.html +++ b/html/design/channel.html @@ -22,6 +22,9 @@ + + + @@ -264,7 +267,7 @@

Algorithms

diff --git a/html/design/color_base.html b/html/design/color_base.html index 27469eae0..ea99816b1 100644 --- a/html/design/color_base.html +++ b/html/design/color_base.html @@ -22,6 +22,9 @@ + + + @@ -311,7 +314,7 @@

Algorithms

diff --git a/html/design/color_space.html b/html/design/color_space.html index ecda181c7..91b6279c8 100644 --- a/html/design/color_space.html +++ b/html/design/color_space.html @@ -22,6 +22,9 @@ + + + @@ -163,7 +166,7 @@

Models

diff --git a/html/design/concepts.html b/html/design/concepts.html index c5da111a0..9b8edd6ef 100644 --- a/html/design/concepts.html +++ b/html/design/concepts.html @@ -22,6 +22,9 @@ + + + @@ -144,7 +147,7 @@

Concepts

diff --git a/html/design/conclusions.html b/html/design/conclusions.html index b399bcb98..d0c824d09 100644 --- a/html/design/conclusions.html +++ b/html/design/conclusions.html @@ -22,6 +22,9 @@ + + + @@ -122,7 +125,7 @@

Compatibility

diff --git a/html/design/dynamic_image.html b/html/design/dynamic_image.html index a85ac2458..863e4e321 100644 --- a/html/design/dynamic_image.html +++ b/html/design/dynamic_image.html @@ -22,6 +22,9 @@ + + + @@ -213,14 +216,14 @@

Dynamic images and image views

with either compile-time or runtime images or views. The following code, for example, uses the GIL I/O extension to turn an image on disk upside down:

-
#include <boost\gil\extension\io\jpeg_dynamic_io.hpp>
+
#include <boost\gil\extension\io\jpeg.hpp>
 
 template <typename Image>    // Could be rgb8_image_t or any_image<...>
 void save_180rot(const std::string& file_name)
 {
   Image img;
-  jpeg_read_image(file_name, img);
-  jpeg_write_view(file_name, rotated180_view(view(img)));
+  read_image(file_name, img, jpeg_tag());
+  write_view(file_name, rotated180_view(view(img)), jpeg_tag());
 }
 
@@ -275,7 +278,7 @@

Dynamic images and image views

diff --git a/html/design/examples.html b/html/design/examples.html index 6df63ef30..98dda8866 100644 --- a/html/design/examples.html +++ b/html/design/examples.html @@ -22,6 +22,9 @@ + + + @@ -265,7 +268,7 @@

Using image views

diff --git a/html/design/extending.html b/html/design/extending.html index 4906dad2d..b765f4543 100644 --- a/html/design/extending.html +++ b/html/design/extending.html @@ -22,6 +22,9 @@ + + + @@ -235,7 +238,7 @@

Defining new image views

diff --git a/html/design/image.html b/html/design/image.html index e05ae5f2e..f81a48f04 100644 --- a/html/design/image.html +++ b/html/design/image.html @@ -22,6 +22,9 @@ + + + @@ -176,7 +179,7 @@

Models

diff --git a/html/design/image_view.html b/html/design/image_view.html index e7478f130..4442f972a 100644 --- a/html/design/image_view.html +++ b/html/design/image_view.html @@ -22,6 +22,9 @@ + + + @@ -488,7 +491,7 @@

STL-Style Algorithms on Image Views diff --git a/html/design/index.html b/html/design/index.html index 8a09e8dc1..dad5f089b 100644 --- a/html/design/index.html +++ b/html/design/index.html @@ -22,6 +22,9 @@ + + + @@ -103,7 +106,7 @@

Design Guide

diff --git a/html/design/metafunctions.html b/html/design/metafunctions.html index 5cdf5f5b5..70b844f8f 100644 --- a/html/design/metafunctions.html +++ b/html/design/metafunctions.html @@ -22,6 +22,9 @@ + + + @@ -303,7 +306,7 @@

Type traits

diff --git a/html/design/pixel.html b/html/design/pixel.html index 0ee44d9eb..40e0fc995 100644 --- a/html/design/pixel.html +++ b/html/design/pixel.html @@ -22,6 +22,9 @@ + + + @@ -349,7 +352,7 @@

Algorithms

diff --git a/html/design/pixel_iterator.html b/html/design/pixel_iterator.html index 1963fec16..9bf978228 100644 --- a/html/design/pixel_iterator.html +++ b/html/design/pixel_iterator.html @@ -22,6 +22,9 @@ + + + @@ -373,7 +376,7 @@

Models

diff --git a/html/design/pixel_locator.html b/html/design/pixel_locator.html index 4e93062b9..4717eb7ec 100644 --- a/html/design/pixel_locator.html +++ b/html/design/pixel_locator.html @@ -22,6 +22,9 @@ + + + @@ -359,7 +362,7 @@

Iterator over 2D image

diff --git a/html/design/point.html b/html/design/point.html index 358f3e4db..f3383e4f6 100644 --- a/html/design/point.html +++ b/html/design/point.html @@ -22,6 +22,9 @@ + + + @@ -135,7 +138,7 @@

Models

diff --git a/html/design/technicalities.html b/html/design/technicalities.html index be6f2e4c4..5f78c8158 100644 --- a/html/design/technicalities.html +++ b/html/design/technicalities.html @@ -22,6 +22,9 @@ + + + @@ -160,7 +163,7 @@

Creating a reference proxy

diff --git a/html/genindex.html b/html/genindex.html index db71342d8..3c7615c11 100644 --- a/html/genindex.html +++ b/html/genindex.html @@ -21,6 +21,9 @@ + + + @@ -75,7 +78,7 @@

Index

diff --git a/html/histogram/create.html b/html/histogram/create.html index 275c51ce2..3d240093d 100644 --- a/html/histogram/create.html +++ b/html/histogram/create.html @@ -22,6 +22,9 @@ + + + @@ -106,7 +109,7 @@

diff --git a/html/histogram/cumulative.html b/html/histogram/cumulative.html index be3fa4614..f91e7b008 100644 --- a/html/histogram/cumulative.html +++ b/html/histogram/cumulative.html @@ -22,6 +22,9 @@ + + + @@ -103,7 +106,7 @@

Overview

diff --git a/html/histogram/extend.html b/html/histogram/extend.html index 85ea40969..a539eded6 100644 --- a/html/histogram/extend.html +++ b/html/histogram/extend.html @@ -22,6 +22,9 @@ + + + @@ -139,7 +142,7 @@

User defined Axes

diff --git a/html/histogram/extension/index.html b/html/histogram/extension/index.html index 09107c8d8..579d03544 100644 --- a/html/histogram/extension/index.html +++ b/html/histogram/extension/index.html @@ -22,6 +22,9 @@ + + + @@ -91,7 +94,7 @@

Extensions

diff --git a/html/histogram/extension/overview.html b/html/histogram/extension/overview.html index d708e3b83..d1cb73950 100644 --- a/html/histogram/extension/overview.html +++ b/html/histogram/extension/overview.html @@ -22,6 +22,9 @@ + + + @@ -120,7 +123,7 @@

Adding an external container

diff --git a/html/histogram/extension/std.html b/html/histogram/extension/std.html index ee8115304..509bf09f4 100644 --- a/html/histogram/extension/std.html +++ b/html/histogram/extension/std.html @@ -22,6 +22,9 @@ + + + @@ -121,7 +124,7 @@

Usage

diff --git a/html/histogram/fill.html b/html/histogram/fill.html index e1e229232..cc5b5455a 100644 --- a/html/histogram/fill.html +++ b/html/histogram/fill.html @@ -22,6 +22,9 @@ + + + @@ -183,7 +186,7 @@

Advanced

diff --git a/html/histogram/index.html b/html/histogram/index.html index ddb793ca2..2c9656467 100644 --- a/html/histogram/index.html +++ b/html/histogram/index.html @@ -22,6 +22,9 @@ + + + @@ -96,7 +99,7 @@

Histogram

diff --git a/html/histogram/limitations.html b/html/histogram/limitations.html index eb0fe75df..c3878ec43 100644 --- a/html/histogram/limitations.html +++ b/html/histogram/limitations.html @@ -22,6 +22,9 @@ + + + @@ -83,7 +86,7 @@

diff --git a/html/histogram/overview.html b/html/histogram/overview.html index 912b4b756..17502de3a 100644 --- a/html/histogram/overview.html +++ b/html/histogram/overview.html @@ -22,6 +22,9 @@ + + + @@ -114,7 +117,7 @@

Tutorials

diff --git a/html/histogram/stl_compatibility.html b/html/histogram/stl_compatibility.html index e755bd321..153c5f5a7 100644 --- a/html/histogram/stl_compatibility.html +++ b/html/histogram/stl_compatibility.html @@ -22,6 +22,9 @@ + + + @@ -83,7 +86,7 @@

diff --git a/html/histogram/subhistogram.html b/html/histogram/subhistogram.html index 2d5eeb41b..716f30d54 100644 --- a/html/histogram/subhistogram.html +++ b/html/histogram/subhistogram.html @@ -22,6 +22,9 @@ + + + @@ -138,7 +141,7 @@

Overview

diff --git a/html/histogram/utilities.html b/html/histogram/utilities.html index 133fe4e8f..f789e3752 100644 --- a/html/histogram/utilities.html +++ b/html/histogram/utilities.html @@ -22,6 +22,9 @@ + + + @@ -83,7 +86,7 @@

diff --git a/html/image_processing/affine-region-detectors.html b/html/image_processing/affine-region-detectors.html index 10be231e8..c60956837 100644 --- a/html/image_processing/affine-region-detectors.html +++ b/html/image_processing/affine-region-detectors.html @@ -22,6 +22,9 @@ + + + @@ -167,7 +170,7 @@

Harris and Hessian

diff --git a/html/image_processing/basics.html b/html/image_processing/basics.html index ddb2de66b..0b28d7ad5 100644 --- a/html/image_processing/basics.html +++ b/html/image_processing/basics.html @@ -22,6 +22,9 @@ + + + @@ -124,7 +127,7 @@

Curvature

diff --git a/html/image_processing/contrast_enhancement/histogram_equalization.html b/html/image_processing/contrast_enhancement/histogram_equalization.html index a6639c2dd..e48244a5a 100644 --- a/html/image_processing/contrast_enhancement/histogram_equalization.html +++ b/html/image_processing/contrast_enhancement/histogram_equalization.html @@ -22,6 +22,9 @@ + + + @@ -148,7 +151,7 @@

Demo

diff --git a/html/image_processing/contrast_enhancement/histogram_matching.html b/html/image_processing/contrast_enhancement/histogram_matching.html index b886023de..333f28fc4 100644 --- a/html/image_processing/contrast_enhancement/histogram_matching.html +++ b/html/image_processing/contrast_enhancement/histogram_matching.html @@ -22,6 +22,9 @@ + + + @@ -139,7 +142,7 @@

Demo

diff --git a/html/image_processing/contrast_enhancement/index.html b/html/image_processing/contrast_enhancement/index.html index e611779b9..ece5e402d 100644 --- a/html/image_processing/contrast_enhancement/index.html +++ b/html/image_processing/contrast_enhancement/index.html @@ -22,6 +22,9 @@ + + + @@ -90,7 +93,7 @@

Contrast Enhancement

diff --git a/html/image_processing/contrast_enhancement/overview.html b/html/image_processing/contrast_enhancement/overview.html index 8b154ee34..ff01c2d6c 100644 --- a/html/image_processing/contrast_enhancement/overview.html +++ b/html/image_processing/contrast_enhancement/overview.html @@ -22,6 +22,9 @@ + + + @@ -96,7 +99,7 @@

Overview

diff --git a/html/image_processing/index.html b/html/image_processing/index.html index 2dca92b13..8960dbcfb 100644 --- a/html/image_processing/index.html +++ b/html/image_processing/index.html @@ -22,6 +22,9 @@ + + + @@ -104,7 +107,7 @@

Image Processing

diff --git a/html/image_processing/overview.html b/html/image_processing/overview.html index d1a1a43ee..b85350367 100644 --- a/html/image_processing/overview.html +++ b/html/image_processing/overview.html @@ -22,6 +22,9 @@ + + + @@ -89,7 +92,7 @@

Overview

diff --git a/html/index.html b/html/index.html index 8ba2b22cd..e6ce74ffa 100644 --- a/html/index.html +++ b/html/index.html @@ -22,6 +22,9 @@ + + + @@ -198,7 +201,7 @@

Examples

diff --git a/html/installation.html b/html/installation.html index a5279df1d..811b67bd1 100644 --- a/html/installation.html +++ b/html/installation.html @@ -22,6 +22,9 @@ + + + @@ -104,7 +107,7 @@

Compiling

diff --git a/html/io.html b/html/io.html index 414cdea7f..d5e7c9731 100644 --- a/html/io.html +++ b/html/io.html @@ -22,6 +22,9 @@ + + + @@ -218,7 +221,9 @@

General Overview

directly with the underlying image format. For that each reader or writer provides access to the so-called backend.

For instance:

-
typedef get_reader_backend< const std::string
+
typedef bmp_tag tag_t;
+
+typedef get_reader_backend< const std::string
                           , tag_t
                           >::type backend_t;
 
@@ -287,7 +292,7 @@ 

Read Interface

, gray16_image_t , rgb8_image_t , rgba8_image_t - > my_img_types > runtime_image; + > runtime_image; read_image( filename , runtime_image @@ -361,7 +366,7 @@

Write Interface

, gray16_image_t , rgb8_image_t , rgba8_image_t - > my_img_types > runtime_image; + > runtime_image; // fill any_image @@ -731,7 +736,7 @@

Running gil::io tests

diff --git a/html/naming.html b/html/naming.html index 574175958..7efaa40c6 100644 --- a/html/naming.html +++ b/html/naming.html @@ -22,6 +22,9 @@ + + + @@ -115,7 +118,7 @@

Concrete Types

diff --git a/html/numeric.html b/html/numeric.html index 82bbfd4e7..5a0cdab05 100644 --- a/html/numeric.html +++ b/html/numeric.html @@ -22,6 +22,9 @@ + + + @@ -80,7 +83,7 @@

Overview

diff --git a/html/reference/classboost_1_1gil_1_1detail_1_1istream__device-members.html b/html/reference/classboost_1_1gil_1_1detail_1_1istream__device-members.html index bce87a603..0631f1c6a 100644 --- a/html/reference/classboost_1_1gil_1_1detail_1_1istream__device-members.html +++ b/html/reference/classboost_1_1gil_1_1detail_1_1istream__device-members.html @@ -50,16 +50,18 @@

Boost GILThis is the complete list of members for istream_device< FormatTag >, including all inherited members.

- - - - - - - - - - + + + + + + + + + + + +
flush() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
getc() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
getc_unchecked() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
istream_device(std::istream &in) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
read(byte_t *data, std::size_t count) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
read(T(&buf)[N])istream_device< FormatTag >inline
read_uint16()istream_device< FormatTag >inline
read_uint32()istream_device< FormatTag >inline
read_uint8()istream_device< FormatTag >inline
seek(long count, int whence=SEEK_SET) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
error() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
flush() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
getc() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
getc_unchecked() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
istream_device(std::istream &in) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
read(byte_t *data, std::size_t count) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
read(T(&buf)[N])istream_device< FormatTag >inline
read_uint16()istream_device< FormatTag >inline
read_uint32()istream_device< FormatTag >inline
read_uint8()istream_device< FormatTag >inline
seek(long count, int whence=SEEK_SET) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
tell() (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
write(const byte_t *, std::size_t) (defined in istream_device< FormatTag >)istream_device< FormatTag >inline
diff --git a/html/reference/classboost_1_1gil_1_1detail_1_1istream__device.html b/html/reference/classboost_1_1gil_1_1detail_1_1istream__device.html index 4e6ae0805..14d09c307 100644 --- a/html/reference/classboost_1_1gil_1_1detail_1_1istream__device.html +++ b/html/reference/classboost_1_1gil_1_1detail_1_1istream__device.html @@ -87,12 +87,18 @@

Boost GIL void seek (long count, int whence=SEEK_SET)   + +long int tell () +  void write (const byte_t *, std::size_t)   void flush ()   + +int error () + 

Detailed Description

template<typename FormatTag>
diff --git a/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device-members.html b/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device-members.html index adc5fea3d..80ea9b936 100644 --- a/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device-members.html +++ b/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device-members.html @@ -50,11 +50,13 @@

Boost GILThis is the complete list of members for ostream_device< FormatTag >, including all inherited members.

- - - - - + + + + + + + diff --git a/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device.html b/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device.html index 03377eb5a..07435b383 100644 --- a/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device.html +++ b/html/reference/classboost_1_1gil_1_1detail_1_1ostream__device.html @@ -64,6 +64,9 @@

Boost GIL

+ + @@ -91,6 +94,9 @@

Boost GIL

+ +
flush() (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
ostream_device(std::ostream &out) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
print_line(const std::string &line)ostream_device< FormatTag >inline
read(byte_t *, std::size_t) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
seek(long count, int whence) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
error() (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
flush() (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
ostream_device(std::ostream &out) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
print_line(const std::string &line)ostream_device< FormatTag >inline
read(byte_t *, std::size_t) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
seek(long count, int whence) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
tell() (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
write(const byte_t *data, std::size_t count) (defined in ostream_device< FormatTag >)ostream_device< FormatTag >inline
write(const T(&buf)[N])ostream_device< FormatTag >inline
write_uint16(uint16_t x)ostream_device< FormatTag >inline
void seek (long count, int whence)
 
+long int tell ()
 
void write (const byte_t *data, std::size_t count)
 
print_line (const std::string &line)
 Prints formatted ASCII text.
 
+int error ()
 

Detailed Description

template<typename FormatTag>
diff --git a/html/reference/convolve_8hpp_source.html b/html/reference/convolve_8hpp_source.html index d6eafa952..cfefb0bb5 100644 --- a/html/reference/convolve_8hpp_source.html +++ b/html/reference/convolve_8hpp_source.html @@ -358,7 +358,7 @@

Boost GIL 400  {

401  aux_total +=
402  src_view(col_boundary, row_boundary)[0] *
-
403  kernel.at(flip_ker_row, flip_ker_col);
+
403  kernel.at(flip_ker_col, flip_ker_row);
404  }
405  }
406  }
diff --git a/html/reference/device_8hpp_source.html b/html/reference/device_8hpp_source.html index 479f38d86..29bd5b62c 100644 --- a/html/reference/device_8hpp_source.html +++ b/html/reference/device_8hpp_source.html @@ -49,704 +49,735 @@

Boost GIL
1 //
2 // Copyright 2007-2012 Christian Henning, Andreas Pokorny
-
3 //
-
4 // Distributed under the Boost Software License, Version 1.0
-
5 // See accompanying file LICENSE_1_0.txt or copy at
-
6 // http://www.boost.org/LICENSE_1_0.txt
-
7 //
-
8 #ifndef BOOST_GIL_IO_DEVICE_HPP
-
9 #define BOOST_GIL_IO_DEVICE_HPP
-
10 
-
11 #include <boost/gil/detail/mp11.hpp>
-
12 #include <boost/gil/io/base.hpp>
-
13 
-
14 #include <cstdio>
-
15 #include <memory>
-
16 #include <type_traits>
-
17 
-
18 namespace boost { namespace gil {
-
19 
-
20 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-
21 #pragma warning(push)
-
22 #pragma warning(disable:4512) //assignment operator could not be generated
-
23 #endif
-
24 
-
25 namespace detail {
-
26 
-
27 template < typename T > struct buff_item
-
28 {
-
29  static const unsigned int size = sizeof( T );
-
30 };
-
31 
-
32 template <> struct buff_item< void >
-
33 {
-
34  static const unsigned int size = 1;
-
35 };
-
36 
-
47 template< typename FormatTag >
- -
49 {
-
50 public:
-
51 
-
52  using format_tag_t = FormatTag;
-
53 
-
54 public:
-
55 
-
57  struct read_tag {};
-
58  struct write_tag {};
-
59 
-
63  file_stream_device( const std::string& file_name
-
64  , read_tag tag = read_tag()
-
65  )
-
66  : file_stream_device(file_name.c_str(), tag)
-
67  {}
-
68 
-
72  file_stream_device( const char* file_name
-
73  , read_tag = read_tag()
-
74  )
-
75  {
-
76  FILE* file = nullptr;
-
77 
-
78  io_error_if( ( file = fopen( file_name, "rb" )) == nullptr
-
79  , "file_stream_device: failed to open file for reading"
-
80  );
-
81 
-
82  _file = file_ptr_t( file
-
83  , file_deleter
-
84  );
-
85  }
-
86 
-
90  file_stream_device( const std::string& file_name
-
91  , write_tag tag
-
92  )
-
93  : file_stream_device(file_name.c_str(), tag)
-
94  {}
-
95 
-
99  file_stream_device( const char* file_name
-
100  , write_tag
-
101  )
-
102  {
-
103  FILE* file = nullptr;
-
104 
-
105  io_error_if( ( file = fopen( file_name, "wb" )) == nullptr
-
106  , "file_stream_device: failed to open file for writing"
-
107  );
-
108 
-
109  _file = file_ptr_t( file
-
110  , file_deleter
-
111  );
-
112  }
-
113 
-
117  file_stream_device( FILE* file )
-
118  : _file( file
-
119  , file_deleter
-
120  )
-
121  {}
-
122 
-
123  auto get() -> FILE* { return _file.get(); }
-
124  auto get() const -> FILE const* { return _file.get(); }
-
125 
-
126  int getc_unchecked()
-
127  {
-
128  return std::getc( get() );
-
129  }
-
130 
-
131  char getc()
-
132  {
-
133  int ch;
-
134 
-
135  io_error_if( ( ch = std::getc( get() )) == EOF
-
136  , "file_stream_device: unexpected EOF"
-
137  );
-
138 
-
139  return ( char ) ch;
-
140  }
-
141 
-
143  auto read(byte_t* data, std::size_t count) -> std::size_t
-
144  {
-
145  std::size_t num_elements = fread( data
-
146  , 1
-
147  , static_cast<int>( count )
-
148  , get()
-
149  );
-
150 
-
152  io_error_if( ferror( get() )
-
153  , "file_stream_device: file read error"
-
154  );
-
155 
-
156  //libjpeg sometimes reads blocks in 4096 bytes even when the file is smaller than that.
-
157  //return value indicates how much was actually read
-
158  //returning less than "count" is not an error
-
159  return num_elements;
-
160  }
-
161 
-
163  template< typename T, int N>
-
164  void read( T (&buf)[N] )
-
165  {
-
166  io_error_if( read( buf, N ) < N
-
167  , "file_stream_device: file read error"
-
168  );
-
169  }
-
170 
-
172  uint8_t read_uint8()
-
173  {
-
174  byte_t m[1];
-
175 
-
176  read( m );
-
177  return m[0];
-
178  }
-
179 
-
181  uint16_t read_uint16()
-
182  {
-
183  byte_t m[2];
-
184 
-
185  read( m );
-
186  return (m[1] << 8) | m[0];
-
187  }
-
188 
-
190  uint32_t read_uint32()
-
191  {
-
192  byte_t m[4];
-
193 
-
194  read( m );
-
195  return (m[3] << 24) | (m[2] << 16) | (m[1] << 8) | m[0];
-
196  }
-
197 
-
199  template < typename T >
-
200  auto write(T const* buf, std::size_t count) -> std::size_t
-
201  {
-
202  std::size_t num_elements = fwrite( buf
-
203  , buff_item<T>::size
-
204  , count
-
205  , get()
-
206  );
-
207 
-
208  //return value indicates how much was actually written
-
209  //returning less than "count" is not an error
-
210  return num_elements;
-
211  }
-
212 
-
214  template < typename T
-
215  , std::size_t N
-
216  >
-
217  void write( const T (&buf)[N] )
-
218  {
-
219  io_error_if( write( buf, N ) < N
-
220  , "file_stream_device: file write error"
-
221  );
-
222  return ;
-
223  }
-
224 
-
226  void write_uint8( uint8_t x )
-
227  {
-
228  byte_t m[1] = { x };
-
229  write(m);
-
230  }
-
231 
-
233  void write_uint16( uint16_t x )
-
234  {
-
235  byte_t m[2];
-
236 
-
237  m[0] = byte_t( x >> 0 );
-
238  m[1] = byte_t( x >> 8 );
-
239 
-
240  write( m );
-
241  }
-
242 
-
244  void write_uint32( uint32_t x )
-
245  {
-
246  byte_t m[4];
-
247 
-
248  m[0] = byte_t( x >> 0 );
-
249  m[1] = byte_t( x >> 8 );
-
250  m[2] = byte_t( x >> 16 );
-
251  m[3] = byte_t( x >> 24 );
-
252 
-
253  write( m );
-
254  }
-
255 
-
256  void seek( long count, int whence = SEEK_SET )
-
257  {
-
258  io_error_if( fseek( get()
-
259  , count
-
260  , whence
-
261  ) != 0
-
262  , "file_stream_device: file seek error"
-
263  );
-
264  }
-
265 
-
266  long int tell()
-
267  {
-
268  long int pos = ftell( get() );
-
269 
-
270  io_error_if( pos == -1L
-
271  , "file_stream_device: file position error"
-
272  );
-
273 
-
274  return pos;
-
275  }
-
276 
-
277  void flush()
-
278  {
-
279  fflush( get() );
-
280  }
-
281 
-
283  void print_line( const std::string& line )
-
284  {
-
285  std::size_t num_elements = fwrite( line.c_str()
-
286  , sizeof( char )
-
287  , line.size()
-
288  , get()
-
289  );
-
290 
-
291  io_error_if( num_elements < line.size()
-
292  , "file_stream_device: line print error"
-
293  );
-
294  }
-
295 
-
296  int error()
-
297  {
-
298  return ferror( get() );
-
299  }
-
300 
-
301 private:
-
302 
-
303  static void file_deleter( FILE* file )
-
304  {
-
305  if( file )
-
306  {
-
307  fclose( file );
-
308  }
-
309  }
-
310 
-
311 private:
-
312 
-
313  using file_ptr_t = std::shared_ptr<FILE> ;
-
314  file_ptr_t _file;
-
315 };
-
316 
-
320 template< typename FormatTag >
- -
322 {
-
323 public:
-
324  istream_device( std::istream& in )
-
325  : _in( in )
-
326  {
-
327  // does the file exists?
-
328  io_error_if( !in
-
329  , "istream_device: Stream is not valid."
-
330  );
-
331  }
-
332 
-
333  int getc_unchecked()
-
334  {
-
335  return _in.get();
-
336  }
-
337 
-
338  char getc()
-
339  {
-
340  int ch;
-
341 
-
342  io_error_if( ( ch = _in.get() ) == EOF
-
343  , "istream_device: unexpected EOF"
-
344  );
-
345 
-
346  return ( char ) ch;
-
347  }
-
348 
-
349  std::size_t read( byte_t* data
-
350  , std::size_t count )
-
351  {
-
352  std::streamsize cr = 0;
-
353 
-
354  do
-
355  {
-
356  _in.peek();
-
357  std::streamsize c = _in.readsome( reinterpret_cast< char* >( data )
-
358  , static_cast< std::streamsize >( count ));
-
359 
-
360  count -= static_cast< std::size_t >( c );
-
361  data += c;
-
362  cr += c;
-
363 
-
364  } while( count && _in );
-
365 
-
366  return static_cast< std::size_t >( cr );
-
367  }
-
368 
-
370  template<typename T, int N>
-
371  void read(T (&buf)[N])
-
372  {
-
373  read(buf, N);
-
374  }
-
375 
-
377  uint8_t read_uint8()
-
378  {
-
379  byte_t m[1];
-
380 
-
381  read( m );
-
382  return m[0];
-
383  }
-
384 
-
386  uint16_t read_uint16()
-
387  {
-
388  byte_t m[2];
-
389 
-
390  read( m );
-
391  return (m[1] << 8) | m[0];
-
392  }
-
393 
-
395  uint32_t read_uint32()
-
396  {
-
397  byte_t m[4];
-
398 
-
399  read( m );
-
400  return (m[3] << 24) | (m[2] << 16) | (m[1] << 8) | m[0];
-
401  }
-
402 
-
403  void seek( long count, int whence = SEEK_SET )
-
404  {
-
405  _in.seekg( count
-
406  , whence == SEEK_SET ? std::ios::beg
-
407  :( whence == SEEK_CUR ? std::ios::cur
-
408  : std::ios::end )
-
409  );
-
410  }
-
411 
-
412  void write(const byte_t*, std::size_t)
-
413  {
-
414  io_error( "istream_device: Bad io error." );
-
415  }
+
3 // Copyright 2024 Dirk Stolle
+
4 //
+
5 // Distributed under the Boost Software License, Version 1.0
+
6 // See accompanying file LICENSE_1_0.txt or copy at
+
7 // http://www.boost.org/LICENSE_1_0.txt
+
8 //
+
9 #ifndef BOOST_GIL_IO_DEVICE_HPP
+
10 #define BOOST_GIL_IO_DEVICE_HPP
+
11 
+
12 #include <boost/gil/detail/mp11.hpp>
+
13 #include <boost/gil/io/base.hpp>
+
14 
+
15 #include <cstdio>
+
16 #include <memory>
+
17 #include <type_traits>
+
18 
+
19 namespace boost { namespace gil {
+
20 
+
21 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+
22 #pragma warning(push)
+
23 #pragma warning(disable:4512) //assignment operator could not be generated
+
24 #endif
+
25 
+
26 namespace detail {
+
27 
+
28 template < typename T > struct buff_item
+
29 {
+
30  static const unsigned int size = sizeof( T );
+
31 };
+
32 
+
33 template <> struct buff_item< void >
+
34 {
+
35  static const unsigned int size = 1;
+
36 };
+
37 
+
48 template< typename FormatTag >
+ +
50 {
+
51 public:
+
52 
+
53  using format_tag_t = FormatTag;
+
54 
+
55 public:
+
56 
+
58  struct read_tag {};
+
59  struct write_tag {};
+
60 
+
64  file_stream_device( const std::string& file_name
+
65  , read_tag tag = read_tag()
+
66  )
+
67  : file_stream_device(file_name.c_str(), tag)
+
68  {}
+
69 
+
73  file_stream_device( const char* file_name
+
74  , read_tag = read_tag()
+
75  )
+
76  {
+
77  FILE* file = nullptr;
+
78 
+
79  io_error_if( ( file = fopen( file_name, "rb" )) == nullptr
+
80  , "file_stream_device: failed to open file for reading"
+
81  );
+
82 
+
83  _file = file_ptr_t( file
+
84  , file_deleter
+
85  );
+
86  }
+
87 
+
91  file_stream_device( const std::string& file_name
+
92  , write_tag tag
+
93  )
+
94  : file_stream_device(file_name.c_str(), tag)
+
95  {}
+
96 
+
100  file_stream_device( const char* file_name
+
101  , write_tag
+
102  )
+
103  {
+
104  FILE* file = nullptr;
+
105 
+
106  io_error_if( ( file = fopen( file_name, "wb" )) == nullptr
+
107  , "file_stream_device: failed to open file for writing"
+
108  );
+
109 
+
110  _file = file_ptr_t( file
+
111  , file_deleter
+
112  );
+
113  }
+
114 
+
118  file_stream_device( FILE* file )
+
119  : _file( file
+
120  , file_deleter
+
121  )
+
122  {}
+
123 
+
124  auto get() -> FILE* { return _file.get(); }
+
125  auto get() const -> FILE const* { return _file.get(); }
+
126 
+
127  int getc_unchecked()
+
128  {
+
129  return std::getc( get() );
+
130  }
+
131 
+
132  char getc()
+
133  {
+
134  int ch;
+
135 
+
136  io_error_if( ( ch = std::getc( get() )) == EOF
+
137  , "file_stream_device: unexpected EOF"
+
138  );
+
139 
+
140  return ( char ) ch;
+
141  }
+
142 
+
144  auto read(byte_t* data, std::size_t count) -> std::size_t
+
145  {
+
146  std::size_t num_elements = fread( data
+
147  , 1
+
148  , static_cast<int>( count )
+
149  , get()
+
150  );
+
151 
+
153  io_error_if( ferror( get() )
+
154  , "file_stream_device: file read error"
+
155  );
+
156 
+
157  //libjpeg sometimes reads blocks in 4096 bytes even when the file is smaller than that.
+
158  //return value indicates how much was actually read
+
159  //returning less than "count" is not an error
+
160  return num_elements;
+
161  }
+
162 
+
164  template< typename T, int N>
+
165  void read( T (&buf)[N] )
+
166  {
+
167  io_error_if( read( buf, N ) < N
+
168  , "file_stream_device: file read error"
+
169  );
+
170  }
+
171 
+
173  uint8_t read_uint8()
+
174  {
+
175  byte_t m[1];
+
176 
+
177  read( m );
+
178  return m[0];
+
179  }
+
180 
+
182  uint16_t read_uint16()
+
183  {
+
184  byte_t m[2];
+
185 
+
186  read( m );
+
187  return (m[1] << 8) | m[0];
+
188  }
+
189 
+
191  uint32_t read_uint32()
+
192  {
+
193  byte_t m[4];
+
194 
+
195  read( m );
+
196  return (m[3] << 24) | (m[2] << 16) | (m[1] << 8) | m[0];
+
197  }
+
198 
+
200  template < typename T >
+
201  auto write(T const* buf, std::size_t count) -> std::size_t
+
202  {
+
203  std::size_t num_elements = fwrite( buf
+
204  , buff_item<T>::size
+
205  , count
+
206  , get()
+
207  );
+
208 
+
209  //return value indicates how much was actually written
+
210  //returning less than "count" is not an error
+
211  return num_elements;
+
212  }
+
213 
+
215  template < typename T
+
216  , std::size_t N
+
217  >
+
218  void write( const T (&buf)[N] )
+
219  {
+
220  io_error_if( write( buf, N ) < N
+
221  , "file_stream_device: file write error"
+
222  );
+
223  return ;
+
224  }
+
225 
+
227  void write_uint8( uint8_t x )
+
228  {
+
229  byte_t m[1] = { x };
+
230  write(m);
+
231  }
+
232 
+
234  void write_uint16( uint16_t x )
+
235  {
+
236  byte_t m[2];
+
237 
+
238  m[0] = byte_t( x >> 0 );
+
239  m[1] = byte_t( x >> 8 );
+
240 
+
241  write( m );
+
242  }
+
243 
+
245  void write_uint32( uint32_t x )
+
246  {
+
247  byte_t m[4];
+
248 
+
249  m[0] = byte_t( x >> 0 );
+
250  m[1] = byte_t( x >> 8 );
+
251  m[2] = byte_t( x >> 16 );
+
252  m[3] = byte_t( x >> 24 );
+
253 
+
254  write( m );
+
255  }
+
256 
+
257  void seek( long count, int whence = SEEK_SET )
+
258  {
+
259  io_error_if( fseek( get()
+
260  , count
+
261  , whence
+
262  ) != 0
+
263  , "file_stream_device: file seek error"
+
264  );
+
265  }
+
266 
+
267  long int tell()
+
268  {
+
269  long int pos = ftell( get() );
+
270 
+
271  io_error_if( pos == -1L
+
272  , "file_stream_device: file position error"
+
273  );
+
274 
+
275  return pos;
+
276  }
+
277 
+
278  void flush()
+
279  {
+
280  fflush( get() );
+
281  }
+
282 
+
284  void print_line( const std::string& line )
+
285  {
+
286  std::size_t num_elements = fwrite( line.c_str()
+
287  , sizeof( char )
+
288  , line.size()
+
289  , get()
+
290  );
+
291 
+
292  io_error_if( num_elements < line.size()
+
293  , "file_stream_device: line print error"
+
294  );
+
295  }
+
296 
+
297  int error()
+
298  {
+
299  return ferror( get() );
+
300  }
+
301 
+
302 private:
+
303 
+
304  static void file_deleter( FILE* file )
+
305  {
+
306  if( file )
+
307  {
+
308  fclose( file );
+
309  }
+
310  }
+
311 
+
312 private:
+
313 
+
314  using file_ptr_t = std::shared_ptr<FILE> ;
+
315  file_ptr_t _file;
+
316 };
+
317 
+
321 template< typename FormatTag >
+ +
323 {
+
324 public:
+
325  istream_device( std::istream& in )
+
326  : _in( in )
+
327  {
+
328  // does the file exists?
+
329  io_error_if( !in
+
330  , "istream_device: Stream is not valid."
+
331  );
+
332  }
+
333 
+
334  int getc_unchecked()
+
335  {
+
336  return _in.get();
+
337  }
+
338 
+
339  char getc()
+
340  {
+
341  int ch;
+
342 
+
343  io_error_if( ( ch = _in.get() ) == EOF
+
344  , "istream_device: unexpected EOF"
+
345  );
+
346 
+
347  return ( char ) ch;
+
348  }
+
349 
+
350  std::size_t read( byte_t* data
+
351  , std::size_t count )
+
352  {
+
353  std::streamsize cr = 0;
+
354 
+
355  do
+
356  {
+
357  _in.peek();
+
358  std::streamsize c = _in.readsome( reinterpret_cast< char* >( data )
+
359  , static_cast< std::streamsize >( count ));
+
360 
+
361  count -= static_cast< std::size_t >( c );
+
362  data += c;
+
363  cr += c;
+
364 
+
365  } while( count && _in );
+
366 
+
367  return static_cast< std::size_t >( cr );
+
368  }
+
369 
+
371  template<typename T, int N>
+
372  void read(T (&buf)[N])
+
373  {
+
374  read(buf, N);
+
375  }
+
376 
+
378  uint8_t read_uint8()
+
379  {
+
380  byte_t m[1];
+
381 
+
382  read( m );
+
383  return m[0];
+
384  }
+
385 
+
387  uint16_t read_uint16()
+
388  {
+
389  byte_t m[2];
+
390 
+
391  read( m );
+
392  return (m[1] << 8) | m[0];
+
393  }
+
394 
+
396  uint32_t read_uint32()
+
397  {
+
398  byte_t m[4];
+
399 
+
400  read( m );
+
401  return (m[3] << 24) | (m[2] << 16) | (m[1] << 8) | m[0];
+
402  }
+
403 
+
404  void seek( long count, int whence = SEEK_SET )
+
405  {
+
406  _in.seekg( count
+
407  , whence == SEEK_SET ? std::ios::beg
+
408  :( whence == SEEK_CUR ? std::ios::cur
+
409  : std::ios::end )
+
410  );
+
411  }
+
412 
+
413  long int tell()
+
414  {
+
415  auto pos = _in.tellg();
416 
-
417  void flush() {}
-
418 
-
419 private:
+
417  io_error_if( pos == std::istream::pos_type(-1)
+
418  , "istream_device: file position error"
+
419  );
420 
-
421  std::istream& _in;
-
422 };
+
421  return static_cast<long int>(pos);
+
422  }
423 
-
427 template< typename FormatTag >
- -
429 {
-
430 public:
-
431  ostream_device( std::ostream & out )
-
432  : _out( out )
-
433  {
+
424  void write(const byte_t*, std::size_t)
+
425  {
+
426  io_error( "istream_device: Bad io error." );
+
427  }
+
428 
+
429  void flush() {}
+
430 
+
431  int error()
+
432  {
+
433  return _in.fail();
434  }
435 
-
436  std::size_t read(byte_t *, std::size_t)
-
437  {
-
438  io_error( "ostream_device: Bad io error." );
-
439  return 0;
-
440  }
-
441 
-
442  void seek( long count, int whence )
-
443  {
-
444  _out.seekp( count
-
445  , whence == SEEK_SET
-
446  ? std::ios::beg
-
447  : ( whence == SEEK_CUR
-
448  ?std::ios::cur
-
449  :std::ios::end )
-
450  );
+
436 private:
+
437 
+
438  std::istream& _in;
+
439 };
+
440 
+
444 template< typename FormatTag >
+ +
446 {
+
447 public:
+
448  ostream_device( std::ostream & out )
+
449  : _out( out )
+
450  {
451  }
452 
-
453  void write( const byte_t* data
-
454  , std::size_t count )
-
455  {
-
456  _out.write( reinterpret_cast<char const*>( data )
-
457  , static_cast<std::streamsize>( count )
-
458  );
-
459  }
-
460 
-
462  template < typename T
-
463  , std::size_t N
-
464  >
-
465  void write( const T (&buf)[N] )
-
466  {
-
467  write( buf, N );
+
453  std::size_t read(byte_t *, std::size_t)
+
454  {
+
455  io_error( "ostream_device: Bad io error." );
+
456  return 0;
+
457  }
+
458 
+
459  void seek( long count, int whence )
+
460  {
+
461  _out.seekp( count
+
462  , whence == SEEK_SET
+
463  ? std::ios::beg
+
464  : ( whence == SEEK_CUR
+
465  ?std::ios::cur
+
466  :std::ios::end )
+
467  );
468  }
469 
-
471  void write_uint8( uint8_t x )
-
472  {
-
473  byte_t m[1] = { x };
-
474  write(m);
-
475  }
-
476 
-
478  void write_uint16( uint16_t x )
-
479  {
-
480  byte_t m[2];
-
481 
-
482  m[0] = byte_t( x >> 0 );
-
483  m[1] = byte_t( x >> 8 );
-
484 
-
485  write( m );
-
486  }
-
487 
-
489  void write_uint32( uint32_t x )
-
490  {
-
491  byte_t m[4];
-
492 
-
493  m[0] = byte_t( x >> 0 );
-
494  m[1] = byte_t( x >> 8 );
-
495  m[2] = byte_t( x >> 16 );
-
496  m[3] = byte_t( x >> 24 );
+
470  long int tell()
+
471  {
+
472  auto pos = _out.tellp();
+
473 
+
474  io_error_if( pos == std::ostream::pos_type(-1)
+
475  , "ostream_device: file position error"
+
476  );
+
477 
+
478  return static_cast<long int>(pos);
+
479  }
+
480 
+
481  void write( const byte_t* data
+
482  , std::size_t count )
+
483  {
+
484  _out.write( reinterpret_cast<char const*>( data )
+
485  , static_cast<std::streamsize>( count )
+
486  );
+
487  }
+
488 
+
490  template < typename T
+
491  , std::size_t N
+
492  >
+
493  void write( const T (&buf)[N] )
+
494  {
+
495  write( buf, N );
+
496  }
497 
-
498  write( m );
-
499  }
-
500 
-
501  void flush()
-
502  {
-
503  _out << std::flush;
-
504  }
-
505 
-
507  void print_line( const std::string& line )
-
508  {
-
509  _out << line;
-
510  }
-
511 
+
499  void write_uint8( uint8_t x )
+
500  {
+
501  byte_t m[1] = { x };
+
502  write(m);
+
503  }
+
504 
+
506  void write_uint16( uint16_t x )
+
507  {
+
508  byte_t m[2];
+
509 
+
510  m[0] = byte_t( x >> 0 );
+
511  m[1] = byte_t( x >> 8 );
512 
-
513 
-
514 private:
+
513  write( m );
+
514  }
515 
-
516  std::ostream& _out;
-
517 };
-
518 
-
519 
-
524 template< typename IODevice > struct is_input_device : std::false_type{};
-
525 template< typename FormatTag > struct is_input_device< file_stream_device< FormatTag > > : std::true_type{};
-
526 template< typename FormatTag > struct is_input_device< istream_device< FormatTag > > : std::true_type{};
-
527 
-
528 template< typename FormatTag
-
529  , typename T
-
530  , typename D = void
-
531  >
-
532 struct is_adaptable_input_device : std::false_type{};
+
517  void write_uint32( uint32_t x )
+
518  {
+
519  byte_t m[4];
+
520 
+
521  m[0] = byte_t( x >> 0 );
+
522  m[1] = byte_t( x >> 8 );
+
523  m[2] = byte_t( x >> 16 );
+
524  m[3] = byte_t( x >> 24 );
+
525 
+
526  write( m );
+
527  }
+
528 
+
529  void flush()
+
530  {
+
531  _out << std::flush;
+
532  }
533 
-
534 template <typename FormatTag, typename T>
-
535 struct is_adaptable_input_device
-
536 <
-
537  FormatTag,
-
538  T,
-
539  typename std::enable_if
-
540  <
-
541  mp11::mp_or
-
542  <
-
543  std::is_base_of<std::istream, T>,
-
544  std::is_same<std::istream, T>
-
545  >::value
-
546  >::type
-
547 > : std::true_type
-
548 {
-
549  using device_type = istream_device<FormatTag>;
-
550 };
-
551 
-
552 template< typename FormatTag >
-
553 struct is_adaptable_input_device< FormatTag
-
554  , FILE*
-
555  , void
-
556  >
-
557  : std::true_type
-
558 {
-
559  using device_type = file_stream_device<FormatTag>;
-
560 };
-
561 
-
565 template< typename FormatTag
-
566  , typename T
-
567  , typename D = void
-
568  >
-
569 struct is_read_device : std::false_type
-
570 {};
-
571 
-
572 template <typename FormatTag, typename T>
-
573 struct is_read_device
-
574 <
-
575  FormatTag,
-
576  T,
-
577  typename std::enable_if
-
578  <
-
579  mp11::mp_or
-
580  <
-
581  is_input_device<FormatTag>,
-
582  is_adaptable_input_device<FormatTag, T>
-
583  >::value
-
584  >::type
-
585 > : std::true_type
-
586 {
-
587 };
-
588 
-
589 
-
594 template<typename IODevice> struct is_output_device : std::false_type{};
-
595 
-
596 template< typename FormatTag > struct is_output_device< file_stream_device< FormatTag > > : std::true_type{};
-
597 template< typename FormatTag > struct is_output_device< ostream_device < FormatTag > > : std::true_type{};
-
598 
-
599 template< typename FormatTag
-
600  , typename IODevice
-
601  , typename D = void
-
602  >
-
603 struct is_adaptable_output_device : std::false_type {};
-
604 
-
605 template <typename FormatTag, typename T>
-
606 struct is_adaptable_output_device
-
607 <
-
608  FormatTag,
-
609  T,
-
610  typename std::enable_if
-
611  <
-
612  mp11::mp_or
-
613  <
-
614  std::is_base_of<std::ostream, T>,
-
615  std::is_same<std::ostream, T>
-
616  >::value
-
617  >::type
-
618 > : std::true_type
-
619 {
-
620  using device_type = ostream_device<FormatTag>;
-
621 };
-
622 
-
623 template<typename FormatTag> struct is_adaptable_output_device<FormatTag,FILE*,void>
-
624  : std::true_type
-
625 {
-
626  using device_type = file_stream_device<FormatTag>;
-
627 };
-
628 
+
535  void print_line( const std::string& line )
+
536  {
+
537  _out << line;
+
538  }
+
539 
+
540  int error()
+
541  {
+
542  return _out.fail();
+
543  }
+
544 
+
545 private:
+
546 
+
547  std::ostream& _out;
+
548 };
+
549 
+
550 
+
555 template< typename IODevice > struct is_input_device : std::false_type{};
+
556 template< typename FormatTag > struct is_input_device< file_stream_device< FormatTag > > : std::true_type{};
+
557 template< typename FormatTag > struct is_input_device< istream_device< FormatTag > > : std::true_type{};
+
558 
+
559 template< typename FormatTag
+
560  , typename T
+
561  , typename D = void
+
562  >
+
563 struct is_adaptable_input_device : std::false_type{};
+
564 
+
565 template <typename FormatTag, typename T>
+
566 struct is_adaptable_input_device
+
567 <
+
568  FormatTag,
+
569  T,
+
570  typename std::enable_if
+
571  <
+
572  mp11::mp_or
+
573  <
+
574  std::is_base_of<std::istream, T>,
+
575  std::is_same<std::istream, T>
+
576  >::value
+
577  >::type
+
578 > : std::true_type
+
579 {
+
580  using device_type = istream_device<FormatTag>;
+
581 };
+
582 
+
583 template< typename FormatTag >
+
584 struct is_adaptable_input_device< FormatTag
+
585  , FILE*
+
586  , void
+
587  >
+
588  : std::true_type
+
589 {
+
590  using device_type = file_stream_device<FormatTag>;
+
591 };
+
592 
+
596 template< typename FormatTag
+
597  , typename T
+
598  , typename D = void
+
599  >
+
600 struct is_read_device : std::false_type
+
601 {};
+
602 
+
603 template <typename FormatTag, typename T>
+
604 struct is_read_device
+
605 <
+
606  FormatTag,
+
607  T,
+
608  typename std::enable_if
+
609  <
+
610  mp11::mp_or
+
611  <
+
612  is_input_device<FormatTag>,
+
613  is_adaptable_input_device<FormatTag, T>
+
614  >::value
+
615  >::type
+
616 > : std::true_type
+
617 {
+
618 };
+
619 
+
620 
+
625 template<typename IODevice> struct is_output_device : std::false_type{};
+
626 
+
627 template< typename FormatTag > struct is_output_device< file_stream_device< FormatTag > > : std::true_type{};
+
628 template< typename FormatTag > struct is_output_device< ostream_device < FormatTag > > : std::true_type{};
629 
-
633 template< typename FormatTag
-
634  , typename T
-
635  , typename D = void
-
636  >
-
637 struct is_write_device : std::false_type
-
638 {};
-
639 
-
640 template <typename FormatTag, typename T>
-
641 struct is_write_device
-
642 <
-
643  FormatTag,
-
644  T,
-
645  typename std::enable_if
-
646  <
-
647  mp11::mp_or
-
648  <
-
649  is_output_device<FormatTag>,
-
650  is_adaptable_output_device<FormatTag, T>
-
651  >::value
-
652  >::type
-
653 > : std::true_type
-
654 {
-
655 };
-
656 
-
657 } // namespace detail
-
658 
-
659 template< typename Device, typename FormatTag > class scanline_reader;
-
660 template< typename Device, typename FormatTag, typename ConversionPolicy > class reader;
-
661 
-
662 template< typename Device, typename FormatTag, typename Log = no_log > class writer;
-
663 
-
664 template< typename Device, typename FormatTag > class dynamic_image_reader;
-
665 template< typename Device, typename FormatTag, typename Log = no_log > class dynamic_image_writer;
-
666 
-
667 
-
668 namespace detail {
-
669 
-
670 template< typename T >
-
671 struct is_reader : std::false_type
-
672 {};
-
673 
-
674 template< typename Device
-
675  , typename FormatTag
-
676  , typename ConversionPolicy
-
677  >
-
678 struct is_reader< reader< Device
-
679  , FormatTag
-
680  , ConversionPolicy
-
681  >
-
682  > : std::true_type
-
683 {};
-
684 
-
685 template< typename T >
-
686 struct is_dynamic_image_reader : std::false_type
-
687 {};
-
688 
-
689 template< typename Device
-
690  , typename FormatTag
-
691  >
-
692 struct is_dynamic_image_reader< dynamic_image_reader< Device
-
693  , FormatTag
-
694  >
-
695  > : std::true_type
-
696 {};
+
630 template< typename FormatTag
+
631  , typename IODevice
+
632  , typename D = void
+
633  >
+
634 struct is_adaptable_output_device : std::false_type {};
+
635 
+
636 template <typename FormatTag, typename T>
+
637 struct is_adaptable_output_device
+
638 <
+
639  FormatTag,
+
640  T,
+
641  typename std::enable_if
+
642  <
+
643  mp11::mp_or
+
644  <
+
645  std::is_base_of<std::ostream, T>,
+
646  std::is_same<std::ostream, T>
+
647  >::value
+
648  >::type
+
649 > : std::true_type
+
650 {
+
651  using device_type = ostream_device<FormatTag>;
+
652 };
+
653 
+
654 template<typename FormatTag> struct is_adaptable_output_device<FormatTag,FILE*,void>
+
655  : std::true_type
+
656 {
+
657  using device_type = file_stream_device<FormatTag>;
+
658 };
+
659 
+
660 
+
664 template< typename FormatTag
+
665  , typename T
+
666  , typename D = void
+
667  >
+
668 struct is_write_device : std::false_type
+
669 {};
+
670 
+
671 template <typename FormatTag, typename T>
+
672 struct is_write_device
+
673 <
+
674  FormatTag,
+
675  T,
+
676  typename std::enable_if
+
677  <
+
678  mp11::mp_or
+
679  <
+
680  is_output_device<FormatTag>,
+
681  is_adaptable_output_device<FormatTag, T>
+
682  >::value
+
683  >::type
+
684 > : std::true_type
+
685 {
+
686 };
+
687 
+
688 } // namespace detail
+
689 
+
690 template< typename Device, typename FormatTag > class scanline_reader;
+
691 template< typename Device, typename FormatTag, typename ConversionPolicy > class reader;
+
692 
+
693 template< typename Device, typename FormatTag, typename Log = no_log > class writer;
+
694 
+
695 template< typename Device, typename FormatTag > class dynamic_image_reader;
+
696 template< typename Device, typename FormatTag, typename Log = no_log > class dynamic_image_writer;
697 
-
698 template< typename T >
-
699 struct is_writer : std::false_type
-
700 {};
-
701 
-
702 template< typename Device
-
703  , typename FormatTag
-
704  >
-
705 struct is_writer< writer< Device
-
706  , FormatTag
-
707  >
-
708  > : std::true_type
-
709 {};
-
710 
-
711 template< typename T >
-
712 struct is_dynamic_image_writer : std::false_type
-
713 {};
-
714 
-
715 template< typename Device
-
716  , typename FormatTag
-
717  >
-
718 struct is_dynamic_image_writer< dynamic_image_writer< Device
-
719  , FormatTag
-
720  >
-
721  > : std::true_type
-
722 {};
-
723 
-
724 } // namespace detail
-
725 
-
726 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-
727 #pragma warning(pop)
-
728 #endif
-
729 
-
730 } // namespace gil
-
731 } // namespace boost
+
698 
+
699 namespace detail {
+
700 
+
701 template< typename T >
+
702 struct is_reader : std::false_type
+
703 {};
+
704 
+
705 template< typename Device
+
706  , typename FormatTag
+
707  , typename ConversionPolicy
+
708  >
+
709 struct is_reader< reader< Device
+
710  , FormatTag
+
711  , ConversionPolicy
+
712  >
+
713  > : std::true_type
+
714 {};
+
715 
+
716 template< typename T >
+
717 struct is_dynamic_image_reader : std::false_type
+
718 {};
+
719 
+
720 template< typename Device
+
721  , typename FormatTag
+
722  >
+
723 struct is_dynamic_image_reader< dynamic_image_reader< Device
+
724  , FormatTag
+
725  >
+
726  > : std::true_type
+
727 {};
+
728 
+
729 template< typename T >
+
730 struct is_writer : std::false_type
+
731 {};
732 
-
733 #endif
- -
file_stream_device(const std::string &file_name, read_tag tag=read_tag())
Definition: device.hpp:63
-
void write_uint32(uint32_t x)
Writes 32 bit little endian integer.
Definition: device.hpp:244
-
void print_line(const std::string &line)
Prints formatted ASCII text.
Definition: device.hpp:283
-
void write_uint8(uint8_t x)
Writes byte.
Definition: device.hpp:226
-
void read(T(&buf)[N])
Reads array.
Definition: device.hpp:164
-
file_stream_device(FILE *file)
Definition: device.hpp:117
-
uint16_t read_uint16()
Reads 16 bit little endian integer.
Definition: device.hpp:181
-
uint8_t read_uint8()
Reads byte.
Definition: device.hpp:172
-
file_stream_device(const char *file_name, write_tag)
Definition: device.hpp:99
-
auto read(byte_t *data, std::size_t count) -> std::size_t
Definition: device.hpp:143
-
file_stream_device(const std::string &file_name, write_tag tag)
Definition: device.hpp:90
-
void write(const T(&buf)[N])
Writes array.
Definition: device.hpp:217
-
file_stream_device(const char *file_name, read_tag=read_tag())
Definition: device.hpp:72
-
uint32_t read_uint32()
Reads 32 bit little endian integer.
Definition: device.hpp:190
-
void write_uint16(uint16_t x)
Writes 16 bit little endian integer.
Definition: device.hpp:233
-
auto write(T const *buf, std::size_t count) -> std::size_t
Writes number of elements from a buffer.
Definition: device.hpp:200
-
Definition: device.hpp:322
-
void read(T(&buf)[N])
Reads array.
Definition: device.hpp:371
-
uint16_t read_uint16()
Reads 16 bit little endian integer.
Definition: device.hpp:386
-
uint8_t read_uint8()
Reads byte.
Definition: device.hpp:377
-
uint32_t read_uint32()
Reads 32 bit little endian integer.
Definition: device.hpp:395
-
Definition: device.hpp:429
-
void write_uint32(uint32_t x)
Writes 32 bit little endian integer.
Definition: device.hpp:489
-
void print_line(const std::string &line)
Prints formatted ASCII text.
Definition: device.hpp:507
-
void write_uint8(uint8_t x)
Writes byte.
Definition: device.hpp:471
-
void write(const T(&buf)[N])
Writes array.
Definition: device.hpp:465
-
void write_uint16(uint16_t x)
Writes 16 bit little endian integer.
Definition: device.hpp:478
+
733 template< typename Device
+
734  , typename FormatTag
+
735  >
+
736 struct is_writer< writer< Device
+
737  , FormatTag
+
738  >
+
739  > : std::true_type
+
740 {};
+
741 
+
742 template< typename T >
+
743 struct is_dynamic_image_writer : std::false_type
+
744 {};
+
745 
+
746 template< typename Device
+
747  , typename FormatTag
+
748  >
+
749 struct is_dynamic_image_writer< dynamic_image_writer< Device
+
750  , FormatTag
+
751  >
+
752  > : std::true_type
+
753 {};
+
754 
+
755 } // namespace detail
+
756 
+
757 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+
758 #pragma warning(pop)
+
759 #endif
+
760 
+
761 } // namespace gil
+
762 } // namespace boost
+
763 
+
764 #endif
+ +
file_stream_device(const std::string &file_name, read_tag tag=read_tag())
Definition: device.hpp:64
+
void write_uint32(uint32_t x)
Writes 32 bit little endian integer.
Definition: device.hpp:245
+
void print_line(const std::string &line)
Prints formatted ASCII text.
Definition: device.hpp:284
+
void write_uint8(uint8_t x)
Writes byte.
Definition: device.hpp:227
+
void read(T(&buf)[N])
Reads array.
Definition: device.hpp:165
+
file_stream_device(FILE *file)
Definition: device.hpp:118
+
uint16_t read_uint16()
Reads 16 bit little endian integer.
Definition: device.hpp:182
+
uint8_t read_uint8()
Reads byte.
Definition: device.hpp:173
+
file_stream_device(const char *file_name, write_tag)
Definition: device.hpp:100
+
auto read(byte_t *data, std::size_t count) -> std::size_t
Definition: device.hpp:144
+
file_stream_device(const std::string &file_name, write_tag tag)
Definition: device.hpp:91
+
void write(const T(&buf)[N])
Writes array.
Definition: device.hpp:218
+
file_stream_device(const char *file_name, read_tag=read_tag())
Definition: device.hpp:73
+
uint32_t read_uint32()
Reads 32 bit little endian integer.
Definition: device.hpp:191
+
void write_uint16(uint16_t x)
Writes 16 bit little endian integer.
Definition: device.hpp:234
+
auto write(T const *buf, std::size_t count) -> std::size_t
Writes number of elements from a buffer.
Definition: device.hpp:201
+
Definition: device.hpp:323
+
void read(T(&buf)[N])
Reads array.
Definition: device.hpp:372
+
uint16_t read_uint16()
Reads 16 bit little endian integer.
Definition: device.hpp:387
+
uint8_t read_uint8()
Reads byte.
Definition: device.hpp:378
+
uint32_t read_uint32()
Reads 32 bit little endian integer.
Definition: device.hpp:396
+
Definition: device.hpp:446
+
void write_uint32(uint32_t x)
Writes 32 bit little endian integer.
Definition: device.hpp:517
+
void print_line(const std::string &line)
Prints formatted ASCII text.
Definition: device.hpp:535
+
void write_uint8(uint8_t x)
Writes byte.
Definition: device.hpp:499
+
void write(const T(&buf)[N])
Writes array.
Definition: device.hpp:493
+
void write_uint16(uint16_t x)
Writes 16 bit little endian integer.
Definition: device.hpp:506
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36
-
Used to overload the constructor.
Definition: device.hpp:57
-
Definition: device.hpp:524
-
Definition: device.hpp:594
-
Definition: device.hpp:570
-
Definition: device.hpp:638
+
Used to overload the constructor.
Definition: device.hpp:58
+
Definition: device.hpp:555
+
Definition: device.hpp:625
+
Definition: device.hpp:601
+
Definition: device.hpp:669

diff --git a/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html b/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html index 08f34a9f7..37fa5717d 100644 --- a/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html +++ b/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html @@ -339,86 +339,78 @@

Boost GIL 314 
315 namespace detail {
316 
-
317 template <typename View, typename DstP, typename CC>
-
318 struct get_ccv_type : color_converted_view_type<View, DstP, CC> {};
-
319 
-
320 template <typename Views, typename DstP, typename CC>
-
321 struct views_get_ccv_type
-
322 {
-
323 private:
-
324  // FIXME: Remove class name injection with detail:: qualification
-
325  // Required as workaround for MP11 issue that treats unqualified metafunction
-
326  // in the class definition of the same name as the specialization (Peter Dimov):
-
327  // invalid template argument for template parameter 'F', expected a class template
-
328  template <typename T>
-
329  using ccvt = detail::get_ccv_type<T, DstP, CC>;
-
330 
-
331 public:
-
332  using type = mp11::mp_transform<ccvt, Views>;
-
333 };
-
334 
-
335 } // namespace detail
-
336 
-
339 template <typename ...Views, typename DstP, typename CC>
-
340 struct color_converted_view_type<any_image_view<Views...>,DstP,CC>
-
341 {
-
342  //using type = any_image_view<typename detail::views_get_ccv_type<Views, DstP, CC>::type>;
-
343  using type = detail::views_get_ccv_type<any_image_view<Views...>, DstP, CC>;
-
344 };
-
345 
-
349 template <typename DstP, typename ...Views, typename CC>
-
350 inline
- -
352  -> typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type
-
353 {
-
354  using cc_view_t = typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type;
-
355  return variant2::visit(detail::color_converted_view_fn<DstP, cc_view_t>(), src);
-
356 }
+
317 template <typename Views, typename DstP, typename CC>
+
318 struct views_get_ccv_type
+
319 {
+
320 private:
+
321  template <typename T>
+
322  using ccvt = typename color_converted_view_type<T, DstP, CC>::type;
+
323 public:
+
324  using type = mp11::mp_transform<ccvt, Views>;
+
325 };
+
326 
+
327 } // namespace detail
+
328 
+
331 template <typename ...Views, typename DstP, typename CC>
+
332 struct color_converted_view_type<any_image_view<Views...>,DstP,CC>
+
333 {
+
334  //using type = any_image_view<typename detail::views_get_ccv_type<Views, DstP, CC>::type>;
+
335  using type = typename detail::views_get_ccv_type<any_image_view<Views...>, DstP, CC>::type;
+
336 };
+
337 
+
341 template <typename DstP, typename ...Views, typename CC>
+
342 inline
+ +
344  -> typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type
+
345 {
+
346  using cc_view_t = typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type;
+
347  return variant2::visit(detail::color_converted_view_fn<DstP, cc_view_t, CC>(cc), src);
+
348 }
+
349 
+
352 template <typename ...Views, typename DstP>
+ +
354 {
+
355  using type = typename detail::views_get_ccv_type<any_image_view<Views...>, DstP, default_color_converter>::type;
+
356 };
357 
-
360 template <typename ...Views, typename DstP>
- -
362 {
-
363  using type = detail::views_get_ccv_type<any_image_view<Views...>, DstP, default_color_converter>;
-
364 };
-
365 
-
369 template <typename DstP, typename ...Views>
-
370 inline
- -
372  -> typename color_converted_view_type<any_image_view<Views...>, DstP>::type
-
373 {
-
374  using cc_view_t = typename color_converted_view_type<any_image_view<Views...>, DstP>::type;
-
375  return variant2::visit(detail::color_converted_view_fn<DstP, cc_view_t>(), src);
-
376 }
-
377 
-
382 template <typename DstP, typename ...Views, typename CC>
-
383 [[deprecated("Use color_converted_view(const any_image_view<Views...>& src, CC) instead.")]]
-
384 inline
- -
386  -> typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type
-
387 {
-
388  return color_converted_view(src, cc);
-
389 }
-
390 
-
395 template <typename DstP, typename ...Views>
-
396 [[deprecated("Use color_converted_view(any_image_view<Views...> const& src) instead.")]]
-
397 inline
- -
399  -> typename color_converted_view_type<any_image_view<Views...>, DstP>::type
-
400 {
-
401  return color_converted_view(src);
-
402 }
-
403 
-
405 
-
406 }} // namespace boost::gil
-
407 
-
408 #endif
+
361 template <typename DstP, typename ...Views>
+
362 inline
+ +
364  -> typename color_converted_view_type<any_image_view<Views...>, DstP>::type
+
365 {
+
366  using cc_view_t = typename color_converted_view_type<any_image_view<Views...>, DstP>::type;
+
367  return variant2::visit(detail::color_converted_view_fn<DstP, cc_view_t>(), src);
+
368 }
+
369 
+
374 template <typename DstP, typename ...Views, typename CC>
+
375 [[deprecated("Use color_converted_view(const any_image_view<Views...>& src, CC) instead.")]]
+
376 inline
+ +
378  -> typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type
+
379 {
+
380  return color_converted_view(src, cc);
+
381 }
+
382 
+
387 template <typename DstP, typename ...Views>
+
388 [[deprecated("Use color_converted_view(any_image_view<Views...> const& src) instead.")]]
+
389 inline
+ +
391  -> typename color_converted_view_type<any_image_view<Views...>, DstP>::type
+
392 {
+
393  return color_converted_view(src);
+
394 }
+
395 
+
397 
+
398 }} // namespace boost::gil
+
399 
+
400 #endif
Represents a run-time specified image view. Models HasDynamicXStepTypeConcept, HasDynamicYStepTypeCon...
Definition: any_image_view.hpp:76
auto rotated180_view(any_image_view< Views... > const &src) -> typename dynamic_xy_step_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:228
auto rotated90ccw_view(any_image_view< Views... > const &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:217
auto rotated90cw_view(any_image_view< Views... > const &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:206
-
auto any_color_converted_view(const any_image_view< Views... > &src) -> typename color_converted_view_type< any_image_view< Views... >, DstP >::type
overload of generic color_converted_view with the default color-converter These are workarounds for G...
Definition: extension/dynamic_image/image_view_factory.hpp:398
-
auto color_converted_view(any_image_view< Views... > const &src) -> typename color_converted_view_type< any_image_view< Views... >, DstP >::type
overload of generic color_converted_view with the default color-converter
Definition: extension/dynamic_image/image_view_factory.hpp:371
+
auto any_color_converted_view(const any_image_view< Views... > &src) -> typename color_converted_view_type< any_image_view< Views... >, DstP >::type
overload of generic color_converted_view with the default color-converter These are workarounds for G...
Definition: extension/dynamic_image/image_view_factory.hpp:390
+
auto color_converted_view(any_image_view< Views... > const &src) -> typename color_converted_view_type< any_image_view< Views... >, DstP >::type
overload of generic color_converted_view with the default color-converter
Definition: extension/dynamic_image/image_view_factory.hpp:363
auto flipped_left_right_view(any_image_view< Views... > const &src) -> typename dynamic_x_step_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:184
auto flipped_up_down_view(any_image_view< Views... > const &src) -> typename dynamic_y_step_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:173
auto nth_channel_view(any_image_view< Views... > const &src, int n) -> typename nth_channel_view_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:308
diff --git a/html/reference/group___image_view_transformations_color_convert.html b/html/reference/group___image_view_transformations_color_convert.html index 2bde9c699..71aa3ed1f 100644 --- a/html/reference/group___image_view_transformations_color_convert.html +++ b/html/reference/group___image_view_transformations_color_convert.html @@ -77,10 +77,10 @@

Boost GILauto color_converted_view (View const &src) -> typename color_converted_view_type< View, DstP >::type  overload of generic color_converted_view with the default color-converter
  -template<typename DstP , typename ... Views, typename CC > -auto color_converted_view (any_image_view< Views... > const &src, CC) -> typename color_converted_view_type< any_image_view< Views... >, DstP, CC >::type - overload of generic color_converted_view with user defined color-converter More...
-  +template<typename DstP , typename ... Views, typename CC > +auto color_converted_view (any_image_view< Views... > const &src, CC cc) -> typename color_converted_view_type< any_image_view< Views... >, DstP, CC >::type + overload of generic color_converted_view with user defined color-converter More...
+  template<typename DstP , typename ... Views> auto color_converted_view (any_image_view< Views... > const &src) -> typename color_converted_view_type< any_image_view< Views... >, DstP >::type  overload of generic color_converted_view with the default color-converter More...
@@ -212,8 +212,8 @@

-

◆ color_converted_view() [2/2]

+ +

◆ color_converted_view() [2/2]

@@ -231,7 +231,7 @@

CC  -   + cc  diff --git a/html/reference/hierarchy.html b/html/reference/hierarchy.html index 35287cbcb..00dd9d933 100644 --- a/html/reference/hierarchy.html +++ b/html/reference/hierarchy.html @@ -117,292 +117,291 @@

Boost GIL Ccolor_converted_view_type< SrcView, DstP, CC >Returns the type of a view that does color conversion upon dereferencing its pixels  Ccolor_converted_view_type< any_image_view< Views... >, DstP >Returns the type of a runtime-specified view, color-converted to a given pixel type with the default coor converter  Ccolor_converted_view_type< any_image_view< Views... >, DstP, CC >Returns the type of a runtime-specified view, color-converted to a given pixel type with user specified color converter - Ccolor_converted_view_type< View, DstP, CC > - Ccolor_space_type< planar_pixel_reference< ChannelReference, ColorSpace > >Specifies the color space type of a planar pixel reference. Required by PixelBasedConcept - CColorBaseConcept< ColorBase >A color base is a container of color elements (such as channels, channel references or channel pointers) - CColorBasesCompatibleConcept< ColorBase1, ColorBase2 >Two color bases are compatible if they have the same color space and their elements are compatible, semantic-pairwise - CColorBaseValueConcept< ColorBase >Color base that also has a default-constructor. Refines Regular - CColorSpaceConcept< CS >Color space type concept - CColorSpacesCompatibleConcept< CS1, CS2 >Two color spaces are compatible if they are the same - Cconst_iterator_type< It >Returns the type of an iterator just like the input iterator, except operating over immutable values - Ccontains_color< ColorBase, Color >A predicate metafunction determining whether a given color base contains a given color - Ccopier_n< I, O > - Ccopier_n< I, iterator_from_2d< OL > >Destination range is delimited by image iterators - Ccopier_n< iterator_from_2d< IL >, iterator_from_2d< OL > >Both source and destination ranges are delimited by image iterators - Ccopier_n< iterator_from_2d< IL >, O >Source range is delimited by image iterators - CCopyConstructible< T >Concept of copy construction requirement - Ccorrelator_k< Size, PixelAccum >Provides functionality for performing 1D correlation between the kernel and a buffer storing row pixels of source image. Kernel size is a template parameter and must be compulsorily specified while using - Ccorrelator_n< PixelAccum >Provides functionality for performing 1D correlation between the kernel and a buffer storing row pixels of source image. Kernel size is to be provided through constructor for all instances - Ccyan_tCyan - Cdec< T >Operator– wrapped in a function object - Cdefault_channel_converterSame as channel_converter, except it takes the destination channel by reference, which allows us to move the templates from the class level to the method level. This is important when invoking it on heterogeneous pixels - Cdefault_color_converterClass for color-converting one pixel to another - Cdefault_color_converter_impl< C1, C2 >Color Convertion function object. To be specialized for every src/dst color space - Cdefault_color_converter_impl< C, C >When the color space is the same, color convertion performs channel depth conversion - Cdefault_color_converter_impl< C1, rgba_t >Converting any pixel type to RGBA. Note: Supports homogeneous pixels only - Cdefault_color_converter_impl< cmyk_t, gray_t >CMYK to Gray - Cdefault_color_converter_impl< cmyk_t, rgb_t >CMYK to RGB (not the fastest code in the world) - Cdefault_color_converter_impl< gray_t, cmyk_t >Gray to CMYK - Cdefault_color_converter_impl< gray_t, rgb_t >Gray to RGB - Cdefault_color_converter_impl< rgb_t, cmyk_t >RGB to CMYK (not the fastest code in the world) - Cdefault_color_converter_impl< rgb_t, gray_t >RGB to Gray - Cdefault_color_converter_impl< rgba_t, C2 >Converting RGBA to any pixel type. Note: Supports homogeneous pixels only - Cdefault_color_converter_impl< rgba_t, rgba_t >Unfortunately RGBA to RGBA must be explicitly provided - otherwise we get ambiguous specialization error - CDefaultConstructible< T >Concept of default construction requirement - Cderef_base< ConstT, Value, Reference, ConstReference, ArgType, ResultType, IsMutable >Helper base class for pixel dereference adaptors - Cderef_base< color_convert_deref_fn< SrcConstRefP, DstP, default_color_converter >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > - Ccolor_convert_deref_fn< SrcConstRefP, DstP, CC >Function object that given a source pixel, returns it converted to a given color space and channel depth. Models: PixelDereferenceAdaptorConcept - Cderef_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > - Cderef_compose< D1, D2 >Composes two dereference function objects. Similar to std::unary_compose but needs to pull some aliases from the component types. Models: PixelDereferenceAdaptorConcept - Cdereference_iterator_adaptor< Iterator, DFn >An adaptor over an existing iterator that provides for custom filter on dereferencing the object. Models: IteratorAdaptorConcept, PixelIteratorConcept - Cderived_image_type< Image, T, L, IsPlanar >Constructs a homogeneous image type from a source image type by changing some of the properties.Use use_default for the properties of the source image that you want to keep - Cderived_iterator_type< Iterator, T, L, IsPlanar, IsStep, IsMutable >Constructs a pixel iterator type from a source pixel iterator type by changing some of the properties.Use use_default for the properties of the source view that you want to keep - Cderived_pixel_reference_type< Ref, T, L, IsPlanar, IsMutable >Constructs a pixel reference type from a source pixel reference type by changing some of the properties.Use use_default for the properties of the source view that you want to keep - Cderived_view_type< View, T, L, IsPlanar, StepX, IsMutable >Constructs an image view type from a source view type by changing some of the properties.Use use_default for the properties of the source view that you want to keep - Cdevicen_color_t< N >Unnamed color - Cdevicen_t< N >Unnamed color space of 1, 2, 3, 4, or 5 channels - Cdynamic_x_step_type< IteratorOrLocatorOrView >Base template for types that model HasDynamicXStepTypeConcept - Cdynamic_y_step_type< LocatorOrView >Base template for types that model HasDynamicYStepTypeConcept - Cdynamic_xy_step_type< transposed_type< View >::type > - Cdynamic_xy_step_transposed_type< View >Returns the type of a transposed view that has a dynamic step along both X and Y - Cdynamic_y_step_type< dynamic_x_step_type< View >::type > - Cdynamic_xy_step_type< View >Returns the type of a view that has a dynamic step along both X and Y - Celement_const_reference_type< ColorBase >Specifies the return type of the constant element accessor at_c of a homogeneous color base - Celement_reference_type< ColorBase >Specifies the return type of the mutable element accessor at_c of a homogeneous color base - Celement_type< ColorBase >Specifies the element type of a homogeneous color base - Celement_type< P > - Cequal_n_fn< boost::gil::iterator_from_2d< Loc >, It > - Cequal_n_fn< boost::gil::iterator_from_2d< Loc1 >, boost::gil::iterator_from_2d< Loc2 > >Both source and destination ranges are delimited by image iterators - Cequal_n_fn< It, boost::gil::iterator_from_2d< Loc > > - Cequal_n_fn< pixel< T, CS > const *, pixel< T, CS > const * > - Cequal_n_fn< planar_pixel_iterator< IC, CS >, planar_pixel_iterator< IC, CS > > - CEqualityComparable< T >Concept of == and != comparability requirement - Cfile_stream_device< FormatTag > - Cfiller< Dimension >Filler is used to fill the histogram class with all values between a specified range This functor is used when sparsefill is false, since all the keys need to be present in that case. Currently on 1D implementation is available, extend by adding specialization for 2D and higher dimensional cases - Cfiller< 1 >Specialisation for 1D histogram - CForwardCollectionImageViewConcept< View >GIL view as ForwardCollection - Cget_dynamic_image_reader< T, FormatTag, Enable >Helper metafunction to generate dynamic image reader type - Cget_dynamic_image_writer< T, FormatTag, Enable >Helper metafunction to generate dynamic image writer type - Cget_reader< T, FormatTag, ConversionPolicy, Enable >Helper metafunction to generate image reader type - Cget_reader_backend< T, FormatTag, Enable >Helper metafunction to generate image backend type - Cget_scanline_reader< T, FormatTag >Helper metafunction to generate image scanline_reader type - Cget_writer< T, FormatTag, Enable >Helper metafunction to generate writer type - Cgray_color_tGray - Cgreen_tGreen - CHasDynamicXStepTypeConcept< T >Concept for iterators, locators and views that can define a type just like the given iterator, locator or view, except it supports runtime specified step along the X navigation - CHasDynamicYStepTypeConcept< T >Concept for locators and views that can define a type just like the given locator or view, except it supports runtime specified step along the Y navigation - Chash_tuple< T >Functor provided for the hashing of tuples. The following approach makes use hash_combine from boost::container_hash. Although there is a direct hashing available for tuples, this approach will ease adopting in future to a std::hash_combine. In case std::hash extends support to tuples this functor as well as the helper implementation hash_tuple_impl can be removed - CHasTransposedTypeConcept< T >Concept for locators and views that can define a type just like the given locator or view, except X and Y is swapped - Chistogram< T >Default histogram class provided by boost::gil - Chomogeneous_color_base< Element, Layout, 1 >A homogeneous color base holding one color element. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept - Chomogeneous_color_base< Element, Layout, 2 >A homogeneous color base holding two color elements Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept - Chomogeneous_color_base< Element, Layout, 3 >A homogeneous color base holding three color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept - Chomogeneous_color_base< Element, Layout, 4 >A homogeneous color base holding four color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept - Chomogeneous_color_base< Element, Layout, 5 >A homogeneous color base holding five color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept - CHomogeneousColorBaseConcept< ColorBase >Color base whose elements all have the same type - CHomogeneousColorBaseValueConcept< ColorBase >Homogeneous color base that also has a default constructor. Refines Regular - CHomogeneousPixelBasedConcept< P >Concept for homogeneous pixel-based GIL constructs - CHomogeneousPixelConcept< P >Homogeneous pixel concept - CHomogeneousPixelValueConcept< P >Homogeneous pixel concept that is a Regular type - Cidentity< T >Identity taken from SGI STL - Cchannel_converter_unsigned< T, T >Converting a channel to itself - identity operation - Cidentity< ChannelValue > - Cimage< Pixel, IsPlanar, Alloc >Container interface over image view. Models ImageConcept, PixelBasedConcept - Cimage_is_basic< Img >Basic images must use basic views and std::allocator - Cimage_type< T, L, IsPlanar, Alloc >Returns the type of a homogeneous image given the channel type, layout, and whether it operates on planar data - Cimage_view< Loc >A lightweight object that interprets memory as a 2D array of pixels. Models ImageViewConcept,PixelBasedConcept,HasDynamicXStepTypeConcept,HasDynamicYStepTypeConcept,HasTransposedTypeConcept - CImageConcept< Image >2-dimensional image whose value type models PixelValueConcept - CImageViewConcept< View >GIL's 2-dimensional view over immutable GIL pixels - Cinc< T >Operator++ wrapped in a function object - Cis_input_device< IODevice > - Cis_iterator_adaptor< It >Metafunction predicate determining whether the given iterator is a plain one or an adaptor over another iterator. Examples of adaptors are the step iterator and the dereference iterator adaptor - Cis_output_device< IODevice > - Cis_pixel< bit_aligned_pixel_reference< B, C, L, M > >Metafunction predicate that flags bit_aligned_pixel_reference as a model of PixelConcept. Required by PixelConcept - Cis_pixel< planar_pixel_reference< ChannelReference, ColorSpace > >Metafunction predicate that flags planar_pixel_reference as a model of PixelConcept. Required by PixelConcept - Cis_planar< planar_pixel_reference< ChannelReference, ColorSpace > >Specifies that planar_pixel_reference represents a planar construct. Required by PixelBasedConcept - Cis_read_device< FormatTag, T, D > - Cis_read_only< Conversion_Policy >Determines if reader type is read only ( no conversion ) - Cis_read_supported< Pixel, FormatTag > - Cis_write_device< FormatTag, T, D > - Cistream_device< FormatTag > - Citerator_adaptor_get_base< It >Returns the base iterator for a given iterator adaptor. Provide an specialization when introducing new iterator adaptors - Citerator_adaptor_rebind< It, NewBaseIt >Changes the base iterator of an iterator adaptor. Provide an specialization when introducing new iterator adaptors - Citerator_add_deref< Iterator, Deref >Returns the type (and creates an instance) of an iterator that invokes the given dereference adaptor upon dereferencing - Citerator_add_deref< dereference_iterator_adaptor< Iterator, PREV_DEREF >, Deref >For dereference iterator adaptors, compose the new function object after the old one - Citerator_from_2d< Loc2 >Provides 1D random-access navigation to the pixels of the image. Models: PixelIteratorConcept, PixelBasedConcept, HasDynamicXStepTypeConcept - Citerator_is_basic< Iterator >Determines if a given pixel iterator is basic Basic iterators must use gil::pixel (if interleaved), gil::planar_pixel_iterator (if planar) and gil::memory_based_step_iterator (if step). They must use the standard constness rules - Citerator_is_basic< memory_based_step_iterator< pixel< T, L > * > > - Citerator_is_basic< memory_based_step_iterator< pixel< T, L > const * > > - Citerator_is_basic< memory_based_step_iterator< planar_pixel_iterator< T *, CS > > > - Citerator_is_basic< memory_based_step_iterator< planar_pixel_iterator< T const *, CS > > > - Citerator_is_basic< pixel< T, L > * > - Citerator_is_basic< pixel< T, L > const * > - Citerator_is_basic< planar_pixel_iterator< T *, CS > > - Citerator_is_basic< planar_pixel_iterator< T const *, CS > > - Citerator_is_mutable< It >Metafunction predicate returning whether the given iterator allows for changing its values - Citerator_is_mutable< Iterator > - Citerator_is_mutable< L::x_iterator > - Clocator_is_mutable< L >Determines if the given locator is mutable (i.e. its pixels can be changed) - Citerator_is_mutable< Loc::x_iterator > - Citerator_is_mutable< V::x_iterator > - Cview_is_mutable< V >Determines if the given view is mutable (i.e. its pixels can be changed) - Citerator_is_step< I >Determines if the given iterator has a step that could be set dynamically - Citerator_is_step< iterator_adaptor_get_base< It >::type > - Citerator_is_step< L::x_iterator > - Clocator_is_step_in_x< V::xy_locator > - Cview_is_step_in_x< V >Determines if the given view has a horizontal step that could be set dynamically - Clocator_is_step_in_x< L >Determines if the given locator has a horizontal step that could be set dynamically - Citerator_is_step< L::y_iterator > - Clocator_is_step_in_y< V::xy_locator > - Cview_is_step_in_y< V >Determines if the given view has a vertical step that could be set dynamically - Clocator_is_step_in_y< L >Determines if the given locator has a vertical step that could be set dynamically - Citerator_type< T, L, IsPlanar, IsStep, IsMutable >Returns the type of a homogeneous iterator given the channel type, layout, whether it operates on planar data, whether it is a step iterator, and whether it is mutable - Citerator_type_from_pixel< Pixel, IsPlanar, IsStep, IsMutable >Returns the type of a pixel iterator given the pixel type, whether it operates on planar data, whether it is a step iterator, and whether it is mutable - Citerator_type_from_pixel< const bit_aligned_pixel_reference< B, C, L, M >, IsPlanar, IsStep, IsMutable > - CIteratorAdaptorConcept< Iterator >Iterator adaptor is a forward iterator adapting another forward iterator - Ckernel_1d_adaptor< Core >Kernel adaptor for one-dimensional cores Core needs to provide size(),begin(),end(),operator[], value_type,iterator,const_iterator,reference,const_reference - Ckernel_1d_adaptor< std::array< T, Size > > - Ckernel_1d_fixed< T, Size >Static-size kernel - Ckernel_1d_adaptor< std::vector< T, std::allocator< T > > > - Ckernel_1d< T, Allocator >Variable-size kernel - Ckernel_2d< T, Allocator >Variable-size kernel - Ckernel_2d_fixed< T, Size >Static-size kernel - Ckth_channel_deref_fn< K, SrcP >Function object that returns a grayscale reference of the K-th channel (specified as a template parameter) of a given reference. Models: PixelDereferenceAdaptorConcept - Ckth_channel_view_type< K, View >Given a source image view type View, returns the type of an image view over a given channel of View - Ckth_semantic_element_const_reference_type< ColorBase, K >Specifies the return type of the constant semantic_at_c<K>(color_base); - Ckth_semantic_element_const_reference_type< ColorBase, color_index_type< ColorBase, Color >::value > - Ccolor_element_const_reference_type< ColorBase, Color >Specifies the return type of the constant element accessor by color name, get_color(color_base, Color()); - Ckth_semantic_element_reference_type< ColorBase, K >Specifies the return type of the mutable semantic_at_c<K>(color_base); - Ckth_semantic_element_reference_type< ColorBase, color_index_type< ColorBase, Color >::value > - Ccolor_element_reference_type< ColorBase, Color >Specifies the return type of the mutable element accessor by color name, get_color(color_base, Color()); - Ckth_semantic_element_type< ColorBase, K >Specifies the type of the K-th semantic element of a color base - Ckth_semantic_element_type< ColorBase, color_index_type< ColorBase, Color >::value > - Ccolor_element_type< ColorBase, Color >Specifies the type of the element associated with a given color tag - Clayout< ColorSpace, ChannelMapping >Represents a color space and ordering of channels in memory - Clayout< devicen_t< N >::type > - Cdevicen_layout_t< N >Unnamed color layout of up to five channels - Clocator_is_basic< Loc >Determines if a given locator is basic. A basic locator is memory-based and has basic x_iterator and y_iterator - Clocator_type< T, L, IsPlanar, IsStepX, IsMutable >Returns the type of a homogeneous locator given the channel type, layout, whether it operates on planar data and whether it has a step horizontally - Cmagenta_tMagenta - CMemoryBasedIteratorConcept< Iterator >Concept of a random-access iterator that can be advanced in memory units (bytes or bits) - Cmemunit_step_fn< Iterator >Function object that returns the memory unit distance between two iterators and advances a given iterator a given number of mem units (bytes or bits) - CMetafunction< T >Concept for type as metafunction requirement - CMutableChannelConcept< T >A channel that allows for modifying its value - CMutableColorBaseConcept< ColorBase >Color base which allows for modifying its elements - CMutableHomogeneousColorBaseConcept< ColorBase >Homogeneous color base that allows for modifying its elements - CMutableHomogeneousPixelConcept< P >Homogeneous pixel concept that allows for changing its channels - CMutableImageViewConcept< View >GIL's 2-dimensional view over mutable GIL pixels - CMutableIteratorAdaptorConcept< Iterator >Iterator adaptor that is mutable - CMutablePixelConcept< P >Pixel concept that allows for changing its channels - CMutablePixelIteratorConcept< Iterator >Pixel iterator that allows for changing its pixel - CMutablePixelLocatorConcept< Loc >GIL's 2-dimensional locator over mutable GIL pixels - CMutableRandomAccess2DImageViewConcept< View >2-dimensional view over mutable values - CMutableRandomAccess2DLocatorConcept< Loc >2-dimensional locator over mutable pixels - CMutableRandomAccessNDImageViewConcept< View >N-dimensional view over mutable values - CMutableRandomAccessNDLocatorConcept< Loc >N-dimensional locator over mutable pixels - CMutableStepIteratorConcept< Iterator >Step iterator that allows for modifying its current value - Cnth_channel_deref_fn< SrcP >Function object that returns a grayscale reference of the N-th channel of a given reference. Models: PixelDereferenceAdaptorConcept - Cnth_channel_view_type< View >Given a source image view type View, returns the type of an image view over a single channel of View - Cnth_channel_view_type< any_image_view< Views... > >Given a runtime source image view, returns the type of a runtime image view over a single channel of the source view - Cnum_channels< PixelBased >Returns the number of channels of a pixel-based GIL construct - Costream_device< FormatTag > - Cpacked_dynamic_channel_reference< BitField, NumBits, false >Models a constant subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter - Cpacked_dynamic_channel_reference< BitField, NumBits, true >Models a mutable subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter - Cpacked_image_type< BitField, ChannelBitSizes, Layout, Alloc >Returns the type of an interleaved packed image: an image whose channels may not be byte-aligned, but whose pixels are byte aligned - Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1 >, Layout, std::allocator< unsigned char > > - Cpacked_image1_type< BitField, Size1, Layout, Alloc >Returns the type of a single-channel image given its bitfield type, the bit size of its channel and its layout - Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2 >, Layout, std::allocator< unsigned char > > - Cpacked_image2_type< BitField, Size1, Size2, Layout, Alloc >Returns the type of a two channel image given its bitfield type, the bit size of its channels and its layout - Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2, Size3 >, Layout, std::allocator< unsigned char > > - Cpacked_image3_type< BitField, Size1, Size2, Size3, Layout, Alloc >Returns the type of a three channel image given its bitfield type, the bit size of its channels and its layout - Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2, Size3, Size4 >, Layout, std::allocator< unsigned char > > - Cpacked_image4_type< BitField, Size1, Size2, Size3, Size4, Layout, Alloc >Returns the type of a four channel image given its bitfield type, the bit size of its channels and its layout - Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2, Size3, Size4, Size5 >, Layout, std::allocator< unsigned char > > - Cpacked_image5_type< BitField, Size1, Size2, Size3, Size4, Size5, Layout, Alloc >Returns the type of a five channel image given its bitfield type, the bit size of its channels and its layout - Cpacked_pixel< BitField, ChannelRefs, Layout >Heterogeneous pixel value whose channel references can be constructed from the pixel bitfield and their index. Models ColorBaseValueConcept, PixelValueConcept, PixelBasedConcept Typical use for this is a model of a packed pixel (like 565 RGB) - Cpacked_pixel_type< BitField, ChannelBitSizes, Layout >Returns the type of a packed pixel given its bitfield type, the bit size of its channels and its layout - Cpacked_pixel_type< BitField, mp11::mp_list_c< unsigned, NumBits >, Layout > - Cpacked_pixel_type< detail::min_fast_uint< NumBits >::type, mp11::mp_list_c< unsigned, NumBits >, Layout > - Cpixel< ChannelValue, Layout >Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept, PixelValueConcept, HomogeneousPixelBasedConcept - Cpixel_2d_locator_base< Loc, XIterator, YIterator >Base class for models of PixelLocatorConcept - Cpixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > - Cmemory_based_2d_locator< StepIterator >Memory-based pixel locator. Models: PixelLocatorConcept,HasDynamicXStepTypeConcept,HasDynamicYStepTypeConcept,HasTransposedTypeConcept - Cpixel_2d_locator_base< virtual_2d_locator< DerefFn, IsTransposed >, position_iterator< DerefFn, IsTransposed >, position_iterator< DerefFn, 1-IsTransposed > > - Cvirtual_2d_locator< DerefFn, IsTransposed >A 2D locator over a virtual image Upon dereferencing, invokes a given function object passing it its coordinates. Models: PixelLocatorConcept, HasDynamicXStepTypeConcept, HasDynamicYStepTypeConcept, HasTransposedTypeConcept - Cpixel_assigns_t< PixelRef, PixelResult >Casts and assigns a pixel to another - Cpixel_divides_scalar_t< PixelRef, Scalar, PixelResult >Performs channel-wise division of pixel elements by scalar - Cpixel_divides_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise division of two pixels - Cpixel_halves_t< PixelRef >Performs channel-wise division by 2 - Cpixel_is_reference< Pixel >Given a model of a pixel, determines whether the model represents a pixel reference (as opposed to pixel value) - Cpixel_minus_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise subtraction of two pixels - Cpixel_multiplies_scalar_t< PixelRef, Scalar, PixelResult >Performs channel-wise multiplication of pixel elements by scalar - Cpixel_multiplies_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise multiplication of two pixels - Cpixel_plus_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise addition of two pixels - Cpixel_proxy< T >Reference proxy associated with a type that has a "reference" member type alias - Cpixel_reference_is_basic< PixelRef >Determines if a given pixel reference is basic Basic references must use gil::pixel& (if interleaved), gil::planar_pixel_reference (if planar). They must use the standard constness rules - Cpixel_reference_is_mutable< R >Determines if the given pixel reference is mutable (i.e. its channels can be changed) - Cpixel_reference_is_proxy< PixelReference >Determines whether the given pixel reference is a proxy class or a native C++ reference - Cpixel_reference_type< T, L, IsPlanar, IsMutable >Returns the type of a homogeneous pixel reference given the channel type, layout, whether it operates on planar data and whether it is mutable - Cpixel_value_type< Channel, Layout >Returns the type of a homogeneous pixel given the channel type and layout - Cpixel_zeros_t< PixelRef >Sets pixel elements to zero (for whatever zero means) - CPixelBasedConcept< P >Concept for all pixel-based GIL constructs - CPixelConcept< P >Pixel concept - A color base whose elements are channels - CPixelConvertibleConcept< SrcP, DstP >Pixel convertible concept Convertibility is non-symmetric and implies that one pixel can be converted to another, approximating the color. Conversion is explicit and sometimes lossy - CPixelDereferenceAdaptorConcept< D >Represents a unary function object that can be invoked upon dereferencing a pixel iterator - CPixelImageViewIsMutableConcept< View > - CPixelIteratorConcept< Iterator >An STL random access traversal iterator over a model of PixelConcept - CPixelIteratorIsMutableConcept< Iterator > - CPixelLocatorConcept< Loc >GIL's 2-dimensional locator over immutable GIL pixels - Cpixels_are_compatible< P1, P2 >Returns whether two pixels are compatible Pixels are compatible if their channels and color space types are compatible. Compatible pixels can be assigned and copy constructed from one another - Cpixels_are_compatible< V1::value_type, V2::value_type > - Cviews_are_compatible< V1, V2 >Returns whether two views are compatible - CPixelsCompatibleConcept< P1, P2 >Concept for pixel compatibility Pixels are compatible if their channels and color space types are compatible. Compatible pixels can be assigned and copy constructed from one another - CPixelValueConcept< P >Pixel concept that is a Regular type - Cplanar_pixel_iterator< ChannelPtr, ColorSpace >An iterator over planar pixels. Models HomogeneousColorBaseConcept, PixelIteratorConcept, HomogeneousPixelBasedConcept, MemoryBasedIteratorConcept, HasDynamicXStepTypeConcept - Cplanar_pixel_reference< ChannelReference, ColorSpace >A reference proxy to a planar pixel - Cplus_asymmetric< T1, T2 >Plus function object whose arguments may be of different type - Cpoint< T >2D point both axes of which have the same dimension typeModels: Point2DConcept - CPoint2DConcept< P >2-dimensional point concept - Cpoint< std::ptrdiff_t > - Cpoint< std::size_t > - CPointNDConcept< P >N-dimensional point concept - Cposition_iterator< Deref, Dim >An iterator that remembers its current X,Y position and invokes a function object with it upon dereferencing. Used to create virtual image views. Models: StepIteratorConcept, PixelIteratorConcept, PixelBasedConcept, HasDynamicXStepTypeConcept - Cpromote_integral< T, PromoteUnsignedToUnsigned, UseCheckedInteger, IsIntegral >Meta-function to define an integral type with size than is (roughly) twice the bit size of T - CRandomAccess2DImageConcept< Image >2-dimensional container of values - CRandomAccess2DImageViewConcept< View >2-dimensional view over immutable values - CRandomAccess2DImageViewIsMutableConcept< View > - CRandomAccess2DLocatorConcept< Loc >2-dimensional locator over immutable values - CRandomAccessNDImageConcept< Image >N-dimensional container of values - CRandomAccessNDImageViewConcept< View >N-dimensional view over immutable values - CRandomAccessNDImageViewIsMutableConcept< View > - CRandomAccessNDLocatorConcept< Loc >N-dimensional locator over immutable values - CRandomAccessNDLocatorIsMutableConcept< Loc > - Cfile_stream_device< FormatTag >::read_tagUsed to overload the constructor - Creader_base< FormatTag, ConversionPolicy > - Cred_tRed - CRegular< T >Concept for type regularity requirement - CReversibleCollectionImageViewConcept< View >GIL view as ReversibleCollection - Crgb_to_luminance_fn< RedChannel, GreenChannel, BlueChannel, GrayChannelValue >Red * .3 + green * .59 + blue * .11 + .5 - CSameType< T, U >Concept of types equivalence requirement - Cscanline_read_iterator< Reader >Input iterator to read images - Csize< ColorBase >Returns an integral constant type specifying the number of elements in a color base - Cstd_fill_tStruct to do std::fill - Cstep_iterator_adaptor< Derived, Iterator, SFn >An adaptor over an existing iterator that changes the step unit - Cstep_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > - Cmemory_based_step_iterator< Iterator >MEMORY-BASED STEP ITERATOR - CStepIteratorConcept< Iterator >Step iterator concept - CSwappable< T >Concept of swap operation requirement - Ctransposed_type< LocatorOrView > - Ctuple_limit< Tuple >Provides equivalent of std::numeric_limits for type std::tuple tuple_limit gets called with only tuples having integral elements - Ctype_from_x_iterator< XIterator >Given a pixel iterator defining access to pixels along a row, returns the types of the corresponding built-in step_iterator, xy_locator, image_view - Ctype_to_index< Types, T >Returns the index corresponding to the first occurrance of a given given type in - Ctype_to_index< ColorBase::layout_t::color_space_t, Color > - Cview_is_basic< View >Basic views must be over basic locators - Cview_type< T, L, IsPlanar, IsStepX, IsMutable >Returns the type of a homogeneous view given the channel type, layout, whether it operates on planar data and whether it has a step horizontally - Cview_type_from_pixel< Pixel, IsPlanar, IsStepX, IsMutable >Returns the type of a view the pixel type, whether it operates on planar data and whether it has a step horizontally - Cview_type_from_pixel< Pixel, IsPlanar > - CViewsCompatibleConcept< V1, V2 >Views are compatible if they have the same color spaces and compatible channel values - Cyellow_tYellow + Ccolor_space_type< planar_pixel_reference< ChannelReference, ColorSpace > >Specifies the color space type of a planar pixel reference. Required by PixelBasedConcept + CColorBaseConcept< ColorBase >A color base is a container of color elements (such as channels, channel references or channel pointers) + CColorBasesCompatibleConcept< ColorBase1, ColorBase2 >Two color bases are compatible if they have the same color space and their elements are compatible, semantic-pairwise + CColorBaseValueConcept< ColorBase >Color base that also has a default-constructor. Refines Regular + CColorSpaceConcept< CS >Color space type concept + CColorSpacesCompatibleConcept< CS1, CS2 >Two color spaces are compatible if they are the same + Cconst_iterator_type< It >Returns the type of an iterator just like the input iterator, except operating over immutable values + Ccontains_color< ColorBase, Color >A predicate metafunction determining whether a given color base contains a given color + Ccopier_n< I, O > + Ccopier_n< I, iterator_from_2d< OL > >Destination range is delimited by image iterators + Ccopier_n< iterator_from_2d< IL >, iterator_from_2d< OL > >Both source and destination ranges are delimited by image iterators + Ccopier_n< iterator_from_2d< IL >, O >Source range is delimited by image iterators + CCopyConstructible< T >Concept of copy construction requirement + Ccorrelator_k< Size, PixelAccum >Provides functionality for performing 1D correlation between the kernel and a buffer storing row pixels of source image. Kernel size is a template parameter and must be compulsorily specified while using + Ccorrelator_n< PixelAccum >Provides functionality for performing 1D correlation between the kernel and a buffer storing row pixels of source image. Kernel size is to be provided through constructor for all instances + Ccyan_tCyan + Cdec< T >Operator– wrapped in a function object + Cdefault_channel_converterSame as channel_converter, except it takes the destination channel by reference, which allows us to move the templates from the class level to the method level. This is important when invoking it on heterogeneous pixels + Cdefault_color_converterClass for color-converting one pixel to another + Cdefault_color_converter_impl< C1, C2 >Color Convertion function object. To be specialized for every src/dst color space + Cdefault_color_converter_impl< C, C >When the color space is the same, color convertion performs channel depth conversion + Cdefault_color_converter_impl< C1, rgba_t >Converting any pixel type to RGBA. Note: Supports homogeneous pixels only + Cdefault_color_converter_impl< cmyk_t, gray_t >CMYK to Gray + Cdefault_color_converter_impl< cmyk_t, rgb_t >CMYK to RGB (not the fastest code in the world) + Cdefault_color_converter_impl< gray_t, cmyk_t >Gray to CMYK + Cdefault_color_converter_impl< gray_t, rgb_t >Gray to RGB + Cdefault_color_converter_impl< rgb_t, cmyk_t >RGB to CMYK (not the fastest code in the world) + Cdefault_color_converter_impl< rgb_t, gray_t >RGB to Gray + Cdefault_color_converter_impl< rgba_t, C2 >Converting RGBA to any pixel type. Note: Supports homogeneous pixels only + Cdefault_color_converter_impl< rgba_t, rgba_t >Unfortunately RGBA to RGBA must be explicitly provided - otherwise we get ambiguous specialization error + CDefaultConstructible< T >Concept of default construction requirement + Cderef_base< ConstT, Value, Reference, ConstReference, ArgType, ResultType, IsMutable >Helper base class for pixel dereference adaptors + Cderef_base< color_convert_deref_fn< SrcConstRefP, DstP, default_color_converter >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > + Ccolor_convert_deref_fn< SrcConstRefP, DstP, CC >Function object that given a source pixel, returns it converted to a given color space and channel depth. Models: PixelDereferenceAdaptorConcept + Cderef_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > + Cderef_compose< D1, D2 >Composes two dereference function objects. Similar to std::unary_compose but needs to pull some aliases from the component types. Models: PixelDereferenceAdaptorConcept + Cdereference_iterator_adaptor< Iterator, DFn >An adaptor over an existing iterator that provides for custom filter on dereferencing the object. Models: IteratorAdaptorConcept, PixelIteratorConcept + Cderived_image_type< Image, T, L, IsPlanar >Constructs a homogeneous image type from a source image type by changing some of the properties.Use use_default for the properties of the source image that you want to keep + Cderived_iterator_type< Iterator, T, L, IsPlanar, IsStep, IsMutable >Constructs a pixel iterator type from a source pixel iterator type by changing some of the properties.Use use_default for the properties of the source view that you want to keep + Cderived_pixel_reference_type< Ref, T, L, IsPlanar, IsMutable >Constructs a pixel reference type from a source pixel reference type by changing some of the properties.Use use_default for the properties of the source view that you want to keep + Cderived_view_type< View, T, L, IsPlanar, StepX, IsMutable >Constructs an image view type from a source view type by changing some of the properties.Use use_default for the properties of the source view that you want to keep + Cdevicen_color_t< N >Unnamed color + Cdevicen_t< N >Unnamed color space of 1, 2, 3, 4, or 5 channels + Cdynamic_x_step_type< IteratorOrLocatorOrView >Base template for types that model HasDynamicXStepTypeConcept + Cdynamic_y_step_type< LocatorOrView >Base template for types that model HasDynamicYStepTypeConcept + Cdynamic_xy_step_type< transposed_type< View >::type > + Cdynamic_xy_step_transposed_type< View >Returns the type of a transposed view that has a dynamic step along both X and Y + Cdynamic_y_step_type< dynamic_x_step_type< View >::type > + Cdynamic_xy_step_type< View >Returns the type of a view that has a dynamic step along both X and Y + Celement_const_reference_type< ColorBase >Specifies the return type of the constant element accessor at_c of a homogeneous color base + Celement_reference_type< ColorBase >Specifies the return type of the mutable element accessor at_c of a homogeneous color base + Celement_type< ColorBase >Specifies the element type of a homogeneous color base + Celement_type< P > + Cequal_n_fn< boost::gil::iterator_from_2d< Loc >, It > + Cequal_n_fn< boost::gil::iterator_from_2d< Loc1 >, boost::gil::iterator_from_2d< Loc2 > >Both source and destination ranges are delimited by image iterators + Cequal_n_fn< It, boost::gil::iterator_from_2d< Loc > > + Cequal_n_fn< pixel< T, CS > const *, pixel< T, CS > const * > + Cequal_n_fn< planar_pixel_iterator< IC, CS >, planar_pixel_iterator< IC, CS > > + CEqualityComparable< T >Concept of == and != comparability requirement + Cfile_stream_device< FormatTag > + Cfiller< Dimension >Filler is used to fill the histogram class with all values between a specified range This functor is used when sparsefill is false, since all the keys need to be present in that case. Currently on 1D implementation is available, extend by adding specialization for 2D and higher dimensional cases + Cfiller< 1 >Specialisation for 1D histogram + CForwardCollectionImageViewConcept< View >GIL view as ForwardCollection + Cget_dynamic_image_reader< T, FormatTag, Enable >Helper metafunction to generate dynamic image reader type + Cget_dynamic_image_writer< T, FormatTag, Enable >Helper metafunction to generate dynamic image writer type + Cget_reader< T, FormatTag, ConversionPolicy, Enable >Helper metafunction to generate image reader type + Cget_reader_backend< T, FormatTag, Enable >Helper metafunction to generate image backend type + Cget_scanline_reader< T, FormatTag >Helper metafunction to generate image scanline_reader type + Cget_writer< T, FormatTag, Enable >Helper metafunction to generate writer type + Cgray_color_tGray + Cgreen_tGreen + CHasDynamicXStepTypeConcept< T >Concept for iterators, locators and views that can define a type just like the given iterator, locator or view, except it supports runtime specified step along the X navigation + CHasDynamicYStepTypeConcept< T >Concept for locators and views that can define a type just like the given locator or view, except it supports runtime specified step along the Y navigation + Chash_tuple< T >Functor provided for the hashing of tuples. The following approach makes use hash_combine from boost::container_hash. Although there is a direct hashing available for tuples, this approach will ease adopting in future to a std::hash_combine. In case std::hash extends support to tuples this functor as well as the helper implementation hash_tuple_impl can be removed + CHasTransposedTypeConcept< T >Concept for locators and views that can define a type just like the given locator or view, except X and Y is swapped + Chistogram< T >Default histogram class provided by boost::gil + Chomogeneous_color_base< Element, Layout, 1 >A homogeneous color base holding one color element. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept + Chomogeneous_color_base< Element, Layout, 2 >A homogeneous color base holding two color elements Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept + Chomogeneous_color_base< Element, Layout, 3 >A homogeneous color base holding three color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept + Chomogeneous_color_base< Element, Layout, 4 >A homogeneous color base holding four color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept + Chomogeneous_color_base< Element, Layout, 5 >A homogeneous color base holding five color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept + CHomogeneousColorBaseConcept< ColorBase >Color base whose elements all have the same type + CHomogeneousColorBaseValueConcept< ColorBase >Homogeneous color base that also has a default constructor. Refines Regular + CHomogeneousPixelBasedConcept< P >Concept for homogeneous pixel-based GIL constructs + CHomogeneousPixelConcept< P >Homogeneous pixel concept + CHomogeneousPixelValueConcept< P >Homogeneous pixel concept that is a Regular type + Cidentity< T >Identity taken from SGI STL + Cchannel_converter_unsigned< T, T >Converting a channel to itself - identity operation + Cidentity< ChannelValue > + Cimage< Pixel, IsPlanar, Alloc >Container interface over image view. Models ImageConcept, PixelBasedConcept + Cimage_is_basic< Img >Basic images must use basic views and std::allocator + Cimage_type< T, L, IsPlanar, Alloc >Returns the type of a homogeneous image given the channel type, layout, and whether it operates on planar data + Cimage_view< Loc >A lightweight object that interprets memory as a 2D array of pixels. Models ImageViewConcept,PixelBasedConcept,HasDynamicXStepTypeConcept,HasDynamicYStepTypeConcept,HasTransposedTypeConcept + CImageConcept< Image >2-dimensional image whose value type models PixelValueConcept + CImageViewConcept< View >GIL's 2-dimensional view over immutable GIL pixels + Cinc< T >Operator++ wrapped in a function object + Cis_input_device< IODevice > + Cis_iterator_adaptor< It >Metafunction predicate determining whether the given iterator is a plain one or an adaptor over another iterator. Examples of adaptors are the step iterator and the dereference iterator adaptor + Cis_output_device< IODevice > + Cis_pixel< bit_aligned_pixel_reference< B, C, L, M > >Metafunction predicate that flags bit_aligned_pixel_reference as a model of PixelConcept. Required by PixelConcept + Cis_pixel< planar_pixel_reference< ChannelReference, ColorSpace > >Metafunction predicate that flags planar_pixel_reference as a model of PixelConcept. Required by PixelConcept + Cis_planar< planar_pixel_reference< ChannelReference, ColorSpace > >Specifies that planar_pixel_reference represents a planar construct. Required by PixelBasedConcept + Cis_read_device< FormatTag, T, D > + Cis_read_only< Conversion_Policy >Determines if reader type is read only ( no conversion ) + Cis_read_supported< Pixel, FormatTag > + Cis_write_device< FormatTag, T, D > + Cistream_device< FormatTag > + Citerator_adaptor_get_base< It >Returns the base iterator for a given iterator adaptor. Provide an specialization when introducing new iterator adaptors + Citerator_adaptor_rebind< It, NewBaseIt >Changes the base iterator of an iterator adaptor. Provide an specialization when introducing new iterator adaptors + Citerator_add_deref< Iterator, Deref >Returns the type (and creates an instance) of an iterator that invokes the given dereference adaptor upon dereferencing + Citerator_add_deref< dereference_iterator_adaptor< Iterator, PREV_DEREF >, Deref >For dereference iterator adaptors, compose the new function object after the old one + Citerator_from_2d< Loc2 >Provides 1D random-access navigation to the pixels of the image. Models: PixelIteratorConcept, PixelBasedConcept, HasDynamicXStepTypeConcept + Citerator_is_basic< Iterator >Determines if a given pixel iterator is basic Basic iterators must use gil::pixel (if interleaved), gil::planar_pixel_iterator (if planar) and gil::memory_based_step_iterator (if step). They must use the standard constness rules + Citerator_is_basic< memory_based_step_iterator< pixel< T, L > * > > + Citerator_is_basic< memory_based_step_iterator< pixel< T, L > const * > > + Citerator_is_basic< memory_based_step_iterator< planar_pixel_iterator< T *, CS > > > + Citerator_is_basic< memory_based_step_iterator< planar_pixel_iterator< T const *, CS > > > + Citerator_is_basic< pixel< T, L > * > + Citerator_is_basic< pixel< T, L > const * > + Citerator_is_basic< planar_pixel_iterator< T *, CS > > + Citerator_is_basic< planar_pixel_iterator< T const *, CS > > + Citerator_is_mutable< It >Metafunction predicate returning whether the given iterator allows for changing its values + Citerator_is_mutable< Iterator > + Citerator_is_mutable< L::x_iterator > + Clocator_is_mutable< L >Determines if the given locator is mutable (i.e. its pixels can be changed) + Citerator_is_mutable< Loc::x_iterator > + Citerator_is_mutable< V::x_iterator > + Cview_is_mutable< V >Determines if the given view is mutable (i.e. its pixels can be changed) + Citerator_is_step< I >Determines if the given iterator has a step that could be set dynamically + Citerator_is_step< iterator_adaptor_get_base< It >::type > + Citerator_is_step< L::x_iterator > + Clocator_is_step_in_x< V::xy_locator > + Cview_is_step_in_x< V >Determines if the given view has a horizontal step that could be set dynamically + Clocator_is_step_in_x< L >Determines if the given locator has a horizontal step that could be set dynamically + Citerator_is_step< L::y_iterator > + Clocator_is_step_in_y< V::xy_locator > + Cview_is_step_in_y< V >Determines if the given view has a vertical step that could be set dynamically + Clocator_is_step_in_y< L >Determines if the given locator has a vertical step that could be set dynamically + Citerator_type< T, L, IsPlanar, IsStep, IsMutable >Returns the type of a homogeneous iterator given the channel type, layout, whether it operates on planar data, whether it is a step iterator, and whether it is mutable + Citerator_type_from_pixel< Pixel, IsPlanar, IsStep, IsMutable >Returns the type of a pixel iterator given the pixel type, whether it operates on planar data, whether it is a step iterator, and whether it is mutable + Citerator_type_from_pixel< const bit_aligned_pixel_reference< B, C, L, M >, IsPlanar, IsStep, IsMutable > + CIteratorAdaptorConcept< Iterator >Iterator adaptor is a forward iterator adapting another forward iterator + Ckernel_1d_adaptor< Core >Kernel adaptor for one-dimensional cores Core needs to provide size(),begin(),end(),operator[], value_type,iterator,const_iterator,reference,const_reference + Ckernel_1d_adaptor< std::array< T, Size > > + Ckernel_1d_fixed< T, Size >Static-size kernel + Ckernel_1d_adaptor< std::vector< T, std::allocator< T > > > + Ckernel_1d< T, Allocator >Variable-size kernel + Ckernel_2d< T, Allocator >Variable-size kernel + Ckernel_2d_fixed< T, Size >Static-size kernel + Ckth_channel_deref_fn< K, SrcP >Function object that returns a grayscale reference of the K-th channel (specified as a template parameter) of a given reference. Models: PixelDereferenceAdaptorConcept + Ckth_channel_view_type< K, View >Given a source image view type View, returns the type of an image view over a given channel of View + Ckth_semantic_element_const_reference_type< ColorBase, K >Specifies the return type of the constant semantic_at_c<K>(color_base); + Ckth_semantic_element_const_reference_type< ColorBase, color_index_type< ColorBase, Color >::value > + Ccolor_element_const_reference_type< ColorBase, Color >Specifies the return type of the constant element accessor by color name, get_color(color_base, Color()); + Ckth_semantic_element_reference_type< ColorBase, K >Specifies the return type of the mutable semantic_at_c<K>(color_base); + Ckth_semantic_element_reference_type< ColorBase, color_index_type< ColorBase, Color >::value > + Ccolor_element_reference_type< ColorBase, Color >Specifies the return type of the mutable element accessor by color name, get_color(color_base, Color()); + Ckth_semantic_element_type< ColorBase, K >Specifies the type of the K-th semantic element of a color base + Ckth_semantic_element_type< ColorBase, color_index_type< ColorBase, Color >::value > + Ccolor_element_type< ColorBase, Color >Specifies the type of the element associated with a given color tag + Clayout< ColorSpace, ChannelMapping >Represents a color space and ordering of channels in memory + Clayout< devicen_t< N >::type > + Cdevicen_layout_t< N >Unnamed color layout of up to five channels + Clocator_is_basic< Loc >Determines if a given locator is basic. A basic locator is memory-based and has basic x_iterator and y_iterator + Clocator_type< T, L, IsPlanar, IsStepX, IsMutable >Returns the type of a homogeneous locator given the channel type, layout, whether it operates on planar data and whether it has a step horizontally + Cmagenta_tMagenta + CMemoryBasedIteratorConcept< Iterator >Concept of a random-access iterator that can be advanced in memory units (bytes or bits) + Cmemunit_step_fn< Iterator >Function object that returns the memory unit distance between two iterators and advances a given iterator a given number of mem units (bytes or bits) + CMetafunction< T >Concept for type as metafunction requirement + CMutableChannelConcept< T >A channel that allows for modifying its value + CMutableColorBaseConcept< ColorBase >Color base which allows for modifying its elements + CMutableHomogeneousColorBaseConcept< ColorBase >Homogeneous color base that allows for modifying its elements + CMutableHomogeneousPixelConcept< P >Homogeneous pixel concept that allows for changing its channels + CMutableImageViewConcept< View >GIL's 2-dimensional view over mutable GIL pixels + CMutableIteratorAdaptorConcept< Iterator >Iterator adaptor that is mutable + CMutablePixelConcept< P >Pixel concept that allows for changing its channels + CMutablePixelIteratorConcept< Iterator >Pixel iterator that allows for changing its pixel + CMutablePixelLocatorConcept< Loc >GIL's 2-dimensional locator over mutable GIL pixels + CMutableRandomAccess2DImageViewConcept< View >2-dimensional view over mutable values + CMutableRandomAccess2DLocatorConcept< Loc >2-dimensional locator over mutable pixels + CMutableRandomAccessNDImageViewConcept< View >N-dimensional view over mutable values + CMutableRandomAccessNDLocatorConcept< Loc >N-dimensional locator over mutable pixels + CMutableStepIteratorConcept< Iterator >Step iterator that allows for modifying its current value + Cnth_channel_deref_fn< SrcP >Function object that returns a grayscale reference of the N-th channel of a given reference. Models: PixelDereferenceAdaptorConcept + Cnth_channel_view_type< View >Given a source image view type View, returns the type of an image view over a single channel of View + Cnth_channel_view_type< any_image_view< Views... > >Given a runtime source image view, returns the type of a runtime image view over a single channel of the source view + Cnum_channels< PixelBased >Returns the number of channels of a pixel-based GIL construct + Costream_device< FormatTag > + Cpacked_dynamic_channel_reference< BitField, NumBits, false >Models a constant subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter + Cpacked_dynamic_channel_reference< BitField, NumBits, true >Models a mutable subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter + Cpacked_image_type< BitField, ChannelBitSizes, Layout, Alloc >Returns the type of an interleaved packed image: an image whose channels may not be byte-aligned, but whose pixels are byte aligned + Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1 >, Layout, std::allocator< unsigned char > > + Cpacked_image1_type< BitField, Size1, Layout, Alloc >Returns the type of a single-channel image given its bitfield type, the bit size of its channel and its layout + Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2 >, Layout, std::allocator< unsigned char > > + Cpacked_image2_type< BitField, Size1, Size2, Layout, Alloc >Returns the type of a two channel image given its bitfield type, the bit size of its channels and its layout + Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2, Size3 >, Layout, std::allocator< unsigned char > > + Cpacked_image3_type< BitField, Size1, Size2, Size3, Layout, Alloc >Returns the type of a three channel image given its bitfield type, the bit size of its channels and its layout + Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2, Size3, Size4 >, Layout, std::allocator< unsigned char > > + Cpacked_image4_type< BitField, Size1, Size2, Size3, Size4, Layout, Alloc >Returns the type of a four channel image given its bitfield type, the bit size of its channels and its layout + Cpacked_image_type< BitField, mp11::mp_list_c< unsigned, Size1, Size2, Size3, Size4, Size5 >, Layout, std::allocator< unsigned char > > + Cpacked_image5_type< BitField, Size1, Size2, Size3, Size4, Size5, Layout, Alloc >Returns the type of a five channel image given its bitfield type, the bit size of its channels and its layout + Cpacked_pixel< BitField, ChannelRefs, Layout >Heterogeneous pixel value whose channel references can be constructed from the pixel bitfield and their index. Models ColorBaseValueConcept, PixelValueConcept, PixelBasedConcept Typical use for this is a model of a packed pixel (like 565 RGB) + Cpacked_pixel_type< BitField, ChannelBitSizes, Layout >Returns the type of a packed pixel given its bitfield type, the bit size of its channels and its layout + Cpacked_pixel_type< BitField, mp11::mp_list_c< unsigned, NumBits >, Layout > + Cpacked_pixel_type< detail::min_fast_uint< NumBits >::type, mp11::mp_list_c< unsigned, NumBits >, Layout > + Cpixel< ChannelValue, Layout >Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept, PixelValueConcept, HomogeneousPixelBasedConcept + Cpixel_2d_locator_base< Loc, XIterator, YIterator >Base class for models of PixelLocatorConcept + Cpixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > + Cmemory_based_2d_locator< StepIterator >Memory-based pixel locator. Models: PixelLocatorConcept,HasDynamicXStepTypeConcept,HasDynamicYStepTypeConcept,HasTransposedTypeConcept + Cpixel_2d_locator_base< virtual_2d_locator< DerefFn, IsTransposed >, position_iterator< DerefFn, IsTransposed >, position_iterator< DerefFn, 1-IsTransposed > > + Cvirtual_2d_locator< DerefFn, IsTransposed >A 2D locator over a virtual image Upon dereferencing, invokes a given function object passing it its coordinates. Models: PixelLocatorConcept, HasDynamicXStepTypeConcept, HasDynamicYStepTypeConcept, HasTransposedTypeConcept + Cpixel_assigns_t< PixelRef, PixelResult >Casts and assigns a pixel to another + Cpixel_divides_scalar_t< PixelRef, Scalar, PixelResult >Performs channel-wise division of pixel elements by scalar + Cpixel_divides_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise division of two pixels + Cpixel_halves_t< PixelRef >Performs channel-wise division by 2 + Cpixel_is_reference< Pixel >Given a model of a pixel, determines whether the model represents a pixel reference (as opposed to pixel value) + Cpixel_minus_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise subtraction of two pixels + Cpixel_multiplies_scalar_t< PixelRef, Scalar, PixelResult >Performs channel-wise multiplication of pixel elements by scalar + Cpixel_multiplies_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise multiplication of two pixels + Cpixel_plus_t< PixelRef1, PixelRef2, PixelResult >Performs channel-wise addition of two pixels + Cpixel_proxy< T >Reference proxy associated with a type that has a "reference" member type alias + Cpixel_reference_is_basic< PixelRef >Determines if a given pixel reference is basic Basic references must use gil::pixel& (if interleaved), gil::planar_pixel_reference (if planar). They must use the standard constness rules + Cpixel_reference_is_mutable< R >Determines if the given pixel reference is mutable (i.e. its channels can be changed) + Cpixel_reference_is_proxy< PixelReference >Determines whether the given pixel reference is a proxy class or a native C++ reference + Cpixel_reference_type< T, L, IsPlanar, IsMutable >Returns the type of a homogeneous pixel reference given the channel type, layout, whether it operates on planar data and whether it is mutable + Cpixel_value_type< Channel, Layout >Returns the type of a homogeneous pixel given the channel type and layout + Cpixel_zeros_t< PixelRef >Sets pixel elements to zero (for whatever zero means) + CPixelBasedConcept< P >Concept for all pixel-based GIL constructs + CPixelConcept< P >Pixel concept - A color base whose elements are channels + CPixelConvertibleConcept< SrcP, DstP >Pixel convertible concept Convertibility is non-symmetric and implies that one pixel can be converted to another, approximating the color. Conversion is explicit and sometimes lossy + CPixelDereferenceAdaptorConcept< D >Represents a unary function object that can be invoked upon dereferencing a pixel iterator + CPixelImageViewIsMutableConcept< View > + CPixelIteratorConcept< Iterator >An STL random access traversal iterator over a model of PixelConcept + CPixelIteratorIsMutableConcept< Iterator > + CPixelLocatorConcept< Loc >GIL's 2-dimensional locator over immutable GIL pixels + Cpixels_are_compatible< P1, P2 >Returns whether two pixels are compatible Pixels are compatible if their channels and color space types are compatible. Compatible pixels can be assigned and copy constructed from one another + Cpixels_are_compatible< V1::value_type, V2::value_type > + Cviews_are_compatible< V1, V2 >Returns whether two views are compatible + CPixelsCompatibleConcept< P1, P2 >Concept for pixel compatibility Pixels are compatible if their channels and color space types are compatible. Compatible pixels can be assigned and copy constructed from one another + CPixelValueConcept< P >Pixel concept that is a Regular type + Cplanar_pixel_iterator< ChannelPtr, ColorSpace >An iterator over planar pixels. Models HomogeneousColorBaseConcept, PixelIteratorConcept, HomogeneousPixelBasedConcept, MemoryBasedIteratorConcept, HasDynamicXStepTypeConcept + Cplanar_pixel_reference< ChannelReference, ColorSpace >A reference proxy to a planar pixel + Cplus_asymmetric< T1, T2 >Plus function object whose arguments may be of different type + Cpoint< T >2D point both axes of which have the same dimension typeModels: Point2DConcept + CPoint2DConcept< P >2-dimensional point concept + Cpoint< std::ptrdiff_t > + Cpoint< std::size_t > + CPointNDConcept< P >N-dimensional point concept + Cposition_iterator< Deref, Dim >An iterator that remembers its current X,Y position and invokes a function object with it upon dereferencing. Used to create virtual image views. Models: StepIteratorConcept, PixelIteratorConcept, PixelBasedConcept, HasDynamicXStepTypeConcept + Cpromote_integral< T, PromoteUnsignedToUnsigned, UseCheckedInteger, IsIntegral >Meta-function to define an integral type with size than is (roughly) twice the bit size of T + CRandomAccess2DImageConcept< Image >2-dimensional container of values + CRandomAccess2DImageViewConcept< View >2-dimensional view over immutable values + CRandomAccess2DImageViewIsMutableConcept< View > + CRandomAccess2DLocatorConcept< Loc >2-dimensional locator over immutable values + CRandomAccessNDImageConcept< Image >N-dimensional container of values + CRandomAccessNDImageViewConcept< View >N-dimensional view over immutable values + CRandomAccessNDImageViewIsMutableConcept< View > + CRandomAccessNDLocatorConcept< Loc >N-dimensional locator over immutable values + CRandomAccessNDLocatorIsMutableConcept< Loc > + Cfile_stream_device< FormatTag >::read_tagUsed to overload the constructor + Creader_base< FormatTag, ConversionPolicy > + Cred_tRed + CRegular< T >Concept for type regularity requirement + CReversibleCollectionImageViewConcept< View >GIL view as ReversibleCollection + Crgb_to_luminance_fn< RedChannel, GreenChannel, BlueChannel, GrayChannelValue >Red * .3 + green * .59 + blue * .11 + .5 + CSameType< T, U >Concept of types equivalence requirement + Cscanline_read_iterator< Reader >Input iterator to read images + Csize< ColorBase >Returns an integral constant type specifying the number of elements in a color base + Cstd_fill_tStruct to do std::fill + Cstep_iterator_adaptor< Derived, Iterator, SFn >An adaptor over an existing iterator that changes the step unit + Cstep_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > + Cmemory_based_step_iterator< Iterator >MEMORY-BASED STEP ITERATOR + CStepIteratorConcept< Iterator >Step iterator concept + CSwappable< T >Concept of swap operation requirement + Ctransposed_type< LocatorOrView > + Ctuple_limit< Tuple >Provides equivalent of std::numeric_limits for type std::tuple tuple_limit gets called with only tuples having integral elements + Ctype_from_x_iterator< XIterator >Given a pixel iterator defining access to pixels along a row, returns the types of the corresponding built-in step_iterator, xy_locator, image_view + Ctype_to_index< Types, T >Returns the index corresponding to the first occurrance of a given given type in + Ctype_to_index< ColorBase::layout_t::color_space_t, Color > + Cview_is_basic< View >Basic views must be over basic locators + Cview_type< T, L, IsPlanar, IsStepX, IsMutable >Returns the type of a homogeneous view given the channel type, layout, whether it operates on planar data and whether it has a step horizontally + Cview_type_from_pixel< Pixel, IsPlanar, IsStepX, IsMutable >Returns the type of a view the pixel type, whether it operates on planar data and whether it has a step horizontally + Cview_type_from_pixel< Pixel, IsPlanar > + CViewsCompatibleConcept< V1, V2 >Views are compatible if they have the same color spaces and compatible channel values + Cyellow_tYellow

diff --git a/html/reference/histogram_8hpp_source.html b/html/reference/histogram_8hpp_source.html index 2d4cbcb1d..ce92ced48 100644 --- a/html/reference/histogram_8hpp_source.html +++ b/html/reference/histogram_8hpp_source.html @@ -145,11 +145,11 @@

Boost GIL 136 template <typename Tuple>
138 {
-
139  static constexpr Tuple min()
+
139  static constexpr Tuple (min)()
140  {
141  return min_impl(boost::mp11::make_index_sequence<std::tuple_size<Tuple>::value>{});
142  }
-
143  static constexpr Tuple max()
+
143  static constexpr Tuple (max)()
144  {
145  return max_impl(boost::mp11::make_index_sequence<std::tuple_size<Tuple>::value>{});
146  }
@@ -159,14 +159,14 @@

Boost GIL 150  static constexpr Tuple min_impl(boost::mp11::index_sequence<I...>)
151  {
152  return std::make_tuple(
-
153  std::numeric_limits<typename std::tuple_element<I, Tuple>::type>::min()...);
+
153  (std::numeric_limits<typename std::tuple_element<I, Tuple>::type>::min)()...);
154  }
155 
156  template <std::size_t... I>
157  static constexpr Tuple max_impl(boost::mp11::index_sequence<I...>)
158  {
159  return std::make_tuple(
-
160  std::numeric_limits<typename std::tuple_element<I, Tuple>::type>::max()...);
+
160  (std::numeric_limits<typename std::tuple_element<I, Tuple>::type>::max)()...);
161  }
162 };
163 
@@ -567,9 +567,9 @@

Boost GIL 638  bool applymask = false,
639  std::vector<std::vector<bool>> mask = {},
640  typename histogram<T...>::key_type lower =
-
641  detail::tuple_limit<typename histogram<T...>::key_type>::min(),
+
641  (detail::tuple_limit<typename histogram<T...>::key_type>::min)(),
642  typename histogram<T...>::key_type upper =
-
643  detail::tuple_limit<typename histogram<T...>::key_type>::max(),
+
643  (detail::tuple_limit<typename histogram<T...>::key_type>::max)(),
644  bool setlimits = false)
645 {
646  if (!accumulate)
diff --git a/html/reference/histogram__equalization_8hpp_source.html b/html/reference/histogram__equalization_8hpp_source.html index 0926a6d29..86e4be21a 100644 --- a/html/reference/histogram__equalization_8hpp_source.html +++ b/html/reference/histogram__equalization_8hpp_source.html @@ -87,8 +87,8 @@

Boost GIL 70  using value_t = typename histogram<SrcKeyType>::value_type;
71  dst_hist.clear();
72  double sum = src_hist.sum();
-
73  SrcKeyType min_key = std::numeric_limits<DstKeyType>::min();
-
74  SrcKeyType max_key = std::numeric_limits<DstKeyType>::max();
+
73  SrcKeyType min_key = (std::numeric_limits<DstKeyType>::min)();
+
74  SrcKeyType max_key = (std::numeric_limits<DstKeyType>::max)();
75  auto cumltv_srchist = cumulative_histogram(src_hist);
76  std::map<SrcKeyType, DstKeyType> color_map;
77  std::for_each(cumltv_srchist.begin(), cumltv_srchist.end(), [&](value_t const& v) {
@@ -127,8 +127,8 @@

Boost GIL 120  std::size_t const channels = num_channels<SrcView>::value;
121  coord_t const width = src_view.width();
122  coord_t const height = src_view.height();
-
123  std::size_t pixel_max = std::numeric_limits<dst_channel_t>::max();
-
124  std::size_t pixel_min = std::numeric_limits<dst_channel_t>::min();
+
123  std::size_t pixel_max = (std::numeric_limits<dst_channel_t>::max)();
+
124  std::size_t pixel_min = (std::numeric_limits<dst_channel_t>::min)();
125 
126  for (std::size_t i = 0; i < channels; i++)
127  {
diff --git a/html/reference/histogram__matching_8hpp_source.html b/html/reference/histogram__matching_8hpp_source.html index 58147898b..d6904e82f 100644 --- a/html/reference/histogram__matching_8hpp_source.html +++ b/html/reference/histogram__matching_8hpp_source.html @@ -169,10 +169,10 @@

Boost GIL 166  std::size_t const channels = num_channels<SrcView>::value;
167  coord_t const width = src_view.width();
168  coord_t const height = src_view.height();
-
169  source_channel_t src_pixel_min = std::numeric_limits<source_channel_t>::min();
-
170  source_channel_t src_pixel_max = std::numeric_limits<source_channel_t>::max();
-
171  ref_channel_t ref_pixel_min = std::numeric_limits<ref_channel_t>::min();
-
172  ref_channel_t ref_pixel_max = std::numeric_limits<ref_channel_t>::max();
+
169  source_channel_t src_pixel_min = (std::numeric_limits<source_channel_t>::min)();
+
170  source_channel_t src_pixel_max = (std::numeric_limits<source_channel_t>::max)();
+
171  ref_channel_t ref_pixel_min = (std::numeric_limits<ref_channel_t>::min)();
+
172  ref_channel_t ref_pixel_max = (std::numeric_limits<ref_channel_t>::max)();
173 
174  for (std::size_t i = 0; i < channels; i++)
175  {
diff --git a/html/reference/image__view__factory_8hpp_source.html b/html/reference/image__view__factory_8hpp_source.html index 04e0dc637..9d3b625d6 100644 --- a/html/reference/image__view__factory_8hpp_source.html +++ b/html/reference/image__view__factory_8hpp_source.html @@ -197,7 +197,7 @@

Boost GIL 180 
183 template <typename DstP, typename View, typename CC>
184 inline auto color_converted_view(View const& src,CC cc)
- +
185  -> typename color_converted_view_type<View,DstP,CC>::type
186 {
188 }
diff --git a/html/reference/numeric_8hpp_source.html b/html/reference/numeric_8hpp_source.html index d472ba747..a3db85b04 100644 --- a/html/reference/numeric_8hpp_source.html +++ b/html/reference/numeric_8hpp_source.html @@ -152,148 +152,153 @@

Boost GIL 136  throw std::invalid_argument("kernel dimensions should be odd and equal");
137 
138  const double denominator = 2 * boost::gil::detail::pi * sigma * sigma;
-
139  auto middle = side_length / 2;
+
139  auto const middle = side_length / 2;
140  std::vector<T, Allocator> values(side_length * side_length);
-
141  for (std::size_t y = 0; y < side_length; ++y)
-
142  {
-
143  for (std::size_t x = 0; x < side_length; ++x)
-
144  {
-
145  const auto delta_x = middle > x ? middle - x : x - middle;
-
146  const auto delta_y = middle > y ? middle - y : y - middle;
-
147  const double power = (delta_x * delta_x + delta_y * delta_y) / (2 * sigma * sigma);
-
148  const double nominator = std::exp(-power);
-
149  const float value = static_cast<float>(nominator / denominator);
-
150  values[y * side_length + x] = value;
-
151  }
-
152  }
-
153 
-
154  return detail::kernel_2d<T, Allocator>(values.begin(), values.size(), middle, middle);
-
155 }
-
156 
-
164 template <typename T = float, typename Allocator = std::allocator<T>>
-
165 inline auto generate_dx_sobel(unsigned int degree = 1)
- -
167 {
-
168  switch (degree)
-
169  {
-
170  case 0:
-
171  {
-
172  return detail::get_identity_kernel<T, Allocator>();
-
173  }
-
174  case 1:
-
175  {
-
176  detail::kernel_2d<T, Allocator> result(3, 1, 1);
-
177  std::copy(detail::dx_sobel.begin(), detail::dx_sobel.end(), result.begin());
-
178  return result;
-
179  }
-
180  default:
-
181  throw std::logic_error("not supported yet");
-
182  }
-
183 
-
184  //to not upset compiler
-
185  throw std::runtime_error("unreachable statement");
-
186 }
-
187 
-
195 template <typename T = float, typename Allocator = std::allocator<T>>
-
196 inline auto generate_dx_scharr(unsigned int degree = 1)
- -
198 {
-
199  switch (degree)
-
200  {
-
201  case 0:
-
202  {
-
203  return detail::get_identity_kernel<T, Allocator>();
-
204  }
-
205  case 1:
-
206  {
-
207  detail::kernel_2d<T, Allocator> result(3, 1, 1);
-
208  std::copy(detail::dx_scharr.begin(), detail::dx_scharr.end(), result.begin());
-
209  return result;
-
210  }
-
211  default:
-
212  throw std::logic_error("not supported yet");
-
213  }
-
214 
-
215  //to not upset compiler
-
216  throw std::runtime_error("unreachable statement");
-
217 }
-
218 
-
226 template <typename T = float, typename Allocator = std::allocator<T>>
-
227 inline auto generate_dy_sobel(unsigned int degree = 1)
- -
229 {
-
230  switch (degree)
-
231  {
-
232  case 0:
-
233  {
-
234  return detail::get_identity_kernel<T, Allocator>();
-
235  }
-
236  case 1:
-
237  {
-
238  detail::kernel_2d<T, Allocator> result(3, 1, 1);
-
239  std::copy(detail::dy_sobel.begin(), detail::dy_sobel.end(), result.begin());
-
240  return result;
-
241  }
-
242  default:
-
243  throw std::logic_error("not supported yet");
-
244  }
-
245 
-
246  //to not upset compiler
-
247  throw std::runtime_error("unreachable statement");
-
248 }
-
249 
-
257 template <typename T = float, typename Allocator = std::allocator<T>>
-
258 inline auto generate_dy_scharr(unsigned int degree = 1)
- -
260 {
-
261  switch (degree)
-
262  {
-
263  case 0:
-
264  {
-
265  return detail::get_identity_kernel<T, Allocator>();
-
266  }
-
267  case 1:
-
268  {
-
269  detail::kernel_2d<T, Allocator> result(3, 1, 1);
-
270  std::copy(detail::dy_scharr.begin(), detail::dy_scharr.end(), result.begin());
-
271  return result;
-
272  }
-
273  default:
-
274  throw std::logic_error("not supported yet");
-
275  }
-
276 
-
277  //to not upset compiler
-
278  throw std::runtime_error("unreachable statement");
-
279 }
-
280 
-
290 template <typename GradientView, typename OutputView>
- -
292  GradientView dx,
-
293  GradientView dy,
-
294  OutputView ddxx,
-
295  OutputView dxdy,
-
296  OutputView ddyy)
-
297 {
-
298  auto sobel_x = generate_dx_sobel();
-
299  auto sobel_y = generate_dy_sobel();
-
300  detail::convolve_2d(dx, sobel_x, ddxx);
-
301  detail::convolve_2d(dx, sobel_y, dxdy);
-
302  detail::convolve_2d(dy, sobel_y, ddyy);
-
303 }
-
304 
-
305 }} // namespace boost::gil
-
306 
-
307 #endif
+
141  T sum{0};
+
142  for (std::size_t y = 0; y < side_length; ++y)
+
143  {
+
144  for (std::size_t x = 0; x < side_length; ++x)
+
145  {
+
146  const auto delta_x = x - middle;
+
147  const auto delta_y = y - middle;
+
148  const auto power = static_cast<double>(delta_x * delta_x + delta_y * delta_y) / (2 * sigma * sigma);
+
149  const double nominator = std::exp(-power);
+
150  const auto value = static_cast<T>(nominator / denominator);
+
151  values[y * side_length + x] = value;
+
152  sum += value;
+
153  }
+
154  }
+
155 
+
156  // normalize so that Gaussian kernel sums up to 1.
+
157  std::transform(values.begin(), values.end(), values.begin(), [&sum](const auto & v) { return v/sum; });
+
158 
+
159  return detail::kernel_2d<T, Allocator>(values.begin(), values.size(), middle, middle);
+
160 }
+
161 
+
169 template <typename T = float, typename Allocator = std::allocator<T>>
+
170 inline auto generate_dx_sobel(unsigned int degree = 1)
+ +
172 {
+
173  switch (degree)
+
174  {
+
175  case 0:
+
176  {
+
177  return detail::get_identity_kernel<T, Allocator>();
+
178  }
+
179  case 1:
+
180  {
+
181  detail::kernel_2d<T, Allocator> result(3, 1, 1);
+
182  std::copy(detail::dx_sobel.begin(), detail::dx_sobel.end(), result.begin());
+
183  return result;
+
184  }
+
185  default:
+
186  throw std::logic_error("not supported yet");
+
187  }
+
188 
+
189  //to not upset compiler
+
190  throw std::runtime_error("unreachable statement");
+
191 }
+
192 
+
200 template <typename T = float, typename Allocator = std::allocator<T>>
+
201 inline auto generate_dx_scharr(unsigned int degree = 1)
+ +
203 {
+
204  switch (degree)
+
205  {
+
206  case 0:
+
207  {
+
208  return detail::get_identity_kernel<T, Allocator>();
+
209  }
+
210  case 1:
+
211  {
+
212  detail::kernel_2d<T, Allocator> result(3, 1, 1);
+
213  std::copy(detail::dx_scharr.begin(), detail::dx_scharr.end(), result.begin());
+
214  return result;
+
215  }
+
216  default:
+
217  throw std::logic_error("not supported yet");
+
218  }
+
219 
+
220  //to not upset compiler
+
221  throw std::runtime_error("unreachable statement");
+
222 }
+
223 
+
231 template <typename T = float, typename Allocator = std::allocator<T>>
+
232 inline auto generate_dy_sobel(unsigned int degree = 1)
+ +
234 {
+
235  switch (degree)
+
236  {
+
237  case 0:
+
238  {
+
239  return detail::get_identity_kernel<T, Allocator>();
+
240  }
+
241  case 1:
+
242  {
+
243  detail::kernel_2d<T, Allocator> result(3, 1, 1);
+
244  std::copy(detail::dy_sobel.begin(), detail::dy_sobel.end(), result.begin());
+
245  return result;
+
246  }
+
247  default:
+
248  throw std::logic_error("not supported yet");
+
249  }
+
250 
+
251  //to not upset compiler
+
252  throw std::runtime_error("unreachable statement");
+
253 }
+
254 
+
262 template <typename T = float, typename Allocator = std::allocator<T>>
+
263 inline auto generate_dy_scharr(unsigned int degree = 1)
+ +
265 {
+
266  switch (degree)
+
267  {
+
268  case 0:
+
269  {
+
270  return detail::get_identity_kernel<T, Allocator>();
+
271  }
+
272  case 1:
+
273  {
+
274  detail::kernel_2d<T, Allocator> result(3, 1, 1);
+
275  std::copy(detail::dy_scharr.begin(), detail::dy_scharr.end(), result.begin());
+
276  return result;
+
277  }
+
278  default:
+
279  throw std::logic_error("not supported yet");
+
280  }
+
281 
+
282  //to not upset compiler
+
283  throw std::runtime_error("unreachable statement");
+
284 }
+
285 
+
295 template <typename GradientView, typename OutputView>
+ +
297  GradientView dx,
+
298  GradientView dy,
+
299  OutputView ddxx,
+
300  OutputView dxdy,
+
301  OutputView ddyy)
+
302 {
+
303  auto sobel_x = generate_dx_sobel();
+
304  auto sobel_y = generate_dy_sobel();
+
305  detail::convolve_2d(dx, sobel_x, ddxx);
+
306  detail::convolve_2d(dx, sobel_y, dxdy);
+
307  detail::convolve_2d(dy, sobel_y, ddyy);
+
308 }
+
309 
+
310 }} // namespace boost::gil
+
311 
+
312 #endif
variable-size kernel
Definition: kernel.hpp:273
auto generate_gaussian_kernel(std::size_t side_length, double sigma) -> detail::kernel_2d< T, Allocator >
Generate Gaussian kernel.
Definition: numeric.hpp:132
auto generate_unnormalized_mean(std::size_t side_length) -> detail::kernel_2d< T, Allocator >
Generate kernel with all 1s.
Definition: numeric.hpp:112
-
void compute_hessian_entries(GradientView dx, GradientView dy, OutputView ddxx, OutputView dxdy, OutputView ddyy)
Compute xy gradient, and second order x and y gradients.
Definition: numeric.hpp:291
-
auto generate_dy_scharr(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generate Scharr operator in vertical direction.
Definition: numeric.hpp:258
+
void compute_hessian_entries(GradientView dx, GradientView dy, OutputView ddxx, OutputView dxdy, OutputView ddyy)
Compute xy gradient, and second order x and y gradients.
Definition: numeric.hpp:296
+
auto generate_dy_scharr(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generate Scharr operator in vertical direction.
Definition: numeric.hpp:263
double lanczos(double x, std::ptrdiff_t a)
Lanczos response at point x.
Definition: numeric.hpp:46
-
auto generate_dx_sobel(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generates Sobel operator in horizontal direction.
Definition: numeric.hpp:165
+
auto generate_dx_sobel(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generates Sobel operator in horizontal direction.
Definition: numeric.hpp:170
auto generate_normalized_mean(std::size_t side_length) -> detail::kernel_2d< T, Allocator >
Generate mean kernel.
Definition: numeric.hpp:92
-
auto generate_dy_sobel(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generates Sobel operator in vertical direction.
Definition: numeric.hpp:227
-
auto generate_dx_scharr(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generate Scharr operator in horizontal direction.
Definition: numeric.hpp:196
+
auto generate_dy_sobel(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generates Sobel operator in vertical direction.
Definition: numeric.hpp:232
+
auto generate_dx_scharr(unsigned int degree=1) -> detail::kernel_2d< T, Allocator >
Generate Scharr operator in horizontal direction.
Definition: numeric.hpp:201
BOOST_FORCEINLINE auto copy(boost::gil::pixel< T, CS > *first, boost::gil::pixel< T, CS > *last, boost::gil::pixel< T, CS > *dst) -> boost::gil::pixel< T, CS > *
Copy when both src and dst are interleaved and of the same type can be just memmove.
Definition: algorithm.hpp:145
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36
diff --git a/html/reference/path__spec_8hpp_source.html b/html/reference/path__spec_8hpp_source.html index 60fc21625..2f5ba6968 100644 --- a/html/reference/path__spec_8hpp_source.html +++ b/html/reference/path__spec_8hpp_source.html @@ -49,105 +49,112 @@

Boost GIL
1 //
2 // Copyright 2007-2008 Andreas Pokorny, Christian Henning
-
3 //
-
4 // Distributed under the Boost Software License, Version 1.0
-
5 // See accompanying file LICENSE_1_0.txt or copy at
-
6 // http://www.boost.org/LICENSE_1_0.txt
-
7 //
-
8 #ifndef BOOST_GIL_IO_PATH_SPEC_HPP
-
9 #define BOOST_GIL_IO_PATH_SPEC_HPP
-
10 
-
11 #include <boost/gil/io/detail/filesystem.hpp>
-
12 
-
13 #include <cstdlib>
-
14 #include <string>
-
15 #include <type_traits>
-
16 
-
17 namespace boost { namespace gil { namespace detail {
+
3 // Copyright 2024 Dirk Stolle
+
4 //
+
5 // Distributed under the Boost Software License, Version 1.0
+
6 // See accompanying file LICENSE_1_0.txt or copy at
+
7 // http://www.boost.org/LICENSE_1_0.txt
+
8 //
+
9 #ifndef BOOST_GIL_IO_PATH_SPEC_HPP
+
10 #define BOOST_GIL_IO_PATH_SPEC_HPP
+
11 
+
12 #include <boost/gil/io/detail/filesystem.hpp>
+
13 
+
14 #include <cstdlib>
+
15 #include <cwchar>
+
16 #include <string>
+
17 #include <type_traits>
18 
-
19 template<typename P> struct is_supported_path_spec : std::false_type {};
-
20 template<> struct is_supported_path_spec< std::string > : std::true_type {};
-
21 template<> struct is_supported_path_spec< const std::string > : std::true_type {};
-
22 template<> struct is_supported_path_spec< std::wstring > : std::true_type {};
-
23 template<> struct is_supported_path_spec< const std::wstring > : std::true_type {};
-
24 template<> struct is_supported_path_spec< char const* > : std::true_type {};
-
25 template<> struct is_supported_path_spec< char* > : std::true_type {};
-
26 template<> struct is_supported_path_spec< const wchar_t* > : std::true_type {};
-
27 template<> struct is_supported_path_spec< wchar_t* > : std::true_type {};
-
28 
-
29 template<int i> struct is_supported_path_spec<const char [i]> : std::true_type {};
-
30 template<int i> struct is_supported_path_spec<char [i]> : std::true_type {};
-
31 template<int i> struct is_supported_path_spec<const wchar_t [i]> : std::true_type {};
-
32 template<int i> struct is_supported_path_spec<wchar_t [i]> : std::true_type {};
-
33 
-
34 template<> struct is_supported_path_spec<filesystem::path> : std::true_type {};
-
35 template<> struct is_supported_path_spec<filesystem::path const> : std::true_type {};
-
36 
-
37 inline std::string convert_to_string( std::string const& obj)
-
38 {
-
39  return obj;
-
40 }
-
41 
-
42 inline std::string convert_to_string( std::wstring const& s )
-
43 {
-
44  std::size_t len = wcslen( s.c_str() );
-
45  char* c = reinterpret_cast<char*>( alloca( len ));
-
46  wcstombs( c, s.c_str(), len );
-
47 
-
48  return std::string( c, c + len );
-
49 }
-
50 
-
51 inline std::string convert_to_string( char const* str )
-
52 {
-
53  return std::string( str );
-
54 }
-
55 
-
56 inline std::string convert_to_string( char* str )
-
57 {
-
58  return std::string( str );
-
59 }
-
60 
-
61 inline std::string convert_to_string(filesystem::path const& path)
-
62 {
-
63  return convert_to_string(path.string());
-
64 }
-
65 
-
66 inline char const* convert_to_native_string( char* str )
-
67 {
-
68  return str;
-
69 }
-
70 
-
71 inline char const* convert_to_native_string( char const* str )
-
72 {
-
73  return str;
-
74 }
-
75 
-
76 inline char const* convert_to_native_string( const std::string& str )
-
77 {
-
78  return str.c_str();
-
79 }
-
80 
-
81 inline char const* convert_to_native_string( const wchar_t* str )
-
82 {
-
83  std::size_t len = wcslen( str ) + 1;
-
84  char* c = new char[len];
-
85  wcstombs( c, str, len );
-
86 
-
87  return c;
-
88 }
-
89 
-
90 inline char const* convert_to_native_string( std::wstring const& str )
-
91 {
-
92  std::size_t len = wcslen( str.c_str() ) + 1;
-
93  char* c = new char[len];
-
94  wcstombs( c, str.c_str(), len );
-
95 
-
96  return c;
-
97 }
-
98 
-
99 }}} // namespace boost::gil::detail
-
100 
-
101 #endif
+
19 namespace boost { namespace gil { namespace detail {
+
20 
+
21 template<typename P> struct is_supported_path_spec : std::false_type {};
+
22 template<> struct is_supported_path_spec< std::string > : std::true_type {};
+
23 template<> struct is_supported_path_spec< const std::string > : std::true_type {};
+
24 template<> struct is_supported_path_spec< std::wstring > : std::true_type {};
+
25 template<> struct is_supported_path_spec< const std::wstring > : std::true_type {};
+
26 template<> struct is_supported_path_spec< char const* > : std::true_type {};
+
27 template<> struct is_supported_path_spec< char* > : std::true_type {};
+
28 template<> struct is_supported_path_spec< const wchar_t* > : std::true_type {};
+
29 template<> struct is_supported_path_spec< wchar_t* > : std::true_type {};
+
30 
+
31 template<int i> struct is_supported_path_spec<const char [i]> : std::true_type {};
+
32 template<int i> struct is_supported_path_spec<char [i]> : std::true_type {};
+
33 template<int i> struct is_supported_path_spec<const wchar_t [i]> : std::true_type {};
+
34 template<int i> struct is_supported_path_spec<wchar_t [i]> : std::true_type {};
+
35 
+
36 template<> struct is_supported_path_spec<filesystem::path> : std::true_type {};
+
37 template<> struct is_supported_path_spec<filesystem::path const> : std::true_type {};
+
38 
+
39 inline std::string convert_to_string( std::string const& obj)
+
40 {
+
41  return obj;
+
42 }
+
43 
+
44 inline std::string convert_to_string( std::wstring const& s )
+
45 {
+
46  std::mbstate_t state = std::mbstate_t();
+
47  const wchar_t* str = s.c_str();
+
48  const std::size_t len = std::wcsrtombs(nullptr, &str, 0, &state);
+
49  std::string result(len, '\0');
+
50  std::wcstombs( &result[0], s.c_str(), len );
+
51 
+
52  return result;
+
53 }
+
54 
+
55 inline std::string convert_to_string( char const* str )
+
56 {
+
57  return std::string( str );
+
58 }
+
59 
+
60 inline std::string convert_to_string( char* str )
+
61 {
+
62  return std::string( str );
+
63 }
+
64 
+
65 inline std::string convert_to_string(filesystem::path const& path)
+
66 {
+
67  return convert_to_string(path.string());
+
68 }
+
69 
+
70 inline char const* convert_to_native_string( char* str )
+
71 {
+
72  return str;
+
73 }
+
74 
+
75 inline char const* convert_to_native_string( char const* str )
+
76 {
+
77  return str;
+
78 }
+
79 
+
80 inline char const* convert_to_native_string( const std::string& str )
+
81 {
+
82  return str.c_str();
+
83 }
+
84 
+
85 inline char const* convert_to_native_string( const wchar_t* str )
+
86 {
+
87  std::mbstate_t state = std::mbstate_t();
+
88  const std::size_t len = std::wcsrtombs(nullptr, &str, 0, &state) + 1;
+
89  char* c = new char[len];
+
90  std::wcstombs( c, str, len );
+
91 
+
92  return c;
+
93 }
+
94 
+
95 inline char const* convert_to_native_string( std::wstring const& str )
+
96 {
+
97  std::mbstate_t state = std::mbstate_t();
+
98  const wchar_t* wstr = str.c_str();
+
99  const std::size_t len = std::wcsrtombs(nullptr, &wstr, 0, &state) + 1;
+
100  char* c = new char[len];
+
101  std::wcstombs( c, str.c_str(), len );
+
102 
+
103  return c;
+
104 }
+
105 
+
106 }}} // namespace boost::gil::detail
+
107 
+
108 #endif
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36
diff --git a/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_00_01_c_c_01_4.html b/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_00_01_c_c_01_4.html index a0bff0e53..de8ab72ae 100644 --- a/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_00_01_c_c_01_4.html +++ b/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_00_01_c_c_01_4.html @@ -58,9 +58,9 @@

Boost GIL

Public Types

- -using type = detail::views_get_ccv_type< any_image_view< Views... >, DstP, CC > -  + +using type = typename detail::views_get_ccv_type< any_image_view< Views... >, DstP, CC >::type + 

Detailed Description

template<typename ... Views, typename DstP, typename CC>
diff --git a/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_01_4.html b/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_01_4.html index db2a4462f..c573b5bf1 100644 --- a/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_01_4.html +++ b/html/reference/structboost_1_1gil_1_1color__converted__view__type_3_01any__image__view_3_01_views_8_8_8_01_4_00_01_dst_p_01_4.html @@ -58,9 +58,9 @@

Boost GIL

Public Types

- -using type = detail::views_get_ccv_type< any_image_view< Views... >, DstP, default_color_converter > -  + +using type = typename detail::views_get_ccv_type< any_image_view< Views... >, DstP, default_color_converter >::type + 

Detailed Description

template<typename ... Views, typename DstP>
diff --git a/html/reference/structboost_1_1gil_1_1detail_1_1tuple__limit.html b/html/reference/structboost_1_1gil_1_1detail_1_1tuple__limit.html index 30c0e31e2..7bcac83a2 100644 --- a/html/reference/structboost_1_1gil_1_1detail_1_1tuple__limit.html +++ b/html/reference/structboost_1_1gil_1_1detail_1_1tuple__limit.html @@ -58,12 +58,12 @@

Boost GIL

Static Public Member Functions

- -static constexpr Tuple min () -  - -static constexpr Tuple max () -  + +static constexpr Tuple() min () +  + +static constexpr Tuple() max () + 

Detailed Description

template<typename Tuple>
diff --git a/html/search.html b/html/search.html index 2693ac9d2..d56ea013c 100644 --- a/html/search.html +++ b/html/search.html @@ -21,6 +21,9 @@ + + + @@ -92,7 +95,7 @@

Search

diff --git a/html/searchindex.js b/html/searchindex.js index f3473f0b3..67ac67648 100644 --- a/html/searchindex.js +++ b/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["design/basics","design/channel","design/color_base","design/color_space","design/concepts","design/conclusions","design/dynamic_image","design/examples","design/extending","design/image","design/image_view","design/index","design/metafunctions","design/pixel","design/pixel_iterator","design/pixel_locator","design/point","design/technicalities","histogram/create","histogram/cumulative","histogram/extend","histogram/extension/index","histogram/extension/overview","histogram/extension/std","histogram/fill","histogram/index","histogram/limitations","histogram/overview","histogram/stl_compatibility","histogram/subhistogram","histogram/utilities","image_processing/affine-region-detectors","image_processing/basics","image_processing/contrast_enhancement/histogram_equalization","image_processing/contrast_enhancement/histogram_matching","image_processing/contrast_enhancement/index","image_processing/contrast_enhancement/overview","image_processing/index","image_processing/overview","index","installation","io","naming","numeric","toolbox","tutorial/gradient","tutorial/histogram","tutorial/video"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["design/basics.rst","design/channel.rst","design/color_base.rst","design/color_space.rst","design/concepts.rst","design/conclusions.rst","design/dynamic_image.rst","design/examples.rst","design/extending.rst","design/image.rst","design/image_view.rst","design/index.rst","design/metafunctions.rst","design/pixel.rst","design/pixel_iterator.rst","design/pixel_locator.rst","design/point.rst","design/technicalities.rst","histogram/create.rst","histogram/cumulative.rst","histogram/extend.rst","histogram/extension/index.rst","histogram/extension/overview.rst","histogram/extension/std.rst","histogram/fill.rst","histogram/index.rst","histogram/limitations.rst","histogram/overview.rst","histogram/stl_compatibility.rst","histogram/subhistogram.rst","histogram/utilities.rst","image_processing/affine-region-detectors.rst","image_processing/basics.rst","image_processing/contrast_enhancement/histogram_equalization.rst","image_processing/contrast_enhancement/histogram_matching.rst","image_processing/contrast_enhancement/index.rst","image_processing/contrast_enhancement/overview.rst","image_processing/index.rst","image_processing/overview.rst","index.rst","installation.rst","io.rst","naming.rst","numeric.rst","toolbox.rst","tutorial/gradient.rst","tutorial/histogram.rst","tutorial/video.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[1,2,3,7,9,10,13,15,16,20,24,29,31,32,33,34,41,45,46],"01100000":13,"04":31,"06":31,"0f":[1,45],"0rrgggbb":13,"0x06":13,"0x0c":13,"0x11":13,"0x30":13,"0x60":13,"0x83":13,"0xc1":13,"1":[1,2,3,6,7,9,10,13,14,15,16,18,20,24,29,31,32,33,34,38,40,41,45,46],"10":[13,15,29,31],"100":[6,7,10,31,45],"1000":31,"10000":31,"100000000":31,"100x100":7,"11":[1,15,29,41,46],"127":41,"128":31,"14":[39,40],"142":31,"15":[13,15,31],"150":7,"16":[0,1,7,10,12,13,42,45],"17":6,"1988":31,"1d":[7,9,10,22,23],"2":[3,7,10,13,15,16,18,24,29,31,41,45,46],"20":29,"200":[6,7,45],"2002":31,"2005":31,"200x200":45,"2019":38,"23":15,"24":15,"25":15,"255":[7,13,33,34,45],"256":7,"257":1,"2d":[0,10,29,32,42,45],"2k":7,"3":[3,7,13,29,32,41,45],"300":7,"31":1,"32":[7,12,42,45],"33":7,"3d":[18,29,32],"4":[3,13,29,41,45],"42":41,"43":31,"480":41,"4x3":0,"5":[1,3,7,13,29,41,45],"50":[31,41],"50x50":10,"5244":31,"565":[1,45],"5f":45,"6":[1,13,45],"64":[8,41],"640":41,"65":31,"65535":[1,13],"7":[7,13],"72":[31,38],"8":[0,7,9,12,13,14,15,42,45,46],"80":40,"8x":41,"9":[13,41],"90":45,"95":41,"abstract":[0,5,10,39,45],"boolean":[12,45],"byte":[1,9,10,13,14,15,17,39,45],"case":[2,5,7,8,10,12,13,15,19,20,31,33,34,41,45],"char":[7,9,10,12,13,14,41,45],"class":[1,2,4,6,8,9,10,12,13,14,15,17,19,22,24,25,27,29,39,41,45],"const":[1,2,6,7,8,9,10,12,13,14,15,16,17,20,24,41,42,45,46],"default":[1,3,6,7,8,9,10,12,14,17,20,22,42,45],"do":[1,6,7,8,13,15,18,45],"final":[2,7,8,45],"float":[1,7,12,18,19,41,42,45],"function":[2,6,8,10,12,14,15,17,19,20,25,29,31,39,41,45,46],"import":[6,9,17,41],"int":[1,2,3,7,10,13,15,18,19,20,23,24,29,41,45,46],"long":[4,7,8,10,12,45],"new":[5,22,45,46],"public":[6,8,10,14,15,41],"return":[1,2,4,6,7,8,10,12,13,14,15,17,20,29,41,45],"short":[12,41,45,46],"static":[1,2,6,7,8,10,13,14,15,45],"switch":[6,45],"throw":6,"true":[1,2,12,13,14,15,33,34,45],"try":[7,27,33,34,41,45],"var":[7,46],"void":[2,4,6,7,8,9,10,13,14,17,41,45,46],"while":[0,1,3,13,15,36,45],A:[0,1,2,3,4,6,9,10,12,13,14,15,16,17,19,24,31,32,33,41,45],And:18,As:[3,7,8,10,19,31,41,45],At:31,But:41,By:[2,6,12,32,42],For:[1,2,3,4,6,7,8,10,12,13,14,15,20,31,33,34,40,41,42,45,46],If:[6,7,8,10,18,33,34,41,45],In:[0,2,3,4,6,8,9,10,12,13,14,15,16,19,20,29,31,40,45],It:[0,1,2,3,5,6,7,8,9,10,13,14,15,16,27,31,41,45],Its:[1,2,13,14,45],No:[7,41],Not:7,OR:24,Of:[15,41],One:[15,17,31,33,34,41,45],Such:[1,6,15,45],That:[6,45],The:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,17,19,21,22,25,27,31,32,33,34,35,37,38,39,40,41,42,44,45,46],Their:[6,15,45],Then:[15,33,34,45],There:[0,2,6,12,18,32,41,45],These:[2,12,13,22,36,45],To:[1,7,8,12,14,27,31,32,33,34,41,45],_1:[7,46],_bmp_test_fil:41,_dimens:10,_dst:45,_height:41,_imag:[12,42],_img_siz:45,_in_color:45,_info:41,_io_dev:41,_is_:12,_loc:[12,42],_out_color:45,_p:15,_pixel:[10,12,42],_planar:[12,42],_png_test_fil:41,_ptr:[12,42],_ref:[12,42],_scanline_length:41,_step:[12,42],_t:[12,42],_tiff_graphicsmagick_test_fil:41,_tiff_lib_tiff_test_fil:41,_view:[12,42],_width:[15,41],_x:15,abbrevi:45,abgr_layout_t:3,abil:[19,41],abl:[14,41],about:[4,8,15,32,45,47],abov:[0,2,7,10,13,14,15,17,31,32,41,45,46],abraham:17,access:[1,2,3,6,7,8,13,15,41,45],accessor:[2,16],accordingli:8,account:7,achiev:[32,33],acknowledg:39,actual:[8,40,45,46],ad:[7,41,44],adapt:1,adaptor:[8,10,15],add:[6,8,15,22,24,41],add_deref:[8,10,15],add_ref_t:8,addit:[1,2,4,6,9,10,14,15,45],addition:45,address:[0,12,13],adjac:[10,14,45],adob:10,advanc:[10,14,15,41,45],advantag:[45,46],advis:41,affin:[37,39],after:[2,22,45],again:[15,31],against:[17,40],ah:36,alex:17,algorithm:[0,4,5,6,7,8,9,14,15,17,25,27,35,36,37,38,39],align:[0,6,9,10,13,14,39,45,46],all:[0,1,2,3,4,6,7,8,10,13,14,15,17,19,31,41,44,45],alloc:[7,9,10,12,41,45,46],allocator_typ:9,allow:[0,1,2,5,6,8,9,10,12,13,14,15,17,39,41,45],alon:32,along:[10,12,14,15,16,45],alpha:[0,44],alpha_t:3,alreadi:[12,13,41,45],also:[0,1,2,3,7,10,12,13,14,15,16,18,22,24,33,36,41,45,46],altern:[18,45],although:33,alvei:31,alwai:[13,17,42,45],among:19,amount:[14,15],an:[0,1,2,3,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,24,29,31,32,33,34,39,45,46],analog:13,analysi:[12,37],andrew:31,angl:29,ani:[0,2,5,6,7,8,10,12,14,15,27,29,31,32,40,45,46],anoth:[1,2,5,6,8,10,13,14,24,32,41,45],another_iter:14,any_imag:[6,41,45],any_image_view:[6,45],any_pixel:[6,45],any_pixel_iter:[6,45],anyth:[8,14,41],apart:22,api:39,append:12,appendix:45,appli:[0,1,14,32,33,34,39,41,45],applic:[36,41,45],appropri:[1,6,41],approxim:[13,14,45],ar:[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,21,22,25,27,31,32,33,35,37,39,41,44,45,46],arbitrari:[8,14,20,45],area:[7,10,41],aren:41,argb_layout_t:3,argument:[6,14,45],argument_typ:[8,10,45],aris:[17,24],arithmet:[1,32],around:[7,14,15,41],arrai:[0,14,15,22,23,32],ascii:41,assembl:45,assert:[1,7,13,45],assert_sam:6,assign:[1,2,4,6,9,13,17,24,45],assignableconcept:14,associ:[1,2,3,6,12,45],assum:[31,45],asymmetr:45,at_c:[2,13],atom:45,author:41,auto:[4,18,19,29,41,45],automat:41,av:6,avail:[6,10,15,22,24,37,41,45],averag:15,avoid:45,awai:[10,14],ax:[18,27,29],axi:[10,15,16,18,20,29,32,45],axis1:18,axis2:18,axis3:18,axis:32,axis_iter:[10,15],axis_valu:16,b16:7,b:[1,6,7,10,24,31,42,46],back:[6,10,45],backend:41,backend_t:41,backward:42,bad_cast:6,base:[1,6,10,11,13,14,15,17,39,41,45,46],basic:[4,11,12,31,37,39,41],beauti:36,becam:41,becaus:[1,6,9,10,12,13,15,31,45],been:[5,34,41,45,46],befor:[19,20,24,33,34,41],begin:[7,10,41,45,46],behav:6,being:[12,37,41],belong:44,below:[11,14,15,21,25,31,33,34,35,37,41,45],berlin:31,besid:[3,41],beta:10,better:45,between:[1,6,8,10,13,14,29,33,34,45],bgr16_view_t:7,bgr16s_pixel_t:45,bgr16s_view_t:45,bgr232:13,bgr232_pixel_t:13,bgr232_ptr_t:13,bgr232_ref_t:13,bgr556:13,bgr556_pixel_t:13,bgr8:13,bgr8_image_t:[12,42],bgr8_pixel_t:[7,13],bgr8_view_t:6,bgr:[0,2,7,12,13,42,45,46],bgr_layout_t:[3,13],bgra_layout_t:3,big:[31,41],biggest:45,bilinear:39,bin:[7,19,24,27,29,33,34],binari:[41,45],binaryfunctionconcept:10,bit:[0,1,2,7,8,9,10,13,14,15,41,42,45,46],bit_align:13,bit_aligned_image1_typ:12,bit_aligned_image2_typ:12,bit_aligned_image3_typ:12,bit_aligned_image4_typ:12,bit_aligned_image5_typ:12,bit_aligned_image_typ:12,bit_aligned_pixel_iter:[13,14],bit_aligned_pixel_refer:13,bitdepth:[12,42],bitfield:12,bitmask:39,bits16:1,bits32f:1,bits8:[7,10,13,14],bitwis:10,block:[10,45],blue:[2,7,13,17,24,29],blue_t:[2,3,7,13],blur:[31,39],bmp_filenam:41,bmp_test_fil:41,bmp_wiki:41,bodi:45,bool:[1,2,4,6,8,9,10,12,13,14,15,20,33,34,45],boost:[3,6,7,10,12,14,20,22,38,40,41,44,45,46],boost_check_equ:41,boost_concept:14,boost_gil_extension_io_jpeg_c_lib_compiled_as_cplusplu:41,boost_gil_extension_io_png_c_lib_compiled_as_cplusplu:41,boost_gil_extension_io_tiff_c_lib_compiled_as_cplusplu:41,boost_gil_extension_io_zlib_c_lib_compiled_as_cplusplu:41,boost_gil_io_enable_gray_alpha:41,boost_gil_io_png_1_4_or_low:41,boost_gil_io_png_dithering_support:41,boost_gil_io_png_fixed_point_support:41,boost_gil_io_png_floating_point_support:41,boost_gil_io_test_allow_reading_imag:41,boost_gil_io_test_allow_writing_imag:41,boost_gil_io_use_bmp_test_suite_imag:41,boost_gil_io_use_boost_filesystem:41,boost_gil_io_use_png_test_suite_imag:41,boost_gil_io_use_pnm_test_suite_imag:41,boost_gil_io_use_tiff_graphicsmagick_test_suite_imag:41,boost_gil_io_use_tiff_libtiff_test_suite_imag:41,boost_gil_use_concept_check:[10,45],boost_mpl_assert:13,boostorg:40,border:7,both:[0,6,7,13,15,16,31,34,41,45,46],bottom:[0,10,15,45],bound:[6,13],boundari:45,bourdev:47,brace:24,bracket:29,branch:40,bring:[33,34],buffer:[7,13,45],build:[0,40,41],built:[1,7,12,13,14,27,40,45],byte_to_memunit:14,c1:2,c2:2,c:[1,4,6,12,13,15,17,20,24,31,39,40,41,42,45,46],c_str:41,cach:[15,45],cache_loc:[15,45],cached_location_t:[15,45],calcul:[19,33,34,46],call:[6,7,8,10,13,17,19,31,41,45,46],can:[2,4,5,6,7,8,9,10,12,13,14,15,16,17,24,27,31,32,39,40,41,45,46],cannot:[7,10,32,45],canon:[13,45],capabl:41,captur:3,care:[8,33],carriag:[15,45],cast:45,cater:24,caus:[31,45],caution:6,cav:6,cb1:2,cb2:2,cb3:2,cb:2,cc:41,cc_t:41,ccv:10,ccv_imag:45,cell:24,center:[7,32],centerimg:7,central:45,certain:32,challeng:[0,45],chan16:1,chang:[6,8,10,12,14,22,31,41,45,46],channel16_0_5_reference_t:1,channel16_11_5_reference_t:1,channel16_5_6_reference_t:1,channel1:1,channel2:1,channel3:1,channel:[0,2,3,5,6,7,10,11,12,13,14,17,24,29,32,33,34,39,41,42,45,46],channel_6bit:1,channel_convert:[1,7,8,13,45],channel_convert_to_unsign:45,channel_invert:[1,8],channel_mapping_t:3,channel_mapping_typ:[12,13,45],channel_multipli:1,channel_t:45,channel_trait:[1,8],channel_typ:[7,12,13,44,45],channel_type_to_index:44,channelbitsizevector:12,channelconcept:[1,13],channelconvertibleconcept:1,channelmap:3,channelmappingconcept:[3,13],channelptr:14,channelrefer:13,channelrefvec:14,channelscompatibleconcept:[1,13],channelvalu:[12,13,14],channelvalueconcept:[1,12],check:[6,7,10,15,29,40,45],choic:[15,31],choos:15,chose:7,christoph:31,chunki:45,ci:40,claim:41,classtyp:[12,42],clear:[24,32,41],client:40,clockwis:45,clone:27,close:41,closer:45,cmake:22,cmyk16_pixel_t:[12,13,42],cmyk16_planar_image_t:6,cmyk16_planar_step_view_t:6,cmyk16_planar_view_t:6,cmyk16c_planar_ref_t:42,cmyk16c_planar_view_t:6,cmyk16sc_planar_ref_t:12,cmyk8_image_t:41,cmyk:[0,12,42],cmyk_t:3,cmyka:44,code:[0,5,6,7,8,10,15,20,38,39,40,41,42,46],col:46,col_begin:[10,45],col_end:10,collect:[6,44],color:[0,1,5,6,7,10,11,12,13,14,15,29,33,34,39,41,42,44,46],color_bas:2,color_const_reference_t:2,color_convert:[8,13,44],color_convert_deref_fn:[8,14],color_convert_view:8,color_converted_view:[7,8,10,45,46],color_converted_view_typ:[8,10],color_converter_typ:41,color_reference_t:2,color_spac:44,color_space_t:[2,3],color_space_typ:[7,8,12,13,45],colorbas:2,colorbaseconcept:[2,13],colorbasescompatibleconcept:[2,13],colorbasevalueconcept:2,colorconvert:10,colorspac:[3,12,13,14,42],colorspace1:3,colorspace2:3,colorspaceconcept:[3,13],colorspacescompatibleconcept:[2,3,45],column:[14,15,45,46],com:[10,40,47],combin:[6,14,15,31,45],come:[12,41],commerci:46,common:[0,2,4,6,41],commonli:13,commun:44,compact:1,compactli:[7,45],compar:[0,1,2,5,6,7,45],comparison:[1,6,15,31],compat:[1,2,3,6,7,10,13,25,27,39,41,45],compil:[1,2,5,6,7,10,13,14,17,27,45],complement:5,complet:[40,41,45],complex:[6,7,13,15,24,31,45],complic:[8,9,17],compon:[0,1,42],compos:[10,14],comprehend:45,comprehens:45,compris:3,comput:[7,15,31,32,45,46],computexgradientgray8:45,concentr:33,concept:[0,1,2,5,8,9,10,11,13,14,15,16,31,32,39,45],concept_check:[10,45],concept_map:4,conceptc:4,conceptu:13,conclus:[11,39],concret:[6,45],condit:[15,31],confer:31,config:22,configur:[18,40],consid:[1,3,6,13,19,20,32,46],consist:[2,15,40,45],const_iterator_typ:14,const_point:1,const_refer:[1,8,10,13,14,45],const_t:[6,8,9,10,14,15,45],const_view:[9,45],const_view_t:[6,9],constant:[2,10,12,13,17,31,45],constexpr:[8,45],construct:[1,4,5,6,7,8,9,10,12,13,14,17,24,27,45],constructor:[1,6,7,9,17,18,24,45],consult:41,contain:[1,2,3,6,7,9,13,14,19,21,41,45],content:44,context:[32,41],contigu:2,contrast:[33,36,37,39],conveni:8,convent:[39,45],convers:[1,13,14,15,27,41],conversionpolici:41,convert:[1,2,7,8,10,12,13,14,19,33,34,41,44,45],convolut:[10,37,39],convolv:[7,32],coord:45,coord_t:[9,10,15],coordin:[15,16,41,45],copi:[1,2,6,7,8,9,10,13,15,17,19,24,41,45,46],copy_and_convert_pixel:[10,45],copy_pixel:[6,7,10,41,45],copyabl:10,copyconstruct:[2,4],copyconstructibleconcept:14,cordelia:31,corner:[7,10,31,45],correct:45,correctli:[4,17],correspond:[1,2,5,8,10,14,18,32,33,34,45],cost:5,could:[6,7,10,14,15,18,32,41,45],count:[7,19],counter:45,counterpart:41,coupl:41,cours:[15,41],cout:[20,24],cover:[31,33],cpp:39,creat:[1,3,6,7,8,12,13,14,15,19,25,27,39,41],create_with_margin:7,cstddef:20,cumul:[25,27,33,34,39],cumulative_histogram:[19,23],curli:24,current:[3,6,14,15,22,40,41,45],curvatur:[31,37],custom:[1,10,15],d:[10,14,15,31,42,45],d_channel_t:45,dark:36,data:[1,5,8,9,10,41,42,45],dave:17,deal:45,dealloc:45,debug:45,decent:41,declar:45,decrement:15,dedic:[11,21,25,35,37],deep:[6,9,17,45],deeper:31,default_color_convert:10,default_color_converter_impl:8,defaultconstruct:4,defaultconstructibleconcept:14,defin:[0,1,2,3,4,6,10,12,13,14,15,16,17,39,41,45],definit:[3,44],degrad:45,degre:45,delai:15,deleg:10,delet:9,demand:41,demo:[23,29],demonstr:[10,24,41,45],denot:[14,17,45],depend:[32,40,41],depth:[0,6,7,10,12,14,42,45,46],deref:[10,15],deref_compos:14,deref_t:[8,45],derefer:[8,45],dereferenc:[7,8,10,12,14,15,17],dereference_iterator_adaptor:14,deriv:[10,31,37],derived_image_typ:[12,45],derived_iterator_typ:[12,45],derived_pixel_reference_typ:[12,45],derived_view_typ:[12,45],describ:[0,2,4,11,15,16,21,25,35,37,41],descript:[41,42],design:[0,2,5,39,41,45],desir:[29,33,45],despit:6,destin:[1,6,7,8,41,45],destroi:6,destructor:[9,45],det:31,detail:[2,6,14,41,45],detect:[37,41,45],detector:[37,39],determin:[14,15,31],develop:[10,38,40],devic:41,devicen_t:3,diagram:15,diff:14,differ:[1,6,13,14,15,17,31,32,34,41,45],difference_typ:[10,15],difficult:[0,45],dim:[6,9,45],dimens:[6,9,10,15,16,24,29,31,33,34,41,45],dimension:[7,9,10,15,16,45],direct:[12,14,15,31,32,41,45],directli:[7,13,15,17,18,24,41,45,46],directori:44,disadvantag:45,discrimin:31,discuss:0,disk:[6,8,45],dispatch:8,displai:41,distanc:[14,45],distinct:[1,13,31,45],distribut:[13,33],dither:41,divis:14,do_swap:6,doc:22,document:[0,4,21,25,32,35,37,41,45],doe:[1,7,10,12,17,40,45],doesn:[41,45],don:[6,8,9,10,12,13,15,36,45],done:[7,15,18,32,41,45],doubl:[8,45],down:[6,7,10],download:[10,40],draw:32,drawback:45,drive:41,dst:[1,2,7,8,10,41,45],dst_channel_t:45,dst_img:[33,34],dst_it:45,dst_pixel:45,dst_row_byt:45,dst_view:41,dstchannel:1,dstcolorspac:8,dstimag:7,dstp:[8,10],dstpixel:13,dstview:45,due:[13,24],dummi:29,duplic:46,dure:[27,38,41],dx:31,dxdx:31,dxdy:31,dy:31,dydi:31,dynam:[11,12,14,15,39,41],dynamic_at_c:[2,13],dynamic_imag:[6,39,45],dynamic_image_al:[6,45],dynamic_x_step_typ:[6,10,14],dynamic_xy_step_transposed_typ:10,dynamic_xy_step_typ:[6,10],dynamic_y_step_typ:[10,15],e:[3,9,10,14,15,20,27,33,34,45],each:[0,2,7,8,10,13,15,16,19,33,34,41,45],earli:[10,45],easi:[41,45],easier:[10,18,45],easili:45,edg:[31,45],effect:[32,45],effici:[0,7,10,14,15,45,46],either:[6,7,8,10,14,34,41,45],element:[2,3,10,11,13,14,32,45],element_const_reference_typ:[2,13],element_recurs:2,element_reference_typ:[2,13],element_typ:2,els:[8,15],elsewher:19,email:41,enabl:41,encod:41,end:[0,7,9,10,15,41,45,46],enhanc:[33,36,37,39],enough:31,ensur:[10,45],entir:[33,45],enumer:[41,45],epipolar:38,equal:[1,2,3,6,10,13,15,34,36,45],equal_pixel:10,equalitycompar:[1,2,4],equival:[2,6,10,14,15],error:[1,6,7,10,17,45],especi:6,essenti:0,establish:42,etc:[0,6,10,13,22,33,34,40,41,45],european:31,evalu:[12,14],even:[6,7,8,41,45,46],ever:7,everi:[5,6,10,14,15,42,45,46],everyth:8,exact:32,exactli:13,exampl:[1,2,3,4,6,8,10,11,12,13,14,15,17,18,19,20,32,41,42,45,46],except:[2,6,8,10,14,15,40,45],exclud:45,execut:[6,45],exercis:45,exist:[5,7,8,19,41,46],expect:[34,41],expens:45,explan:[10,31,33,34,41],explicit:[6,13,45],explicitli:45,extend:[5,11,25,27,39,45],extending_gil__io_with_new_format:41,extens:[6,8,10,25,40,45,46],extern:[21,41],extra:[7,10,13,45,46],extract:45,extrem:31,ey:36,f:[10,12,42],fact:[41,45],factori:[8,10,45],fail:45,fall:[7,10],fals:[8,12,15,23,24,29,45],familiar:45,famou:34,far:45,fast:[10,15,45],faster:[1,5,9,15,45],fastest:7,featr:46,featur:[31,34,37,38,41,46],fetch:45,few:[24,29,33,34,36,41],fewer:29,file:[6,8,20,22,40,41,45],file_nam:6,filenam:41,filesystem:41,fill:[2,7,10,13,15,19,23,25,27,29,39,41,45],fill_histogram:[22,23,24,29],fill_pixel:[7,10,41],fill_valu:9,filter:[15,37],find:[15,40],first:[0,1,2,3,6,7,8,10,13,15,19,33,38,41],first_argument_typ:10,firstbit:1,fit:13,five:[3,5,12],flat:[32,33],flatten:33,flavour:41,flexibl:[1,6,12,46],flip:[10,14,45],flipped_left_right_view:10,flipped_up_down_view:10,float_on:1,float_zero:1,flow:27,fly:14,fn:14,focu:[36,45],focus:45,folder:[32,39,41],follow:[0,1,2,3,5,6,7,9,10,12,13,15,16,22,27,31,33,41,42,44,45,46],for_each:[2,7,10,45],for_each_pixel:[7,10,24,45,46],for_each_pixel_posit:[10,45],forc:41,form:[0,9,12,13,29,31,32,45],format:[13,24,40,45],format_tag:41,formattag:41,forward:14,forwardtraversalconcept:14,found:41,four:[15,45],fourth:7,frame:38,framework:41,frederik:31,free:[15,40,45],freeli:[7,10],frequenc:19,frequent:15,friendli:[15,45],from:[0,1,5,6,7,8,12,13,14,15,18,20,22,24,27,29,31,39,40,41,45,46],fulfil:4,full:[6,13],fulli:[8,41,45],fun:10,function_requir:13,fundament:[1,15,38],fundamental_step:14,further:17,furthermor:[41,45],futur:46,g:[7,10,15,31,33,34,46],gap:10,gaussian:[31,32],gener:[0,2,4,6,7,9,10,11,14,16,20,31,32,42],generate_pixel:10,geometri:38,get:[1,6,8,10,12,14,19,20,27,29,31,32,45],get_color:[2,7,8,13],get_info:41,get_num_bit:44,get_num_it:45,get_pixel_typ:44,get_read_devic:41,get_reader_backend:41,gil:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,27,29,35,36,37,39,40,42,44,47],gil_function_requir:[2,7,10,45],github:40,give:[7,15,41],given:[0,2,6,8,9,10,12,13,14,15,17,31,45],glimps:45,global:45,go:[15,41,45],goal:[5,33],goe:45,good:[32,33,36,45],googl:38,gool:31,gradient:[31,32,39],grai:[7,8,31,44],graph:32,grate:17,gray16:41,gray16_image_t:[41,45],gray16_pixel_t:45,gray16_step_view_t:10,gray16c_view_t:45,gray1:[41,45],gray1_image_t:41,gray2:41,gray32s_pixel_t:45,gray32s_view_t:45,gray4:41,gray4_image_t:41,gray7:41,gray8:41,gray8_image_t:[6,18,23,24,33,34,41,45],gray8_pixel_t:[7,8,24,45,46],gray8_view_t:7,gray8c_loc_t:45,gray8c_view_t:45,gray8s_image_t:45,gray8s_pixel_t:45,gray8s_view_t:45,gray_alpha:41,gray_alpha_16:41,gray_alpha_8:41,gray_channel_t:7,gray_color_t:[7,8],gray_cs_t:7,gray_image_t:45,gray_layout_t:45,gray_pixel_t:45,gray_t:[3,7,8,12],gray_to_rgb:7,grayimage_histogram:[7,46],graypixel:7,grayscal:[7,8,10,12,14,15,33,45],grayview:[7,46],green:[7,10,13,17,24,29,46],green_t:[2,3,7,13],grid:45,group:[0,3],guarante:4,guid:[10,39,45],guidelin:41,gv8:7,h1:19,h:[8,18,19,20,24,29,33,34,45],ha:[2,5,6,7,9,10,12,14,15,19,41,45],half:45,half_x_differ:45,halfdiff_cast_channel:45,hand:[0,5,31,39,45,46],handl:45,happen:[6,31,45],hard:[12,41],hardli:45,harrismatrix:31,hasdynamicxsteptypeconcept:[14,15],hasdynamicysteptypeconcept:15,hash:20,hash_combin:20,hash_valu:20,hasher:20,hassl:45,hastransposedtypeconcept:15,have:[0,1,2,3,5,6,7,8,9,10,12,13,14,15,31,33,34,36,41,44,45,46],hcb:2,he:41,header:[39,40,41,44],heidelberg:31,height:[6,7,9,10,33,34,45,46],help:32,helper:12,henc:[33,34,36],here:[0,1,2,3,4,6,7,8,10,12,13,14,15,32,41,45],hessianmatrix:31,heterogen:[12,13,45],hi:41,high:29,higher:8,hill:[31,32],hist:[7,46],histogram:[20,21,22,27,36,39],histogram_equ:33,histogram_match:34,homogen:[2,13,14,45],homogeneous_color_bas:[2,14],homogeneouscolorbaseconcept:[2,13,14],homogeneouscolorbasevalueconcept:2,homogeneouspixel:13,homogeneouspixelbasedconcept:[12,13],homogeneouspixelconcept:13,homogeneouspixelvalueconcept:13,hopefulli:[41,44],horizont:[7,12,14,15,32,45],how:[1,3,6,7,8,10,12,13,14,31,41,45],howev:[2,10,45],hpp:[6,8,20,39,40,41,44,45],hsl:44,hsv:[33,34,44],html:10,http:[10,40,47],human:36,i:[3,6,9,10,12,13,14,15,16,20,27,31,40,41,45],ic:10,idea:33,ideal:33,ident:[7,8],identifi:20,ifstream:41,ignor:[13,45],ii:12,illumin:34,illustr:[6,7,45],imag:[0,5,11,13,14,16,18,21,23,24,25,27,31,32,33,34,35,36,38,40,42,44,46],image_read_info:41,image_read_set:41,image_t:[6,41],image_typ:[8,12,44,45],image_view:[6,9,10,45],image_write_info:41,imageconcept:[6,7,9,12],imagemagick:41,imagetyp:6,imageviewconcept:[6,7,9,10,12,45],imageviewtyp:6,imagin:32,img:[6,7,9,10,15,23,24,29,41,45,46],img_view:8,immut:[6,9,10,12,14,15,42,45],impact:[10,45],implement:[1,2,6,8,10,13,14,15,17,31,40,41],impos:1,improv:[44,45],in1:45,in2:45,in_buff:41,in_color:45,inaccuraci:41,inc:[14,40],includ:[4,6,20,36,40,41,44,45],incompat:[1,6,7,41,45],incomplet:41,incorrect:45,incorrectli:17,increas:10,increment:[14,15,45],independ:[15,33,34,41,45],index:[2,10,13,15,41,45,46],indexed_imag:44,indic:[1,12,15,24,32,42,45],indica:42,ineffici:6,info:41,inform:[1,15,41],inher:14,inherit:13,initi:[7,13,38,45],inlin:[6,8,45],inner:45,inp_img:[33,34],input:[10,24,32,33,34,45],insid:[6,7,8,10,15,16,45],inspect:40,instal:[39,41],instanc:[6,8,14,24,29,41,45],instanti:[6,10,15,27,45],instead:[1,2,9,45],instruct:45,instrument:5,integ:[1,7,10,15,41,45],integr:[1,2,3,12,14,42,45],intel:15,intens:[1,31,32],interest:31,interfac:[15,24],interleav:[0,6,7,8,9,10,12,13,14,15,42,45,46],interleaved_ptr:39,interleaved_ref:39,interleaved_view:[10,41,45],intermedi:7,intern:[14,24,31,46],internet:8,interpret:[3,10],interv:33,introduc:41,invari:31,invert:8,invert_pixel:17,invok:[2,6,7,8,10,12,14,15,45],involv:45,io:[6,39,45],ios_bas:41,iostream:20,is_1d_travers:[10,15],is_bit_align:44,is_homogen:44,is_iterator_adaptor:14,is_mut:[1,8,13,14,45],is_pixel:13,is_planar:[12,13],is_sam:[6,7,13],is_similar:44,ismut:12,isplanar:[9,12],isstep:12,isstepx:12,issu:[17,45,46],isxstep:12,isystep:12,iter:[1,2,5,7,8,9,10,11,13,17,39,42,46],iterator_adaptor_get_bas:14,iterator_adaptor_rebind:14,iterator_from_2d:[10,15],iterator_is_mut:14,iterator_t:41,iterator_trait:[13,17,45],iterator_typ:12,iterator_type_from_pixel:12,iteratoradaptorconcept:14,its:[1,3,6,7,9,12,13,14,15,19,24,44,45],itself:[7,13,19,27],j:31,jamfil:22,jiri:31,journal:31,jpeg:[8,45],jpeg_dynamic_io:6,jpeg_lib:41,jpeg_read_imag:[6,7],jpeg_tag:[41,45],jpeg_wiki:41,jpeg_write_view:[6,7],jpg:[7,41,45],just:[7,8,9,12,13,15,41,44,45],k:[2,7,13,16,31,45],kadir:31,keep:[0,14,27,45],kei:[19,20,24,27,29,31],kernel:[7,37],key_from_pixel:24,kind:41,know:41,known:[27,33],krystian:31,kth_element_const_reference_typ:2,kth_element_reference_typ:2,kth_element_typ:[2,13],kth_semantic_element_const_reference_typ:2,kth_semantic_element_reference_typ:2,kth_semantic_element_typ:[2,13],l:7,lab:44,lack:[41,45],laid:7,lambda:[7,46],larg:41,larger:7,largest:7,last:[10,13,41,45],lastli:17,later:[2,15],latest:40,latter:[7,13],layout:[2,5,11,12,13,14,39,42,45],layout_t:2,least:6,leav:45,lectur:39,left:[7,10,14,15,34,41,45,46],let:[8,20,31,32,45,46],level:[1,6,41,45],lib:41,libjpeg:[40,41],libpng:[40,41],librari:[0,5,8,10,11,20,37,40,41,44,46],libraw:41,libtiff:41,lie:29,light:36,lightweight:[7,10,15,45],like:[0,6,7,8,12,13,14,22,31,32,33,34,40,41,45],limit:[5,6,25,27,39],line:45,linear:[1,6,33,36],linearli:[1,45],link:[40,41,47],list:[11,21,25,35,37,40,41],littl:[13,32],live:8,ll:41,load:[6,45],loc2:15,loc:15,local:[34,41],locat:[5,8,9,10,11,12,13,14,16,34,39,42],locator_t:45,locator_typ:12,look:[8,31,32,36,41,45],loop:[10,15,45],lossi:[1,13],lot:[41,45],low:29,lower:41,lubomir:47,luc:31,lumin:32,luminos:[7,45,46],luminosity8bit_hist:46,luminosity_hist:46,luminosity_histogram:7,macro:[41,46],made:44,magnitud:45,mai:[0,1,3,4,6,7,8,10,13,14,15,45],main:[20,44],maintain:[44,45],make:[0,6,7,8,10,15,24,25,27,39,41,45],make_histogram:[18,22],make_integer_sequ:3,make_scanline_read:41,make_step_iter:14,mandel:45,mandel_grad:45,mandelbrot:[8,14,15,39,45],mandelbrot_fn:45,mani:[5,6,9,10,25,41,45],manipul:5,manual:41,map:[1,3,7,13,22,23],margin:7,mark:0,mask:[29,33,34],mata:31,match:[1,10,17,18,33,36,41,45],mathemat:33,matric:[31,32],matrix:[31,32],matter:31,max:1,max_el:2,max_it:45,max_valu:1,maximum:1,mayb:17,md:40,me:41,mean:[6,7,9,15,32,40,45],meant:41,measur:[6,15,45],mechan:[6,8,15,45],median:32,medic:36,member:[8,14,17,29,41],memmov:[7,10],memori:[0,2,3,7,13,14,15,45,46],memory_based_2d_loc:15,memory_based_step_iter:[14,15],memorybasediteratorconcept:[14,15],memunit:[14,15],memunit_adv:14,memunit_advanc:14,memunit_advanced_ref:14,memunit_dist:14,memunit_step:14,mention:41,meta:45,metafunct:[2,4,10,11,13,14,15,16,39,44,45],metaprogram:41,method:[7,8,10,14,15,18,45],might:[24,31,32,41,45],mike:31,mikolajczyk:31,mileston:41,min:1,min_el:2,min_valu:1,mind:[5,20],minimum:1,minisblack:41,minor:5,miss:45,mitig:45,mix:7,mode:[41,45],model:[0,4,5,6,7,8,12,17,45],modern:[41,45],modifi:[10,13,14,16,45],modul:[6,8],moment:31,monkei:7,monkey_transform:7,mono:41,moravec:31,more:[1,2,4,6,7,8,9,10,12,13,14,15,41,45],most:[2,4,8,9,10,13,15,16,24,40,41,45],motiv:1,move:[10,15,31,41,45],mp11:[3,12,13,14],mp_list:3,mp_list_c:[3,13],mp_size:3,mp_true:[12,14],mpl:[3,12],ms:41,much:45,multi:[33,34,41],multipl:[7,10,15,45],multipli:[1,14,45],must:[2,4,10,13,14,15,17,22,45],mutabl:[1,9,10,12,13,14,15,17,42,45],mutable_forwarditeratorconcept:14,mutablechannelconcept:1,mutablecolorbaseconcept:[2,13],mutablehomogeneouscolorbaseconcept:[2,13],mutablehomogeneouspixelconcept:[7,13],mutableimageviewconcept:[9,10,45],mutableiteratoradaptorconcept:14,mutablepixelconcept:[7,13,17],mutablepixeliteratorconcept:14,mutablepixellocatorconcept:[10,15],mutablerandomaccess2dimageviewconcept:10,mutablerandomaccess2dlocatorconcept:15,mutablerandomaccessiteratorconcept:14,mutablerandomaccessndimageviewconcept:[9,10],mutablerandomaccessndlocatorconcept:15,mutablestepiteratorconcept:[14,15],my_any_image_t:6,my_color_convert:8,my_color_converter_impl:8,my_img:45,my_img_typ:41,my_reference_proxi:17,my_valu:17,my_view:7,my_virt_view_t:45,myimg:6,myit:17,n2081:4,n:[2,3,9,10,14,15,16,18,45],name:[7,13,15,22,32,39,45,46],namespac:[2,6,17,20,41,44,45],nativ:[1,45],natur:15,navig:[10,14,15],necessari:[14,15,17,41,45],need:[1,4,7,8,10,12,13,14,15,19,20,24,27,41,44,45],neg:14,negat:10,neighbor:[15,45],neighborhood:15,neighbour:10,nest:[10,45],never:[6,7,45],new_dim:9,next:[8,10,41,45,46],nice:45,noisi:31,non:[7,10,12,13,15,17,33,36,41,42,45],none:[41,45],normal:[33,34,45],note:[0,1,2,6,7,9,10,13,24,31,41,45],noth:13,notic:[2,7,31,45],notion:[19,45],now:[20,31,41,45],nth_channel_deref_fn:14,nth_channel_view:[7,10,45,46],nth_channel_view_typ:10,nth_channel_x_gradi:45,num_channel:[6,10,12,13,45],num_dimens:[10,15,16],number:[2,6,7,10,13,14,15,27,31,33,34,45],numbit:1,numer:[10,31,39],numeric_limit:1,o:[6,40,45],obj:6,object:[6,8,10,12,14,15,17,18,41,42,45,46],obtain:[15,45],occupi:13,off:45,offer:15,offset:[1,14,15,45],ofstream:41,often:[3,6,13,45],ok:13,onc:[0,5,10,45],one:[2,4,6,7,8,10,12,13,14,15,29,32,33,41,45],ones:[6,8,13,31],onli:[1,2,6,7,8,10,13,14,15,17,24,31,33,39,40,41,44,45,46],onlin:41,op:2,open:6,oper:[1,2,4,6,8,9,10,13,14,15,16,17,20,24,39,41,42,45,46],oppos:[7,10,12,42,45],optim:[5,7,10,15,45],option:[0,8,22,24,31,39,41,45],order:[0,2,3,6,7,10,12,13,15,19,20,29,31,40,42,45,46],organ:[12,13,15,42],origin:[6,10,34,45,47],os:41,other:[2,4,8,13,14,15,20,22,27,31,32,41,42,45,46],otherwis:[8,13],our:[6,7,8,45],out:[27,29,33,34,41,45],out_buff:41,out_color:45,outdoor:31,output:[24,29,33,45],outsid:45,over:[1,9,10,13,14,18,19,20,24,29,31,33,34,42,45],overhead:[6,45],overlai:31,overload:[6,10,17,20,22,45],overrid:[7,8,15],overview:[21,25,35,37,39],own:[4,8,9,10,15,39,41,45],ownership:[9,45],p1:[2,7,13,41],p2:[2,7,13],p6:41,p:[2,10,12,13,14,17,24,33,34,45],pack:[9,13,14,45],packed_channel_refer:1,packed_channel_valu:1,packed_dynamic_channel_refer:1,packed_image1_typ:12,packed_image2_typ:12,packed_image3_typ:12,packed_image4_typ:12,packed_image5_typ:12,packed_image_typ:12,packed_pixel:[2,13,14,39],packed_pixel_typ:13,pad:[0,7,9,15],page:41,pair:[2,13,45],pairwis:[1,10,13],palett:41,paper:[4,31],paramet:[0,1,5,6,7,8,9,10,14,15,17,41,45],parent:[17,29],part:[36,41,46],partial:41,particular:[6,19,24,29,31,45],pass:[6,8,10,29,45],past:10,patch:31,path:[6,41],pattern:[1,7,12,45],peopl:44,per:[6,10,14,15,45],percent:41,perform:[6,8,10,14,15,39,45],permut:2,physic:[1,2,3,7,13],pick:41,pipe:45,pix_buff:13,pix_it:13,pixel1:13,pixel2:13,pixel:[0,1,2,3,4,5,6,8,9,11,16,17,24,32,33,34,39,42,46],pixel_2d_locator_bas:15,pixel_bit_s:44,pixel_refer:12,pixel_reference_typ:12,pixel_value_typ:12,pixelbasedconcept:[12,13,14,45],pixelconcept:[4,7,8,10,12,13,14,15],pixelconvertibleconcept:13,pixeldata:14,pixeldereferenceadaptorconcept:[8,10,14,15,45],pixeliteratorconcept:[10,12,14,15],pixellocatorconcept:[10,15],pixelrefer:12,pixelscompatibleconcept:[10,13],pixelvalueconcept:[8,9,10,13,14,15,45],place:[19,45],plain:14,planar:[0,2,6,7,9,10,12,13,14,15,17,41,42,45,46],planar_pixel_iter:[14,15],planar_pixel_refer:[13,17],planar_rgb_view:[10,45],plane:[0,7,10,32,45],platform:[15,39],pleas:[31,41],plot:32,plu:15,png:[33,34],png_lib:41,png_tag:[33,34],png_test_fil:41,png_wiki:41,pnm_wiki:41,point2dconcept:[15,16],point:[0,1,6,10,11,12,13,15,31,39,41,42,45],point_t:[6,9,10,15,41,45],point_typ:10,pointer:[1,7,8,10,13,14,15,41,42,45],pointndconcept:[10,15,16],polici:[0,10,46],popular:40,posit:[14,15,45],position_iter:14,possibl:[6,10,13,41,45],potenti:[0,41],pow:45,power:[6,7,31,45],pp:31,practic:[6,45],pre:45,precis:1,prefer:[18,22,41],prefix:2,presenc:0,present:[45,46,47],pretend:14,preval:36,previou:[0,6],previous:[10,45],price:12,primari:36,privat:[8,10,15,41,45],probabl:41,problem:[12,17,45],process:[0,10,25,35,36,38,39,45],processor:45,produc:32,product:[45,46],profil:8,program:[4,41,45,46],project:[0,38,40],propag:[10,45],proper:45,properli:[1,2,7,8,41,45],properti:[12,13,39,45],propos:4,provid:[0,1,2,3,5,6,8,9,10,12,13,14,15,16,17,20,22,29,32,41,44,45,46],provis:22,proxi:[1,2,13],ptr:7,ptrdiff_t:[6,10,14,15,45],pull:14,purpos:[13,20],put:[32,45],quadrant:46,qualifi:17,qualiti:[8,41],queri:45,r565:13,r:[7,10,34,46],random:[3,14,15,45],randomaccess2dimageconcept:9,randomaccess2dimageviewconcept:10,randomaccess2dlocatorconcept:15,randomaccessndimageconcept:9,randomaccessndimageviewconcept:10,randomaccessndlocatorconcept:[10,15],randomaccesstraversalconcept:[10,14,15],randomaccesstraversaliteratorconcept:14,rang:[1,2,9,10,29,33,45],rare:[9,45],rather:41,raw:[5,15,45],raw_wiki:41,rbegin:10,rbg323:41,rdbuf:41,read:[0,8,10,12,13,14,15,18,45],read_and_convert_imag:41,read_and_convert_view:41,read_imag:[33,34,41,45],read_image_info:41,read_view:41,read_xxx:41,reader:[41,45],reader_bas:41,reader_t:41,readm:40,real:[17,45],realiz:45,reason:33,rebind:14,recommend:[0,27,41],recreat:[6,7,9],rectangular:[10,45],recurs:[2,14,45],red:[0,1,2,7,13,14,17,24,29],red_in_cmyk16:13,red_in_rgb8:13,red_t:[2,3,13],redefin:8,ref2:7,ref:[7,13],ref_imag:34,ref_img:34,refer:[1,2,7,8,10,12,13,14,15,31,34,39,41,42,45],refin:16,regardless:45,region:[37,39,45],regist:45,regular:[1,2,4,9,10,13,15,16],reinterpret_cast:45,rel:[15,45],relat:[4,12,45],releas:[27,38],relev:[29,41],remain:8,rememb:[15,17],remov:[41,45,46],remove_refer:14,rend:10,repeat:15,replac:[12,20],repositori:[27,40],repres:[0,15,17,41,45],represent:[0,5,39,45],reqd:24,request:41,requir:[1,2,4,6,8,9,10,13,14,15,24,39,40,41,45],resampl:10,rescal:39,research:36,resembl:[6,10],resid:45,resiz:[10,39],resolut:[5,6],respect:[7,13,45],respons:31,rest:[12,45],restrict:41,result:[0,2,5,6,7,8,10,12,13,14,15,31,40,41,45],result_typ:[4,6,8,10,14,45],result_view_t:6,ret:45,reus:45,reverse_iter:10,review:[41,44],rewrit:45,rewritten:46,rgb16:41,rgb16_image_t:[10,45],rgb16c_planar_view_t:45,rgb222:45,rgb32f_planar_step_ptr_t:[12,42],rgb32f_planar_view_t:7,rgb32fc_view_t:45,rgb32s_pixel_t:45,rgb32s_view_t:45,rgb565:13,rgb565_channel0_t:13,rgb565_channel1_t:13,rgb565_channel2_t:13,rgb565_pixel_t:13,rgb64_image_t:8,rgb64_pixel:8,rgb64_pixel_ptr_t:8,rgb64_pixel_t:8,rgb8:[13,41,45],rgb8_image_t:[6,18,24,29,41,45],rgb8_pixel_t:[7,13,45],rgb8_planar_ptr_t:14,rgb8_planar_ref_t:[7,13],rgb8_planar_view_t:12,rgb8_ptr_t:10,rgb8_step_view_t:6,rgb8_view_t:[6,7],rgb8c_planar_ptr_t:[7,14],rgb8c_planar_ref_t:[7,13],rgb8c_ptr_t:10,rgb8c_view_t:[6,45],rgb:[0,1,2,7,8,10,12,13,14,24,29,33,34,41,42,45,46],rgb_channel_t:7,rgb_cs_t:7,rgb_full:13,rgb_layout_t:[7,8,13],rgb_planar_pixel_iter:17,rgb_t:[3,7,13,14],rgba16:41,rgba8:41,rgba8_image_t:41,rgba:[0,3,12,42,44],rgba_layout_t:[3,7],rgba_t:3,rgbpixel:7,rgbtograi:46,right:[7,10,14,15,34,45],rise:15,rotat:[6,10,45],rotated180_view:[6,7,10],rotated180_view_fn:6,rotated90ccw_view:[10,45],rotated90cw_view:[10,45],routin:[20,27],row:[0,7,9,10,13,14,15,41,45,46],row_begin:[10,45],row_end:10,rowsiz:10,rpv32:7,rule:40,run:[0,1,5,6,7,10,38,39],runtim:6,runtime_imag:[41,45],rview:10,s:[1,2,3,7,8,12,15,17,20,31,32,41,42,45,46],said:6,sake:10,same:[1,2,3,6,7,8,10,13,15,16,31,32,34,41,45],sametyp:[1,2,4,10,13,14,16],sampl:[15,39,41,45,46],satisfi:[2,4,9,10,15,45],sav:6,save:[6,41,45],save_180rot:6,scale:45,scanlin:41,scanline_read:41,scanline_read_iter:41,scenario:[2,33,45],schaffalitzki:31,scharr:32,scharrx:32,schmid:31,scoped_channel_valu:1,sean:17,second:[0,1,7,13,15,17,31,41,45,46],second_argument_typ:10,section:[0,2,10,11,21,25,35,37,41,44],see:[2,4,8,10,14,15,41,45],seek:41,select:6,semant:[2,3,13,45],semantic_at_c:[2,7,13],send:41,sensor:34,separ:[0,8,10,31,45],sequenc:[1,3],serv:41,servic:40,set:[0,1,3,4,6,7,8,9,10,13,14,15,41,45],set_step:14,sever:[5,14,41,45],shallow:[6,7,10,14,17,45],shape:32,share:[6,13,41],sharper:32,she:41,shift:1,ship:27,shortli:46,should:[6,15,18,19,22,31,33,40,41,45],show:[7,41,45],shown:[7,33,34,45],side:45,sigma:32,sign:[12,42,45],signific:[10,36],similar:[1,10,14,15,39,41,45],similarli:[9,14],simpl:[12,15,24,32,33,41,45,46],simpler:[31,41,46],simplest:[24,32,45],simpli:[7,8,15,31,32,45],simplic:45,simplifi:[7,31,45],simultan:45,sinc:[6,7,13,14,18,19,27,29,33,34,40,41,44,45,46],singl:[6,10,14,32,41,45],size1:12,size2:12,size3:12,size4:12,size5:12,size:[2,6,7,10,13,14,15,41,45],size_t:[2,6,9,10,13,15,16,20,45],size_typ:[6,10],sizeof:13,skeleton:41,skip:[10,14,45,46],slightli:[8,45],slow:45,slower:[15,45],small:[31,41,44],smaller:[7,19],so:[6,8,20,32,41,45],sobel:32,softwar:46,solut:17,some:[0,4,6,7,8,10,12,13,14,15,17,36,41,45],sometim:[1,10,13,14,15,17,41,45],somewher:8,soon:41,sort:[19,32],sourc:[1,6,7,8,10,18,40,41,42,45,46,47],space:[0,2,5,6,7,10,11,13,14,33,34,39,41,44,45,46],special:[8,13,34,42,45],specif:[0,5,39,41,45],specifi:[0,1,3,5,6,8,9,12,14,33,34,39,41],speed:[0,5,6,10,45],spirit:15,spread:33,springer:31,sr8wjg0pcee:47,src1:10,src1_it:45,src2:10,src2_it:45,src:[1,2,6,7,8,10,41,45],src_b:45,src_g:45,src_it:45,src_loc:45,src_pix_ref:8,src_pixel:45,src_r:45,src_row_byt:45,srcchannel:1,srccolorspac:8,srcconstrefp:8,srcp:8,srcpixel:13,srcview:[7,8,10,45],srowbyt:46,stabl:31,stage:10,standalon:44,standard:[3,4,10,12,14,15,20,33,34],start:[10,13,15,41,45],state:10,statement:[6,45],static_:2,static_assert:[6,7,12,13],static_cast:45,static_copi:2,static_equ:2,static_fil:[2,7,45],static_for_each:[2,45],static_gener:[2,45],static_max:2,static_min:2,static_transform:[2,14,45],std:[1,2,6,7,9,10,12,13,14,15,17,18,20,21,22,24,27,29,39,41,45,46],step1:7,step2:7,step3:7,step4:7,step5:7,step:[6,10,12,15,37,42,45],step_iterator_t:12,stepanov:17,stephen:31,stepiter:15,stepiteratorconcept:[14,15],still:45,stl:[2,5,6,9,15,17,25,27,39],stlab:10,store:[6,7,15,19,24,41,45],straightforward:[10,41],stream:41,strength:32,stretch:[32,36],string:[6,18,41],stringstream:41,strip:41,strongli:41,struct:[1,2,3,6,8,10,12,13,14,15,16,17,20,41,45],structur:[0,6,10,11,31,37,39,45],sub:[1,17,20,25,27,39,41,44],sub_h:29,sub_histogram:29,subclass:[6,14,15],subimag:45,subimage_view:[7,10,41,45,46],subject:41,suboptim:45,subsampl:[10,14,45],subsampled_view:[7,10,45,46],subset:29,substitut:4,successfulli:40,succinct:10,suffici:[15,40],suffix:42,suggest:[17,44],suit:[36,41],suitabl:27,sum:31,summer:38,suppli:[8,10,14,15,22,41],support:[0,1,6,7,8,10,12,14,22,27,39,40,45,46],supported_image_format:41,suppos:[6,7,8,45],sure:41,sv:8,swap:[4,15,17],swappabl:[1,2,4],symmetr:13,synopsi:[10,15],syntact:4,syntax:[4,18,33,34],synthet:[8,39,45],system:[41,45],sz:45,t1:1,t2:[1,2],t:[1,2,4,6,8,9,10,12,13,14,15,16,17,20,36,41,45],tabl:41,tag:[41,42],tag_t:41,take:[2,6,7,8,9,10,14,15,17,19,41,45,46],taken:[33,34,45],targa_wiki:41,target:[5,41,45],task:[24,29,45],technic:[11,39],techniqu:[6,34,41],tell:40,templat:[1,2,3,4,6,7,8,9,10,12,13,14,15,16,17,41,45,46],temporari:[17,45],term:[16,31],test:[20,22,39,40,42],test_imag:41,text:41,th:[2,7,10,14,15,45],than:[2,6,7,13,14,15,18,19,41,45],thank:[41,44],thei:[1,2,3,5,6,7,8,10,12,13,14,15,31,32,45],them:[1,4,6,9,10,12,13,41,45],therefor:1,thi:[0,1,2,4,6,7,8,10,12,13,14,15,17,18,24,31,32,34,36,41,42,44,45,46,47],thing:[7,32,41],think:45,third:41,thorough:41,those:[13,32],though:[6,7,32,45],three:[1,13,14,31,32,45],threshold:31,through:[7,15,41,45],thrown:45,thu:[1,2,3,8,15,33],tif:41,tiff_base_tag:41,tiff_extension_tag:41,tiff_graphicsmagick_test_fil:41,tiff_lib:41,tiff_lib_tiff_test_fil:41,tiff_t:41,tiff_tag:41,tiff_wiki:41,tile:41,time:[0,1,2,5,6,7,8,10,14,27,39],timor:31,tinn:31,tip:19,tmp:[14,17],todo:[18,26,28,30,43],togeth:[0,3,13,45],toll:[6,45],too:[36,44],toolbox:[39,41],top:[0,7,10,12,15,27,41,45,46],top_left:10,total:[10,15],trace:31,track:[10,14,45],transform:[1,2,6,8,10,31,33,34,39],transform_pixel:[10,45],transform_pixel_posit:[10,45],transpos:[10,15,45],transposed_typ:[10,15],transposed_view:10,travers:[9,10,14,15,41,42,45],treat:[6,45],tricki:17,trickier:45,trigger:[6,45],trivial:42,troubl:41,tupl:[24,29],turn:6,tutori:[8,10,15,39],tuytelaar:31,tweak:32,twice:45,two:[0,1,2,3,6,7,9,10,13,14,15,16,31,32,34,38,41,45],type1:18,type2:18,type3:18,type:[0,1,2,3,4,5,6,7,9,10,13,14,15,16,17,18,20,22,39,41,44,45,46],type_from_x_iter:12,typedef:[1,6,7,8,10,12,13,14,17,41,45],typen:18,typenam:[1,2,3,4,6,7,8,9,10,12,13,14,15,16,17,41,45,46],typic:[1,6,8,10],u:4,ud_fud:10,uint16_t:[1,13],uint8_t:[1,31,46],unari:[14,45],unary_compos:14,unary_funct:14,unaryfunctionconcept:[10,14],unchang:45,unclear:15,under:[31,34,41],underli:[6,10,14,41],understand:[1,31,32,41],unfamiliar:45,unfortun:45,uniform:34,uniformli:[6,33],uninitialized_copi:10,uninitialized_copy_pixel:10,uninitialized_fil:10,uninitialized_fill_pixel:10,uniqu:3,unit:[14,15,41],unless:[32,41],unlik:[9,13],unnam:3,unnecessari:[7,13,45],unordered_map:[22,23,27],unpack:13,unrel:46,unrol:45,unset:10,unsign:[6,7,9,10,12,13,14,42,45],unspecifi:4,until:31,unus:[13,45],unusu:45,up:[0,12,41],upon:[6,8,10,12,14,15,17],upper:46,upsid:[6,10],us:[0,1,2,3,4,5,6,8,9,10,12,13,14,15,16,17,18,20,22,24,25,29,31,32,34,35,39,40,42,46],usag:[20,21,32,33,34,41],use_default:12,user:[0,4,8,10,15,41,44,45],using_io:41,usual:[14,31,32,41],util:[25,39],v1:[6,10],v2:[6,10],v3:10,v:[2,6,7,10,23,46,47],val:10,valid:[1,10,45],valu:[0,1,2,3,6,7,8,9,10,12,13,14,15,16,17,24,29,31,32,33,34,41,42,45],value_typ:[1,8,9,10,13,14,15,16,41,45],valueless:6,van:31,vari:[0,3,45],variabl:[0,45,46],variant2:[6,45],variant:[6,41,45],variat:[0,41],varieti:[39,45],variou:41,vector:[22,23,33,34,45],veri:[9,12,31,45,46],verifi:45,version:[10,14,15,19,40,41,46],vertic:[12,14,15,32,45],via:[6,10],video:[0,39,45],view1:10,view2:10,view:[5,9,11,13,14,15,18,23,24,29,33,34,39,41,42,46],view_is_mut:12,view_t:[6,7,9,10,12,41],view_typ:12,view_type_from_pixel:12,viewer:41,viewscompatibleconcept:[7,10],viewtyp:6,virtual:[5,8,12,14,15,41],virtual_2d_loc:[15,45],vision:[0,31],visit:[6,10,15,45],visual:36,vol:31,vs:[0,10,46],vt:12,w:45,wa:[10,38],wai:[2,13,17,18,32,41,42,45],walk:[41,45],want:[7,8,14,15,18,41,45],warn:45,watch:47,we:[0,1,2,4,6,7,8,10,12,13,14,15,17,18,20,24,33,34,36,45],web:4,websit:41,weight:[31,37],well:[2,13,19,36,41,45],were:[38,45],what:[6,32,37,41,45],when:[2,7,8,9,10,14,15,17,18,31,32,34,41,45],where:[1,2,7,9,10,12,13,14,15,16,18,40,41,42,45],wherea:[0,2,6,32,41,45],whether:[1,10,12,14,15,45],which:[0,1,2,3,6,7,8,9,10,12,14,15,16,19,24,32,33,40,41,42,44,45],who:44,whose:[0,2,10,12,13,14,29,39,45],why:[33,45],width:[6,7,9,10,15,33,34,45,46],window:[31,41],within:10,without:31,word:[0,9,10,14,32,45],work:[0,5,6,7,8,10,13,17,31,39,45,46],workflow:22,worth:[7,41,45],would:[0,6,14,18,29,32,33,34,41,45],wrap:[6,10,14],wrapper:[14,15],write:[0,5,6,7,10,17,39,45],write_view:[41,45],writer:41,written:[15,32,41,45,46],wstring:41,www:47,x:[1,4,7,10,12,14,15,16,17,31,32,33,34,41,45],x_at:[10,15],x_coord_t:[6,9,10,15],x_diff:15,x_gradient:[39,45],x_gradient_obj:45,x_gradient_rgb_luminos:45,x_gradient_unguard:45,x_iter:[9,10,13,15,41,45],x_luminosity_gradi:45,x_min:45,xbm:41,xgradientgray16_gray32:45,xgradientplanarrgb8_rgb32:45,xgradientrgb8_bgr16:45,xiter:[12,15],xpm:41,xxx:41,xxx_all:41,xxx_and_convert_xxx:41,xxx_read:41,xxx_tag:41,xxx_write:41,xy_at:[10,15,45],xy_loc:[10,45],xy_locator_t:12,xyz:44,y:[4,10,15,16,17,31,32,41,45],y_at:[10,15],y_coord_t:[6,9,10,15],y_distance_to:15,y_gradient:45,y_iter:[10,15,45],y_min:45,ycbcr:[33,34,41],ycck:41,yellow:31,yet:[0,27,41,45],you:[7,8,12,17,19,20,24,27,41,45],your:[8,17,20,39,40,41,45],your_imag:[33,34],your_ref_imag:34,yourself:41,youtub:47,z:[32,45],zero:[13,31,45],zisserman:31,zlib:41},titles:["Basics","Channel","Color Base","Color Space and Layout","Concepts","Conclusions","Dynamic images and image views","Examples","Extending","Image","Image View","Design Guide","Metafunctions","Pixel","Pixel Iterator","Pixel Locator","Point","Technicalities","Create a histogram","Making a cumulative histogram","Extending the class","Extensions","Overview","STD extension","Fill histogram","Histogram","Limitations","Overview","STL compatibility","Making a sub-histogram","Utilities","Affine region detectors","Basics","Histogram Equalization","Histogram Matching","Contrast Enhancement","Overview","Image Processing","Overview","Boost Generic Image Library","Installation","IO extensions","Naming Conventions","Numeric extension","ToolBox extension","Tutorial: Image Gradient","Tutorial: Histogram","Tutorial: Video Lecture"],titleterms:{"1d":45,"2d":15,"class":20,"new":[8,41],And:41,In:41,acknowledg:44,ad:22,adaptor:14,advanc:24,affin:31,algorithm:[1,2,10,13,31,33,34,45],align:12,an:[22,41],avail:31,ax:20,base:[2,12],basic:[0,24,32],being:31,bit:12,bmp:41,boost:39,buffer:41,canva:7,channel:[1,8],code:45,color:[2,3,8,45],compat:[5,28],compil:[40,41],compon:12,concept:4,conclus:[5,45],concret:42,contain:22,content:[11,21,25,35,37],contrast:35,convent:42,convers:[8,45],convolut:32,core:39,creat:[10,17,18,45],cumul:19,curvatur:32,defin:[8,20],demo:[33,34],derefer:14,deriv:[12,32],descript:[22,27,33,34],design:11,detect:31,detector:31,document:39,dynam:6,enhanc:35,equal:33,equival:45,exampl:[7,39],exist:12,extend:[8,20,41],extens:[5,21,22,23,39,41,43,44],extern:22,fill:24,filter:32,first:45,flexibl:5,folder:44,format:41,from:10,fundament:14,gener:[5,39,41,45],gil:[41,45,46],glue:45,gradient:45,guid:11,harri:31,hessian:31,histogram:[7,18,19,24,25,29,33,34,46],homogen:12,imag:[6,7,8,9,10,12,15,37,39,41,45],implement:[45,46],instal:40,interfac:[41,45],io:41,iter:[12,14,15,45],jpeg:41,kernel:32,layout:3,lectur:47,level:7,librari:39,limit:26,locat:[15,45],make:[19,29],manipul:12,match:34,memori:[12,41],metafunct:12,model:[1,2,3,9,10,13,14,15,16],name:42,numer:43,oper:7,origin:46,other:10,over:15,overload:8,overview:[1,2,3,8,9,10,12,13,14,15,16,19,22,24,27,29,36,38,41,43,44],pack:12,perform:5,pixel:[7,10,12,13,14,15,45],platform:41,png:41,pnm:41,point:16,process:37,proxi:17,quickstart:39,raw:[10,41],read:41,refer:[17,44],region:31,resiz:7,result:[33,34],run:[41,45],space:[3,8],specifi:45,std:23,step:[14,31],stl:[10,28,45],structur:44,style:10,sub:29,support:[23,41],symbol:41,tabl:[11,21,25,35,37],targa:41,technic:17,test:41,tiff:41,time:45,toolbox:44,trait:12,transform:45,tutori:[27,41,45,46,47],type:[8,12,23,42],us:[7,41,45],usag:23,user:20,util:30,version:45,video:47,view:[6,7,8,10,12,45],virtual:45,weight:32,what:31,write:41}}) \ No newline at end of file +Search.setIndex({docnames:["design/basics","design/channel","design/color_base","design/color_space","design/concepts","design/conclusions","design/dynamic_image","design/examples","design/extending","design/image","design/image_view","design/index","design/metafunctions","design/pixel","design/pixel_iterator","design/pixel_locator","design/point","design/technicalities","histogram/create","histogram/cumulative","histogram/extend","histogram/extension/index","histogram/extension/overview","histogram/extension/std","histogram/fill","histogram/index","histogram/limitations","histogram/overview","histogram/stl_compatibility","histogram/subhistogram","histogram/utilities","image_processing/affine-region-detectors","image_processing/basics","image_processing/contrast_enhancement/histogram_equalization","image_processing/contrast_enhancement/histogram_matching","image_processing/contrast_enhancement/index","image_processing/contrast_enhancement/overview","image_processing/index","image_processing/overview","index","installation","io","naming","numeric","toolbox","tutorial/gradient","tutorial/histogram","tutorial/video"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["design/basics.rst","design/channel.rst","design/color_base.rst","design/color_space.rst","design/concepts.rst","design/conclusions.rst","design/dynamic_image.rst","design/examples.rst","design/extending.rst","design/image.rst","design/image_view.rst","design/index.rst","design/metafunctions.rst","design/pixel.rst","design/pixel_iterator.rst","design/pixel_locator.rst","design/point.rst","design/technicalities.rst","histogram/create.rst","histogram/cumulative.rst","histogram/extend.rst","histogram/extension/index.rst","histogram/extension/overview.rst","histogram/extension/std.rst","histogram/fill.rst","histogram/index.rst","histogram/limitations.rst","histogram/overview.rst","histogram/stl_compatibility.rst","histogram/subhistogram.rst","histogram/utilities.rst","image_processing/affine-region-detectors.rst","image_processing/basics.rst","image_processing/contrast_enhancement/histogram_equalization.rst","image_processing/contrast_enhancement/histogram_matching.rst","image_processing/contrast_enhancement/index.rst","image_processing/contrast_enhancement/overview.rst","image_processing/index.rst","image_processing/overview.rst","index.rst","installation.rst","io.rst","naming.rst","numeric.rst","toolbox.rst","tutorial/gradient.rst","tutorial/histogram.rst","tutorial/video.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[1,2,3,7,9,10,13,15,16,20,24,29,31,32,33,34,41,45,46],"01100000":13,"04":31,"06":31,"0f":[1,45],"0rrgggbb":13,"0x06":13,"0x0c":13,"0x11":13,"0x30":13,"0x60":13,"0x83":13,"0xc1":13,"1":[1,2,3,6,7,9,10,13,14,15,16,18,20,24,29,31,32,33,34,38,40,41,45,46],"10":[13,15,29,31],"100":[6,7,10,31,45],"1000":31,"10000":31,"100000000":31,"100x100":7,"11":[1,15,29,41,46],"127":41,"128":31,"14":[39,40],"142":31,"15":[13,15,31],"150":7,"16":[0,1,7,10,12,13,42,45],"17":6,"1988":31,"1d":[7,9,10,22,23],"2":[3,7,10,13,15,16,18,24,29,31,41,45,46],"20":29,"200":[6,7,45],"2002":31,"2005":31,"200x200":45,"2019":38,"23":15,"24":15,"25":15,"255":[7,13,33,34,45],"256":7,"257":1,"2d":[0,10,29,32,42,45],"2k":7,"3":[3,7,13,29,32,41,45],"300":7,"31":1,"32":[7,12,42,45],"33":7,"3d":[18,29,32],"4":[3,13,29,41,45],"42":41,"43":31,"480":41,"4x3":0,"5":[1,3,7,13,29,41,45],"50":[31,41],"50x50":10,"5244":31,"565":[1,45],"5f":45,"6":[1,13,45],"64":[8,41],"640":41,"65":31,"65535":[1,13],"7":[7,13],"72":[31,38],"8":[0,7,9,12,13,14,15,42,45,46],"80":40,"8x":41,"9":[13,41],"90":45,"95":41,"abstract":[0,5,10,39,45],"boolean":[12,45],"byte":[1,9,10,13,14,15,17,39,45],"case":[2,5,7,8,10,12,13,15,19,20,31,33,34,41,45],"char":[7,9,10,12,13,14,41,45],"class":[1,2,4,6,8,9,10,12,13,14,15,17,19,22,24,25,27,29,39,41,45],"const":[1,2,6,7,8,9,10,12,13,14,15,16,17,20,24,41,42,45,46],"default":[1,3,6,7,8,9,10,12,14,17,20,22,42,45],"do":[1,6,7,8,13,15,18,45],"final":[2,7,8,45],"float":[1,7,12,18,19,41,42,45],"function":[2,6,8,10,12,14,15,17,19,20,25,29,31,39,41,45,46],"import":[6,9,17,41],"int":[1,2,3,7,10,13,15,18,19,20,23,24,29,41,45,46],"long":[4,7,8,10,12,45],"new":[5,22,45,46],"public":[6,8,10,14,15,41],"return":[1,2,4,6,7,8,10,12,13,14,15,17,20,29,41,45],"short":[12,41,45,46],"static":[1,2,6,7,8,10,13,14,15,45],"switch":[6,45],"throw":6,"true":[1,2,12,13,14,15,33,34,45],"try":[7,27,33,34,41,45],"var":[7,46],"void":[2,4,6,7,8,9,10,13,14,17,41,45,46],"while":[0,1,3,13,15,36,45],A:[0,1,2,3,4,6,9,10,12,13,14,15,16,17,19,24,31,32,33,41,45],And:18,As:[3,7,8,10,19,31,41,45],At:31,But:41,By:[2,6,12,32,42],For:[1,2,3,4,6,7,8,10,12,13,14,15,20,31,33,34,40,41,42,45,46],If:[6,7,8,10,18,33,34,41,45],In:[0,2,3,4,6,8,9,10,12,13,14,15,16,19,20,29,31,40,45],It:[0,1,2,3,5,6,7,8,9,10,13,14,15,16,27,31,41,45],Its:[1,2,13,14,45],No:[7,41],Not:7,OR:24,Of:[15,41],One:[15,17,31,33,34,41,45],Such:[1,6,15,45],That:[6,45],The:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,17,19,21,22,25,27,31,32,33,34,35,37,38,39,40,41,42,44,45,46],Their:[6,15,45],Then:[15,33,34,45],There:[0,2,6,12,18,32,41,45],These:[2,12,13,22,36,45],To:[1,7,8,12,14,27,31,32,33,34,41,45],_1:[7,46],_bmp_test_fil:41,_dimens:10,_dst:45,_height:41,_imag:[12,42],_img_siz:45,_in_color:45,_info:41,_io_dev:41,_is_:12,_loc:[12,42],_out_color:45,_p:15,_pixel:[10,12,42],_planar:[12,42],_png_test_fil:41,_ptr:[12,42],_ref:[12,42],_scanline_length:41,_step:[12,42],_t:[12,42],_tiff_graphicsmagick_test_fil:41,_tiff_lib_tiff_test_fil:41,_view:[12,42],_width:[15,41],_x:15,abbrevi:45,abgr_layout_t:3,abil:[19,41],abl:[14,41],about:[4,8,15,32,45,47],abov:[0,2,7,10,13,14,15,17,31,32,41,45,46],abraham:17,access:[1,2,3,6,7,8,13,15,41,45],accessor:[2,16],accordingli:8,account:7,achiev:[32,33],acknowledg:39,actual:[8,40,45,46],ad:[7,41,44],adapt:1,adaptor:[8,10,15],add:[6,8,15,22,24,41],add_deref:[8,10,15],add_ref_t:8,addit:[1,2,4,6,9,10,14,15,45],addition:45,address:[0,12,13],adjac:[10,14,45],adob:10,advanc:[10,14,15,41,45],advantag:[45,46],advis:41,affin:[37,39],after:[2,22,45],again:[15,31],against:[17,40],ah:36,alex:17,algorithm:[0,4,5,6,7,8,9,14,15,17,25,27,35,36,37,38,39],align:[0,6,9,10,13,14,39,45,46],all:[0,1,2,3,4,6,7,8,10,13,14,15,17,19,31,41,44,45],alloc:[7,9,10,12,41,45,46],allocator_typ:9,allow:[0,1,2,5,6,8,9,10,12,13,14,15,17,39,41,45],alon:32,along:[10,12,14,15,16,45],alpha:[0,44],alpha_t:3,alreadi:[12,13,41,45],also:[0,1,2,3,7,10,12,13,14,15,16,18,22,24,33,36,41,45,46],altern:[18,45],although:33,alvei:31,alwai:[13,17,42,45],among:19,amount:[14,15],an:[0,1,2,3,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,24,29,31,32,33,34,39,45,46],analog:13,analysi:[12,37],andrew:31,angl:29,ani:[0,2,5,6,7,8,10,12,14,15,27,29,31,32,40,45,46],anoth:[1,2,5,6,8,10,13,14,24,32,41,45],another_iter:14,any_imag:[6,41,45],any_image_view:[6,45],any_pixel:[6,45],any_pixel_iter:[6,45],anyth:[8,14,41],apart:22,api:39,append:12,appendix:45,appli:[0,1,14,32,33,34,39,41,45],applic:[36,41,45],appropri:[1,6,41],approxim:[13,14,45],ar:[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,21,22,25,27,31,32,33,35,37,39,41,44,45,46],arbitrari:[8,14,20,45],area:[7,10,41],aren:41,argb_layout_t:3,argument:[6,14,45],argument_typ:[8,10,45],aris:[17,24],arithmet:[1,32],around:[7,14,15,41],arrai:[0,14,15,22,23,32],ascii:41,assembl:45,assert:[1,7,13,45],assert_sam:6,assign:[1,2,4,6,9,13,17,24,45],assignableconcept:14,associ:[1,2,3,6,12,45],assum:[31,45],asymmetr:45,at_c:[2,13],atom:45,author:41,auto:[4,18,19,29,41,45],automat:41,av:6,avail:[6,10,15,22,24,37,41,45],averag:15,avoid:45,awai:[10,14],ax:[18,27,29],axi:[10,15,16,18,20,29,32,45],axis1:18,axis2:18,axis3:18,axis:32,axis_iter:[10,15],axis_valu:16,b16:7,b:[1,6,7,10,24,31,42,46],back:[6,10,45],backend:41,backend_t:41,backward:42,bad_cast:6,base:[1,6,10,11,13,14,15,17,39,41,45,46],basic:[4,11,12,31,37,39,41],beauti:36,becam:41,becaus:[1,6,9,10,12,13,15,31,45],been:[5,34,41,45,46],befor:[19,20,24,33,34,41],begin:[7,10,41,45,46],behav:6,being:[12,37,41],belong:44,below:[11,14,15,21,25,31,33,34,35,37,41,45],berlin:31,besid:[3,41],beta:10,better:45,between:[1,6,8,10,13,14,29,33,34,45],bgr16_view_t:7,bgr16s_pixel_t:45,bgr16s_view_t:45,bgr232:13,bgr232_pixel_t:13,bgr232_ptr_t:13,bgr232_ref_t:13,bgr556:13,bgr556_pixel_t:13,bgr8:13,bgr8_image_t:[12,42],bgr8_pixel_t:[7,13],bgr8_view_t:6,bgr:[0,2,7,12,13,42,45,46],bgr_layout_t:[3,13],bgra_layout_t:3,big:[31,41],biggest:45,bilinear:39,bin:[7,19,24,27,29,33,34],binari:[41,45],binaryfunctionconcept:10,bit:[0,1,2,7,8,9,10,13,14,15,41,42,45,46],bit_align:13,bit_aligned_image1_typ:12,bit_aligned_image2_typ:12,bit_aligned_image3_typ:12,bit_aligned_image4_typ:12,bit_aligned_image5_typ:12,bit_aligned_image_typ:12,bit_aligned_pixel_iter:[13,14],bit_aligned_pixel_refer:13,bitdepth:[12,42],bitfield:12,bitmask:39,bits16:1,bits32f:1,bits8:[7,10,13,14],bitwis:10,block:[10,45],blue:[2,7,13,17,24,29],blue_t:[2,3,7,13],blur:[31,39],bmp_filenam:41,bmp_tag:41,bmp_test_fil:41,bmp_wiki:41,bodi:45,bool:[1,2,4,6,8,9,10,12,13,14,15,20,33,34,45],boost:[3,6,7,10,12,14,20,22,38,40,41,44,45,46],boost_check_equ:41,boost_concept:14,boost_gil_extension_io_jpeg_c_lib_compiled_as_cplusplu:41,boost_gil_extension_io_png_c_lib_compiled_as_cplusplu:41,boost_gil_extension_io_tiff_c_lib_compiled_as_cplusplu:41,boost_gil_extension_io_zlib_c_lib_compiled_as_cplusplu:41,boost_gil_io_enable_gray_alpha:41,boost_gil_io_png_1_4_or_low:41,boost_gil_io_png_dithering_support:41,boost_gil_io_png_fixed_point_support:41,boost_gil_io_png_floating_point_support:41,boost_gil_io_test_allow_reading_imag:41,boost_gil_io_test_allow_writing_imag:41,boost_gil_io_use_bmp_test_suite_imag:41,boost_gil_io_use_boost_filesystem:41,boost_gil_io_use_png_test_suite_imag:41,boost_gil_io_use_pnm_test_suite_imag:41,boost_gil_io_use_tiff_graphicsmagick_test_suite_imag:41,boost_gil_io_use_tiff_libtiff_test_suite_imag:41,boost_gil_use_concept_check:[10,45],boost_mpl_assert:13,boostorg:40,border:7,both:[0,6,7,13,15,16,31,34,41,45,46],bottom:[0,10,15,45],bound:[6,13],boundari:45,bourdev:47,brace:24,bracket:29,branch:40,bring:[33,34],buffer:[7,13,45],build:[0,40,41],built:[1,7,12,13,14,27,40,45],byte_to_memunit:14,c1:2,c2:2,c:[1,4,6,12,13,15,17,20,24,31,39,40,41,42,45,46],c_str:41,cach:[15,45],cache_loc:[15,45],cached_location_t:[15,45],calcul:[19,33,34,46],call:[6,7,8,10,13,17,19,31,41,45,46],can:[2,4,5,6,7,8,9,10,12,13,14,15,16,17,24,27,31,32,39,40,41,45,46],cannot:[7,10,32,45],canon:[13,45],capabl:41,captur:3,care:[8,33],carriag:[15,45],cast:45,cater:24,caus:[31,45],caution:6,cav:6,cb1:2,cb2:2,cb3:2,cb:2,cc:41,cc_t:41,ccv:10,ccv_imag:45,cell:24,center:[7,32],centerimg:7,central:45,certain:32,challeng:[0,45],chan16:1,chang:[6,8,10,12,14,22,31,41,45,46],channel16_0_5_reference_t:1,channel16_11_5_reference_t:1,channel16_5_6_reference_t:1,channel1:1,channel2:1,channel3:1,channel:[0,2,3,5,6,7,10,11,12,13,14,17,24,29,32,33,34,39,41,42,45,46],channel_6bit:1,channel_convert:[1,7,8,13,45],channel_convert_to_unsign:45,channel_invert:[1,8],channel_mapping_t:3,channel_mapping_typ:[12,13,45],channel_multipli:1,channel_t:45,channel_trait:[1,8],channel_typ:[7,12,13,44,45],channel_type_to_index:44,channelbitsizevector:12,channelconcept:[1,13],channelconvertibleconcept:1,channelmap:3,channelmappingconcept:[3,13],channelptr:14,channelrefer:13,channelrefvec:14,channelscompatibleconcept:[1,13],channelvalu:[12,13,14],channelvalueconcept:[1,12],check:[6,7,10,15,29,40,45],choic:[15,31],choos:15,chose:7,christoph:31,chunki:45,ci:40,claim:41,classtyp:[12,42],clear:[24,32,41],client:40,clockwis:45,clone:27,close:41,closer:45,cmake:22,cmyk16_pixel_t:[12,13,42],cmyk16_planar_image_t:6,cmyk16_planar_step_view_t:6,cmyk16_planar_view_t:6,cmyk16c_planar_ref_t:42,cmyk16c_planar_view_t:6,cmyk16sc_planar_ref_t:12,cmyk8_image_t:41,cmyk:[0,12,42],cmyk_t:3,cmyka:44,code:[0,5,6,7,8,10,15,20,38,39,40,41,42,46],col:46,col_begin:[10,45],col_end:10,collect:[6,44],color:[0,1,5,6,7,10,11,12,13,14,15,29,33,34,39,41,42,44,46],color_bas:2,color_const_reference_t:2,color_convert:[8,13,44],color_convert_deref_fn:[8,14],color_convert_view:8,color_converted_view:[7,8,10,45,46],color_converted_view_typ:[8,10],color_converter_typ:41,color_reference_t:2,color_spac:44,color_space_t:[2,3],color_space_typ:[7,8,12,13,45],colorbas:2,colorbaseconcept:[2,13],colorbasescompatibleconcept:[2,13],colorbasevalueconcept:2,colorconvert:10,colorspac:[3,12,13,14,42],colorspace1:3,colorspace2:3,colorspaceconcept:[3,13],colorspacescompatibleconcept:[2,3,45],column:[14,15,45,46],com:[10,40,47],combin:[6,14,15,31,45],come:[12,41],commerci:46,common:[0,2,4,6,41],commonli:13,commun:44,compact:1,compactli:[7,45],compar:[0,1,2,5,6,7,45],comparison:[1,6,15,31],compat:[1,2,3,6,7,10,13,25,27,39,41,45],compil:[1,2,5,6,7,10,13,14,17,27,45],complement:5,complet:[40,41,45],complex:[6,7,13,15,24,31,45],complic:[8,9,17],compon:[0,1,42],compos:[10,14],comprehend:45,comprehens:45,compris:3,comput:[7,15,31,32,45,46],computexgradientgray8:45,concentr:33,concept:[0,1,2,5,8,9,10,11,13,14,15,16,31,32,39,45],concept_check:[10,45],concept_map:4,conceptc:4,conceptu:13,conclus:[11,39],concret:[6,45],condit:[15,31],confer:31,config:22,configur:[18,40],consid:[1,3,6,13,19,20,32,46],consist:[2,15,40,45],const_iterator_typ:14,const_point:1,const_refer:[1,8,10,13,14,45],const_t:[6,8,9,10,14,15,45],const_view:[9,45],const_view_t:[6,9],constant:[2,10,12,13,17,31,45],constexpr:[8,45],construct:[1,4,5,6,7,8,9,10,12,13,14,17,24,27,45],constructor:[1,6,7,9,17,18,24,45],consult:41,contain:[1,2,3,6,7,9,13,14,19,21,41,45],content:44,context:[32,41],contigu:2,contrast:[33,36,37,39],conveni:8,convent:[39,45],convers:[1,13,14,15,27,41],conversionpolici:41,convert:[1,2,7,8,10,12,13,14,19,33,34,41,44,45],convolut:[10,37,39],convolv:[7,32],coord:45,coord_t:[9,10,15],coordin:[15,16,41,45],copi:[1,2,6,7,8,9,10,13,15,17,19,24,41,45,46],copy_and_convert_pixel:[10,45],copy_pixel:[6,7,10,41,45],copyabl:10,copyconstruct:[2,4],copyconstructibleconcept:14,cordelia:31,corner:[7,10,31,45],correct:45,correctli:[4,17],correspond:[1,2,5,8,10,14,18,32,33,34,45],cost:5,could:[6,7,10,14,15,18,32,41,45],count:[7,19],counter:45,counterpart:41,coupl:41,cours:[15,41],cout:[20,24],cover:[31,33],cpp:39,creat:[1,3,6,7,8,12,13,14,15,19,25,27,39,41],create_with_margin:7,cstddef:20,cumul:[25,27,33,34,39],cumulative_histogram:[19,23],curli:24,current:[3,6,14,15,22,40,41,45],curvatur:[31,37],custom:[1,10,15],d:[10,14,15,31,42,45],d_channel_t:45,dark:36,data:[1,5,8,9,10,41,42,45],dave:17,deal:45,dealloc:45,debug:45,decent:41,declar:45,decrement:15,dedic:[11,21,25,35,37],deep:[6,9,17,45],deeper:31,default_color_convert:10,default_color_converter_impl:8,defaultconstruct:4,defaultconstructibleconcept:14,defin:[0,1,2,3,4,6,10,12,13,14,15,16,17,39,41,45],definit:[3,44],degrad:45,degre:45,delai:15,deleg:10,delet:9,demand:41,demo:[23,29],demonstr:[10,24,41,45],denot:[14,17,45],depend:[32,40,41],depth:[0,6,7,10,12,14,42,45,46],deref:[10,15],deref_compos:14,deref_t:[8,45],derefer:[8,45],dereferenc:[7,8,10,12,14,15,17],dereference_iterator_adaptor:14,deriv:[10,31,37],derived_image_typ:[12,45],derived_iterator_typ:[12,45],derived_pixel_reference_typ:[12,45],derived_view_typ:[12,45],describ:[0,2,4,11,15,16,21,25,35,37,41],descript:[41,42],design:[0,2,5,39,41,45],desir:[29,33,45],despit:6,destin:[1,6,7,8,41,45],destroi:6,destructor:[9,45],det:31,detail:[2,6,14,41,45],detect:[37,41,45],detector:[37,39],determin:[14,15,31],develop:[10,38,40],devic:41,devicen_t:3,diagram:15,diff:14,differ:[1,6,13,14,15,17,31,32,34,41,45],difference_typ:[10,15],difficult:[0,45],dim:[6,9,45],dimens:[6,9,10,15,16,24,29,31,33,34,41,45],dimension:[7,9,10,15,16,45],direct:[12,14,15,31,32,41,45],directli:[7,13,15,17,18,24,41,45,46],directori:44,disadvantag:45,discrimin:31,discuss:0,disk:[6,8,45],dispatch:8,displai:41,distanc:[14,45],distinct:[1,13,31,45],distribut:[13,33],dither:41,divis:14,do_swap:6,doc:22,document:[0,4,21,25,32,35,37,41,45],doe:[1,7,10,12,17,40,45],doesn:[41,45],don:[6,8,9,10,12,13,15,36,45],done:[7,15,18,32,41,45],doubl:[8,45],down:[6,7,10],download:[10,40],draw:32,drawback:45,drive:41,dst:[1,2,7,8,10,41,45],dst_channel_t:45,dst_img:[33,34],dst_it:45,dst_pixel:45,dst_row_byt:45,dst_view:41,dstchannel:1,dstcolorspac:8,dstimag:7,dstp:[8,10],dstpixel:13,dstview:45,due:[13,24],dummi:29,duplic:46,dure:[27,38,41],dx:31,dxdx:31,dxdy:31,dy:31,dydi:31,dynam:[11,12,14,15,39,41],dynamic_at_c:[2,13],dynamic_imag:[6,39,45],dynamic_image_al:[6,45],dynamic_x_step_typ:[6,10,14],dynamic_xy_step_transposed_typ:10,dynamic_xy_step_typ:[6,10],dynamic_y_step_typ:[10,15],e:[3,9,10,14,15,20,27,33,34,45],each:[0,2,7,8,10,13,15,16,19,33,34,41,45],earli:[10,45],easi:[41,45],easier:[10,18,45],easili:45,edg:[31,45],effect:[32,45],effici:[0,7,10,14,15,45,46],either:[6,7,8,10,14,34,41,45],element:[2,3,10,11,13,14,32,45],element_const_reference_typ:[2,13],element_recurs:2,element_reference_typ:[2,13],element_typ:2,els:[8,15],elsewher:19,email:41,enabl:41,encod:41,end:[0,7,9,10,15,41,45,46],enhanc:[33,36,37,39],enough:31,ensur:[10,45],entir:[33,45],enumer:[41,45],epipolar:38,equal:[1,2,3,6,10,13,15,34,36,45],equal_pixel:10,equalitycompar:[1,2,4],equival:[2,6,10,14,15],error:[1,6,7,10,17,45],especi:6,essenti:0,establish:42,etc:[0,6,10,13,22,33,34,40,41,45],european:31,evalu:[12,14],even:[6,7,8,41,45,46],ever:7,everi:[5,6,10,14,15,42,45,46],everyth:8,exact:32,exactli:13,exampl:[1,2,3,4,6,8,10,11,12,13,14,15,17,18,19,20,32,41,42,45,46],except:[2,6,8,10,14,15,40,45],exclud:45,execut:[6,45],exercis:45,exist:[5,7,8,19,41,46],expect:[34,41],expens:45,explan:[10,31,33,34,41],explicit:[6,13,45],explicitli:45,extend:[5,11,25,27,39,45],extending_gil__io_with_new_format:41,extens:[6,8,10,25,40,45,46],extern:[21,41],extra:[7,10,13,45,46],extract:45,extrem:31,ey:36,f:[10,12,42],fact:[41,45],factori:[8,10,45],fail:45,fall:[7,10],fals:[8,12,15,23,24,29,45],familiar:45,famou:34,far:45,fast:[10,15,45],faster:[1,5,9,15,45],fastest:7,featr:46,featur:[31,34,37,38,41,46],fetch:45,few:[24,29,33,34,36,41],fewer:29,file:[6,8,20,22,40,41,45],file_nam:6,filenam:41,filesystem:41,fill:[2,7,10,13,15,19,23,25,27,29,39,41,45],fill_histogram:[22,23,24,29],fill_pixel:[7,10,41],fill_valu:9,filter:[15,37],find:[15,40],first:[0,1,2,3,6,7,8,10,13,15,19,33,38,41],first_argument_typ:10,firstbit:1,fit:13,five:[3,5,12],flat:[32,33],flatten:33,flavour:41,flexibl:[1,6,12,46],flip:[10,14,45],flipped_left_right_view:10,flipped_up_down_view:10,float_on:1,float_zero:1,flow:27,fly:14,fn:14,focu:[36,45],focus:45,folder:[32,39,41],follow:[0,1,2,3,5,6,7,9,10,12,13,15,16,22,27,31,33,41,42,44,45,46],for_each:[2,7,10,45],for_each_pixel:[7,10,24,45,46],for_each_pixel_posit:[10,45],forc:41,form:[0,9,12,13,29,31,32,45],format:[13,24,40,45],format_tag:41,formattag:41,forward:14,forwardtraversalconcept:14,found:41,four:[15,45],fourth:7,frame:38,framework:41,frederik:31,free:[15,40,45],freeli:[7,10],frequenc:19,frequent:15,friendli:[15,45],from:[0,1,5,6,7,8,12,13,14,15,18,20,22,24,27,29,31,39,40,41,45,46],fulfil:4,full:[6,13],fulli:[8,41,45],fun:10,function_requir:13,fundament:[1,15,38],fundamental_step:14,further:17,furthermor:[41,45],futur:46,g:[7,10,15,31,33,34,46],gap:10,gaussian:[31,32],gener:[0,2,4,6,7,9,10,11,14,16,20,31,32,42],generate_pixel:10,geometri:38,get:[1,6,8,10,12,14,19,20,27,29,31,32,45],get_color:[2,7,8,13],get_info:41,get_num_bit:44,get_num_it:45,get_pixel_typ:44,get_read_devic:41,get_reader_backend:41,gil:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,27,29,35,36,37,39,40,42,44,47],gil_function_requir:[2,7,10,45],github:40,give:[7,15,41],given:[0,2,6,8,9,10,12,13,14,15,17,31,45],glimps:45,global:45,go:[15,41,45],goal:[5,33],goe:45,good:[32,33,36,45],googl:38,gool:31,gradient:[31,32,39],grai:[7,8,31,44],graph:32,grate:17,gray16:41,gray16_image_t:[41,45],gray16_pixel_t:45,gray16_step_view_t:10,gray16c_view_t:45,gray1:[41,45],gray1_image_t:41,gray2:41,gray32s_pixel_t:45,gray32s_view_t:45,gray4:41,gray4_image_t:41,gray7:41,gray8:41,gray8_image_t:[6,18,23,24,33,34,41,45],gray8_pixel_t:[7,8,24,45,46],gray8_view_t:7,gray8c_loc_t:45,gray8c_view_t:45,gray8s_image_t:45,gray8s_pixel_t:45,gray8s_view_t:45,gray_alpha:41,gray_alpha_16:41,gray_alpha_8:41,gray_channel_t:7,gray_color_t:[7,8],gray_cs_t:7,gray_image_t:45,gray_layout_t:45,gray_pixel_t:45,gray_t:[3,7,8,12],gray_to_rgb:7,grayimage_histogram:[7,46],graypixel:7,grayscal:[7,8,10,12,14,15,33,45],grayview:[7,46],green:[7,10,13,17,24,29,46],green_t:[2,3,7,13],grid:45,group:[0,3],guarante:4,guid:[10,39,45],guidelin:41,gv8:7,h1:19,h:[8,18,19,20,24,29,33,34,45],ha:[2,5,6,7,9,10,12,14,15,19,41,45],half:45,half_x_differ:45,halfdiff_cast_channel:45,hand:[0,5,31,39,45,46],handl:45,happen:[6,31,45],hard:[12,41],hardli:45,harrismatrix:31,hasdynamicxsteptypeconcept:[14,15],hasdynamicysteptypeconcept:15,hash:20,hash_combin:20,hash_valu:20,hasher:20,hassl:45,hastransposedtypeconcept:15,have:[0,1,2,3,5,6,7,8,9,10,12,13,14,15,31,33,34,36,41,44,45,46],hcb:2,he:41,header:[39,40,41,44],heidelberg:31,height:[6,7,9,10,33,34,45,46],help:32,helper:12,henc:[33,34,36],here:[0,1,2,3,4,6,7,8,10,12,13,14,15,32,41,45],hessianmatrix:31,heterogen:[12,13,45],hi:41,high:29,higher:8,hill:[31,32],hist:[7,46],histogram:[20,21,22,27,36,39],histogram_equ:33,histogram_match:34,homogen:[2,13,14,45],homogeneous_color_bas:[2,14],homogeneouscolorbaseconcept:[2,13,14],homogeneouscolorbasevalueconcept:2,homogeneouspixel:13,homogeneouspixelbasedconcept:[12,13],homogeneouspixelconcept:13,homogeneouspixelvalueconcept:13,hopefulli:[41,44],horizont:[7,12,14,15,32,45],how:[1,3,6,7,8,10,12,13,14,31,41,45],howev:[2,10,45],hpp:[6,8,20,39,40,41,44,45],hsl:44,hsv:[33,34,44],html:10,http:[10,40,47],human:36,i:[3,6,9,10,12,13,14,15,16,20,27,31,40,41,45],ic:10,idea:33,ideal:33,ident:[7,8],identifi:20,ifstream:41,ignor:[13,45],ii:12,illumin:34,illustr:[6,7,45],imag:[0,5,11,13,14,16,18,21,23,24,25,27,31,32,33,34,35,36,38,40,42,44,46],image_read_info:41,image_read_set:41,image_t:[6,41],image_typ:[8,12,44,45],image_view:[6,9,10,45],image_write_info:41,imageconcept:[6,7,9,12],imagemagick:41,imagetyp:6,imageviewconcept:[6,7,9,10,12,45],imageviewtyp:6,imagin:32,img:[6,7,9,10,15,23,24,29,41,45,46],img_view:8,immut:[6,9,10,12,14,15,42,45],impact:[10,45],implement:[1,2,6,8,10,13,14,15,17,31,40,41],impos:1,improv:[44,45],in1:45,in2:45,in_buff:41,in_color:45,inaccuraci:41,inc:[14,40],includ:[4,6,20,36,40,41,44,45],incompat:[1,6,7,41,45],incomplet:41,incorrect:45,incorrectli:17,increas:10,increment:[14,15,45],independ:[15,33,34,41,45],index:[2,10,13,15,41,45,46],indexed_imag:44,indic:[1,12,15,24,32,42,45],indica:42,ineffici:6,info:41,inform:[1,15,41],inher:14,inherit:13,initi:[7,13,38,45],inlin:[6,8,45],inner:45,inp_img:[33,34],input:[10,24,32,33,34,45],insid:[6,7,8,10,15,16,45],inspect:40,instal:[39,41],instanc:[6,8,14,24,29,41,45],instanti:[6,10,15,27,45],instead:[1,2,9,45],instruct:45,instrument:5,integ:[1,7,10,15,41,45],integr:[1,2,3,12,14,42,45],intel:15,intens:[1,31,32],interest:31,interfac:[15,24],interleav:[0,6,7,8,9,10,12,13,14,15,42,45,46],interleaved_ptr:39,interleaved_ref:39,interleaved_view:[10,41,45],intermedi:7,intern:[14,24,31,46],internet:8,interpret:[3,10],interv:33,introduc:41,invari:31,invert:8,invert_pixel:17,invok:[2,6,7,8,10,12,14,15,45],involv:45,io:[6,39,45],ios_bas:41,iostream:20,is_1d_travers:[10,15],is_bit_align:44,is_homogen:44,is_iterator_adaptor:14,is_mut:[1,8,13,14,45],is_pixel:13,is_planar:[12,13],is_sam:[6,7,13],is_similar:44,ismut:12,isplanar:[9,12],isstep:12,isstepx:12,issu:[17,45,46],isxstep:12,isystep:12,iter:[1,2,5,7,8,9,10,11,13,17,39,42,46],iterator_adaptor_get_bas:14,iterator_adaptor_rebind:14,iterator_from_2d:[10,15],iterator_is_mut:14,iterator_t:41,iterator_trait:[13,17,45],iterator_typ:12,iterator_type_from_pixel:12,iteratoradaptorconcept:14,its:[1,3,6,7,9,12,13,14,15,19,24,44,45],itself:[7,13,19,27],j:31,jamfil:22,jiri:31,journal:31,jpeg:[6,8,45],jpeg_lib:41,jpeg_read_imag:7,jpeg_tag:[6,41,45],jpeg_wiki:41,jpeg_write_view:7,jpg:[7,41,45],just:[7,8,9,12,13,15,41,44,45],k:[2,7,13,16,31,45],kadir:31,keep:[0,14,27,45],kei:[19,20,24,27,29,31],kernel:[7,37],key_from_pixel:24,kind:41,know:41,known:[27,33],krystian:31,kth_element_const_reference_typ:2,kth_element_reference_typ:2,kth_element_typ:[2,13],kth_semantic_element_const_reference_typ:2,kth_semantic_element_reference_typ:2,kth_semantic_element_typ:[2,13],l:7,lab:44,lack:[41,45],laid:7,lambda:[7,46],larg:41,larger:7,largest:7,last:[10,13,41,45],lastli:17,later:[2,15],latest:40,latter:[7,13],layout:[2,5,11,12,13,14,39,42,45],layout_t:2,least:6,leav:45,lectur:39,left:[7,10,14,15,34,41,45,46],let:[8,20,31,32,45,46],level:[1,6,41,45],lib:41,libjpeg:[40,41],libpng:[40,41],librari:[0,5,8,10,11,20,37,40,41,44,46],libraw:41,libtiff:41,lie:29,light:36,lightweight:[7,10,15,45],like:[0,6,7,8,12,13,14,22,31,32,33,34,40,41,45],limit:[5,6,25,27,39],line:45,linear:[1,6,33,36],linearli:[1,45],link:[40,41,47],list:[11,21,25,35,37,40,41],littl:[13,32],live:8,ll:41,load:[6,45],loc2:15,loc:15,local:[34,41],locat:[5,8,9,10,11,12,13,14,16,34,39,42],locator_t:45,locator_typ:12,look:[8,31,32,36,41,45],loop:[10,15,45],lossi:[1,13],lot:[41,45],low:29,lower:41,lubomir:47,luc:31,lumin:32,luminos:[7,45,46],luminosity8bit_hist:46,luminosity_hist:46,luminosity_histogram:7,macro:[41,46],made:44,magnitud:45,mai:[0,1,3,4,6,7,8,10,13,14,15,45],main:[20,44],maintain:[44,45],make:[0,6,7,8,10,15,24,25,27,39,41,45],make_histogram:[18,22],make_integer_sequ:3,make_scanline_read:41,make_step_iter:14,mandel:45,mandel_grad:45,mandelbrot:[8,14,15,39,45],mandelbrot_fn:45,mani:[5,6,9,10,25,41,45],manipul:5,manual:41,map:[1,3,7,13,22,23],margin:7,mark:0,mask:[29,33,34],mata:31,match:[1,10,17,18,33,36,41,45],mathemat:33,matric:[31,32],matrix:[31,32],matter:31,max:1,max_el:2,max_it:45,max_valu:1,maximum:1,mayb:17,md:40,me:41,mean:[6,7,9,15,32,40,45],meant:41,measur:[6,15,45],mechan:[6,8,15,45],median:32,medic:36,member:[8,14,17,29,41],memmov:[7,10],memori:[0,2,3,7,13,14,15,45,46],memory_based_2d_loc:15,memory_based_step_iter:[14,15],memorybasediteratorconcept:[14,15],memunit:[14,15],memunit_adv:14,memunit_advanc:14,memunit_advanced_ref:14,memunit_dist:14,memunit_step:14,mention:41,meta:45,metafunct:[2,4,10,11,13,14,15,16,39,44,45],metaprogram:41,method:[7,8,10,14,15,18,45],might:[24,31,32,41,45],mike:31,mikolajczyk:31,mileston:41,min:1,min_el:2,min_valu:1,mind:[5,20],minimum:1,minisblack:41,minor:5,miss:45,mitig:45,mix:7,mode:[41,45],model:[0,4,5,6,7,8,12,17,45],modern:[41,45],modifi:[10,13,14,16,45],modul:[6,8],moment:31,monkei:7,monkey_transform:7,mono:41,moravec:31,more:[1,2,4,6,7,8,9,10,12,13,14,15,41,45],most:[2,4,8,9,10,13,15,16,24,40,41,45],motiv:1,move:[10,15,31,41,45],mp11:[3,12,13,14],mp_list:3,mp_list_c:[3,13],mp_size:3,mp_true:[12,14],mpl:[3,12],ms:41,much:45,multi:[33,34,41],multipl:[7,10,15,45],multipli:[1,14,45],must:[2,4,10,13,14,15,17,22,45],mutabl:[1,9,10,12,13,14,15,17,42,45],mutable_forwarditeratorconcept:14,mutablechannelconcept:1,mutablecolorbaseconcept:[2,13],mutablehomogeneouscolorbaseconcept:[2,13],mutablehomogeneouspixelconcept:[7,13],mutableimageviewconcept:[9,10,45],mutableiteratoradaptorconcept:14,mutablepixelconcept:[7,13,17],mutablepixeliteratorconcept:14,mutablepixellocatorconcept:[10,15],mutablerandomaccess2dimageviewconcept:10,mutablerandomaccess2dlocatorconcept:15,mutablerandomaccessiteratorconcept:14,mutablerandomaccessndimageviewconcept:[9,10],mutablerandomaccessndlocatorconcept:15,mutablestepiteratorconcept:[14,15],my_any_image_t:6,my_color_convert:8,my_color_converter_impl:8,my_img:45,my_reference_proxi:17,my_valu:17,my_view:7,my_virt_view_t:45,myimg:6,myit:17,n2081:4,n:[2,3,9,10,14,15,16,18,45],name:[7,13,15,22,32,39,45,46],namespac:[2,6,17,20,41,44,45],nativ:[1,45],natur:15,navig:[10,14,15],necessari:[14,15,17,41,45],need:[1,4,7,8,10,12,13,14,15,19,20,24,27,41,44,45],neg:14,negat:10,neighbor:[15,45],neighborhood:15,neighbour:10,nest:[10,45],never:[6,7,45],new_dim:9,next:[8,10,41,45,46],nice:45,noisi:31,non:[7,10,12,13,15,17,33,36,41,42,45],none:[41,45],normal:[33,34,45],note:[0,1,2,6,7,9,10,13,24,31,41,45],noth:13,notic:[2,7,31,45],notion:[19,45],now:[20,31,41,45],nth_channel_deref_fn:14,nth_channel_view:[7,10,45,46],nth_channel_view_typ:10,nth_channel_x_gradi:45,num_channel:[6,10,12,13,45],num_dimens:[10,15,16],number:[2,6,7,10,13,14,15,27,31,33,34,45],numbit:1,numer:[10,31,39],numeric_limit:1,o:[6,40,45],obj:6,object:[6,8,10,12,14,15,17,18,41,42,45,46],obtain:[15,45],occupi:13,off:45,offer:15,offset:[1,14,15,45],ofstream:41,often:[3,6,13,45],ok:13,onc:[0,5,10,45],one:[2,4,6,7,8,10,12,13,14,15,29,32,33,41,45],ones:[6,8,13,31],onli:[1,2,6,7,8,10,13,14,15,17,24,31,33,39,40,41,44,45,46],onlin:41,op:2,open:6,oper:[1,2,4,6,8,9,10,13,14,15,16,17,20,24,39,41,42,45,46],oppos:[7,10,12,42,45],optim:[5,7,10,15,45],option:[0,8,22,24,31,39,41,45],order:[0,2,3,6,7,10,12,13,15,19,20,29,31,40,42,45,46],organ:[12,13,15,42],origin:[6,10,34,45,47],os:41,other:[2,4,8,13,14,15,20,22,27,31,32,41,42,45,46],otherwis:[8,13],our:[6,7,8,45],out:[27,29,33,34,41,45],out_buff:41,out_color:45,outdoor:31,output:[24,29,33,45],outsid:45,over:[1,9,10,13,14,18,19,20,24,29,31,33,34,42,45],overhead:[6,45],overlai:31,overload:[6,10,17,20,22,45],overrid:[7,8,15],overview:[21,25,35,37,39],own:[4,8,9,10,15,39,41,45],ownership:[9,45],p1:[2,7,13,41],p2:[2,7,13],p6:41,p:[2,10,12,13,14,17,24,33,34,45],pack:[9,13,14,45],packed_channel_refer:1,packed_channel_valu:1,packed_dynamic_channel_refer:1,packed_image1_typ:12,packed_image2_typ:12,packed_image3_typ:12,packed_image4_typ:12,packed_image5_typ:12,packed_image_typ:12,packed_pixel:[2,13,14,39],packed_pixel_typ:13,pad:[0,7,9,15],page:41,pair:[2,13,45],pairwis:[1,10,13],palett:41,paper:[4,31],paramet:[0,1,5,6,7,8,9,10,14,15,17,41,45],parent:[17,29],part:[36,41,46],partial:41,particular:[6,19,24,29,31,45],pass:[6,8,10,29,45],past:10,patch:31,path:[6,41],pattern:[1,7,12,45],peopl:44,per:[6,10,14,15,45],percent:41,perform:[6,8,10,14,15,39,45],permut:2,physic:[1,2,3,7,13],pick:41,pipe:45,pix_buff:13,pix_it:13,pixel1:13,pixel2:13,pixel:[0,1,2,3,4,5,6,8,9,11,16,17,24,32,33,34,39,42,46],pixel_2d_locator_bas:15,pixel_bit_s:44,pixel_refer:12,pixel_reference_typ:12,pixel_value_typ:12,pixelbasedconcept:[12,13,14,45],pixelconcept:[4,7,8,10,12,13,14,15],pixelconvertibleconcept:13,pixeldata:14,pixeldereferenceadaptorconcept:[8,10,14,15,45],pixeliteratorconcept:[10,12,14,15],pixellocatorconcept:[10,15],pixelrefer:12,pixelscompatibleconcept:[10,13],pixelvalueconcept:[8,9,10,13,14,15,45],place:[19,45],plain:14,planar:[0,2,6,7,9,10,12,13,14,15,17,41,42,45,46],planar_pixel_iter:[14,15],planar_pixel_refer:[13,17],planar_rgb_view:[10,45],plane:[0,7,10,32,45],platform:[15,39],pleas:[31,41],plot:32,plu:15,png:[33,34],png_lib:41,png_tag:[33,34],png_test_fil:41,png_wiki:41,pnm_wiki:41,point2dconcept:[15,16],point:[0,1,6,10,11,12,13,15,31,39,41,42,45],point_t:[6,9,10,15,41,45],point_typ:10,pointer:[1,7,8,10,13,14,15,41,42,45],pointndconcept:[10,15,16],polici:[0,10,46],popular:40,posit:[14,15,45],position_iter:14,possibl:[6,10,13,41,45],potenti:[0,41],pow:45,power:[6,7,31,45],pp:31,practic:[6,45],pre:45,precis:1,prefer:[18,22,41],prefix:2,presenc:0,present:[45,46,47],pretend:14,preval:36,previou:[0,6],previous:[10,45],price:12,primari:36,privat:[8,10,15,41,45],probabl:41,problem:[12,17,45],process:[0,10,25,35,36,38,39,45],processor:45,produc:32,product:[45,46],profil:8,program:[4,41,45,46],project:[0,38,40],propag:[10,45],proper:45,properli:[1,2,7,8,41,45],properti:[12,13,39,45],propos:4,provid:[0,1,2,3,5,6,8,9,10,12,13,14,15,16,17,20,22,29,32,41,44,45,46],provis:22,proxi:[1,2,13],ptr:7,ptrdiff_t:[6,10,14,15,45],pull:14,purpos:[13,20],put:[32,45],quadrant:46,qualifi:17,qualiti:[8,41],queri:45,r565:13,r:[7,10,34,46],random:[3,14,15,45],randomaccess2dimageconcept:9,randomaccess2dimageviewconcept:10,randomaccess2dlocatorconcept:15,randomaccessndimageconcept:9,randomaccessndimageviewconcept:10,randomaccessndlocatorconcept:[10,15],randomaccesstraversalconcept:[10,14,15],randomaccesstraversaliteratorconcept:14,rang:[1,2,9,10,29,33,45],rare:[9,45],rather:41,raw:[5,15,45],raw_wiki:41,rbegin:10,rbg323:41,rdbuf:41,read:[0,8,10,12,13,14,15,18,45],read_and_convert_imag:41,read_and_convert_view:41,read_imag:[6,33,34,41,45],read_image_info:41,read_view:41,read_xxx:41,reader:[41,45],reader_bas:41,reader_t:41,readm:40,real:[17,45],realiz:45,reason:33,rebind:14,recommend:[0,27,41],recreat:[6,7,9],rectangular:[10,45],recurs:[2,14,45],red:[0,1,2,7,13,14,17,24,29],red_in_cmyk16:13,red_in_rgb8:13,red_t:[2,3,13],redefin:8,ref2:7,ref:[7,13],ref_imag:34,ref_img:34,refer:[1,2,7,8,10,12,13,14,15,31,34,39,41,42,45],refin:16,regardless:45,region:[37,39,45],regist:45,regular:[1,2,4,9,10,13,15,16],reinterpret_cast:45,rel:[15,45],relat:[4,12,45],releas:[27,38],relev:[29,41],remain:8,rememb:[15,17],remov:[41,45,46],remove_refer:14,rend:10,repeat:15,replac:[12,20],repositori:[27,40],repres:[0,15,17,41,45],represent:[0,5,39,45],reqd:24,request:41,requir:[1,2,4,6,8,9,10,13,14,15,24,39,40,41,45],resampl:10,rescal:39,research:36,resembl:[6,10],resid:45,resiz:[10,39],resolut:[5,6],respect:[7,13,45],respons:31,rest:[12,45],restrict:41,result:[0,2,5,6,7,8,10,12,13,14,15,31,40,41,45],result_typ:[4,6,8,10,14,45],result_view_t:6,ret:45,reus:45,reverse_iter:10,review:[41,44],rewrit:45,rewritten:46,rgb16:41,rgb16_image_t:[10,45],rgb16c_planar_view_t:45,rgb222:45,rgb32f_planar_step_ptr_t:[12,42],rgb32f_planar_view_t:7,rgb32fc_view_t:45,rgb32s_pixel_t:45,rgb32s_view_t:45,rgb565:13,rgb565_channel0_t:13,rgb565_channel1_t:13,rgb565_channel2_t:13,rgb565_pixel_t:13,rgb64_image_t:8,rgb64_pixel:8,rgb64_pixel_ptr_t:8,rgb64_pixel_t:8,rgb8:[13,41,45],rgb8_image_t:[6,18,24,29,41,45],rgb8_pixel_t:[7,13,45],rgb8_planar_ptr_t:14,rgb8_planar_ref_t:[7,13],rgb8_planar_view_t:12,rgb8_ptr_t:10,rgb8_step_view_t:6,rgb8_view_t:[6,7],rgb8c_planar_ptr_t:[7,14],rgb8c_planar_ref_t:[7,13],rgb8c_ptr_t:10,rgb8c_view_t:[6,45],rgb:[0,1,2,7,8,10,12,13,14,24,29,33,34,41,42,45,46],rgb_channel_t:7,rgb_cs_t:7,rgb_full:13,rgb_layout_t:[7,8,13],rgb_planar_pixel_iter:17,rgb_t:[3,7,13,14],rgba16:41,rgba8:41,rgba8_image_t:41,rgba:[0,3,12,42,44],rgba_layout_t:[3,7],rgba_t:3,rgbpixel:7,rgbtograi:46,right:[7,10,14,15,34,45],rise:15,rotat:[6,10,45],rotated180_view:[6,7,10],rotated180_view_fn:6,rotated90ccw_view:[10,45],rotated90cw_view:[10,45],routin:[20,27],row:[0,7,9,10,13,14,15,41,45,46],row_begin:[10,45],row_end:10,rowsiz:10,rpv32:7,rule:40,run:[0,1,5,6,7,10,38,39],runtim:6,runtime_imag:[41,45],rview:10,s:[1,2,3,7,8,12,15,17,20,31,32,41,42,45,46],said:6,sake:10,same:[1,2,3,6,7,8,10,13,15,16,31,32,34,41,45],sametyp:[1,2,4,10,13,14,16],sampl:[15,39,41,45,46],satisfi:[2,4,9,10,15,45],sav:6,save:[6,41,45],save_180rot:6,scale:45,scanlin:41,scanline_read:41,scanline_read_iter:41,scenario:[2,33,45],schaffalitzki:31,scharr:32,scharrx:32,schmid:31,scoped_channel_valu:1,sean:17,second:[0,1,7,13,15,17,31,41,45,46],second_argument_typ:10,section:[0,2,10,11,21,25,35,37,41,44],see:[2,4,8,10,14,15,41,45],seek:41,select:6,semant:[2,3,13,45],semantic_at_c:[2,7,13],send:41,sensor:34,separ:[0,8,10,31,45],sequenc:[1,3],serv:41,servic:40,set:[0,1,3,4,6,7,8,9,10,13,14,15,41,45],set_step:14,sever:[5,14,41,45],shallow:[6,7,10,14,17,45],shape:32,share:[6,13,41],sharper:32,she:41,shift:1,ship:27,shortli:46,should:[6,15,18,19,22,31,33,40,41,45],show:[7,41,45],shown:[7,33,34,45],side:45,sigma:32,sign:[12,42,45],signific:[10,36],similar:[1,10,14,15,39,41,45],similarli:[9,14],simpl:[12,15,24,32,33,41,45,46],simpler:[31,41,46],simplest:[24,32,45],simpli:[7,8,15,31,32,45],simplic:45,simplifi:[7,31,45],simultan:45,sinc:[6,7,13,14,18,19,27,29,33,34,40,41,44,45,46],singl:[6,10,14,32,41,45],size1:12,size2:12,size3:12,size4:12,size5:12,size:[2,6,7,10,13,14,15,41,45],size_t:[2,6,9,10,13,15,16,20,45],size_typ:[6,10],sizeof:13,skeleton:41,skip:[10,14,45,46],slightli:[8,45],slow:45,slower:[15,45],small:[31,41,44],smaller:[7,19],so:[6,8,20,32,41,45],sobel:32,softwar:46,solut:17,some:[0,4,6,7,8,10,12,13,14,15,17,36,41,45],sometim:[1,10,13,14,15,17,41,45],somewher:8,soon:41,sort:[19,32],sourc:[1,6,7,8,10,18,40,41,42,45,46,47],space:[0,2,5,6,7,10,11,13,14,33,34,39,41,44,45,46],special:[8,13,34,42,45],specif:[0,5,39,41,45],specifi:[0,1,3,5,6,8,9,12,14,33,34,39,41],speed:[0,5,6,10,45],spirit:15,spread:33,springer:31,sr8wjg0pcee:47,src1:10,src1_it:45,src2:10,src2_it:45,src:[1,2,6,7,8,10,41,45],src_b:45,src_g:45,src_it:45,src_loc:45,src_pix_ref:8,src_pixel:45,src_r:45,src_row_byt:45,srcchannel:1,srccolorspac:8,srcconstrefp:8,srcp:8,srcpixel:13,srcview:[7,8,10,45],srowbyt:46,stabl:31,stage:10,standalon:44,standard:[3,4,10,12,14,15,20,33,34],start:[10,13,15,41,45],state:10,statement:[6,45],static_:2,static_assert:[6,7,12,13],static_cast:45,static_copi:2,static_equ:2,static_fil:[2,7,45],static_for_each:[2,45],static_gener:[2,45],static_max:2,static_min:2,static_transform:[2,14,45],std:[1,2,6,7,9,10,12,13,14,15,17,18,20,21,22,24,27,29,39,41,45,46],step1:7,step2:7,step3:7,step4:7,step5:7,step:[6,10,12,15,37,42,45],step_iterator_t:12,stepanov:17,stephen:31,stepiter:15,stepiteratorconcept:[14,15],still:45,stl:[2,5,6,9,15,17,25,27,39],stlab:10,store:[6,7,15,19,24,41,45],straightforward:[10,41],stream:41,strength:32,stretch:[32,36],string:[6,18,41],stringstream:41,strip:41,strongli:41,struct:[1,2,3,6,8,10,12,13,14,15,16,17,20,41,45],structur:[0,6,10,11,31,37,39,45],sub:[1,17,20,25,27,39,41,44],sub_h:29,sub_histogram:29,subclass:[6,14,15],subimag:45,subimage_view:[7,10,41,45,46],subject:41,suboptim:45,subsampl:[10,14,45],subsampled_view:[7,10,45,46],subset:29,substitut:4,successfulli:40,succinct:10,suffici:[15,40],suffix:42,suggest:[17,44],suit:[36,41],suitabl:27,sum:31,summer:38,suppli:[8,10,14,15,22,41],support:[0,1,6,7,8,10,12,14,22,27,39,40,45,46],supported_image_format:41,suppos:[6,7,8,45],sure:41,sv:8,swap:[4,15,17],swappabl:[1,2,4],symmetr:13,synopsi:[10,15],syntact:4,syntax:[4,18,33,34],synthet:[8,39,45],system:[41,45],sz:45,t1:1,t2:[1,2],t:[1,2,4,6,8,9,10,12,13,14,15,16,17,20,36,41,45],tabl:41,tag:[41,42],tag_t:41,take:[2,6,7,8,9,10,14,15,17,19,41,45,46],taken:[33,34,45],targa_wiki:41,target:[5,41,45],task:[24,29,45],technic:[11,39],techniqu:[6,34,41],tell:40,templat:[1,2,3,4,6,7,8,9,10,12,13,14,15,16,17,41,45,46],temporari:[17,45],term:[16,31],test:[20,22,39,40,42],test_imag:41,text:41,th:[2,7,10,14,15,45],than:[2,6,7,13,14,15,18,19,41,45],thank:[41,44],thei:[1,2,3,5,6,7,8,10,12,13,14,15,31,32,45],them:[1,4,6,9,10,12,13,41,45],therefor:1,thi:[0,1,2,4,6,7,8,10,12,13,14,15,17,18,24,31,32,34,36,41,42,44,45,46,47],thing:[7,32,41],think:45,third:41,thorough:41,those:[13,32],though:[6,7,32,45],three:[1,13,14,31,32,45],threshold:31,through:[7,15,41,45],thrown:45,thu:[1,2,3,8,15,33],tif:41,tiff_base_tag:41,tiff_extension_tag:41,tiff_graphicsmagick_test_fil:41,tiff_lib:41,tiff_lib_tiff_test_fil:41,tiff_t:41,tiff_tag:41,tiff_wiki:41,tile:41,time:[0,1,2,5,6,7,8,10,14,27,39],timor:31,tinn:31,tip:19,tmp:[14,17],todo:[18,26,28,30,43],togeth:[0,3,13,45],toll:[6,45],too:[36,44],toolbox:[39,41],top:[0,7,10,12,15,27,41,45,46],top_left:10,total:[10,15],trace:31,track:[10,14,45],transform:[1,2,6,8,10,31,33,34,39],transform_pixel:[10,45],transform_pixel_posit:[10,45],transpos:[10,15,45],transposed_typ:[10,15],transposed_view:10,travers:[9,10,14,15,41,42,45],treat:[6,45],tricki:17,trickier:45,trigger:[6,45],trivial:42,troubl:41,tupl:[24,29],turn:6,tutori:[8,10,15,39],tuytelaar:31,tweak:32,twice:45,two:[0,1,2,3,6,7,9,10,13,14,15,16,31,32,34,38,41,45],type1:18,type2:18,type3:18,type:[0,1,2,3,4,5,6,7,9,10,13,14,15,16,17,18,20,22,39,41,44,45,46],type_from_x_iter:12,typedef:[1,6,7,8,10,12,13,14,17,41,45],typen:18,typenam:[1,2,3,4,6,7,8,9,10,12,13,14,15,16,17,41,45,46],typic:[1,6,8,10],u:4,ud_fud:10,uint16_t:[1,13],uint8_t:[1,31,46],unari:[14,45],unary_compos:14,unary_funct:14,unaryfunctionconcept:[10,14],unchang:45,unclear:15,under:[31,34,41],underli:[6,10,14,41],understand:[1,31,32,41],unfamiliar:45,unfortun:45,uniform:34,uniformli:[6,33],uninitialized_copi:10,uninitialized_copy_pixel:10,uninitialized_fil:10,uninitialized_fill_pixel:10,uniqu:3,unit:[14,15,41],unless:[32,41],unlik:[9,13],unnam:3,unnecessari:[7,13,45],unordered_map:[22,23,27],unpack:13,unrel:46,unrol:45,unset:10,unsign:[6,7,9,10,12,13,14,42,45],unspecifi:4,until:31,unus:[13,45],unusu:45,up:[0,12,41],upon:[6,8,10,12,14,15,17],upper:46,upsid:[6,10],us:[0,1,2,3,4,5,6,8,9,10,12,13,14,15,16,17,18,20,22,24,25,29,31,32,34,35,39,40,42,46],usag:[20,21,32,33,34,41],use_default:12,user:[0,4,8,10,15,41,44,45],using_io:41,usual:[14,31,32,41],util:[25,39],v1:[6,10],v2:[6,10],v3:10,v:[2,6,7,10,23,46,47],val:10,valid:[1,10,45],valu:[0,1,2,3,6,7,8,9,10,12,13,14,15,16,17,24,29,31,32,33,34,41,42,45],value_typ:[1,8,9,10,13,14,15,16,41,45],valueless:6,van:31,vari:[0,3,45],variabl:[0,45,46],variant2:[6,45],variant:[6,41,45],variat:[0,41],varieti:[39,45],variou:41,vector:[22,23,33,34,45],veri:[9,12,31,45,46],verifi:45,version:[10,14,15,19,40,41,46],vertic:[12,14,15,32,45],via:[6,10],video:[0,39,45],view1:10,view2:10,view:[5,9,11,13,14,15,18,23,24,29,33,34,39,41,42,46],view_is_mut:12,view_t:[6,7,9,10,12,41],view_typ:12,view_type_from_pixel:12,viewer:41,viewscompatibleconcept:[7,10],viewtyp:6,virtual:[5,8,12,14,15,41],virtual_2d_loc:[15,45],vision:[0,31],visit:[6,10,15,45],visual:36,vol:31,vs:[0,10,46],vt:12,w:45,wa:[10,38],wai:[2,13,17,18,32,41,42,45],walk:[41,45],want:[7,8,14,15,18,41,45],warn:45,watch:47,we:[0,1,2,4,6,7,8,10,12,13,14,15,17,18,20,24,33,34,36,45],web:4,websit:41,weight:[31,37],well:[2,13,19,36,41,45],were:[38,45],what:[6,32,37,41,45],when:[2,7,8,9,10,14,15,17,18,31,32,34,41,45],where:[1,2,7,9,10,12,13,14,15,16,18,40,41,42,45],wherea:[0,2,6,32,41,45],whether:[1,10,12,14,15,45],which:[0,1,2,3,6,7,8,9,10,12,14,15,16,19,24,32,33,40,41,42,44,45],who:44,whose:[0,2,10,12,13,14,29,39,45],why:[33,45],width:[6,7,9,10,15,33,34,45,46],window:[31,41],within:10,without:31,word:[0,9,10,14,32,45],work:[0,5,6,7,8,10,13,17,31,39,45,46],workflow:22,worth:[7,41,45],would:[0,6,14,18,29,32,33,34,41,45],wrap:[6,10,14],wrapper:[14,15],write:[0,5,6,7,10,17,39,45],write_view:[6,41,45],writer:41,written:[15,32,41,45,46],wstring:41,www:47,x:[1,4,7,10,12,14,15,16,17,31,32,33,34,41,45],x_at:[10,15],x_coord_t:[6,9,10,15],x_diff:15,x_gradient:[39,45],x_gradient_obj:45,x_gradient_rgb_luminos:45,x_gradient_unguard:45,x_iter:[9,10,13,15,41,45],x_luminosity_gradi:45,x_min:45,xbm:41,xgradientgray16_gray32:45,xgradientplanarrgb8_rgb32:45,xgradientrgb8_bgr16:45,xiter:[12,15],xpm:41,xxx:41,xxx_all:41,xxx_and_convert_xxx:41,xxx_read:41,xxx_tag:41,xxx_write:41,xy_at:[10,15,45],xy_loc:[10,45],xy_locator_t:12,xyz:44,y:[4,10,15,16,17,31,32,41,45],y_at:[10,15],y_coord_t:[6,9,10,15],y_distance_to:15,y_gradient:45,y_iter:[10,15,45],y_min:45,ycbcr:[33,34,41],ycck:41,yellow:31,yet:[0,27,41,45],you:[7,8,12,17,19,20,24,27,41,45],your:[8,17,20,39,40,41,45],your_imag:[33,34],your_ref_imag:34,yourself:41,youtub:47,z:[32,45],zero:[13,31,45],zisserman:31,zlib:41},titles:["Basics","Channel","Color Base","Color Space and Layout","Concepts","Conclusions","Dynamic images and image views","Examples","Extending","Image","Image View","Design Guide","Metafunctions","Pixel","Pixel Iterator","Pixel Locator","Point","Technicalities","Create a histogram","Making a cumulative histogram","Extending the class","Extensions","Overview","STD extension","Fill histogram","Histogram","Limitations","Overview","STL compatibility","Making a sub-histogram","Utilities","Affine region detectors","Basics","Histogram Equalization","Histogram Matching","Contrast Enhancement","Overview","Image Processing","Overview","Boost Generic Image Library","Installation","IO extensions","Naming Conventions","Numeric extension","ToolBox extension","Tutorial: Image Gradient","Tutorial: Histogram","Tutorial: Video Lecture"],titleterms:{"1d":45,"2d":15,"class":20,"new":[8,41],And:41,In:41,acknowledg:44,ad:22,adaptor:14,advanc:24,affin:31,algorithm:[1,2,10,13,31,33,34,45],align:12,an:[22,41],avail:31,ax:20,base:[2,12],basic:[0,24,32],being:31,bit:12,bmp:41,boost:39,buffer:41,canva:7,channel:[1,8],code:45,color:[2,3,8,45],compat:[5,28],compil:[40,41],compon:12,concept:4,conclus:[5,45],concret:42,contain:22,content:[11,21,25,35,37],contrast:35,convent:42,convers:[8,45],convolut:32,core:39,creat:[10,17,18,45],cumul:19,curvatur:32,defin:[8,20],demo:[33,34],derefer:14,deriv:[12,32],descript:[22,27,33,34],design:11,detect:31,detector:31,document:39,dynam:6,enhanc:35,equal:33,equival:45,exampl:[7,39],exist:12,extend:[8,20,41],extens:[5,21,22,23,39,41,43,44],extern:22,fill:24,filter:32,first:45,flexibl:5,folder:44,format:41,from:10,fundament:14,gener:[5,39,41,45],gil:[41,45,46],glue:45,gradient:45,guid:11,harri:31,hessian:31,histogram:[7,18,19,24,25,29,33,34,46],homogen:12,imag:[6,7,8,9,10,12,15,37,39,41,45],implement:[45,46],instal:40,interfac:[41,45],io:41,iter:[12,14,15,45],jpeg:41,kernel:32,layout:3,lectur:47,level:7,librari:39,limit:26,locat:[15,45],make:[19,29],manipul:12,match:34,memori:[12,41],metafunct:12,model:[1,2,3,9,10,13,14,15,16],name:42,numer:43,oper:7,origin:46,other:10,over:15,overload:8,overview:[1,2,3,8,9,10,12,13,14,15,16,19,22,24,27,29,36,38,41,43,44],pack:12,perform:5,pixel:[7,10,12,13,14,15,45],platform:41,png:41,pnm:41,point:16,process:37,proxi:17,quickstart:39,raw:[10,41],read:41,refer:[17,44],region:31,resiz:7,result:[33,34],run:[41,45],space:[3,8],specifi:45,std:23,step:[14,31],stl:[10,28,45],structur:44,style:10,sub:29,support:[23,41],symbol:41,tabl:[11,21,25,35,37],targa:41,technic:17,test:41,tiff:41,time:45,toolbox:44,trait:12,transform:45,tutori:[27,41,45,46,47],type:[8,12,23,42],us:[7,41,45],usag:23,user:20,util:30,version:45,video:47,view:[6,7,8,10,12,45],virtual:45,weight:32,what:31,write:41}}) \ No newline at end of file diff --git a/html/toolbox.html b/html/toolbox.html index 48c80ea9f..b1ec0a6e6 100644 --- a/html/toolbox.html +++ b/html/toolbox.html @@ -22,6 +22,9 @@ + + + @@ -129,7 +132,7 @@

Reference

diff --git a/html/tutorial/gradient.html b/html/tutorial/gradient.html index 6ee948430..0cfa00950 100644 --- a/html/tutorial/gradient.html +++ b/html/tutorial/gradient.html @@ -22,6 +22,9 @@ + + + @@ -989,7 +992,7 @@

Conclusion

diff --git a/html/tutorial/histogram.html b/html/tutorial/histogram.html index f77dba37c..baf36da6b 100644 --- a/html/tutorial/histogram.html +++ b/html/tutorial/histogram.html @@ -22,6 +22,9 @@ + + + @@ -172,7 +175,7 @@

GIL implementation

diff --git a/html/tutorial/video.html b/html/tutorial/video.html index c5f116c64..bbe37ef9d 100644 --- a/html/tutorial/video.html +++ b/html/tutorial/video.html @@ -22,6 +22,9 @@ + + + @@ -83,7 +86,7 @@

Tutorial: Video Lecture