按键多次扫描

Multiple scans by key

本文关键字:扫描      更新时间:2023-10-16

我有一个 4 通道 HSVL 图像 - 色调、饱和度、值(浮点数(、标签(无符号整数(。任务是为每个唯一标签计算色相、饱和度和值的总和数组。例如,我将能够访问输出总和[带有标签 455] = { 色调:500,周六:100,瓦尔:200 }。图像的大小约为5 MP,并且大约有3000个不同的标签。

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

是否存在"按密钥扫描?"算法可以解决此类问题?

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

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

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

您可能还对 thrust::zip_iterator 感兴趣,它可以将 3 个通道 HSV 压缩到单个值迭代器中进行排序和缩减。