diff --git a/develop/doc/html/_sources/design/dynamic_image.rst.txt b/develop/doc/html/_sources/design/dynamic_image.rst.txt index f43c5eaff..546bfa4d9 100644 --- a/develop/doc/html/_sources/design/dynamic_image.rst.txt +++ b/develop/doc/html/_sources/design/dynamic_image.rst.txt @@ -103,7 +103,7 @@ GIL ``any_image_view`` and ``any_image`` are subclasses of ``variant``: y_coord_t height() const; }; -Operations are invoked on variants via ``apply_operation`` passing a +Operations are invoked on variants via ``variant2::visit`` passing a function object to perform the operation. The code for every allowed type in the variant is instantiated and the appropriate instantiation is selected via a switch statement. Since image view algorithms @@ -129,7 +129,7 @@ pixels. There is no "any_pixel" or "any_pixel_iterator" in GIL. Such constructs could be provided via the ``variant`` mechanism, but doing so would result in inefficient algorithms, since the type resolution would have to be performed per pixel. Image-level algorithms should be -implemented via ``apply_operation``. That said, many common operations +implemented via ``variant2::visit``. That said, many common operations are shared between the static and dynamic types. In addition, all of the image view transformations and many STL-like image view algorithms have overloads operating on ``any_image_view``, as illustrated with @@ -180,14 +180,13 @@ implemented: template typename dynamic_xy_step_type::type rotated180_view(const View& src) { ... } - namespace detail - { + namespace detail { // the function, wrapped inside a function object template struct rotated180_view_fn { typedef Result result_type; template result_type operator()(const View& src) const - { + { return result_type(rotated180_view(src)); } }; @@ -195,10 +194,11 @@ implemented: // overloading of the function using variant. Takes and returns run-time bound view. // The returned view has a dynamic step - template inline // Models MPL Random Access Container of models of ImageViewConcept - typename dynamic_xy_step_type >::type rotated180_view(const any_image_view& src) + template inline + typename dynamic_xy_step_type>::type rotated180_view(const any_image_view& src) { - return apply_operation(src,detail::rotated180_view_fn >::type>()); + using result_view_t = typename dynamic_xy_step_type>::type; + return variant2::visit(detail::rotated180_view_fn(), src); } Variants should be used with caution (especially algorithms that take diff --git a/develop/doc/html/_sources/tutorial/gradient.rst.txt b/develop/doc/html/_sources/tutorial/gradient.rst.txt index bbcb931e1..cc59d22e3 100644 --- a/develop/doc/html/_sources/tutorial/gradient.rst.txt +++ b/develop/doc/html/_sources/tutorial/gradient.rst.txt @@ -870,22 +870,22 @@ source view: }; The second step is to provide an overload of ``x_luminosity_gradient`` that -takes image view variant and calls GIL's ``apply_operation`` passing it the +takes image view variant and calls ``variant2::visit`` passing it the function object: .. code-block:: cpp - template - void x_luminosity_gradient(const any_image_view& src, const DstView& dst) + template + void x_luminosity_gradient(const any_image_view& src, const DstView& dst) { - apply_operation(src, x_gradient_obj(dst)); + variant2::visit(x_gradient_obj(dst), src); } -``any_image_view`` is the image view variant. It is -templated over ``SrcViews``, an enumeration of all possible view types +``any_image_view`` is the image view variant. It is +templated over ``SrcViews...``, an enumeration of all possible view types the variant can take. ``src`` contains inside an index of the currently instantiated type, as well as a block of memory containing -the instance. ``apply_operation`` goes through a switch statement +the instance. ``variant2::visit`` goes through a switch statement over the index, each case of which casts the memory to the correct view type and invokes the function object with it. Invoking an algorithm on a variant has the overhead of one switch diff --git a/develop/doc/html/design/basics.html b/develop/doc/html/design/basics.html index 71b8c8bc9..5b519853f 100644 --- a/develop/doc/html/design/basics.html +++ b/develop/doc/html/design/basics.html @@ -114,7 +114,7 @@ read the sections in order.

diff --git a/develop/doc/html/design/channel.html b/develop/doc/html/design/channel.html index 4409c8adf..17f09d42a 100644 --- a/develop/doc/html/design/channel.html +++ b/develop/doc/html/design/channel.html @@ -263,7 +263,7 @@ channel-level algorithms that GIL provides:

diff --git a/develop/doc/html/design/color_base.html b/develop/doc/html/design/color_base.html index 8af908b05..4e690cf9e 100644 --- a/develop/doc/html/design/color_base.html +++ b/develop/doc/html/design/color_base.html @@ -310,7 +310,7 @@ color base require that they all have the same color space.

diff --git a/develop/doc/html/design/color_space.html b/develop/doc/html/design/color_space.html index 4289dab15..ff5fda6af 100644 --- a/develop/doc/html/design/color_space.html +++ b/develop/doc/html/design/color_space.html @@ -162,7 +162,7 @@ A color space and its associated mapping are often used together.

diff --git a/develop/doc/html/design/concepts.html b/develop/doc/html/design/concepts.html index 9ead010a4..23db89422 100644 --- a/develop/doc/html/design/concepts.html +++ b/develop/doc/html/design/concepts.html @@ -143,7 +143,7 @@ Most of them are defined at the diff --git a/develop/doc/html/design/conclusions.html b/develop/doc/html/design/conclusions.html index f6767ff0a..300cab37d 100644 --- a/develop/doc/html/design/conclusions.html +++ b/develop/doc/html/design/conclusions.html @@ -121,7 +121,7 @@ raw pixel data from another image library.

diff --git a/develop/doc/html/design/dynamic_image.html b/develop/doc/html/design/dynamic_image.html index 99b66d0f5..ad433de0f 100644 --- a/develop/doc/html/design/dynamic_image.html +++ b/develop/doc/html/design/dynamic_image.html @@ -163,7 +163,7 @@ a never valueless variant type, compatible with }; -

Operations are invoked on variants via apply_operation passing a +

Operations are invoked on variants via variant2::visit passing a function object to perform the operation. The code for every allowed type in the variant is instantiated and the appropriate instantiation is selected via a switch statement. Since image view algorithms @@ -187,7 +187,7 @@ pixels. There is no “any_pixel” or “any_pixel_iterator” in GIL. Such constructs could be provided via the variant mechanism, but doing so would result in inefficient algorithms, since the type resolution would have to be performed per pixel. Image-level algorithms should be -implemented via apply_operation. That said, many common operations +implemented via variant2::visit. That said, many common operations are shared between the static and dynamic types. In addition, all of the image view transformations and many STL-like image view algorithms have overloads operating on any_image_view, as illustrated with @@ -231,14 +231,13 @@ implemented:

template <typename View> typename dynamic_xy_step_type<View>::type rotated180_view(const View& src) { ... } -namespace detail -{ +namespace detail { // the function, wrapped inside a function object template <typename Result> struct rotated180_view_fn { typedef Result result_type; template <typename View> result_type operator()(const View& src) const -{ + { return result_type(rotated180_view(src)); } }; @@ -246,10 +245,11 @@ implemented:

// overloading of the function using variant. Takes and returns run-time bound view. // The returned view has a dynamic step -template <typename ViewTypes> inline // Models MPL Random Access Container of models of ImageViewConcept -typename dynamic_xy_step_type<any_image_view<ViewTypes> >::type rotated180_view(const any_image_view<ViewTypes>& src) +template <typename ...ViewTypes> inline +typename dynamic_xy_step_type<any_image_view<ViewTypes...>>::type rotated180_view(const any_image_view<ViewTypes...>& src) { - return apply_operation(src,detail::rotated180_view_fn<typename dynamic_xy_step_type<any_image_view<ViewTypes> >::type>()); + using result_view_t = typename dynamic_xy_step_type<any_image_view<ViewTypes...>>::type; + return variant2::visit(detail::rotated180_view_fn<result_view_t>(), src); } @@ -274,7 +274,7 @@ uniformly as a collection and store them in the same container.

diff --git a/develop/doc/html/design/examples.html b/develop/doc/html/design/examples.html index fb7623f7e..e498242b1 100644 --- a/develop/doc/html/design/examples.html +++ b/develop/doc/html/design/examples.html @@ -264,7 +264,7 @@ channel depth. They could be either planar or interleaved.

diff --git a/develop/doc/html/design/extending.html b/develop/doc/html/design/extending.html index 7c38b300e..fa3689768 100644 --- a/develop/doc/html/design/extending.html +++ b/develop/doc/html/design/extending.html @@ -234,7 +234,7 @@ defines the Mandelbrot set.

diff --git a/develop/doc/html/design/image.html b/develop/doc/html/design/image.html index 6f687d141..413da7bbf 100644 --- a/develop/doc/html/design/image.html +++ b/develop/doc/html/design/image.html @@ -175,7 +175,7 @@ there are no padding bits at the end of rows of packed images.

diff --git a/develop/doc/html/design/image_view.html b/develop/doc/html/design/image_view.html index c60f1cfa8..05c25f04b 100644 --- a/develop/doc/html/design/image_view.html +++ b/develop/doc/html/design/image_view.html @@ -486,7 +486,7 @@ development and is not optimized for speed

diff --git a/develop/doc/html/design/index.html b/develop/doc/html/design/index.html index 60d32c087..108a3469c 100644 --- a/develop/doc/html/design/index.html +++ b/develop/doc/html/design/index.html @@ -102,7 +102,7 @@ structure and basic elements of the Generic Image Library (GIL).

diff --git a/develop/doc/html/design/metafunctions.html b/develop/doc/html/design/metafunctions.html index 54a6db02b..a46778290 100644 --- a/develop/doc/html/design/metafunctions.html +++ b/develop/doc/html/design/metafunctions.html @@ -302,7 +302,7 @@ is basic, but a color converted view or a virtual view is not.

diff --git a/develop/doc/html/design/pixel.html b/develop/doc/html/design/pixel.html index 33662196c..f567f812b 100644 --- a/develop/doc/html/design/pixel.html +++ b/develop/doc/html/design/pixel.html @@ -348,7 +348,7 @@ different color spaces and channel types:

diff --git a/develop/doc/html/design/pixel_iterator.html b/develop/doc/html/design/pixel_iterator.html index e7d2b4d06..d25785b61 100644 --- a/develop/doc/html/design/pixel_iterator.html +++ b/develop/doc/html/design/pixel_iterator.html @@ -368,7 +368,7 @@ but not MemoryBased diff --git a/develop/doc/html/design/pixel_locator.html b/develop/doc/html/design/pixel_locator.html index d289d7383..d8f26f8ab 100644 --- a/develop/doc/html/design/pixel_locator.html +++ b/develop/doc/html/design/pixel_locator.html @@ -358,7 +358,7 @@ using the x-iterators directly.

diff --git a/develop/doc/html/design/point.html b/develop/doc/html/design/point.html index 0d12d88de..62bd1d89f 100644 --- a/develop/doc/html/design/point.html +++ b/develop/doc/html/design/point.html @@ -134,7 +134,7 @@ coordinate type.

diff --git a/develop/doc/html/design/technicalities.html b/develop/doc/html/design/technicalities.html index 5491ee3d6..dd2893ec9 100644 --- a/develop/doc/html/design/technicalities.html +++ b/develop/doc/html/design/technicalities.html @@ -159,7 +159,7 @@ suggesting the above solution.

diff --git a/develop/doc/html/genindex.html b/develop/doc/html/genindex.html index 2f9f939cf..69ff26d07 100644 --- a/develop/doc/html/genindex.html +++ b/develop/doc/html/genindex.html @@ -76,7 +76,7 @@ diff --git a/develop/doc/html/histogram/create.html b/develop/doc/html/histogram/create.html index 44f514067..6444abc76 100644 --- a/develop/doc/html/histogram/create.html +++ b/develop/doc/html/histogram/create.html @@ -105,7 +105,7 @@ to match the GIL image.

diff --git a/develop/doc/html/histogram/cumulative.html b/develop/doc/html/histogram/cumulative.html index 1627a997f..14f2ed57c 100644 --- a/develop/doc/html/histogram/cumulative.html +++ b/develop/doc/html/histogram/cumulative.html @@ -102,7 +102,7 @@ and then call the function.

diff --git a/develop/doc/html/histogram/extend.html b/develop/doc/html/histogram/extend.html index 8007bc8d3..cd3522d36 100644 --- a/develop/doc/html/histogram/extend.html +++ b/develop/doc/html/histogram/extend.html @@ -138,7 +138,7 @@ the key.

diff --git a/develop/doc/html/histogram/extension/index.html b/develop/doc/html/histogram/extension/index.html index dfe0ab21e..4001e9302 100644 --- a/develop/doc/html/histogram/extension/index.html +++ b/develop/doc/html/histogram/extension/index.html @@ -90,7 +90,7 @@ usage of external containers as histograms for GIL images.

diff --git a/develop/doc/html/histogram/extension/overview.html b/develop/doc/html/histogram/extension/overview.html index 8cdd963e2..5891c2331 100644 --- a/develop/doc/html/histogram/extension/overview.html +++ b/develop/doc/html/histogram/extension/overview.html @@ -121,7 +121,7 @@ are provided as extensions.

diff --git a/develop/doc/html/histogram/extension/std.html b/develop/doc/html/histogram/extension/std.html index 8708d3c62..ce60f68da 100644 --- a/develop/doc/html/histogram/extension/std.html +++ b/develop/doc/html/histogram/extension/std.html @@ -120,7 +120,7 @@ diff --git a/develop/doc/html/histogram/fill.html b/develop/doc/html/histogram/fill.html index 0653d3394..2f57f15b3 100644 --- a/develop/doc/html/histogram/fill.html +++ b/develop/doc/html/histogram/fill.html @@ -182,7 +182,7 @@ which is of std::tu diff --git a/develop/doc/html/histogram/index.html b/develop/doc/html/histogram/index.html index 766407143..f9515cddd 100644 --- a/develop/doc/html/histogram/index.html +++ b/develop/doc/html/histogram/index.html @@ -95,7 +95,7 @@ histogram class and functions used in many image processing algorithms.

diff --git a/develop/doc/html/histogram/limitations.html b/develop/doc/html/histogram/limitations.html index e76db2c45..15acac91d 100644 --- a/develop/doc/html/histogram/limitations.html +++ b/develop/doc/html/histogram/limitations.html @@ -82,7 +82,7 @@ diff --git a/develop/doc/html/histogram/overview.html b/develop/doc/html/histogram/overview.html index 769e2e11d..590269f21 100644 --- a/develop/doc/html/histogram/overview.html +++ b/develop/doc/html/histogram/overview.html @@ -114,7 +114,7 @@ key are shipped with the class itself.

diff --git a/develop/doc/html/histogram/stl_compatibility.html b/develop/doc/html/histogram/stl_compatibility.html index 0146a07cb..a5c1c1482 100644 --- a/develop/doc/html/histogram/stl_compatibility.html +++ b/develop/doc/html/histogram/stl_compatibility.html @@ -82,7 +82,7 @@ diff --git a/develop/doc/html/histogram/subhistogram.html b/develop/doc/html/histogram/subhistogram.html index 092009d85..734a799b0 100644 --- a/develop/doc/html/histogram/subhistogram.html +++ b/develop/doc/html/histogram/subhistogram.html @@ -137,7 +137,7 @@ and blue color lie between 2 - 10

diff --git a/develop/doc/html/histogram/utilities.html b/develop/doc/html/histogram/utilities.html index 61a0452f8..13b2f6262 100644 --- a/develop/doc/html/histogram/utilities.html +++ b/develop/doc/html/histogram/utilities.html @@ -82,7 +82,7 @@ diff --git a/develop/doc/html/image_processing/affine-region-detectors.html b/develop/doc/html/image_processing/affine-region-detectors.html index 56892e171..731c76518 100644 --- a/develop/doc/html/image_processing/affine-region-detectors.html +++ b/develop/doc/html/image_processing/affine-region-detectors.html @@ -162,7 +162,7 @@ detector.” In Alvey vision conference, vol. 15, no. 50, pp. 10-5244. diff --git a/develop/doc/html/image_processing/basics.html b/develop/doc/html/image_processing/basics.html index c2e180edd..f81ddea95 100644 --- a/develop/doc/html/image_processing/basics.html +++ b/develop/doc/html/image_processing/basics.html @@ -123,7 +123,7 @@ gets sharper depending on it’s sigma value.

diff --git a/develop/doc/html/image_processing/contrast_enhancement/histogram_equalization.html b/develop/doc/html/image_processing/contrast_enhancement/histogram_equalization.html index 0bea2c198..07d82d957 100644 --- a/develop/doc/html/image_processing/contrast_enhancement/histogram_equalization.html +++ b/develop/doc/html/image_processing/contrast_enhancement/histogram_equalization.html @@ -145,7 +145,7 @@ before trying the histogram equalization algorithm.

diff --git a/develop/doc/html/image_processing/contrast_enhancement/histogram_matching.html b/develop/doc/html/image_processing/contrast_enhancement/histogram_matching.html index fe78c3af4..f195c85a5 100644 --- a/develop/doc/html/image_processing/contrast_enhancement/histogram_matching.html +++ b/develop/doc/html/image_processing/contrast_enhancement/histogram_matching.html @@ -138,7 +138,7 @@ before trying the histogram matching algorithm.

diff --git a/develop/doc/html/image_processing/contrast_enhancement/index.html b/develop/doc/html/image_processing/contrast_enhancement/index.html index 2e1ad88ca..d17caccb0 100644 --- a/develop/doc/html/image_processing/contrast_enhancement/index.html +++ b/develop/doc/html/image_processing/contrast_enhancement/index.html @@ -89,7 +89,7 @@ processing algorithms used for contrast enhancement.

diff --git a/develop/doc/html/image_processing/contrast_enhancement/overview.html b/develop/doc/html/image_processing/contrast_enhancement/overview.html index 23c1820e5..41b8e6268 100644 --- a/develop/doc/html/image_processing/contrast_enhancement/overview.html +++ b/develop/doc/html/image_processing/contrast_enhancement/overview.html @@ -95,7 +95,7 @@ These include :

diff --git a/develop/doc/html/image_processing/index.html b/develop/doc/html/image_processing/index.html index b92e9ee27..10f7c063d 100644 --- a/develop/doc/html/image_processing/index.html +++ b/develop/doc/html/image_processing/index.html @@ -103,7 +103,7 @@ features, structures and algorithms, for image processing and analysis.

diff --git a/develop/doc/html/image_processing/overview.html b/develop/doc/html/image_processing/overview.html index b29104fe3..d76323c87 100644 --- a/develop/doc/html/image_processing/overview.html +++ b/develop/doc/html/image_processing/overview.html @@ -88,7 +88,7 @@ projects run in frame of the Google Summer of Code 2019:

diff --git a/develop/doc/html/index.html b/develop/doc/html/index.html index 17b908642..7d3a20928 100644 --- a/develop/doc/html/index.html +++ b/develop/doc/html/index.html @@ -197,7 +197,7 @@ Blurring images (requires the optional Numeric extension) diff --git a/develop/doc/html/installation.html b/develop/doc/html/installation.html index 42866db20..49c77d437 100644 --- a/develop/doc/html/installation.html +++ b/develop/doc/html/installation.html @@ -105,7 +105,7 @@ of the library repository.

diff --git a/develop/doc/html/io.html b/develop/doc/html/io.html index eec751c19..659b5caed 100644 --- a/develop/doc/html/io.html +++ b/develop/doc/html/io.html @@ -741,7 +741,7 @@ to enable the tests:

diff --git a/develop/doc/html/naming.html b/develop/doc/html/naming.html index cdab54cea..998238cdd 100644 --- a/develop/doc/html/naming.html +++ b/develop/doc/html/naming.html @@ -114,7 +114,7 @@ pixel. diff --git a/develop/doc/html/numeric.html b/develop/doc/html/numeric.html index e40f2c2ff..8e67caf09 100644 --- a/develop/doc/html/numeric.html +++ b/develop/doc/html/numeric.html @@ -79,7 +79,7 @@ diff --git a/develop/doc/html/reference/any__image_8hpp_source.html b/develop/doc/html/reference/any__image_8hpp_source.html index 28602bd57..d5cad685c 100644 --- a/develop/doc/html/reference/any__image_8hpp_source.html +++ b/develop/doc/html/reference/any__image_8hpp_source.html @@ -59,162 +59,160 @@ $(function() {
10 #define BOOST_GIL_EXTENSION_DYNAMIC_IMAGE_ANY_IMAGE_HPP
11 
12 #include <boost/gil/extension/dynamic_image/any_image_view.hpp>
-
13 #include <boost/gil/extension/dynamic_image/apply_operation.hpp>
-
14 
-
15 #include <boost/gil/image.hpp>
-
16 #include <boost/gil/detail/mp11.hpp>
-
17 
-
18 #include <boost/config.hpp>
-
19 #include <boost/variant2/variant.hpp>
-
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 boost { namespace gil {
-
27 
-
28 namespace detail {
-
29 
-
30 template <typename T>
-
31 using get_view_t = typename T::view_t;
-
32 
-
33 template <typename Images>
-
34 using images_get_views_t = mp11::mp_transform<get_view_t, Images>;
-
35 
-
36 template <typename T>
-
37 using get_const_view_t = typename T::const_view_t;
-
38 
-
39 template <typename Images>
-
40 using images_get_const_views_t = mp11::mp_transform<get_const_view_t, Images>;
-
41 
-
42 struct recreate_image_fnobj
-
43 {
-
44  using result_type = void;
-
45  point<std::ptrdiff_t> const& _dimensions;
-
46  unsigned _alignment;
-
47 
-
48  recreate_image_fnobj(point<std::ptrdiff_t> const& dims, unsigned alignment)
-
49  : _dimensions(dims), _alignment(alignment)
-
50  {}
-
51 
-
52  template <typename Image>
-
53  result_type operator()(Image& img) const { img.recreate(_dimensions,_alignment); }
-
54 };
-
55 
-
56 template <typename AnyView> // Models AnyViewConcept
-
57 struct any_image_get_view
-
58 {
-
59  using result_type = AnyView;
-
60  template <typename Image>
-
61  result_type operator()(Image& img) const
-
62  {
-
63  return result_type(view(img));
-
64  }
-
65 };
-
66 
-
67 template <typename AnyConstView> // Models AnyConstViewConcept
-
68 struct any_image_get_const_view
-
69 {
-
70  using result_type = AnyConstView;
-
71  template <typename Image>
-
72  result_type operator()(Image const& img) const { return result_type{const_view(img)}; }
-
73 };
-
74 
-
75 } // namespce detail
-
76 
-
87 
-
88 template <typename ...Images>
-
89 class any_image : public variant2::variant<Images...>
-
90 {
-
91  using parent_t = variant2::variant<Images...>;
-
92 
-
93 public:
-
94  using view_t = mp11::mp_rename<detail::images_get_views_t<any_image>, any_image_view>;
-
95  using const_view_t = mp11::mp_rename<detail::images_get_const_views_t<any_image>, any_image_view>;
-
96  using x_coord_t = std::ptrdiff_t;
-
97  using y_coord_t = std::ptrdiff_t;
- -
99 
-
100  using parent_t::parent_t;
-
101 
-
102  any_image& operator=(any_image const& img)
-
103  {
-
104  parent_t::operator=((parent_t const&)img);
-
105  return *this;
-
106  }
-
107 
-
108  template <typename Image>
-
109  any_image& operator=(Image const& img)
-
110  {
-
111  parent_t::operator=(img);
-
112  return *this;
-
113  }
-
114 
-
115  template <typename ...OtherImages>
-
116  any_image& operator=(any_image<OtherImages...> const& img)
-
117  {
-
118  parent_t::operator=((typename variant2::variant<OtherImages...> const&)img);
-
119  return *this;
-
120  }
-
121 
-
122  void recreate(const point_t& dims, unsigned alignment=1)
-
123  {
-
124  apply_operation(*this, detail::recreate_image_fnobj(dims, alignment));
-
125  }
-
126 
-
127  void recreate(x_coord_t width, y_coord_t height, unsigned alignment=1)
-
128  {
-
129  recreate({ width, height }, alignment);
-
130  }
-
131 
-
132  std::size_t num_channels() const
-
133  {
-
134  return apply_operation(*this, detail::any_type_get_num_channels());
-
135  }
-
136 
-
137  point_t dimensions() const
-
138  {
-
139  return apply_operation(*this, detail::any_type_get_dimensions());
-
140  }
-
141 
-
142  x_coord_t width() const { return dimensions().x; }
-
143  y_coord_t height() const { return dimensions().y; }
-
144 };
-
145 
-
149 
-
151 
-
154 template <typename ...Images>
-
155 BOOST_FORCEINLINE
-
156 auto view(any_image<Images...>& img) -> typename any_image<Images...>::view_t
-
157 {
-
158  using view_t = typename any_image<Images...>::view_t;
-
159  return apply_operation(img, detail::any_image_get_view<view_t>());
-
160 }
-
161 
-
164 template <typename ...Images>
-
165 BOOST_FORCEINLINE
-
166 auto const_view(any_image<Images...> const& img) -> typename any_image<Images...>::const_view_t
-
167 {
-
168  using view_t = typename any_image<Images...>::const_view_t;
-
169  return apply_operation(img, detail::any_image_get_const_view<view_t>());
-
170 }
-
172 
-
173 }} // namespace boost::gil
-
174 
-
175 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-
176 #pragma warning(pop)
-
177 #endif
-
178 
-
179 #endif
+
13 
+
14 #include <boost/gil/image.hpp>
+
15 #include <boost/gil/detail/mp11.hpp>
+
16 
+
17 #include <boost/config.hpp>
+
18 #include <boost/variant2/variant.hpp>
+
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 boost { namespace gil {
+
26 
+
27 namespace detail {
+
28 
+
29 template <typename T>
+
30 using get_view_t = typename T::view_t;
+
31 
+
32 template <typename Images>
+
33 using images_get_views_t = mp11::mp_transform<get_view_t, Images>;
+
34 
+
35 template <typename T>
+
36 using get_const_view_t = typename T::const_view_t;
+
37 
+
38 template <typename Images>
+
39 using images_get_const_views_t = mp11::mp_transform<get_const_view_t, Images>;
+
40 
+
41 struct recreate_image_fnobj
+
42 {
+
43  using result_type = void;
+
44  point<std::ptrdiff_t> const& _dimensions;
+
45  unsigned _alignment;
+
46 
+
47  recreate_image_fnobj(point<std::ptrdiff_t> const& dims, unsigned alignment)
+
48  : _dimensions(dims), _alignment(alignment)
+
49  {}
+
50 
+
51  template <typename Image>
+
52  result_type operator()(Image& img) const { img.recreate(_dimensions,_alignment); }
+
53 };
+
54 
+
55 template <typename AnyView> // Models AnyViewConcept
+
56 struct any_image_get_view
+
57 {
+
58  using result_type = AnyView;
+
59  template <typename Image>
+
60  result_type operator()(Image& img) const
+
61  {
+
62  return result_type(view(img));
+
63  }
+
64 };
+
65 
+
66 template <typename AnyConstView> // Models AnyConstViewConcept
+
67 struct any_image_get_const_view
+
68 {
+
69  using result_type = AnyConstView;
+
70  template <typename Image>
+
71  result_type operator()(Image const& img) const { return result_type{const_view(img)}; }
+
72 };
+
73 
+
74 } // namespce detail
+
75 
+
86 
+
87 template <typename ...Images>
+
88 class any_image : public variant2::variant<Images...>
+
89 {
+
90  using parent_t = variant2::variant<Images...>;
+
91 
+
92 public:
+
93  using view_t = mp11::mp_rename<detail::images_get_views_t<any_image>, any_image_view>;
+
94  using const_view_t = mp11::mp_rename<detail::images_get_const_views_t<any_image>, any_image_view>;
+
95  using x_coord_t = std::ptrdiff_t;
+
96  using y_coord_t = std::ptrdiff_t;
+ +
98 
+
99  using parent_t::parent_t;
+
100 
+
101  any_image& operator=(any_image const& img)
+
102  {
+
103  parent_t::operator=((parent_t const&)img);
+
104  return *this;
+
105  }
+
106 
+
107  template <typename Image>
+
108  any_image& operator=(Image const& img)
+
109  {
+
110  parent_t::operator=(img);
+
111  return *this;
+
112  }
+
113 
+
114  template <typename ...OtherImages>
+
115  any_image& operator=(any_image<OtherImages...> const& img)
+
116  {
+
117  parent_t::operator=((typename variant2::variant<OtherImages...> const&)img);
+
118  return *this;
+
119  }
+
120 
+
121  void recreate(const point_t& dims, unsigned alignment=1)
+
122  {
+
123  variant2::visit(detail::recreate_image_fnobj(dims, alignment), *this);
+
124  }
+
125 
+
126  void recreate(x_coord_t width, y_coord_t height, unsigned alignment=1)
+
127  {
+
128  recreate({ width, height }, alignment);
+
129  }
+
130 
+
131  std::size_t num_channels() const
+
132  {
+
133  return variant2::visit(detail::any_type_get_num_channels(), *this);
+
134  }
+
135 
+
136  point_t dimensions() const
+
137  {
+
138  return variant2::visit(detail::any_type_get_dimensions(), *this);
+
139  }
+
140 
+
141  x_coord_t width() const { return dimensions().x; }
+
142  y_coord_t height() const { return dimensions().y; }
+
143 };
+
144 
+
148 
+
150 
+
153 template <typename ...Images>
+
154 BOOST_FORCEINLINE
+
155 auto view(any_image<Images...>& img) -> typename any_image<Images...>::view_t
+
156 {
+
157  using view_t = typename any_image<Images...>::view_t;
+
158  return variant2::visit(detail::any_image_get_view<view_t>(), img);
+
159 }
+
160 
+
163 template <typename ...Images>
+
164 BOOST_FORCEINLINE
+
165 auto const_view(any_image<Images...> const& img) -> typename any_image<Images...>::const_view_t
+
166 {
+
167  using view_t = typename any_image<Images...>::const_view_t;
+
168  return variant2::visit(detail::any_image_get_const_view<view_t>(), img);
+
169 }
+
171 
+
172 }} // namespace boost::gil
+
173 
+
174 #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+
175 #pragma warning(pop)
+
176 #endif
+
177 
+
178 #endif
-
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:19
-
BOOST_FORCEINLINE auto const_view(any_image< Images... > const &img) -> typename any_image< Images... >::const_view_t
Returns the constant-pixel view of any image. The returned view is any view.
Definition: any_image.hpp:166
+
BOOST_FORCEINLINE auto const_view(any_image< Images... > const &img) -> typename any_image< Images... >::const_view_t
Returns the constant-pixel view of any image. The returned view is any view.
Definition: any_image.hpp:165
Returns the number of channels of a pixel-based GIL construct.
Definition: locator.hpp:38
Represents a run-time specified image view. Models HasDynamicXStepTypeConcept, HasDynamicYStepTypeCon...
Definition: any_image_view.hpp:75
-
Represents a run-time specified image. Note it does NOT model ImageConcept.
Definition: any_image.hpp:89
-
BOOST_FORCEINLINE auto view(any_image< Images... > &img) -> typename any_image< Images... >::view_t
Returns the non-constant-pixel view of any image. The returned view is any view.
Definition: any_image.hpp:156
+
Represents a run-time specified image. Note it does NOT model ImageConcept.
Definition: any_image.hpp:88
+
BOOST_FORCEINLINE auto view(any_image< Images... > &img) -> typename any_image< Images... >::view_t
Returns the non-constant-pixel view of any image. The returned view is any view.
Definition: any_image.hpp:155
diff --git a/develop/doc/html/reference/any__image__view_8hpp_source.html b/develop/doc/html/reference/any__image__view_8hpp_source.html index 23d509355..30ec1b2b2 100644 --- a/develop/doc/html/reference/any__image__view_8hpp_source.html +++ b/develop/doc/html/reference/any__image__view_8hpp_source.html @@ -140,9 +140,9 @@ $(function() {
105  return *this;
106  }
107 
-
108  std::size_t num_channels() const { return apply_operation(*this, detail::any_type_get_num_channels()); }
-
109  point_t dimensions() const { return apply_operation(*this, detail::any_type_get_dimensions()); }
-
110  size_type size() const { return apply_operation(*this, detail::any_type_get_size()); }
+
108  std::size_t num_channels() const { return variant2::visit(detail::any_type_get_num_channels(), *this); }
+
109  point_t dimensions() const { return variant2::visit(detail::any_type_get_dimensions(), *this); }
+
110  size_type size() const { return variant2::visit(detail::any_type_get_size(), *this); }
111  x_coord_t width() const { return dimensions().x; }
112  y_coord_t height() const { return dimensions().y; }
113 };
@@ -215,7 +215,6 @@ $(function() {
184 
185 #endif
-
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:19
Base template for types that model HasDynamicXStepTypeConcept.
Definition: dynamic_step.hpp:17
const image< Pixel, IsPlanar, Alloc >::view_t & view(image< Pixel, IsPlanar, Alloc > &img)
Returns the non-constant-pixel view of an image.
Definition: image.hpp:549
diff --git a/develop/doc/html/reference/apply__operation_8hpp_source.html b/develop/doc/html/reference/apply__operation_8hpp_source.html index c67f27070..857d0bcfd 100644 --- a/develop/doc/html/reference/apply__operation_8hpp_source.html +++ b/develop/doc/html/reference/apply__operation_8hpp_source.html @@ -62,30 +62,32 @@ $(function() {
13 namespace boost { namespace gil {
14 
17 template <typename Variant1, typename Visitor>
-
18 BOOST_FORCEINLINE
-
19 auto apply_operation(Variant1&& arg1, Visitor&& op)
-
20 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276)
-
21  -> decltype(variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1)))
-
22 #endif
-
23 {
-
24  return variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1));
-
25 }
-
26 
-
29 template <typename Variant1, typename Variant2, typename Visitor>
-
30 BOOST_FORCEINLINE
-
31 auto apply_operation(Variant1&& arg1, Variant2&& arg2, Visitor&& op)
-
32 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276)
-
33  -> decltype(variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1), std::forward<Variant2>(arg2)))
-
34 #endif
-
35 {
-
36  return variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1), std::forward<Variant2>(arg2));
-
37 }
-
38 
-
39 }} // namespace boost::gil
+
18 [[deprecated("Use variant2::visit instead.")]]
+
19 BOOST_FORCEINLINE
+
20 auto apply_operation(Variant1&& arg1, Visitor&& op)
+
21 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276)
+
22  -> decltype(variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1)))
+
23 #endif
+
24 {
+
25  return variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1));
+
26 }
+
27 
+
30 template <typename Variant1, typename Variant2, typename Visitor>
+
31 [[deprecated("Use variant2::visit instead.")]]
+
32 BOOST_FORCEINLINE
+
33 auto apply_operation(Variant1&& arg1, Variant2&& arg2, Visitor&& op)
+
34 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276)
+
35  -> decltype(variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1), std::forward<Variant2>(arg2)))
+
36 #endif
+
37 {
+
38  return variant2::visit(std::forward<Visitor>(op), std::forward<Variant1>(arg1), std::forward<Variant2>(arg2));
+
39 }
40 
-
41 #endif
+
41 }} // namespace boost::gil
+
42 
+
43 #endif
-
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Variant2 &&arg2, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:31
+
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Variant2 &&arg2, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:33
diff --git a/develop/doc/html/reference/bit__operations_8hpp_source.html b/develop/doc/html/reference/bit__operations_8hpp_source.html index 29713a1f1..0adefc27a 100644 --- a/develop/doc/html/reference/bit__operations_8hpp_source.html +++ b/develop/doc/html/reference/bit__operations_8hpp_source.html @@ -243,7 +243,7 @@ $(function() {
196 
197 #endif
-
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:19
+
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:20
void swap(boost::gil::packed_channel_reference< BF, FB, NB, M > const x, R &y)
swap for packed_channel_reference
Definition: channel.hpp:529
diff --git a/develop/doc/html/reference/classboost_1_1gil_1_1any__image__view.html b/develop/doc/html/reference/classboost_1_1gil_1_1any__image__view.html index c7d7372da..dc6cba855 100644 --- a/develop/doc/html/reference/classboost_1_1gil_1_1any__image__view.html +++ b/develop/doc/html/reference/classboost_1_1gil_1_1any__image__view.html @@ -113,7 +113,7 @@ class boost::gil::any_image_view< Views >

Represents a run-time specified image view. Models HasDynamicXStepTypeConcept, HasDynamicYStepTypeConcept, Note that this class does NOT model ImageViewConcept.

CLASS any_image_view

Represents a view whose type (color space, layout, planar/interleaved organization, etc) can be specified at run time. It is the runtime equivalent of image_view. Some of the requirements of ImageViewConcept, such as the value_type alias cannot be fulfilled, since the language does not allow runtime type specification. Other requirements, such as access to the pixels, would be inefficient to provide. Thus any_image_view does not fully model ImageViewConcept. However, many algorithms provide overloads taking runtime specified views and thus in many cases any_image_view can be used in places taking a view.

-

To perform an algorithm on any_image_view, put the algorithm in a function object and invoke it by calling apply_operation(runtime_view, algorithm_fn);

+

To perform an algorithm on any_image_view, put the algorithm in a function object and invoke it by calling variant2::visit(algorithm_fn, runtime_view);


The documentation for this class was generated from the following file: diff --git a/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp.html b/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp.html index a0349f6de..1be4b9759 100644 --- a/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp.html +++ b/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp.html @@ -54,21 +54,23 @@ $(function() { More...

#include <boost/gil/extension/dynamic_image/any_image.hpp>
#include <boost/gil/algorithm.hpp>
+#include <boost/variant2/variant.hpp>
#include <functional>
+#include <utility>

Go to the source code of this file.

- - - - - - - - - + + + + + + + + + diff --git a/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp_source.html b/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp_source.html index 1477172a7..42e10e036 100644 --- a/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp_source.html +++ b/develop/doc/html/reference/extension_2dynamic__image_2algorithm_8hpp_source.html @@ -49,220 +49,223 @@ $(function() {
Go to the documentation of this file.
1 //
2 // Copyright 2005-2007 Adobe Systems Incorporated
-
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_EXTENSION_DYNAMIC_IMAGE_ALGORITHM_HPP
-
9 #define BOOST_GIL_EXTENSION_DYNAMIC_IMAGE_ALGORITHM_HPP
-
10 
-
11 #include <boost/gil/extension/dynamic_image/any_image.hpp>
-
12 
-
13 #include <boost/gil/algorithm.hpp>
-
14 
-
15 #include <functional>
-
16 
-
25 
-
26 namespace boost { namespace gil {
-
27 
-
28 namespace detail {
+
3 // Copyright 2022 Marco Langer <langer.m86 at gmail dot com>
+
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_EXTENSION_DYNAMIC_IMAGE_ALGORITHM_HPP
+
10 #define BOOST_GIL_EXTENSION_DYNAMIC_IMAGE_ALGORITHM_HPP
+
11 
+
12 #include <boost/gil/extension/dynamic_image/any_image.hpp>
+
13 
+
14 #include <boost/gil/algorithm.hpp>
+
15 
+
16 #include <boost/variant2/variant.hpp>
+
17 
+
18 #include <functional>
+
19 #include <utility>
+
20 
29 
-
30 struct equal_pixels_fn : binary_operation_obj<equal_pixels_fn, bool>
-
31 {
-
32  template <typename V1, typename V2>
-
33  BOOST_FORCEINLINE
-
34  bool apply_compatible(V1 const& v1, V2 const& v2) const
-
35  {
-
36  return equal_pixels(v1, v2);
-
37  }
-
38 };
-
39 
-
40 } // namespace detail
-
41 
-
45 template <typename ...Types, typename View>
-
46 bool equal_pixels(any_image_view<Types...> const& src, View const& dst)
-
47 {
-
48  return apply_operation(
-
49  src,
-
50  std::bind(detail::equal_pixels_fn(), std::placeholders::_1, dst));
-
51 }
-
52 
-
56 template <typename View, typename ...Types>
-
57 bool equal_pixels(View const& src, any_image_view<Types...> const& dst)
-
58 {
-
59  return apply_operation(
-
60  dst,
-
61  std::bind(detail::equal_pixels_fn(), src, std::placeholders::_1));
-
62 }
-
63 
-
67 template <typename ...Types1, typename ...Types2>
- -
69 {
-
70  return apply_operation(src, dst, detail::equal_pixels_fn());
-
71 }
-
72 
-
73 namespace detail {
-
74 
-
75 struct copy_pixels_fn : public binary_operation_obj<copy_pixels_fn>
-
76 {
-
77  template <typename View1, typename View2>
-
78  BOOST_FORCEINLINE
-
79  void apply_compatible(View1 const& src, View2 const& dst) const
-
80  {
-
81  copy_pixels(src,dst);
-
82  }
-
83 };
-
84 
-
85 } // namespace detail
-
86 
-
90 template <typename ...Types, typename View>
-
91 void copy_pixels(any_image_view<Types...> const& src, View const& dst)
-
92 {
-
93  apply_operation(src, std::bind(detail::copy_pixels_fn(), std::placeholders::_1, dst));
-
94 }
-
95 
-
99 template <typename ...Types, typename View>
-
100 void copy_pixels(View const& src, any_image_view<Types...> const& dst)
-
101 {
-
102  apply_operation(dst, std::bind(detail::copy_pixels_fn(), src, std::placeholders::_1));
-
103 }
-
104 
-
108 template <typename ...Types1, typename ...Types2>
- -
110 {
-
111  apply_operation(src, dst, detail::copy_pixels_fn());
-
112 }
-
113 
-
114 //forward declaration for default_color_converter (see full definition in color_convert.hpp)
-
115 struct default_color_converter;
-
116 
-
121 template <typename ...Types, typename View, typename CC>
-
122 void copy_and_convert_pixels(any_image_view<Types...> const& src, View const& dst, CC cc)
-
123 {
-
124  using cc_fn = detail::copy_and_convert_pixels_fn<CC>;
-
125  apply_operation(src, std::bind(cc_fn{cc}, std::placeholders::_1, dst));
-
126 }
-
127 
-
131 template <typename ...Types, typename View>
-
132 void copy_and_convert_pixels(any_image_view<Types...> const& src, View const& dst)
-
133 {
-
134  using cc_fn = detail::copy_and_convert_pixels_fn<default_color_converter>;
-
135  apply_operation(src, std::bind(cc_fn{}, std::placeholders::_1, dst));
-
136 }
-
137 
-
142 template <typename View, typename ...Types, typename CC>
-
143 void copy_and_convert_pixels(View const& src, any_image_view<Types...> const& dst, CC cc)
-
144 {
-
145  using cc_fn = detail::copy_and_convert_pixels_fn<CC>;
-
146  apply_operation(dst, std::bind(cc_fn{cc}, src, std::placeholders::_1));
-
147 }
-
148 
-
152 template <typename View, typename ...Types>
-
153 void copy_and_convert_pixels(View const& src, any_image_view<Types...> const& dst)
-
154 {
-
155  using cc_fn = detail::copy_and_convert_pixels_fn<default_color_converter>;
-
156  apply_operation(dst, std::bind(cc_fn{}, src, std::placeholders::_1));
-
157 }
-
158 
-
163 template <typename ...Types1, typename ...Types2, typename CC>
- -
165  any_image_view<Types1...> const& src,
-
166  any_image_view<Types2...> const& dst, CC cc)
-
167 {
-
168  apply_operation(src, dst, detail::copy_and_convert_pixels_fn<CC>(cc));
-
169 }
-
170 
-
174 template <typename ...Types1, typename ...Types2>
- -
176  any_image_view<Types1...> const& src,
-
177  any_image_view<Types2...> const& dst)
-
178 {
-
179  apply_operation(src, dst,
-
180  detail::copy_and_convert_pixels_fn<default_color_converter>());
-
181 }
-
182 
-
183 namespace detail {
-
184 
-
185 template <bool IsCompatible>
-
186 struct fill_pixels_fn1
-
187 {
-
188  template <typename V, typename Value>
-
189  static void apply(V const &src, Value const &val) { fill_pixels(src, val); }
-
190 };
-
191 
-
192 // copy_pixels invoked on incompatible images
-
193 template <>
-
194 struct fill_pixels_fn1<false>
-
195 {
-
196  template <typename V, typename Value>
-
197  static void apply(V const &, Value const &) { throw std::bad_cast();}
-
198 };
-
199 
-
200 template <typename Value>
-
201 struct fill_pixels_fn
-
202 {
-
203  fill_pixels_fn(Value const& val) : val_(val) {}
-
204 
-
205  using result_type = void;
-
206  template <typename V>
-
207  result_type operator()(V const& view) const
-
208  {
-
209  fill_pixels_fn1
-
210  <
-
211  pixels_are_compatible
-
212  <
-
213  typename V::value_type,
-
214  Value
-
215  >::value
-
216  >::apply(view, val_);
-
217  }
-
218 
-
219  Value val_;
-
220 };
-
221 
-
222 } // namespace detail
-
223 
-
227 template <typename ...Types, typename Value>
-
228 void fill_pixels(any_image_view<Types...> const& view, Value const& val)
-
229 {
-
230  apply_operation(view, detail::fill_pixels_fn<Value>(val));
-
231 }
-
232 
-
233 namespace detail {
-
234 
-
235 template <typename F>
-
236 struct for_each_pixel_fn
-
237 {
-
238  for_each_pixel_fn(F&& fun) : fun_(std::move(fun)) {}
-
239 
-
240  template <typename View>
-
241  auto operator()(View const& view) -> F
-
242  {
-
243  return for_each_pixel(view, fun_);
-
244  }
-
245 
-
246  F fun_;
-
247 };
-
248 
-
249 } // namespace detail
-
250 
-
256 template <typename ...Types, typename F>
-
257 auto for_each_pixel(any_image_view<Types...> const& view, F fun) -> F
-
258 {
-
259  return variant2::visit(detail::for_each_pixel_fn<F>(std::move(fun)), view);
-
260 }
-
261 
-
262 }} // namespace boost::gil
-
263 
-
264 #endif
+
30 namespace boost { namespace gil {
+
31 
+
32 namespace detail {
+
33 
+
34 struct equal_pixels_fn : binary_operation_obj<equal_pixels_fn, bool>
+
35 {
+
36  template <typename V1, typename V2>
+
37  BOOST_FORCEINLINE
+
38  bool apply_compatible(V1 const& v1, V2 const& v2) const
+
39  {
+
40  return equal_pixels(v1, v2);
+
41  }
+
42 };
+
43 
+
44 } // namespace detail
+
45 
+
49 template <typename ...Types, typename View>
+
50 auto equal_pixels(any_image_view<Types...> const& src, View const& dst) -> bool
+
51 {
+
52  return variant2::visit(
+
53  std::bind(detail::equal_pixels_fn(), std::placeholders::_1, dst),
+
54  src);
+
55 }
+
56 
+
60 template <typename View, typename ...Types>
+
61 auto equal_pixels(View const& src, any_image_view<Types...> const& dst) -> bool
+
62 {
+
63  return variant2::visit(
+
64  std::bind(detail::equal_pixels_fn(), src, std::placeholders::_1),
+
65  dst);
+
66 }
+
67 
+
71 template <typename ...Types1, typename ...Types2>
+ +
73 {
+
74  return variant2::visit(detail::equal_pixels_fn(), src, dst);
+
75 }
+
76 
+
77 namespace detail {
+
78 
+
79 struct copy_pixels_fn : public binary_operation_obj<copy_pixels_fn>
+
80 {
+
81  template <typename View1, typename View2>
+
82  BOOST_FORCEINLINE
+
83  void apply_compatible(View1 const& src, View2 const& dst) const
+
84  {
+
85  copy_pixels(src,dst);
+
86  }
+
87 };
+
88 
+
89 } // namespace detail
+
90 
+
94 template <typename ...Types, typename View>
+
95 void copy_pixels(any_image_view<Types...> const& src, View const& dst)
+
96 {
+
97  variant2::visit(std::bind(detail::copy_pixels_fn(), std::placeholders::_1, dst), src);
+
98 }
+
99 
+
103 template <typename ...Types, typename View>
+
104 void copy_pixels(View const& src, any_image_view<Types...> const& dst)
+
105 {
+
106  variant2::visit(std::bind(detail::copy_pixels_fn(), src, std::placeholders::_1), dst);
+
107 }
+
108 
+
112 template <typename ...Types1, typename ...Types2>
+ +
114 {
+
115  variant2::visit(detail::copy_pixels_fn(), src, dst);
+
116 }
+
117 
+
118 //forward declaration for default_color_converter (see full definition in color_convert.hpp)
+
119 struct default_color_converter;
+
120 
+
125 template <typename ...Types, typename View, typename CC>
+
126 void copy_and_convert_pixels(any_image_view<Types...> const& src, View const& dst, CC cc)
+
127 {
+
128  using cc_fn = detail::copy_and_convert_pixels_fn<CC>;
+
129  variant2::visit(std::bind(cc_fn{cc}, std::placeholders::_1, dst), src);
+
130 }
+
131 
+
135 template <typename ...Types, typename View>
+
136 void copy_and_convert_pixels(any_image_view<Types...> const& src, View const& dst)
+
137 {
+
138  using cc_fn = detail::copy_and_convert_pixels_fn<default_color_converter>;
+
139  variant2::visit(std::bind(cc_fn{}, std::placeholders::_1, dst), src);
+
140 }
+
141 
+
146 template <typename View, typename ...Types, typename CC>
+
147 void copy_and_convert_pixels(View const& src, any_image_view<Types...> const& dst, CC cc)
+
148 {
+
149  using cc_fn = detail::copy_and_convert_pixels_fn<CC>;
+
150  variant2::visit(std::bind(cc_fn{cc}, src, std::placeholders::_1), dst);
+
151 }
+
152 
+
156 template <typename View, typename ...Types>
+
157 void copy_and_convert_pixels(View const& src, any_image_view<Types...> const& dst)
+
158 {
+
159  using cc_fn = detail::copy_and_convert_pixels_fn<default_color_converter>;
+
160  variant2::visit(std::bind(cc_fn{}, src, std::placeholders::_1), dst);
+
161 }
+
162 
+
167 template <typename ...Types1, typename ...Types2, typename CC>
+ +
169  any_image_view<Types1...> const& src,
+
170  any_image_view<Types2...> const& dst, CC cc)
+
171 {
+
172  variant2::visit(detail::copy_and_convert_pixels_fn<CC>(cc), src, dst);
+
173 }
+
174 
+
178 template <typename ...Types1, typename ...Types2>
+ +
180  any_image_view<Types1...> const& src,
+
181  any_image_view<Types2...> const& dst)
+
182 {
+
183  variant2::visit(
+
184  detail::copy_and_convert_pixels_fn<default_color_converter>(), src, dst);
+
185 }
+
186 
+
187 namespace detail {
+
188 
+
189 template <bool IsCompatible>
+
190 struct fill_pixels_fn1
+
191 {
+
192  template <typename V, typename Value>
+
193  static void apply(V const& src, Value const& val) { fill_pixels(src, val); }
+
194 };
+
195 
+
196 // copy_pixels invoked on incompatible images
+
197 template <>
+
198 struct fill_pixels_fn1<false>
+
199 {
+
200  template <typename V, typename Value>
+
201  static void apply(V const&, Value const&) { throw std::bad_cast();}
+
202 };
+
203 
+
204 template <typename Value>
+
205 struct fill_pixels_fn
+
206 {
+
207  fill_pixels_fn(Value const& val) : val_(val) {}
+
208 
+
209  using result_type = void;
+
210  template <typename V>
+
211  result_type operator()(V const& view) const
+
212  {
+
213  fill_pixels_fn1
+
214  <
+
215  pixels_are_compatible
+
216  <
+
217  typename V::value_type,
+
218  Value
+
219  >::value
+
220  >::apply(view, val_);
+
221  }
+
222 
+
223  Value val_;
+
224 };
+
225 
+
226 } // namespace detail
+
227 
+
231 template <typename ...Types, typename Value>
+
232 void fill_pixels(any_image_view<Types...> const& view, Value const& val)
+
233 {
+
234  variant2::visit(detail::fill_pixels_fn<Value>(val), view);
+
235 }
+
236 
+
237 namespace detail {
+
238 
+
239 template <typename F>
+
240 struct for_each_pixel_fn
+
241 {
+
242  for_each_pixel_fn(F&& fun) : fun_(std::move(fun)) {}
+
243 
+
244  template <typename View>
+
245  auto operator()(View const& view) -> F
+
246  {
+
247  return for_each_pixel(view, fun_);
+
248  }
+
249 
+
250  F fun_;
+
251 };
+
252 
+
253 } // namespace detail
+
254 
+
260 template <typename ...Types, typename F>
+
261 auto for_each_pixel(any_image_view<Types...> const& view, F fun) -> F
+
262 {
+
263  return variant2::visit(detail::for_each_pixel_fn<F>(std::move(fun)), view);
+
264 }
+
265 
+
266 }} // namespace boost::gil
+
267 
+
268 #endif
-
void copy_pixels(any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
Definition: extension/dynamic_image/algorithm.hpp:109
-
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:19
-
bool equal_pixels(any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
Definition: extension/dynamic_image/algorithm.hpp:68
-
void fill_pixels(any_image_view< Types... > const &view, Value const &val)
fill_pixels for any image view. The pixel to fill with must be compatible with the current view
Definition: extension/dynamic_image/algorithm.hpp:228
+
void copy_pixels(any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
Definition: extension/dynamic_image/algorithm.hpp:113
+
void fill_pixels(any_image_view< Types... > const &view, Value const &val)
fill_pixels for any image view. The pixel to fill with must be compatible with the current view
Definition: extension/dynamic_image/algorithm.hpp:232
+
auto equal_pixels(any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst) -> bool
Definition: extension/dynamic_image/algorithm.hpp:72
const image< Pixel, IsPlanar, Alloc >::view_t & view(image< Pixel, IsPlanar, Alloc > &img)
Returns the non-constant-pixel view of an image.
Definition: image.hpp:549
-
void copy_and_convert_pixels(any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
Definition: extension/dynamic_image/algorithm.hpp:175
+
void copy_and_convert_pixels(any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
Definition: extension/dynamic_image/algorithm.hpp:179
Represents a run-time specified image view. Models HasDynamicXStepTypeConcept, HasDynamicYStepTypeCon...
Definition: any_image_view.hpp:75
F for_each_pixel(View const &view, F fun)
Definition: algorithm.hpp:874
diff --git a/develop/doc/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html b/develop/doc/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html index dbc7c690a..2c14aacec 100644 --- a/develop/doc/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html +++ b/develop/doc/html/reference/extension_2dynamic__image_2image__view__factory_8hpp_source.html @@ -105,7 +105,7 @@ $(function() {
56  template <typename View>
57  auto operator()(View const& src) const -> result_type
58  {
-
59  return result_type{rotated90cw_view(src)};
+
59  return result_type{rotated90cw_view(src)};
60  }
61 };
62 
@@ -117,7 +117,7 @@ $(function() {
68  template <typename View>
69  auto operator()(View const& src) const -> result_type
70  {
-
71  return result_type{rotated90ccw_view(src)};
+
71  return result_type{rotated90ccw_view(src)};
72  }
73 };
74 
@@ -190,7 +190,7 @@ $(function() {
141  template <typename View>
142  auto operator()(View const& src) const -> result_type
143  {
-
144  return result_type(nth_channel_view(src,_n));
+
144  return result_type(nth_channel_view(src,_n));
145  }
146 
147  int _n;
@@ -221,7 +221,7 @@ $(function() {
174  -> typename dynamic_y_step_type<any_image_view<Views...>>::type
175 {
176  using result_view_t = typename dynamic_y_step_type<any_image_view<Views...>>::type;
-
177  return apply_operation(src, detail::flipped_up_down_view_fn<result_view_t>());
+
177  return variant2::visit(detail::flipped_up_down_view_fn<result_view_t>(), src);
178 }
179 
182 template <typename ...Views>
@@ -230,208 +230,208 @@ $(function() {
185  -> typename dynamic_x_step_type<any_image_view<Views...>>::type
186 {
187  using result_view_t = typename dynamic_x_step_type<any_image_view<Views...>>::type;
-
188  return apply_operation(src, detail::flipped_left_right_view_fn<result_view_t>());
+
188  return variant2::visit(detail::flipped_left_right_view_fn<result_view_t>(), src);
189 }
190 
193 template <typename ...Views>
194 inline
- +
196  -> typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type
197 {
198  using result_view_t = typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type;
-
199  return apply_operation(src, detail::tranposed_view_fn<result_view_t>());
+
199  return variant2::visit(detail::tranposed_view_fn<result_view_t>(), src);
200 }
201 
204 template <typename ...Views>
205 inline
- +
207  -> typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type
208 {
209  using result_view_t = typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type;
-
210  return apply_operation(src,detail::rotated90cw_view_fn<result_view_t>());
+
210  return variant2::visit(detail::rotated90cw_view_fn<result_view_t>(), src);
211 }
212 
215 template <typename ...Views>
216 inline
- +
218  -> typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type
219 {
-
220  return apply_operation(src,detail::rotated90ccw_view_fn<typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type>());
-
221 }
-
222 
-
225 template <typename ...Views>
-
226 inline
- -
228  -> typename dynamic_xy_step_type<any_image_view<Views...>>::type
-
229 {
-
230  using step_type = typename dynamic_xy_step_type<any_image_view<Views...>>::type;
-
231  return apply_operation(src, detail::rotated180_view_fn<step_type>());
-
232 }
-
233 
-
236 template <typename ...Views>
-
237 inline
- -
239  any_image_view<Views...> const& src,
-
240  point_t const& topleft,
-
241  point_t const& dimensions)
-
242  -> any_image_view<Views...>
-
243 {
-
244  using subimage_view_fn = detail::subimage_view_fn<any_image_view<Views...>>;
-
245  return apply_operation(src, subimage_view_fn(topleft, dimensions));
-
246 }
-
247 
-
250 template <typename ...Views>
-
251 inline
- -
253  any_image_view<Views...> const& src,
-
254  std::ptrdiff_t x_min, std::ptrdiff_t y_min, std::ptrdiff_t width, std::ptrdiff_t height)
-
255  -> any_image_view<Views...>
-
256 {
-
257  using subimage_view_fn = detail::subimage_view_fn<any_image_view<Views...>>;
-
258  return apply_operation(src, subimage_view_fn(point_t(x_min, y_min),point_t(width, height)));
-
259 }
-
260 
-
263 template <typename ...Views>
-
264 inline
-
265 auto subsampled_view(any_image_view<Views...> const& src, point_t const& step)
-
266  -> typename dynamic_xy_step_type<any_image_view<Views...>>::type
-
267 {
-
268  using step_type = typename dynamic_xy_step_type<any_image_view<Views...>>::type;
-
269  using subsampled_view = detail::subsampled_view_fn<step_type>;
-
270  return apply_operation(src, subsampled_view(step));
-
271 }
-
272 
-
275 template <typename ...Views>
-
276 inline
-
277 auto subsampled_view(any_image_view<Views...> const& src, std::ptrdiff_t x_step, std::ptrdiff_t y_step)
-
278  -> typename dynamic_xy_step_type<any_image_view<Views...>>::type
-
279 {
-
280  using step_type = typename dynamic_xy_step_type<any_image_view<Views...>>::type;
-
281  using subsampled_view_fn = detail::subsampled_view_fn<step_type>;
-
282  return apply_operation(src, subsampled_view_fn(point_t(x_step, y_step)));
-
283 }
-
284 
-
285 namespace detail {
-
286 
-
287 template <typename View>
-
288 struct get_nthchannel_type { using type = typename nth_channel_view_type<View>::type; };
-
289 
-
290 template <typename Views>
-
291 struct views_get_nthchannel_type : mp11::mp_transform<get_nthchannel_type, Views> {};
-
292 
-
293 } // namespace detail
-
294 
-
297 template <typename ...Views>
- -
299 {
-
300  using type = typename detail::views_get_nthchannel_type<any_image_view<Views...>>;
-
301 };
-
302 
-
305 template <typename ...Views>
-
306 inline
- -
308  -> typename nth_channel_view_type<any_image_view<Views...>>::type
-
309 {
-
310  using result_view_t = typename nth_channel_view_type<any_image_view<Views...>>::type;
-
311  return apply_operation(src,detail::nth_channel_view_fn<result_view_t>(n));
-
312 }
-
313 
-
314 namespace detail {
-
315 
-
316 template <typename View, typename DstP, typename CC>
-
317 struct get_ccv_type : color_converted_view_type<View, DstP, CC> {};
-
318 
-
319 template <typename Views, typename DstP, typename CC>
-
320 struct views_get_ccv_type
-
321 {
-
322 private:
-
323  // FIXME: Remove class name injection with detail:: qualification
-
324  // Required as workaround for MP11 issue that treats unqualified metafunction
-
325  // in the class definition of the same name as the specialization (Peter Dimov):
-
326  // invalid template argument for template parameter 'F', expected a class template
-
327  template <typename T>
-
328  using ccvt = detail::get_ccv_type<T, DstP, CC>;
-
329 
-
330 public:
-
331  using type = mp11::mp_transform<ccvt, Views>;
-
332 };
-
333 
-
334 } // namespace detail
-
335 
-
338 template <typename ...Views, typename DstP, typename CC>
-
339 struct color_converted_view_type<any_image_view<Views...>,DstP,CC>
-
340 {
-
341  //using type = any_image_view<typename detail::views_get_ccv_type<Views, DstP, CC>::type>;
-
342  using type = detail::views_get_ccv_type<any_image_view<Views...>, DstP, CC>;
-
343 };
-
344 
-
348 template <typename DstP, typename ...Views, typename CC>
-
349 inline
- -
351  -> typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type
-
352 {
-
353  using cc_view_t = typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type;
-
354  return apply_operation(src, detail::color_converted_view_fn<DstP, cc_view_t>());
-
355 }
-
356 
-
359 template <typename ...Views, typename DstP>
- -
361 {
-
362  using type = detail::views_get_ccv_type<any_image_view<Views...>, DstP, default_color_converter>;
-
363 };
-
364 
-
368 template <typename DstP, typename ...Views>
-
369 inline
- -
371  -> typename color_converted_view_type<any_image_view<Views...>, DstP>::type
-
372 {
-
373  using cc_view_t = typename color_converted_view_type<any_image_view<Views...>, DstP>::type;
-
374  return apply_operation(src, detail::color_converted_view_fn<DstP, cc_view_t>());
-
375 }
-
376 
-
381 template <typename DstP, typename ...Views, typename CC>
-
382 [[deprecated("Use color_converted_view(const any_image_view<Views...>& src, CC) instead.")]]
-
383 inline
- -
385  -> typename color_converted_view_type<any_image_view<Views...>, DstP, CC>::type
-
386 {
-
387  return color_converted_view(src, cc);
-
388 }
-
389 
-
394 template <typename DstP, typename ...Views>
-
395 [[deprecated("Use color_converted_view(any_image_view<Views...> const& src) instead.")]]
-
396 inline
- -
398  -> typename color_converted_view_type<any_image_view<Views...>, DstP>::type
-
399 {
-
400  return color_converted_view(src);
-
401 }
-
402 
-
404 
-
405 }} // namespace boost::gil
-
406 
-
407 #endif
+
220  using result_view_t = typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type;
+
221  return variant2::visit(detail::rotated90ccw_view_fn<result_view_t>(), src);
+
222 }
+
223 
+
226 template <typename ...Views>
+
227 inline
+ +
229  -> typename dynamic_xy_step_type<any_image_view<Views...>>::type
+
230 {
+
231  using result_view_t = typename dynamic_xy_step_type<any_image_view<Views...>>::type;
+
232  return variant2::visit(detail::rotated180_view_fn<result_view_t>(), src);
+
233 }
+
234 
+
237 template <typename ...Views>
+
238 inline
+ +
240  any_image_view<Views...> const& src,
+
241  point_t const& topleft,
+
242  point_t const& dimensions)
+
243  -> any_image_view<Views...>
+
244 {
+
245  using subimage_view_fn = detail::subimage_view_fn<any_image_view<Views...>>;
+
246  return variant2::visit(subimage_view_fn(topleft, dimensions), src);
+
247 }
+
248 
+
251 template <typename ...Views>
+
252 inline
+ +
254  any_image_view<Views...> const& src,
+
255  std::ptrdiff_t x_min, std::ptrdiff_t y_min, std::ptrdiff_t width, std::ptrdiff_t height)
+
256  -> any_image_view<Views...>
+
257 {
+
258  using subimage_view_fn = detail::subimage_view_fn<any_image_view<Views...>>;
+
259  return variant2::visit(subimage_view_fn(point_t(x_min, y_min),point_t(width, height)), src);
+
260 }
+
261 
+
264 template <typename ...Views>
+
265 inline
+
266 auto subsampled_view(any_image_view<Views...> const& src, point_t const& step)
+
267  -> typename dynamic_xy_step_type<any_image_view<Views...>>::type
+
268 {
+
269  using step_type = typename dynamic_xy_step_type<any_image_view<Views...>>::type;
+
270  using subsampled_view = detail::subsampled_view_fn<step_type>;
+
271  return variant2::visit(subsampled_view(step), src);
+
272 }
+
273 
+
276 template <typename ...Views>
+
277 inline
+
278 auto subsampled_view(any_image_view<Views...> const& src, std::ptrdiff_t x_step, std::ptrdiff_t y_step)
+
279  -> typename dynamic_xy_step_type<any_image_view<Views...>>::type
+
280 {
+
281  using step_type = typename dynamic_xy_step_type<any_image_view<Views...>>::type;
+
282  using subsampled_view_fn = detail::subsampled_view_fn<step_type>;
+
283  return variant2::visit(subsampled_view_fn(point_t(x_step, y_step)), src);
+
284 }
+
285 
+
286 namespace detail {
+
287 
+
288 template <typename View>
+
289 struct get_nthchannel_type { using type = typename nth_channel_view_type<View>::type; };
+
290 
+
291 template <typename Views>
+
292 struct views_get_nthchannel_type : mp11::mp_transform<get_nthchannel_type, Views> {};
+
293 
+
294 } // namespace detail
+
295 
+
298 template <typename ...Views>
+ +
300 {
+
301  using type = typename detail::views_get_nthchannel_type<any_image_view<Views...>>;
+
302 };
+
303 
+
306 template <typename ...Views>
+
307 inline
+ +
309  -> typename nth_channel_view_type<any_image_view<Views...>>::type
+
310 {
+
311  using result_view_t = typename nth_channel_view_type<any_image_view<Views...>>::type;
+
312  return variant2::visit(detail::nth_channel_view_fn<result_view_t>(n), src);
+
313 }
+
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 }
+
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
-
BOOST_FORCEINLINE auto apply_operation(Variant1 &&arg1, Visitor &&op)
Applies the visitor op to the variants.
Definition: apply_operation.hpp:19
-
auto rotated90ccw_view(const any_image_view< Views... > &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:217
+
auto transposed_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:195
Returns the type of a view that does color conversion upon dereferencing its pixels.
Definition: image_view_factory.hpp:159
-
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:397
-
auto rotated90cw_view(const any_image_view< Views... > &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 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
Base template for types that model HasDynamicXStepTypeConcept.
Definition: dynamic_step.hpp:17
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
Returns the type of a transposed view that has a dynamic step along both X and Y.
Definition: image_view_factory.hpp:51
-
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:227
-
auto subsampled_view(any_image_view< Views... > const &src, std::ptrdiff_t x_step, std::ptrdiff_t y_step) -> typename dynamic_xy_step_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:277
-
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:370
-
auto nth_channel_view(const any_image_view< Views... > &src, int n) -> typename nth_channel_view_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:307
+
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 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 subsampled_view(any_image_view< Views... > const &src, std::ptrdiff_t x_step, std::ptrdiff_t y_step) -> typename dynamic_xy_step_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:278
+
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
Returns the type of a view that has a dynamic step along both X and Y.
Definition: dynamic_step.hpp:27
+
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 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
Given a source image view type View, returns the type of an image view over a single channel of View.
Definition: image_view_factory.hpp:406
-
auto subimage_view(any_image_view< Views... > const &src, std::ptrdiff_t x_min, std::ptrdiff_t y_min, std::ptrdiff_t width, std::ptrdiff_t height) -> any_image_view< Views... >
Definition: extension/dynamic_image/image_view_factory.hpp:252
+
auto subimage_view(any_image_view< Views... > const &src, std::ptrdiff_t x_min, std::ptrdiff_t y_min, std::ptrdiff_t width, std::ptrdiff_t height) -> any_image_view< Views... >
Definition: extension/dynamic_image/image_view_factory.hpp:253
Represents a run-time specified image view. Models HasDynamicXStepTypeConcept, HasDynamicYStepTypeCon...
Definition: any_image_view.hpp:75
Base template for types that model HasDynamicYStepTypeConcept.
Definition: dynamic_step.hpp:21
-
auto transposed_view(const any_image_view< Views... > &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type
Definition: extension/dynamic_image/image_view_factory.hpp:195
class for color-converting one pixel to another
Definition: color_convert.hpp:325
diff --git a/develop/doc/html/reference/group___image_view_s_t_l_algorithms_equal_pixels.html b/develop/doc/html/reference/group___image_view_s_t_l_algorithms_equal_pixels.html index b0ed19ae0..46f48e150 100644 --- a/develop/doc/html/reference/group___image_view_s_t_l_algorithms_equal_pixels.html +++ b/develop/doc/html/reference/group___image_view_s_t_l_algorithms_equal_pixels.html @@ -56,27 +56,27 @@ template<typename View1 , typename View2 > - - - - - - - - - + + + + + + + + +

Functions

template<typename ... Types, typename View >
bool equal_pixels (any_image_view< Types... > const &src, View const &dst)
 
template<typename View , typename ... Types>
bool equal_pixels (View const &src, any_image_view< Types... > const &dst)
 
template<typename ... Types1, typename ... Types2>
bool equal_pixels (any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
 
template<typename ... Types, typename View >
auto equal_pixels (any_image_view< Types... > const &src, View const &dst) -> bool
 
template<typename View , typename ... Types>
auto equal_pixels (View const &src, any_image_view< Types... > const &dst) -> bool
 
template<typename ... Types1, typename ... Types2>
auto equal_pixels (any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst) -> bool
 
template<typename ... Types, typename View >
void copy_pixels (any_image_view< Types... > const &src, View const &dst)
 
BOOST_FORCEINLINE bool equal_pixels (const View1 &v1, const View2 &v2)
 std::equal for image views
 
template<typename ... Types, typename View >
bool equal_pixels (any_image_view< Types... > const &src, View const &dst)
 
template<typename View , typename ... Types>
bool equal_pixels (View const &src, any_image_view< Types... > const &dst)
 
template<typename ... Types1, typename ... Types2>
bool equal_pixels (any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst)
 
template<typename ... Types, typename View >
auto equal_pixels (any_image_view< Types... > const &src, View const &dst) -> bool
 
template<typename View , typename ... Types>
auto equal_pixels (View const &src, any_image_view< Types... > const &dst) -> bool
 
template<typename ... Types1, typename ... Types2>
auto equal_pixels (any_image_view< Types1... > const &src, any_image_view< Types2... > const &dst) -> bool
 

Detailed Description

std::equal for image views

Function Documentation

- -

◆ equal_pixels() [1/3]

+ +

◆ equal_pixels() [1/3]

- + @@ -90,7 +90,8 @@ template<typename View1 , typename View2 > - +
bool boost::gil::equal_pixels auto boost::gil::equal_pixels ( any_image_view< Types... > const &  src,
) -> bool +
@@ -104,14 +105,14 @@ template<typename View1 , typename View2 >
- -

◆ equal_pixels() [2/3]

+ +

◆ equal_pixels() [2/3]

- + @@ -125,7 +126,8 @@ template<typename View1 , typename View2 > - +
bool boost::gil::equal_pixels auto boost::gil::equal_pixels ( any_image_view< Types1... > const &  src,
) -> bool +
@@ -139,14 +141,14 @@ template<typename View1 , typename View2 >
- -

◆ equal_pixels() [3/3]

+ +

◆ equal_pixels() [3/3]

- + @@ -160,7 +162,8 @@ template<typename View1 , typename View2 > - +
bool boost::gil::equal_pixels auto boost::gil::equal_pixels ( View const &  src,
) -> bool +
diff --git a/develop/doc/html/reference/group___image_view_transformations90_c_c_w.html b/develop/doc/html/reference/group___image_view_transformations90_c_c_w.html index e5b63c4d5..c237ec1f5 100644 --- a/develop/doc/html/reference/group___image_view_transformations90_c_c_w.html +++ b/develop/doc/html/reference/group___image_view_transformations90_c_c_w.html @@ -54,15 +54,15 @@ Functions template<typename View > dynamic_xy_step_transposed_type< View >::type rotated90ccw_view (const View &src)   -template<typename ... Views> -auto rotated90ccw_view (const any_image_view< Views... > &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type -  +template<typename ... Views> +auto rotated90ccw_view (any_image_view< Views... > const &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type + 

Detailed Description

view of a view rotated 90 degrees counter-clockwise

Function Documentation

- -

◆ rotated90ccw_view() [1/2]

+ +

◆ rotated90ccw_view() [1/2]

@@ -73,7 +73,7 @@ Functions auto boost::gil::rotated90ccw_view ( - const any_image_view< Views... > &  + any_image_view< Views... > const &  src) -> typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type diff --git a/develop/doc/html/reference/group___image_view_transformations90_c_w.html b/develop/doc/html/reference/group___image_view_transformations90_c_w.html index 3e8130106..ccfaf805a 100644 --- a/develop/doc/html/reference/group___image_view_transformations90_c_w.html +++ b/develop/doc/html/reference/group___image_view_transformations90_c_w.html @@ -54,15 +54,15 @@ Functions template<typename View > dynamic_xy_step_transposed_type< View >::type rotated90cw_view (const View &src)   -template<typename ... Views> -auto rotated90cw_view (const any_image_view< Views... > &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type -  +template<typename ... Views> +auto rotated90cw_view (any_image_view< Views... > const &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type + 

Detailed Description

view of a view rotated 90 degrees clockwise

Function Documentation

- -

◆ rotated90cw_view() [1/2]

+ +

◆ rotated90cw_view() [1/2]

@@ -73,7 +73,7 @@ Functions auto boost::gil::rotated90cw_view ( - const any_image_view< Views... > &  + any_image_view< Views... > const &  src) -> typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type diff --git a/develop/doc/html/reference/group___image_view_transformations_color_convert.html b/develop/doc/html/reference/group___image_view_transformations_color_convert.html index 3dfc644a4..b0d3e57aa 100644 --- a/develop/doc/html/reference/group___image_view_transformations_color_convert.html +++ b/develop/doc/html/reference/group___image_view_transformations_color_convert.html @@ -77,10 +77,10 @@ template<typename DstP , typename View > color_converted_view_type< View, DstP >::type color_converted_view (const View &src)  overload of generic color_converted_view with the default color-converter
  -template<typename DstP , typename ... Views, typename CC > -auto color_converted_view (const any_image_view< Views... > &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) -> 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 @@ template<typename DstP , typename View >
- -

◆ color_converted_view() [2/2]

+ +

◆ color_converted_view() [2/2]

@@ -224,7 +224,7 @@ template<typename DstP , typename View > auto boost::gil::color_converted_view ( - const any_image_view< Views... > &  + any_image_view< Views... > const &  src, diff --git a/develop/doc/html/reference/group___image_view_transformations_nth_channel.html b/develop/doc/html/reference/group___image_view_transformations_nth_channel.html index 3a440e74b..5f8677243 100644 --- a/develop/doc/html/reference/group___image_view_transformations_nth_channel.html +++ b/develop/doc/html/reference/group___image_view_transformations_nth_channel.html @@ -64,15 +64,15 @@ Functions template<typename View > nth_channel_view_type< View >::type nth_channel_view (const View &src, int n)   -template<typename ... Views> -auto nth_channel_view (const any_image_view< Views... > &src, int n) -> typename nth_channel_view_type< any_image_view< Views... >>::type -  +template<typename ... Views> +auto nth_channel_view (any_image_view< Views... > const &src, int n) -> typename nth_channel_view_type< any_image_view< Views... >>::type + 

Detailed Description

single-channel (grayscale) view of the N-th channel of a given image_view

Function Documentation

- -

◆ nth_channel_view() [1/2]

+ +

◆ nth_channel_view() [1/2]

@@ -83,7 +83,7 @@ Functions auto boost::gil::nth_channel_view ( - const any_image_view< Views... > &  + any_image_view< Views... > const &  src, diff --git a/develop/doc/html/reference/group___image_view_transformations_transposed.html b/develop/doc/html/reference/group___image_view_transformations_transposed.html index 7cb74b045..43e56ca67 100644 --- a/develop/doc/html/reference/group___image_view_transformations_transposed.html +++ b/develop/doc/html/reference/group___image_view_transformations_transposed.html @@ -54,15 +54,15 @@ Functions template<typename View > dynamic_xy_step_transposed_type< View >::type transposed_view (const View &src)   -template<typename ... Views> -auto transposed_view (const any_image_view< Views... > &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type -  +template<typename ... Views> +auto transposed_view (any_image_view< Views... > const &src) -> typename dynamic_xy_step_transposed_type< any_image_view< Views... >>::type + 

Detailed Description

view of a view transposed

Function Documentation

- -

◆ transposed_view() [1/2]

+ +

◆ transposed_view() [1/2]

@@ -73,7 +73,7 @@ Functions auto boost::gil::transposed_view ( - const any_image_view< Views... > &  + any_image_view< Views... > const &  src) -> typename dynamic_xy_step_transposed_type<any_image_view<Views...>>::type diff --git a/develop/doc/html/search.html b/develop/doc/html/search.html index aaa34ea17..6bfb1945d 100644 --- a/develop/doc/html/search.html +++ b/develop/doc/html/search.html @@ -89,7 +89,7 @@
diff --git a/develop/doc/html/searchindex.js b/develop/doc/html/searchindex.js index 717b7ed20..2acbd1f9e 100644 --- a/develop/doc/html/searchindex.js +++ b/develop/doc/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":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},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:{"0rrgggbb":13,"0x06":13,"0x0c":13,"0x11":13,"0x30":13,"0x60":13,"0x83":13,"0xc1":13,"1000s":31,"100s":31,"100x100":7,"200x200":45,"4x3":0,"50x50":10,"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],"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],And:18,But:41,For:[1,2,3,4,6,7,8,10,12,13,14,15,20,31,33,34,40,41,42,45,46],Its:[1,2,13,14,45],Not:7,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],Use:[17,24,41],Using:[10,12,15,18,39,46],_bmp_test_fil:41,_concept_:45,_dimens:10,_dst:45,_height:41,_imag:[12,42],_img_siz:45,_info:41,_io_dev:41,_is_:12,_loc:[12,42],_pixel:[10,12,42],_planar:[12,42],_png_test_fil:41,_ptr:[12,42],_ref:[12,42],_scanline_length:41,_step:[12,42],_tiff_graphicsmagick_test_fil:41,_tiff_lib_tiff_test_fil:41,_variants_:45,_view:[12,42],_width:[15,41],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,46],adapt:1,adaptor:[8,10,15],add:[6,8,15,22,24,41],add_deref:[8,10,15],add_ref_t:8,added:44,adding:[7,41],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],ahe: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],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],apply_oper:[6,45],appropri:[1,6,41],approxim:[13,14,45],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],at_c:[2,13],atom:45,author:41,auto:[4,18,19,29,41],automat:41,avail:[6,10,15,22,24,37,41,45],averag:15,avoid:45,awai:[10,14],axes:[18,20,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,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,45],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,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,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,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,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,40,45],consult:41,contain:[1,2,3,6,7,9,13,14,19,21,41,45],content:[11,21,25,35,37,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_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,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],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,40],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],doing:[6,8,13],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,drop:40,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,40],dummi:29,duplic:46,dure:[27,38,41],dxdx:31,dxdy: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],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,eyes:36,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,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,gap:10,gaussian:[31,32],gcc:40,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,goal:[5,33],goe:45,going:15,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,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,has:[2,5,6,7,9,10,12,14,15,19,41,45],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,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],high:29,higher:8,hill:[31,32],his:41,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,idea:33,ideal:33,ident:[7,8],identifi:20,ifstream:41,ignor:[13,45],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,inaccuraci:41,inc:14,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,40],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,ios:41,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,40,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,40,44,45],itself:[7,13,19,27],jamfil:22,jiri:31,journal:31,jpeg:[8,45],jpeg_dynamic_io:6,jpeg_lib:41,jpeg_read_imag:[6,7,45],jpeg_tag:41,jpeg_wiki:41,jpeg_write_view:[6,7,45],jpg:[7,41,45],just:[7,8,9,12,13,15,41,44,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],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,40],latest:40,latter:[7,13],layout:[2,5,11,12,13,14,39,42,45],layout_t:2,least:[6,45],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,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_valu:1,maximum:1,mayb:17,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,45],mp_list:[3,45],mp_list_c:[3,13],mp_size:3,mp_true:[12,14],mpl:[3,6,12],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_typ:[41,45],my_reference_proxi:17,my_valu:17,my_view:7,my_virt_view_t:45,myimg:6,myit:17,n2081:4,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,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],old:45,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,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],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,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],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],place:[19,45],plain:14,plan:40,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],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,rais:45,random:[3,6,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],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],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],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],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,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,40,41,45],seek:41,select:[6,40],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,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],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],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_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],studio: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,45],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,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],tabl:[11,21,25,35,37,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,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],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,upon:[6,8,10,12,14,15,17],upper:46,upsid:[6,10],usag:[20,21,32,33,34,41],use:[1,2,4,7,8,10,12,13,15,17,22,24,32,34,40,41,45],use_default:12,used:[2,3,4,5,6,7,9,13,14,15,16,20,25,31,32,35,41,42,45],useful:[8,9,14,15,45],user:[0,4,8,10,15,41,44,45],uses:[2,6,10,12,14,15,16,20,41,45],using:[1,2,3,6,7,8,9,10,12,13,15,20,24,29,39,41,45,46],using_io:41,usual:[14,31,32,41],util:[25,39],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,variant:[6,41,45],variat:[0,41],varieti:[39,45],variou:41,vector:[22,23,33,34,45],veri:[9,12,31,45,46],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:[10,15],visual:[36,45],vol:31,wai:[2,13,17,18,32,41,42,45],walk:[41,45],want:[7,8,14,15,18,41,45],warn:45,watch:47,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,writer:41,written:[15,32,41,45,46],wstring:41,www:47,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_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,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:{"class":20,"new":[8,41],Adding:22,And:41,Axes:20,Using:[7,41,45],acknowledg:44,adaptor:14,advanc:24,affin:31,algorithm:[1,2,10,13,31,33,34,45],align:12,avail:31,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,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],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,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],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":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},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:{"0rrgggbb":13,"0x06":13,"0x0c":13,"0x11":13,"0x30":13,"0x60":13,"0x83":13,"0xc1":13,"1000s":31,"100s":31,"100x100":7,"200x200":45,"4x3":0,"50x50":10,"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],"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],And:18,But:41,For:[1,2,3,4,6,7,8,10,12,13,14,15,20,31,33,34,40,41,42,45,46],Its:[1,2,13,14,45],Not:7,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],Use:[17,24,41],Using:[10,12,15,18,39,46],_bmp_test_fil:41,_concept_:45,_dimens:10,_dst:45,_height:41,_imag:[12,42],_img_siz:45,_info:41,_io_dev:41,_is_:12,_loc:[12,42],_pixel:[10,12,42],_planar:[12,42],_png_test_fil:41,_ptr:[12,42],_ref:[12,42],_scanline_length:41,_step:[12,42],_tiff_graphicsmagick_test_fil:41,_tiff_lib_tiff_test_fil:41,_variants_:45,_view:[12,42],_width:[15,41],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,46],adapt:1,adaptor:[8,10,15],add:[6,8,15,22,24,41],add_deref:[8,10,15],add_ref_t:8,added:44,adding:[7,41],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],ahe: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],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],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],at_c:[2,13],atom:45,author:41,auto:[4,18,19,29,41],automat:41,avail:[6,10,15,22,24,37,41,45],averag:15,avoid:45,awai:[10,14],axes:[18,20,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,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,45],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,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,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,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,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,40,45],consult:41,contain:[1,2,3,6,7,9,13,14,19,21,41,45],content:[11,21,25,35,37,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_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,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],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,40],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],doing:[6,8,13],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,drop:40,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,40],dummi:29,duplic:46,dure:[27,38,41],dxdx:31,dxdy: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],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,eyes:36,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,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,gap:10,gaussian:[31,32],gcc:40,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,goal:[5,33],goe:45,going:15,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,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,has:[2,5,6,7,9,10,12,14,15,19,41,45],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,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],high:29,higher:8,hill:[31,32],his:41,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,idea:33,ideal:33,ident:[7,8],identifi:20,ifstream:41,ignor:[13,45],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,inaccuraci:41,inc:14,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,40],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,ios:41,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,40,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,40,44,45],itself:[7,13,19,27],jamfil:22,jiri:31,journal:31,jpeg:[8,45],jpeg_dynamic_io:6,jpeg_lib:41,jpeg_read_imag:[6,7,45],jpeg_tag:41,jpeg_wiki:41,jpeg_write_view:[6,7,45],jpg:[7,41,45],just:[7,8,9,12,13,15,41,44,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],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,40],latest:40,latter:[7,13],layout:[2,5,11,12,13,14,39,42,45],layout_t:2,least:[6,45],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,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_valu:1,maximum:1,mayb:17,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,45],mp_list:[3,45],mp_list_c:[3,13],mp_size:3,mp_true:[12,14],mpl:[3,12],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_typ:[41,45],my_reference_proxi:17,my_valu:17,my_view:7,my_virt_view_t:45,myimg:6,myit:17,n2081:4,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,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],old:45,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,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],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,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],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],place:[19,45],plain:14,plan:40,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],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,rais:45,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],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],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,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],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,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,40,41,45],seek:41,select:[6,40],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,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],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],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_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],studio: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,45],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,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],tabl:[11,21,25,35,37,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,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],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,upon:[6,8,10,12,14,15,17],upper:46,upsid:[6,10],usag:[20,21,32,33,34,41],use:[1,2,4,7,8,10,12,13,15,17,22,24,32,34,40,41,45],use_default:12,used:[2,3,4,5,6,7,9,13,14,15,16,20,25,31,32,35,41,42,45],useful:[8,9,14,15,45],user:[0,4,8,10,15,41,44,45],uses:[2,6,10,12,14,15,16,20,41,45],using:[1,2,3,6,7,8,9,10,12,13,15,20,24,29,39,41,45,46],using_io:41,usual:[14,31,32,41],util:[25,39],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],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,45],vol:31,wai:[2,13,17,18,32,41,42,45],walk:[41,45],want:[7,8,14,15,18,41,45],warn:45,watch:47,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,writer:41,written:[15,32,41,45,46],wstring:41,www:47,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_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,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:{"class":20,"new":[8,41],Adding:22,And:41,Axes:20,Using:[7,41,45],acknowledg:44,adaptor:14,advanc:24,affin:31,algorithm:[1,2,10,13,31,33,34,45],align:12,avail:31,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,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],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,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],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/develop/doc/html/toolbox.html b/develop/doc/html/toolbox.html index de6e00c26..dfcb12fa8 100644 --- a/develop/doc/html/toolbox.html +++ b/develop/doc/html/toolbox.html @@ -126,7 +126,7 @@ made suggestions for improvements.

diff --git a/develop/doc/html/tutorial/gradient.html b/develop/doc/html/tutorial/gradient.html index 37a60c757..a178dde34 100644 --- a/develop/doc/html/tutorial/gradient.html +++ b/develop/doc/html/tutorial/gradient.html @@ -842,20 +842,20 @@ source view:

The second step is to provide an overload of x_luminosity_gradient that -takes image view variant and calls GIL’s apply_operation passing it the +takes image view variant and calls variant2::visit passing it the function object:

-
template <typename SrcViews, typename DstView>
-void x_luminosity_gradient(const any_image_view<SrcViews>& src, const DstView& dst)
+
template <typename ...SrcViews, typename DstView>
+void x_luminosity_gradient(const any_image_view<SrcViews...>& src, const DstView& dst)
 {
-  apply_operation(src, x_gradient_obj<DstView>(dst));
+  variant2::visit(x_gradient_obj<DstView>(dst), src);
 }
 
-

any_image_view<SrcViews> is the image view variant. It is -templated over SrcViews, an enumeration of all possible view types +

any_image_view<SrcViews...> is the image view variant. It is +templated over SrcViews..., an enumeration of all possible view types the variant can take. src contains inside an index of the currently instantiated type, as well as a block of memory containing -the instance. apply_operation goes through a switch statement +the instance. variant2::visit goes through a switch statement over the index, each case of which casts the memory to the correct view type and invokes the function object with it. Invoking an algorithm on a variant has the overhead of one switch @@ -953,7 +953,7 @@ code with different compilers.

diff --git a/develop/doc/html/tutorial/histogram.html b/develop/doc/html/tutorial/histogram.html index cc85b83fd..5bd342e06 100644 --- a/develop/doc/html/tutorial/histogram.html +++ b/develop/doc/html/tutorial/histogram.html @@ -171,7 +171,7 @@ memory is allocated and no images are copied.

diff --git a/develop/doc/html/tutorial/video.html b/develop/doc/html/tutorial/video.html index 90b1568f2..08d48d011 100644 --- a/develop/doc/html/tutorial/video.html +++ b/develop/doc/html/tutorial/video.html @@ -82,7 +82,7 @@