2

我有我不拥有的图像,带有相邻的单色像素,我目前使用哑指针增量对其进行迭代。

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

我只需要forward_iterator。如果我有一个 10x10 的图像,并且我想在 4x3 的左上角区域进行迭代,它将在这些元素上进行迭代:

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

我有两个选择:

  • 用手写boost::iterator_facade
  • use boost::range_iterator,它给了我一个数组的迭代器,并修改它的行为boost::iterator_adaptor

你认为最好的是什么?

4

1 回答 1

3

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

我将从查看vil_image_viewVXL 库开始。

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

于 2011-11-21T11:58:33.610 回答