공부하기위한 프로그램을 만들다 보니 Skin Color Detection 이 필요해서 Skin Color 에 대하 조사를 해 보니 대부분이 YCbCr 모델이
피부색 검출에 적합하다고 얘기는 하나 이와 다른 컬러모델과의 비교된 실험이나 근거가 없어서 이에대한 간단한 실험을 해 보았다
이 실험은 개인적으로 비교를 위한 간단히 수행된 실험이며 실험에 사용된 데이터의 양이 적고, 실험 조건이 제한적인 상태에서 비교한 것이므로 객관적 비교가 될 수 없고 단지 어떤 양상으로 나오는지 비교 확인만을 위한 참고자료 일 뿐이다.
실험에 사용된 Color Model은 RGB, Normalized RGB, YIQ, HSV, YCbCr 다섯가지 컬러모델이 사용되었고
2차 실험에서 화이트밸런싱된 RGB와 이를 통한 Normalized RGb 모델 두가지가 추가되어 총 7가지 컬러모델에 대한 비교가 이루어 졌다.
RGB모델은 OpenCV 의 IplImage에 capture된 이미지를 저장하여 그대로 사용하였고 HSV, YCbCr 모델은 cvCvtColor 함수를 통해
컬러 공간변환을 통해 그 데이터를 그대로 이용하였다.
Normalized RGB는 R, G, B 값을 각각 총합(R+G+B) 으로 나눠준 값을 0~ 255 범위로 정규화 하여 사용하였고
YIQ 모델은 다음의 식을 이용하여 그 크기를 구하였다.
Y = 0.299R + 0.578G + 0.114B / I = 0.6R - 0.28G - 0.32B / Q = 0.21R - 0.52G + 0.31B
실험 환경은 먼저 하드웨어의 경우는 노트북에 내장된 Cam 하나와 Logitech 사의 Quick Cam Pro 9000 모델 그리고
동일한 Logitech 사의 Quick Cam Orbit/Sphere MP 모델 총 세가지 카메라가 사용되었으며
실험장소와 각 장소별 밝기는 내자리(230Lux), 회의실 테이블(770Lux), 창가(1720Lux), 회의실 구석(45Lux) 네가지 장소에서 테스트를
수행하였다.
각 장소별로 캠과의 거리, 얼굴 각도 등을 달리하며 10회의 촬영을 했고 결과 비교에는 10회의 평균 값을 이용하여 비교를 했다.
데이터 테이블에 사용된 I 는 내장카메라, y 는 Pro9000, yy 는 orbit/sphere MP 모델을 의미한다.
위 두 사진은 동일한 카메라를 이용하요 조도를 달리하며 비교한 데이터 테이블과 그 결과 그래프이다.
전반적으로 NRGB 모델과 CbCr 그리고 YIQ의 Q 와 HSV의 H 가 표준편차가 전반적으로 낮게 측정 되었다.
그리고 위 두 사진은 동일한 조도에서 캠을 바꿔가며 실험한 결과를 비교한 테이블과 그래프이다.
위 결과와 유사하게 NRGB 모델과 Q, H 그리고 CbCr 모델이 다른 Color Model에 비해 낮은 표준편차를 보여줬다.
이 실험과 더불어 피부색과 유사한 종이박스도 같이 촬영을 하여 그 값을 비교 실험 해 보았는데
NRGB 와 CbCr 의 경우에서 보여지는 종이 박스와 Skin Color의 차이가
Q 모델의 차이보다 두배 정도의 차이를 보이며 비슷한 색상의 Object와의 구분하는 능력이 뛰어남을 알 수 있었다.
위의 실험들로 미루어 볼때 Skin Color 검출에는 NRGB 모델과 CbCr 모델이 다른 색상에 비해
조명변화에 조금 더 강인하고 하드웨어적 영향을 적게 받는 색상 모델이라고 생각 할 수 있겠다.
1차 실험 후에 추가적으로 다른분들의 조언을 받아서 몇가지 실험을 더 해 보았다.
화이트 밸런싱을 하고나면 기존의 RGB 값과 형태가 전혀 다르게 나올수 있어서 결과가 달라질수 있다.
하드웨어의 차이가 이 화이트밸런싱 정도의 차이일 수가 있다는 조언을 듣고 화이트 밸런싱을 한 후에 비교하는 실험과
실제 Normalized RGB 모델을 통해 피부검출이 아닌 얼굴 요소 검출에 사용 적합한 모델이 어떤것인지 비교하는 실험이었다.
위 세장의 사진은 차례대로 Normalized RGB 모델을 Gray Scale 로 출력한 사진이다.
이전 실험에서는 수치로 표현된 값만으로 비교를 해서 NRGB_G 값이 표준편차가 낮아서 매우 유용한 데이터라고 생각을 했었는데
실제로 화면에 출력된 결과를 보이 Skin Color 검출에 유용한 데이터라기보다는 촬영 환경에서 프래임 전체가 비슷한 값을
가지게 되면서 표준편차가 낮게 측정 됐던 것이었다. 모두 유사한 값이 나와버리니 이는 SkinColor에 사용하기에는
부적합한 모델인 것 같다.
위 두 그래프를 보면 입력받은 RGB 데이터와 화이트밸런싱을 거친 RGB 영상의 값을 비교해놓은 그래프이다
위의 그래프는 22개의 값을 일괄 비교한 그래프이고 아래 그래프는 RGB 와 WRGB 의 평균값만을 비교한 것이다.
화이트 밸런싱을 통해 RGB 의 형태가 확연히 달라질수도 있을 것이라는 염려와는 달리 실제 그래프의 형상은
조도나 하드웨어에 따라 위아래로 그 크기의 차이는 존재하지만 전체적인 그래프의 형태는 달라지지 않았다.
이를 통해 화이트 밸런싱은 SkinColor 검출 단계에서는 크게 영향을 미치지 않는다고 생각해도 될 것 같다.
마지막 표는 NRGB , CbCr 그리고 WNRGB 모델값을 이용하여
얼굴 내부영역의 평군값과 각 얼굴 요소들의 평균값의 차를 비교해 둔 데이터 테이블이다.
이는 얼굴 요소 검출에 사용될 모델을 비교하기 위한 실험으로
각 요소별로 차이가 크게 날수록 얼굴의 특징이 뚜렷하다는 의미이므로 차이가 클수록 유용한 데이터라 할 수 있겠다.
위 실험만을 봤을 경우에는 NRGB_R 모델과 YCbCr_Cr 모델이 얼굴 전체영역과 각 요소간의 차이가 다른 모델보다
뚜렷하여 얼굴 요소 검출에 보다 유용하다고 판단 된다.
최종적으로 나만의 결론을 내리자면
Skin Color 를 검출하고 할 경우에는 NRGB_R, NRGB_B, YCbCr_Cb, YCbCr_Cb 이상 네가지 모델을 적절하게
이용하여 검출하고,
얼굴 요소를 검출 할 경우에는 NRGB_R 모델과 YCbCr_Cr을 이용하여 검출하는 것이 적절한 선택이 아닐까 하는것이
나만의 결론이다.
PS. OpenCV의 YCbCr 에 사용된 변환 비율도 YIQ의 Y 과 같던데.. 결과값은 다르게 나온다.
OpenCV 내부적으로 무슨 처리를 한건지 궁금하다.
'전공관련 > 실습 프로그램' 카테고리의 다른 글
Gender Classification (0) | 2013.06.14 |
---|---|
Canny Edge 구현 (1) | 2013.04.17 |
웹캠을 이용한 가위바위보 게임 (18) | 2013.04.16 |