В чем смысл обесцвечивания и выравнивания при распознавании лиц?

Когда я играю в код распознавания лиц, у меня возникает некоторая путаница. Когда я комментирую эти два предложения:

//cvtColor( frame, frame_gray, CV_BGR2GRAY );
//equalizeHist( frame_gray, frame_gray ); 

результат все тот же, что означает, что Opencv (detectMultiScale) все еще может успешно находить лица людей. Я думаю, какой смысл менять цветное изображение на серое, а затем получать гистограмму серого изображения?

Я прикрепляю часть кода следующим образом:

while (cvWaitKey(10) < 0)
{
Mat frame = cvQueryFrame( capture ); // get the next frame of video
cvtColor( frame, frame_gray, CV_BGR2GRAY );
equalizeHist( frame_gray, frame_gray ); 
face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); // Detect faces
for( int i = 0; i < faces.size(); i++ ) // for each face found
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); // location of this face
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); // draw ellipse around this face}
imshow( "faces", frame);
}
/////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////

OR:

while (cvWaitKey(10) < 0)
{
Mat frame = cvQueryFrame( capture ); // get the next frame of video
//cvtColor( frame, frame_gray, CV_BGR2GRAY );
//equalizeHist( frame_gray, frame_gray ); 
face_cascade.detectMultiScale( frame, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); // Detect faces
for( int i = 0; i < faces.size(); i++ ) // for each face found
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); // location of this face
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); // draw ellipse around this face}
imshow( "faces", frame);
}
//////////////////////////////////////////////

person user1893101    schedule 10.12.2012    source источник
comment
Вы можете получить лучшие ответы, если правильно пометите свой вопрос библиотекой/API/платформой, которую вы используете здесь. Если вы используете библиотеку OpenCV, пометьте свой вопрос этим.   -  person TJ Thind    schedule 11.12.2012
comment
Для пояснения, пожалуйста, сделайте правильный отступ в коде — людям будет легче ответить на ваш вопрос. Я бы сам предложил правки, но я не уверен, должен ли комментарий } в конце эллипса рисования... быть на новой строке. Также это улучшит видимость вашего вопроса, если вы пометите его как языком, так и конкретной используемой системой обнаружения.   -  person Jeff    schedule 11.12.2012


Ответы (1)


Суть обесцвечивания заключается в уменьшении количества данных, так как алгоритм работает без цвета. Суть эквалайзера в том, чтобы компенсировать изменения освещения.

Дополнительную информацию можно найти здесь: Распознавание лиц с использованием OpenCV

person Emre    schedule 03.01.2013