0

我有一张 4 通道 HSVL 图像 - 色相、饱和度、值(浮点数)、标签(无符号整数)。任务是为每个唯一标签计算色调、饱和度和值之和的数组。例如,我将能够访问输出 Sum[of pixel with label 455] = { Hue: 500, Sat: 100, Val: 200 }。图像的大小约为 5 MP,大约有 3000 个不同的标签。

我的想法是对图像的某些部分进行约 32 次扫描,这将产生 32 x nLabels 总和。然后我可以扫描图像的 32 个分区,得到 nL​​abel 和结构。

是否“按键扫描”?是否存在可以解决这种确切类型问题的算法?

4

1 回答 1

3

如果您想通过 CUDA 执行此操作,以下内容可能会有所帮助。

由于您只需要总和值,我认为您需要的是“按键减少”。Thrust 提供了一个thrust::reduce_by_key()可以满足您需求的实现。

但在使用它之前,您必须按标签对所有像素进行排序。这可以通过thrust::sort_by_key()

你可能也感兴趣thrust::zip_iterator,它可以将 3 个通道的 HSV 压缩到一个单值迭代器中进行排序和归约。

于 2013-10-11T11:35:29.057 回答