캠을 이용한 가위바위보 게임
=====================================================================================================================================
영상처리 공부를 하면서 처음으로 만든 공부를 위한 가위바위보 게임.
처음 목적은 손을 정면으로 인식하는것이 아니라 측면에서 인식해서 손가락 갯수를 파악하여 주먹 가위 보 를 판별하려 했었다.
그러나 진행중에 본의 아니게 방향을 전환하여 가위바위보 를 실제로 하듯이 구현하는 것으로 목표를 바꾸었다.
처음에는 디버깅하면서 구현하기 편하도록 인터페이스 신경쓰지않고 딱 딱 보이도록 구현 해 보았다.
아래의 사진이 개발용 프로그램의 모습니다.
알고리즘에 대해 설명을 하자면 가장먼저 캠으로 영상을 받아들인다.
그 영상에서 얼굴영역을 찾고 그 열굴 영역 내부의 Cb Cr 값의 평균을 구한다.
이렇게 구한 평균 Cb Cr 값을 이용해 위아래로 적다한 범위를 늘려서 Skin Color 의 범위를 설정한다.
범위 내의 값을 가진 픽셀은 255로 나머지 픽셀은 0으로 이진화를 하고 모폴로지 연산을 한번 수행해준다.
이때에 얼굴은 평균 피부색값을 찾기위해서만 사용되므로 평균 값을 구한 후에는 그 영역에 사각형을 그려줌으로써
이후 연산에서 얼굴 영역이 나타나지 않도록 가려준다.
이런 과정을 거치면 다음과 같은 영상을 얻을 수 있다.
Skin Color 의 boundary를 좀 더 늘리면 손 모양이 명확하게 나오겠지만 다른 노이즈들도 함께 심해지므로
적당한 범위로 설정 해 준다.
이후 위 영상의 결과를 레이블링 해서 각각의 덩어리로 구분 한 뒤 손 영역의 레이블만을 남겨두고 나머지 레이블된 영상은
모두 0값을 대입해 줌으로써 주변 노이즈를 제거한 손 영역만을 얻어 낼 수 있다.
위와 같은 연산 결과로 얻어낸 손 영역의 영상이다. 손 군데군데 구멍이 뻥뻥 뚫려 있긴 하지만
이정도 결과로도 결과가 잘 나오길래 그냥 뒀다.. 사실 귀찮고,, 어렵다.. ㅎ 초보의 패기..
자 저 손 영역에서 어떤 특징을 뽑아내야 가위바위보를 판단할 수 있을까..
히스토그램을 이용하여 구분 가능할 것 같다는 교수님의 말씀을 듣고 히스토그램을 만들어 보았다.
가위바위보를 판별해야하므로 손영상의 세로방향을 히스토그램의 X 축으로
손영상의 가로방향 255값을 가지는 픽셀의 수를 히스토그램의 Y축 데이터로 사용하여 히스토그램을 그리면
대략 이런 형태로 나오게 된다.
이 히스토그램을 어떻게 이용하느냐... 하는것은 나는 일단 저 영역을 3개로 구분하여서 평균값을 구하였다.
좌측 1/3 영역의 평균 픽셀수. 가운데1/3 영역의 평균 픽셀수, 우측 1/3 영역의 평균 픽셀 수를 구하여서 그 데이터를 이용하기로 했다.
매 프레임마다 얻을수 있는 평균 픽셀의 수이다.
이 세구간의 평균 픽셀 수를 이용하여 각각의 비율과 손 영역 폭과 높이의 비 등의 정보를 이용하여
손의 상태가 주먹인지, 가위인지, 보 인지를 판별하게 된다.
기본적인 알고리즘은 이상과 같고
이것 외에도 얼굴 인식부분에서 뒤에 여러사람이 있을경우를 대비해서 가장 앞의 한사람의 얼굴만 이용하는 것과
오른손잡이 왼손잡이 용으로 구분하여 반대영역에 손이 들어왔을 경우를 미리 차단하였고
점수 카운트 기능과 음성출력 기능을 추가하였다.
이렇게 만들어 본 프로그램이 어느정도 성능을 보여줘서
인터페이스까지 신경을 쓴 릴리즈용 프로그램을 만들었다.
사용자의 모습은 보여야하므로 320 x 240 사이즈의 출력 창을 하나 가지고 그외의 정보 (히스토그램, 얼굴,손 영역) 은 표시하지 않는다
구동부는 실제 가위바위보 게임기와 비슷한 디자인을 가지고 있고, 게임 시작버튼은 동전 투입구 이미지를 덧씌워서
좀더 게임기 스럽게 만들어 보았다.
나중에 좀더 공부하고 나서 다른 방법을 추가해서 인식률을 높이는 작업을 해 봐야겠다.
실제 시연 동영상
'전공관련 > 실습 프로그램' 카테고리의 다른 글
Gender Classification (0) | 2013.06.14 |
---|---|
Canny Edge 구현 (1) | 2013.04.17 |
Skin Color Detection에 적합한 Color Model 을 찾기위한 간단한 실험 (0) | 2013.04.16 |