我有我不拥有的图像,有相邻的单色像素,我目前用哑指针增量迭代。
我现在需要迭代2D区域,所以我正在考虑提供高效且易于编写的迭代器的最佳方法。
我只需要forward_iterator。如果我有一个10x10图像,如果我想迭代4x3左上角区域,它将迭代这些元素:
0 1 2 3 10 11 12 13 20 21 22 23
我有两个选择:
boost::iterator_facade
boost::range_iterator
,它为数组提供迭代器,并使用boost::iterator_adaptor
您认为最好的是什么?
答案 0 :(得分:3)
您有两个概念:(i)子图像,以及(ii)图像上的1-d迭代器。
我首先来看看vil_image_view
in the VXL library。
这将图像数据的概念与数据的表示(视图)分开。该视图提供istep
,jstep
amd planestep
增量和像素索引。可以创建不同的vil_image_views
来表示来自相同底层数据的裁剪图像。这个库只与STL部分兼容,并且一个好的STL实现会很有趣,但我不确定在STL中实现2d迭代器的干净方法。