Boost:在图像区域上迭代
Boost: iterating over an image region
我有一些我不拥有的图像,带有相邻的单色像素,我目前用哑指针增量迭代这些像素。
我现在需要在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
开始。
这将图像数据的概念从数据的表示(视图)中分离出来。该视图提供istep
、jstep
和planestep
增量以及像素索引。可以从相同的底层数据创建不同的vil_image_views
来表示裁剪的图像。这个库只与STL部分兼容,一个好的STL实现会很有趣,但我不确定在STL中实现2d迭代器的干净方法。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 迭代时从向量和内存中删除对象
- 如何在c++迭代器类型中包装std::chrono
- 带过滤器的现代迭代c++集合
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- C++矢量迭代
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 擦除while循环中迭代的元素
- 实现一个在集合上迭代的模板函数
- 对于set上的循环-获取next元素迭代器
- 在向量内的向量上迭代
- 为什么output_editor Concept不需要output_e迭代器标记
- 从卷或区域中的起点向外迭代,而不对其进行排序
- 如何检查迭代器是否形成连续的内存区域
- 并行区域的OpenMP迭代for循环
- 用迭代法求区域最大元
- Boost:在图像区域上迭代