在许多使用OpenCV进行面部识别的网络中,我看到图像被转换为灰度,这是面部识别功能“预处理”的一部分。如果将彩色图像用于面部识别会怎样?为什么所有示例都首先将图像变成灰度?
答案 0 :(得分:1)
许多图像处理和CV算法使用灰度图像作为输入,而不是彩色图像。一个重要的原因是因为通过转换为灰度,它将亮度平面与色度平面分开。亮度对于区分图像的视觉特征也更为重要。例如,如果要基于亮度和色度查找边缘,则需要进行其他工作。尽管可能会有例外,但是颜色也并不能真正帮助我们识别图像的重要特征或特征。
灰度图像只有一个颜色通道,而彩色图像中只有三个颜色通道(RGB,HSV)。灰度图像的固有复杂度低于彩色图像,因为您可以获得与亮度,对比度,边缘,形状,轮廓,纹理和无色透视有关的特征。
灰度处理也快得多。如果我们假设处理三通道彩色图像所花费的时间是处理灰度图像的三倍,那么我们可以通过消除不需要的色彩通道来节省处理时间。从本质上讲,颜色会增加模型的复杂性,并且通常会减慢处理速度。
答案 1 :(得分:1)
大多数面部识别算法依赖于图像中的一般强度分布,而不是每个通道的颜色强度信息。
灰度图像准确地提供了有关图像中强度总体分布的信息(高强度区域显示为白色,低强度区域显示为黑色)。计算灰度图像很简单,并且需要很少的计算时间,您可以通过平均所有三个通道的值来计算该强度。
在RGB图像中,此信息分为所有3个通道。以亮黄色为例:
RGB(255,217,0)
虽然这显然是一种高强度的颜色,但我们通过组合所有通道来获取此信息,而这正是灰度图像所做的。当然,您可以改为使用每个通道进行特征计算,并将结果连接起来以使用该图像的所有强度信息,但是在使用3倍的计算时间的情况下,其结果与使用灰度版本的结果基本相同。