Boost:在图像区域上迭代

Boost: iterating over an image region

本文关键字:迭代 区域 图像 Boost      更新时间:2023-10-16

我有一些我不拥有的图像,带有相邻的单色像素,我目前用哑指针增量迭代这些像素。

我现在需要在2D区域上迭代,所以我正在考虑提供高效且易于编写的迭代器的最佳方法。

我只需要货代。如果我有一个10x10的图像,如果我想在4x3左上区域上迭代,它会在以下元素上迭代:

0 1 2 3 10 11 12 13 20 21 22 23

我有两个选择:

  • boost::iterator_facade手写
  • 使用boost::range_iterator,它为我提供了一个数组上的迭代器,并使用boost::iterator_adaptor修改其行为

你认为什么是最好的?

您有两个概念:(i)子映像和(ii)映像上的一维迭代器。

我将从VXL库中的vil_image_view开始。

这将图像数据的概念从数据的表示(视图)中分离出来。该视图提供istepjstepplanestep增量以及像素索引。可以从相同的底层数据创建不同的vil_image_views来表示裁剪的图像。这个库只与STL部分兼容,一个好的STL实现会很有趣,但我不确定在STL中实现2d迭代器的干净方法。