【问题标题】:Detecting hair color in a portrait image检测肖像图像中的头发颜色
【发布时间】:2013-08-19 00:52:43
【问题描述】:

好的,假设我正确使用了检测和封装肖像图片头发的算法。

我如何(具有高正确率)区分颜色?

我知道这看起来很简单,但主要问题是,根据拍摄照片的环境光线条件或(较少的情况)后期效果处理,“金发”、“黑色”、“ brown”和“red”变化很大,给出了误报,有时没有检测到正确的。 (通过一个金发女郎作为黑色前例)。

使用opencv(或任何其他工具,因为我已经有了头发),我应该应用哪种预处理算法或方法来“规范化”这类问题并最大限度地减少错误?

非常感谢。

【问题讨论】:

  • 为了区分颜色,HSV颜色空间通常是一个不错的选择,因为你可以直接得到色调。
  • 你解决了问题?

标签: image opencv image-processing image-manipulation


【解决方案1】:

我认为您可以使用机器学习方法进行颜色分类。 只需在听到颜色样本(您可以将颜色直方图作为输入向量)和一些类(颜色名称)上训练分类器(例如 SVM 或神经网络)。我认为这将是处理光线变化、噪点、阴影等的好方法。我认为使用一些高级色彩空间 L*a*b* 或 HSV 会更好。

您可能需要在输入向量中包含一些参考 historgam(用于获取有关照明条件的数据)。例如,您可以从面部获得它(不是最佳解决方案)。

【讨论】:

  • 谢谢,我已经阅读了更多内容,事实上我应该使用(作为选项)YCbCr,省略 Y。取一些头发颜色范围的样本并将它们放在 YCbCr 空间中,然后进行比较每张图片的孤立头发(也在 YCbCr 中)。我对吗?谢谢
  • 不,我的意思是例如:您有颜色直方图向量 {1,2,3,42,4,2,6} 并且您分配了标签,例如“黄色的”。你有很多这样的对。然后你可以使用这些数据训练分类器。训练后它会从你的直方图向量中得到颜色名称。
  • 在这里您可以阅读有关在类似问题中使用 ML 的信息:lear.inrialpes.fr/pubs/2009/VSVL09/verbeek09tip.pdf
【解决方案2】:

我不相信您可以仅使用头发区域进行任何预处理。我是凭直觉这么说的。

这是一个想法。直方图均衡是一种著名的预处理方法,它在一定程度上克服了光照效应。所以你可以做的是,将你的图像分成颜色通道,对每个通道应用直方图均衡,然后组合通道以获得直方图均衡图像。我认为它会很有用。

我在 Matlab 上实现过,在 Lena 上试过。您可以从here 下载它(死链接)。

【讨论】:

  • 你的链接失效了,能更新一下吗?
猜你喜欢
  • 2011-06-16
  • 2018-07-16
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2021-08-17
  • 2011-12-05
相关资源
最近更新 更多