我正在尝试在我的iphone应用程序中为UIImage实现直方图均衡化方法(HE)。
我读了以下内容:
http://en.wikipedia.org/wiki/Histogram_equalization
但它说:
仍然,应该注意的是,对RGB图像的红色,绿色和蓝色分量应用相同的方法可能产生图像颜色平衡的显着变化,因为颜色通道的相对分布由于应用算法而改变。但是,如果首先将图像转换为另一个颜色空间,Lab颜色空间或特别是HSL / HSV颜色空间,则可以将算法应用于亮度或值通道,而不会导致图像的色调和饱和度发生变化。
那么这是一种可行的方法吗?
我想知道这会慢吗?另外,我是否必须以不同的方式处理8/16/24位数据,因为我不知道我的应用程序将使用哪种图像?或者我可以假设iPhone中的图像为24位吗?
我很欣赏任何指向色彩校正直方图均衡的Objective-C代码的指针。
我查看了下面的库,但它没有对HE进行任何颜色校正:
谢谢!
答案 0 :(得分:1)
是的,你可以这样做,这将有效。是的,它会“花费更多”,因为您必须来回转换 - 但如果您不想影响色调和饱和度,那么您需要支付的价格。你正在纠正的图像是否值得?这取决于你的应用程序,你的性能与最佳质量相比是否合适?您可能只需处理8位颜色组件,您可以假设“24位”用于图像,但这是3 x 8位组件虽然知道您的答案的唯一方法是尝试。
答案 1 :(得分:0)
我建议使用YUV Colorspace。精度和计算简单性(线性组合)。
一种方法是在RGB图像(Image2)上应用直方图均衡。 然后让用户选择他想要的,仅应用于光度或所有3个频道。 首先,使用均衡图像的Y通道拍摄原始图像的UV通道,然后转换回RGB。 对于第二种选择,只需将用户留给Image2。
答案 2 :(得分:0)
由于转换后,您将I / V作为连续值处理,您将必须应用一些分箱策略,这会产生您希望均衡的数量的步长直方图。因此,您可以通过减小箱尺寸来加快速度吗?
答案 3 :(得分:-2)
只需编写应用HE的代码和模型到每个RGB组件。虽然它的3个组件有很多计算,但编程速度还可以。在大多数情况下,对比度得到改善,但图像的“外观”会发生变化。因此同意将RGB转换为另一个空间然后再次应用HE。我正在寻找公式以及HE的正确色彩空间。哪个色彩空间更容易?
我在iPad平台上写了HE,但我发现从佳能打开一张大图后,整个程序在UIPopoverContoller,UIImagePickerController函数后崩溃了。我想这可能是因为我在手机操作系统上推得太多,或者操作系统只为每个应用程序分配了一定数量的内存空间。如果应用程序使用的不仅仅是预先设置的内存,那么iOS就会立即杀死应用程序。因此必须注意输入图像的大小,以及未使用内存的垃圾收集和内存泄漏。使用XCode的仪器工具来检查泄漏是必须的。