图像GPUImageCannyEdgeDetection过滤器中不同区域的不同blurFilter.texelSpacingMultiplier

时间:2014-05-07 08:26:10

标签: gpuimage

我想为GPUImageCannyEdgeDetection过滤器中的图像中的不同区域设置不同的blurFilter.texelSpacingMultiplier有没有办法做到这一点。

1 个答案:

答案 0 :(得分:1)

texelSpacingMultiplier被定义为用于此操作的片段着色器中的统一。这将在整个图像中保持不变。

如果您希望图像的某些部分有所不同,则需要创建此操作的自定义版本及其子过滤器,以便为每个像素采用不同的值。

最简单的方法可能是将乘数的每像素值编码为可作为次要图像输入的纹理。可以从片段着色器中读取该纹理,并将来自RGBA输入的解码值转换为浮点值以设置每像素的该乘数。这将允许您创建一个起始图像(绘制或其他),将其用作蒙版以定义如何应用它。

这需要花费一点力气,因为你需要重写几个用于构建Canny边缘检测实现的子过滤器,但过程本身很简单。