我有一个4通道HSVL图像 - 色相,饱和度,值(浮点数),标签(无符号整数)。 任务是为每个唯一标签计算色调,饱和度和值的总和数组。例如,我将能够访问输出Sum [标签为455的像素] = {Hue:500,Sat:100,Val:200}。图像的大小约为5 MP,大约有3000种不同的标签。
我的想法是对部分图像进行~32次扫描,这将产生32 x nLabels总和。然后我可以扫描图像的32个分区,以获得nLabel和结构。
“按键扫描吗?”存在哪种算法可以解决这种确切类型的问题?
答案 0 :(得分:3)
如果您想通过CUDA执行此操作,以下内容可能有所帮助。
由于您只需要和值,我认为您需要的是“按键减少”。 Thrust提供了一个可以满足您需求的实施thrust::reduce_by_key()
。
但在使用之前,您必须按标签对所有像素进行排序。这可以通过thrust::sort_by_key()
您可能也对thrust::zip_iterator
感兴趣,它可以将3通道HSV压缩为单值迭代器进行排序和缩减。