【发布时间】:2014-09-09 07:09:34
【问题描述】:
我想要的(基本上)与“对图像的所有像素求和”相同。 然而,着色器似乎无法实现这一点(我认为这就是我要问的原因;-)):
我想传递图像+一个参数“treeshold”并检查图像的每个像素是否该像素(R,G,B)在阈值(R+/-,G+/-,B+/-) .
IS IN 操作没问题,没什么复杂的。
问题是我需要图像中完成此操作的所有像素(计数)的总和。
使用着色器的想法是尽量减少这种计算,因为在 CPU 中非常昂贵(此外,我们必须多次重复这种计算)。
一个想法是,如果像素未达到,则将向量 (0,0,0) 作为输出,如果像素达到,则将 (1,0,0) 作为输出,然后在软件中对所有第一个通道求和。
即使这比仅使用软件更快,我们仍然在传输 NXM 图像。
另一种方法(不太准确)是对(例如)10 个相邻像素执行此操作(如果“我是邻居”则省略计算)。 然后我们只会对每个 10 个位置的数组求和。 我们的速度提高了 10 倍,但是仍然有 O(N*M)。
另外,我相信我们可以使用这样的东西,但我很不明白如何在像素弯曲器中使用它 Efficient pixel shader sum of all pixels
提前感谢任何其他解决方案。
【问题讨论】:
-
使用计算着色器更容易做到这一点,您可以对图像块进行操作,然后使用原子组合结果。您的目标是什么平台/硬件?
-
嗨,我不明白你的回答。我们正在处理 Flash(pxiel 弯曲器),Flas 有几个重要的限制 voer 像素弯曲器,特别是除了“if”和“else”之外,您没有循环或任何其他控制结构,如果有,我可以用“最近”像素的简单 for 和 askinf 。谢谢。
标签: optimization image-processing pixel-shader pixel-bender