gpt4 book ai didi

gpuimage - Brad Larson 的 Threshold 过滤器中的 normalizeColor

转载 作者:行者123 更新时间:2023-12-02 02:10:24 24 4
gpt4 key购买 nike

这可能很容易理解,但我没有在 Brad Larson 的 GPUImage 中使用 normalizeColor 函数。你找到它例如在 Threshold.fsh 下的 colorObjectTracking 示例中:

vec3 normalizeColor(vec3 color)
{
return color / max(dot(color, vec3(1.0/3.0)), 0.3);
}

这是我得到的:你将传入的颜色“颜色”除以 0.3 或除以颜色向量的点积,如果结果是 (1/3,1/3,1/3)点积大于 0.3。

所以两个问题:

  1. 为什么有必要将“颜色”归一化为它的元素的平均值?
  2. 为什么有 0.3 的下限? (据我了解 max() 函数)

非常感谢!海拔

最佳答案

问这个问题的更合适的地方可能是在项目网站本身,但我会咬。

片段着色器的作用是识别图像中具有特定颜色的像素。该函数对颜色的亮度进行了粗略的归一化,因此在匹配对象上的颜色时可以考虑不同的光照条件。 max() 操作只是一个上限,以防止某些颜色值变得非常古怪。

这个特定的片段着色器完全基于 Apple 的 Core Image 工程师在他们的 GPU Gems 文章中提供的示例,该文章标题为 "Object Detection by Color: Using the GPU for Real-Time Video Image Processing" ,他们在那里进行了更详细的介绍。

更好的方法是通过移除亮度分量并检查像素的色度来获得与给定颜色的接近度。如果您有 YUV 源,您可以从 Cr 和 Cb 组件很容易地做到这一点。我的 GPUImageChromaKeyFilter 说明了从 RGB 输入中提取 YUV 数据,然后在色度周围应用阈值。这也是从 Apple 的示例中得出的(我相信这是来自他们的 ChromaKey WWDC 示例)。

关于gpuimage - Brad Larson 的 Threshold 过滤器中的 normalizeColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com