像素颜色匹配估计

时间:2011-01-15 16:44:14

标签: iphone c image ios rgb

出于图像扫描的目的,我想要一个像素(我可以从UIImage获得)来匹配(一定百分比)到预先设定的颜色。

说粉红色。当我扫描图像中的粉红色像素时,我想要一个函数来返回像素中RGB值看起来像我预设RGB值的百分比。通过这种方式,我希望所有(好的,大多数)粉红色像素对我来说都是“可见的”,而不仅仅是完全匹配。

是否有人熟悉这种方法?你会怎么做这样的事情?

提前致谢。

更新:到目前为止,谢谢大家的答案。我接受了Damien Pollet的答案,因为它进一步帮助了我,我得出的结论是,计算两种RGB颜色之间的矢量差异对我来说是完美的(此时此刻)。它可能需要一些调整,但现在我使用以下(在目标c):

float difference = pow( pow((red1 - red2), 2) + pow((green1 - green2), 2) + pow((blue1 - blue2), 2), 0.5 );

如果这个差异低于85,我接受颜色作为我的目标颜色。由于我的算法不需要精度,我对这个解决方案没问题。)

更新2:在我搜索更多内容时,如果您正在寻找类似的内容,我发现以下网址可能非常适合(低估)。

http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios

2 个答案:

答案 0 :(得分:2)

我想说的是计算目标颜色的矢量差异,并检查它的规范是否小于某个阈值。我怀疑有些color spaces在这方面比其他人更好,可能是HSL或L * ab,因为它们将亮度与色调本身分开,因此可能通过较小的颜色矢量表示小的感知差异...... < / p>

另请参阅this related question

答案 1 :(得分:2)

科学答案:您应该将两种颜色转换为LAB颜色空间并计算那里的欧几里德距离。该值也称为deltaE。

LAB空间的开发(使用测试人员)正是为了实现这一目标:因此,在tnis空间中具有相等距离的不同颜色对对应于相同的感知颜色差异。

然而,听起来你不是在寻找匹配特定颜色,而是寻找颜色范围(比如所有肤色)。这可能需要更多的用户输入而不仅仅是参考颜色+ deltaE tollerance:

  • 具有3种色调,饱和度和亮度的参考色

  • 云彩的颜色样本

  • ...