我正在尝试构建一个应用程序,可以检测皮肤不同部位(手,前额,脸颊)的肤色,无论光照条件如何。我能够使用这个project来做到这一点,但它没有照顾照明条件。这是Iphone app中的一个
答案 0 :(得分:3)
如果您想自己进行一些图像处理,我建议您为图像的每个面部区域创建一个直方图。只要opencv能够检测到面部,您就应该能够对该区域中的直方图进行标准化并获取标准化版本的颜色值。
也许你想分别对所有通道(R,G,B)进行标准化,以减少彩色光的影响。
请阅读此处以获取有关直方图的更多信息:https://en.wikipedia.org/wiki/Histogram
当您按照这种方式进行时,我强烈建议您将一个面作为整个区域来创建直方图。
[编辑]
既然我知道你要做什么,我想你可以采取以下方法:
如您所见,用户需要前后拍摄相机。由于手机的背面引导图像,直方图确实正是该应用程序的创建者正在创建的。但是,不是来自不同的像素,而是来自使用不同光照水平的相同像素的不同样本。
当你非常接近皮肤时,相机会向你显示一张近乎白色的图像,也就是说,如果你愿意,可以显示直方图计算的“固定点”。
虽然我不会显示直接代码,但我会尝试解释数学模型:
threshold
个值的最高和最低值(如果您愿意,可以使用“工作”范围),并将其称为histLow
和histHigh
pixel = (pixel-histLow) / (histHigh-histLow) * 255
如果您不知道如何在RGB中添加或添加颜色,那么您应该从另一个问题开始。