图像处理-比较两个组件的颜色



我想比较组件的填充颜色是否相等我做以下算法,我做RGB的平均如下

                double avg1 =(comp[0].Red+comp[0].Blue+comp[0].Green)/3;
                double avg2 =(comp[1].Red+comp[1].Blue+comp[1].Green)/3;

然后比较它们如下

                      double ratio  = avg1/avg2 ;
                      if(ratio > 0.8 && ratio < 1.2){} //then they are supposed to be equal

但这种方法根本不准确

搜索后,我发现最好的方法是将图像转换为HSL空间并进行比较但我不知道如何比较两种颜色?!!

换句话说,转换图像到HSL空间后,我能做什么?!

请帮忙!!

修改对问题进行更详细的说明我的意思是用分量(点序列)所以在平均步骤中实际上我重新访问所有的点计算每个像素的RGB平均值的总和,然后对点的总数进行平均

转换为HSL,并使用H(色调)的差异来分组颜色

所以如果你的问题是"将图像转换成HSL空间后我能做什么?!"那么这里是:

  1. 转换RGB图像你已经加载到HSL使用cvCvtColor()CV_RGB2HLS标志(HSL图像应该是3通道,自然)
  2. 为H, L, S通道制作三张相同大小的单通道图像,将其分离到
  3. cvSplit( hls, h, l, s, 0 )将HSL图像分割成通道
  4. 现在h_image就像任何单通道灰度图像一样。因此,在提取组件后(从RGB图像阈值中执行此操作,有时色调通道图像看起来很奇怪:P)只需比较色调图像中对应于其坐标的颜色。

希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新