我想将GPUImage的直方图均衡滤镜(link to .h)(link to .m)用于相机应用。我想实时使用它并将其作为应用于实时相机Feed的选项。我知道这可能是一项昂贵的操作并导致一些延迟。
我对此过滤器的工作原理感到困惑。在GPUImage的示例项目(Filter Showcase)中选择时,过滤器显示偏向红色和蓝色的非常暗的图像,这似乎不是均衡应该起作用的方式。
直方图类型kGPUImageHistogramLuminance和kGPUImageHistogramRGB之间有什么区别? Filter Showcase使用kGPUImageHistogramLuminance,但init中的默认值是kGPUImageHistogramRGB。如果我将Filter Showcase切换到kGPUImageHistogramRGB,我只会得到一个黑屏。我的目标是整体对比度优化。
有没有人有使用此过滤器的经验?或者这个过滤器目前有限制吗?
答案 0 :(得分:1)
RGB图像的直方图均衡是使用亮度完成的,因为单独对RGB通道进行均衡会使颜色信息无效。
您基本上将RGB转换为将颜色与强度信息分开的颜色空间。然后均衡强度图像,最后将其重新转换为RGB。
根据文件:http://oss.io/p/BradLarson/GPUImage
GPUImageHistogramFilter:分析传入的图像并创建 输出直方图,其中每个颜色值的频率 发生。该滤波器的输出为3像素高,256像素宽 包含像素的中心(垂直)像素的图像 对应于各种颜色值发生的频率。 每个颜色值占据256个宽度位置中的一个,从0开始 左边的255到右边。可以生成该直方图 个别颜色通道(kGPUImageHistogramRed, kGPUImageHistogramGreen,kGPUImageHistogramBlue),亮度 image(kGPUImageHistogramLuminance),或所有三个颜色通道 立刻(kGPUImageHistogramRGB)。
我对使用的编程语言不太熟悉,所以我无法判断实现是否正确。但最终,颜色不应该改变太多。像素应该变得更亮或更暗。