포스트

영상처리 10. Object detection을 어떻게 할까

영상처리 10. Object detection을 어떻게 할까

Object Detection

색상, 질감, 모양, 움직임 등을 파악하여 객체를 감지하는 기술이다. 어떻게 객체를 탐지할까?

Face Detection

이미지에서 Skin model을 적용하여 피부일 가능성이 있는 후보 영역을 찾는다. 이후 크기와 모양 정보를 사용해서 얼굴이 아닌 것들을 제거한다. 최종적으로 얼굴만 남긴다.

Skin model이 무엇인가? 인간의 피부가 가질 수 있는 색상 범위를 정의한 것이다. Skin model을 어떻게 만드는가? 다양한 인종과 조명에서 촬용된 사람 이미지를 수집한다. 이후 \(YC_{r}C_{b}\) 모델로 변환한다. 피부에 해당하는 픽셀들의 \(C_{b}, C_{r}\) 값만 추출하여 분포를 분석한다. 이를 2차원 가우시안 함수레 Mapping하여 피부색들의 평균과 분산을 계산한다. 최종적으로 2차원 가우시안 피부색 분포 함수를 만든다.

왜 \(YC_{r}C_{b}\) 모델을 사용하는가? RGB 모델을 사용하면 밝기 변화에 의존하여 너무 많은 피부색 범위를 가진다. \(YC_{r}C_{b}\) 모델을 사용하면 밝기 정보 \(Y\)를 분리하여 색상 정보만 다룰 수 있다.

Skin model이 어떻게 피부의 후보 영역을 찾는가? 픽셀의 \(C_{r}, C_{b}\) 값을 Skin Model에 넣어보면 피부색일 확률이 계산된다. 이 확률이 특정 threshold을 넘어가면 피부로 감지한다.

어떻게 얼굴이 아닌지 판단하는가? 얼굴은 타원이면서 볼록하다. 따라서 타원이 아니고, 볼록하지 않은 것은 거른다. 그리고 너무 작거나 (노이즈) 너무 큰 것은 얼굴이 아니라고 판단한다.

Hand Detection

손의 움직임, 제스처를 감지하는 방법이다. 먼저 프레임간의 차이를 계산해 움직이는 영역을 얻는다. 이후 피부색 모델을 적용하여 실제 움직이는 피부를 얻는다. 여기서 다른 움직이는 객체와 배경, 몸통은 제거되고 얼굴과 손만 남는다. 이후 크기와 모양을 필터링하여 손바닥으로 판단되는 영역만 얻는다.

손바닥의 특징점을 기준으로 궤적을 계산하고, 그 궤적을 미리 저장해둔 제스처들과 비교하여 어떤 제스처를 취했는지 분류한다.

특징점을 손바닥의 가운데라고 하면, 궤적은 프레임에 따른 이동 경로와 같다. 1번 프레임에서 계산된 손바닥 중심 좌표 \((x_{1}, y_{1})\) 2번 프레임에서 계산된 손바닥 중심 좌표 \((x_{2}, y_{2})\) … N번 프레임에서 계산된 손바닥 중심 좌표 \((x_{N}, y_{N})\) 이 시퀀스가 바로 손바닥이 움직인 궤적과 같다. 이를 기존에 저장된 궤적과 비교하면 수화를 인식할 수 있다.

Vehicle Detection

도로에서 차량을 감지하는 방법이다. 고정된 카메라에서 사용할 수 있는 방법이다.

먼저 아무것도 없는 배경 이미지를 저장한다. 현재 프레임에서 미리 생성된 배경 이미지를 뺀다. background subtraction, 움직이는 영역을 찾아낸다. 이후 추출된 영역의 특징(색상, 크기 정보)을 토대로 차량을 분류한다.