0

我的问题是我目前正在开发的 C++ 框架中的范围界定效率。上下文:我有两个大小相等的数组。其中一个包含来自检测到的点云的点坐标,另一个包含相应的颜色值。出现的问题是颜色值索引与点坐标不完全匹配,因此需要缩放颜色数组。

为了保持系统的效率,建议我使用以下“hack”来避免浮点运算,以便让 shift_row_index 运行得比 x 慢,以便缩放颜色数组索引。不幸的是,顾问目前不可用,我不明白为什么这个解决方案在这种情况下有效。

如果有人可以向我解释一下,你会很好。提前致谢!

int shifted_row_index = (RGB_OFFSET_X << 8);
for (int x = 0, xmax = g_depthMD.XRes(); x < xmax; x += raster_width)
{
     shifted_row_index += RGB_SCALE_FACTOR_X;
     int rowindex = shifted_row_index >> 8;
     rowindex = std::max(std::min(rowindex, (int)(xmax - 1)), 0);
     color_pointer[0] = pImageRow[rowindex].nRed;
     //....
}
4

1 回答 1

0

我看到的唯一“bit hack”操作是左右移位操作。我认为您没有理由使用它们,因为任何合理的编译器都会优化代码:

int shifted_row_index = (RGB_OFFSET_X * 64);

int rowindex = shifted_row_index / 64;

一样高效。

于 2013-01-21T09:45:48.707 回答