GPUImage直方图均衡

时间:2017-01-03 19:10:12

标签: ios objective-c image-processing opengl-es gpuimage

我想将GPUImage的直方图均衡滤镜(link to .h)(link to .m)用于相机应用。我想实时使用它并将其作为应用于实时相机Feed的选项。我知道这可能是一项昂贵的操作并导致一些延迟。

我对此过滤器的工作原理感到困惑。在GPUImage的示例项目(Filter Showcase)中选择时,过滤器显示偏向红色和蓝色的非常暗的图像,这似乎不是均衡应该起作用的方式。

直方图类型kGPUImageHistogramLuminance和kGPUImageHistogramRGB之间有什么区别? Filter Showcase使用kGPUImageHistogramLuminance,但init中的默认值是kGPUImageHistogramRGB。如果我将Filter Showcase切换到kGPUImageHistogramRGB,我只会得到一个黑屏。我的目标是整体对比度优化。

有没有人有使用此过滤器的经验?或者这个过滤器目前有限制吗?

1 个答案:

答案 0 :(得分:1)

RGB图像的直方图均衡是使用亮度完成的,因为单独对RGB通道进行均衡会使颜色信息无效。

您基本上将RGB转换为将颜色与强度信息分开的颜色空间。然后均衡强度图像,最后将其重新转换为RGB。

根据文件:http://oss.io/p/BradLarson/GPUImage

  

GPUImageHistogramFilter:分析传入的图像并创建   输出直方图,其中每个颜色值的频率   发生。该滤波器的输出为3像素高,256像素宽   包含像素的中心(垂直)像素的图像   对应于各种颜色值发生的频率。   每个颜色值占据256个宽度位置中的一个,从0开始   左边的255到右边。可以生成该直方图   个别颜色通道(kGPUImageHistogramRed,   kGPUImageHistogramGreen,kGPUImageHistogramBlue),亮度   image(kGPUImageHistogramLuminance),或所有三个颜色通道   立刻(kGPUImageHistogramRGB)。

我对使用的编程语言不太熟悉,所以我无法判断实现是否正确。但最终,颜色不应该改变太多。像素应该变得更亮或更暗。