金属快速角点检测

时间:2017-07-11 07:03:02

标签: ios metal compute-shader corner-detection

我正在考虑如何在金属中实现快速角点检测。内核函数的输入是要检测角的纹理,所有内核函数的结果是所有检测到的角的列表。因此每个内核函数可能会添加一个角落,也可能不会。我的问题是我们如何在设备缓冲区中累积所有发现的角落。在更糟糕的情况下,我会为每个内核函数分配一个单独的索引,它应该写一个布尔值,但它将是一个非常稀疏的数组,也不必要地大。所以我宁愿不预先分配索引,而是如果内核函数检测到一个角落,它会以某种方式获取下一个免费索引。所以我认为我应该在整数索引变量上使用atomic_compare_exchange来实现这一点。所以next_free_index是一个共享变量,它为找到的每个角都获得增加的线程安全性。缺点是GPU线程可能在访问此变量时停止,这会降低计算速度。我想知道这是否是一种合理的方法。

0 个答案:

没有答案