아이트래킹을 이용한 피아노 연주 시스템 2011 졸업과제 최종 발표 Outlier Team Dept. of Computer Science and Engineering Pusan National University 2017-03-05
Agenda R&R Outlier Team Part 1. Overview Part 2. 설계 상세화 Part 3. Demo 지능형 시스템 분과 Outlier Team Junghee Ma 200824452 PM Mijoo Park 200824462 Member Gowoon Lee 200824488 Web-cam 영상 입출력 제어 눈 깜빡임 검출 (Blink Detection) 눈 추적 (Eye Tracking) 피아노 애플리케이션 눈 검출 (Eye Detection) 마우스 제어 Part 1. Overview 1-1. Goals and Objectives 1-2. Problem Statements Part 2. 설계 상세화 2-1. 시스템 구조 및 기본 시나리오 2-2. Web-cam 영상 입출력 제어 2-3. 눈 검출 (Eye Detection) 2-4. 눈 추적 (Eye Tracking) 2-5. 눈 깜빡임 검출 (Blink Detection) 2-6. 마우스 제어 2-7. 피아노 애플리케이션 Part 3. Demo Part 4. 추진 체계 및 일정 Agenda + R&R 누가 어느 부분(part)을 발표하는지 언급할 것. 2017-03-05
Part 1. Overview 1-1. Goals and Objectives 1-2. Problem Statements 2017-03-05
눈으로 가능하도록 하는 1-1. Goals and Objectives 기존에 손으로 가능한 피아노 연주를 피아노 연주 시스템을 구현한다. 후속 연구(Conclusion 부분) 부분도 함께 언급 손이나 발 등 몸이 불편한 사람이 다른 사람과 의사 소통을 할 수 있는 시스템으로 발전할 수 있다. 손을 사용하지 않는 Computer, 알파벳 등을 입력하면 음성으로 읽어주는 전화 통화를 위한 시스템 등 … 2017-03-05
1-1. Goals and Objectives 구현 시스템은 손이나 발 등 몸이 불편한 사람이 다른 사람과 의사 소통을 할 수 있는 시스템으로 발전할 수 있다. 손을 사용하지 않는 Computer, 알파벳 등을 입력하면 음성으로 읽어주는 전화 통화를 위한 시스템, 다양한 분야, 모바일 기기로 확장할 수 있는 발전 가능성 등 … 후속 연구(Conclusion 부분) 부분도 함께 언급 2017-03-05
시스템은 1-2. Problem Statements PC의 Web-Cam으로 부터 카메라 영상을 받을 수 있다. 카메라 영상에서 사용자의 눈 위치를 검출(Eye Detection)할 수 있다. 눈의 움직임을 추적(Eye Tracking)할 수 있다. 눈 깜빡임을 인식(Blink Detection)할 수 있다. 마우스의 이동과 클릭 제어를 할 수 있다. 마우스의 클릭에 따라 피아노를 연주할 수 있다. 시스템의 요구사항 2017-03-05
Part 2. 설계 상세화 2-1. 시스템 구조 및 기본 시나리오 2-2. Web-cam 영상 입출력 제어 2-3. 눈 검출 (Eye Detection) 2-4. 눈 추적 (Eye Tracking) 2-5. 눈 깜빡임 검출 (Blink Detection) 2-6. 마우스 제어 2-7. 피아노 애플리케이션 2017-03-05
2-1. 시스템 구조 및 기본 시나리오 카메라 영상 입력 제어 눈 검출 및 추적 마우스 제어 눈 깜빡임 검출 피아노 연주 2017-03-05
2-2. Web-cam 영상 입출력 제어 영상 입력 영상 출력 ∙ 시스템은 다이얼로그 기반의 MFC로 구현 ∙ 33ms 간격으로 타이머 발생하여 웹캠으로 영상 받음 ∙ 타이머 발생시 OnTimer() 함수 내에서 한 프레임씩 처리 영상 출력 ∙ 시스템은 원본 영상과 차영상을 출력 ∙ 타이머 발생시 입력받은 프레임을 Picture Control에 출력 ∙ MFC용 이미지 클래스인 CvvImage를 사용 2017-03-05
2-3. 눈 검출 (Eye Detection) - 차영상에서 눈 검출 Step1. 눈 후보 영역 구하기 1-1. 차영상 구하기 1-2. 모폴로지 연산 1-3. 외곽 검출 Step2. 눈 판단하기 웹캠으로 입력받은 영상 내에서 눈을 검출한다. 2017-03-05
2-3. 눈 검출 (Eye Detection) Step 1-1. 차영상 구하기 -이전 프레임 이미지를 저장해 현재 프레임에서 차 영상을 구한 후, 영상을 이진화 함 차영상 픽셀 값 치환할 픽셀 값 255 4 2017-03-05
2-3. 눈 검출 (Eye Detection) Step 1-2. 모폴로지 연산 - 입력영상을 깨끗하게 정리하기 위해 모폴로지 열기(Opening)연산 사용 - 열기 연산 : 침식 연산 수행 -> 팽창 연산 수행 독립된 영역의 개수를 세기 위해 사용 주변보다 밝은 잡음을 제거하는 효과 . 침식 연산 - 튀어나온 부분을 제거하는 효과 . 팽창 연산 – 오목하게 들어간 부분을 채우는 효과 [모폴로지 연산 미적용시] [모폴로지 연산 적용시] 2017-03-05
2-3. 눈 검출 (Eye Detection) Step 1-3. 외곽선 검출 - 이진영상에서 외곽선을 찾고 그 개수를 구함 - 외곽선 : 영상 내 곡선을 나타내는 점들의 리스트 - 검출한 외곽선은 시퀀스를 이용하여 표현 First = c01000↔c01001↔c010↔c000↔c0 ↕ ↕ ↕ h0100 h0000 h00 [발견된 외곽선이 연결되는 방법] . 모든 외곽선을 검색하고 이를 두 개의 계층으로 나누어 관리 OpenCV에서 곡선은 시퀀스를 이용하여 표현 (시퀀스 – 다른 구조체들의 연결 리스트) 첫번째 계층에서는 구성 요소들의 바깥쪽 외곽선들을 연결리스트로 관리하고, 두 번째 계층에서는 구성 요소들의 안쪽 외곽선(즉, 홀의 바깥 외곽선)을 리스트로 관리. 2017-03-05
2-3. 눈 검출 (Eye Detection) Step 2. 눈 판단하기 - 이전 단계에서 구한 컴포넌트가 눈인지 판단 . 컴포넌트의 개수가 2개여야 함 . 두 컴포넌트의 너비가 같아야 함 . 두 컴포넌트의 높이가 같아야 함. . 두 컴포넌트의 수평 거리가 너무 가깝거나 멀지 않아야 함. . 두 컴포넌트의 수직 거리의 차이가 없어야 한다. - 위의 조건을 모두 만족하면 두 컴포넌트가 눈이라고 판단. 수직거리 수평거리 (수평 거리는 얼굴과 카메라 사이의 거리에 따라 달라짐 -> 눈의 너비에 대한 수평 거리의 비율로 계산 ) 2017-03-05
2-4. 눈 추적 (Eye Tracking) Eye Tracking은 Algorithm Template Matching을 사용하여 눈을 찾아 추적한다. Algorithm 매 프레임마다 Template Matching을 수행하기에 계산량을 줄이기 위해 검색 영역(Search Window)를 설정한다. 검색 영역이 화면 내에 위치하는지 확인한다. 2017-03-05
2-4. 눈 추적 (Eye Tracking) Algorithm Template Matching을 수행하여 유사성을 찾으며, 수행 결과는 설정한 상관 계수 맵에 저장된다. 유사성을 구하는 여러 가지 방법 중 정규화된 유클리디안법을 이용하는 방법을 사용하며 공식은 아래와 같다. (I: 전체 이미지, T: 템플릿 이미지, R: 결과) 상관 계수 맵에서 최소, 최대값, 위치 좌표를 구할 수 있고, 최소값이 정해진 임계값(Threshold) 이내인지 확인한다. 여기서 이내인 경우에만 눈을 찾았다 판단하고 해당 영역을 저장한다. Algorithm 2017-03-05
2-5. 눈 깜빡임 검출 (Blink Detection) 눈 움직임을 추적함과 동시에 깜빡임 검출 여부 확인 Step1. 움직임 감지(Motion Detection) 1-1. 연결된 컴포넌트(Connected Component) 구하기 1-2. 눈 깜빡임 여부 판단하기 2017-03-05
2-5. 눈 깜빡임 검출 (Blink Detection) Step 1-1. 연결된 컴포넌트(Connected Component) 구하기 - 눈 검출에 사용했던 방식으로 컴포넌트를 구함 - 컴포넌트의 갯수는 1개 - 컴포넌트가 검색 영역 내에 있는지 확인 Step 1-2. 눈 깜빡임 여부 판단 - 눈 추적 단계에서 구한 정보를 사용하여 눈의 중점 좌표를 구함 - 컴포넌트 영역 내에 눈의 중점 좌표가 존재하면 눈 깜빡임이 발생하였다고 판단 - 눈 깜빡임이 인식되면 화면에 텍스트를 출력 2017-03-05
2-6. 마우스 제어 - 추적한 눈의 위치를 기반으로 마우스 커서의 이동을 제어 - 눈 깜빡임이 검출되면 마우스의 클릭 이벤트를 발생 마우스 커서 위치 2017-03-05
2-6. 마우스 제어 마우스 커서의 이동 제어 - 눈 깜빡임이 검출되면 마우스의 클릭 이벤트를 발생 모니터 화면 영상 화면 · (마우스 X좌표 변위) = (모니터 너비 * 눈 X좌표 변위 ) / (영상 화면 너비) · (마우스 Y좌표 변위) = (모니터 높이 * 눈 Y좌표 변위) / (영상 화면 높이) 특정 윈도우가 아닌 활성화 된 윈도우로 이벤트 메시지를 보냄 -> 해당 프로그램 뿐만 아니라 다른 프로그램이나 윈도우 화면 내에서도 클릭 이벤트 발생 - 눈 깜빡임이 검출되면 마우스의 클릭 이벤트를 발생 · 윈도우 API 함수를 사용하여 마우스 왼쪽 버튼 클릭 이벤트 발생 2017-03-05
4 Images, 3 Styles 2-7. 피아노 애플리케이션 마스크 이미지 디폴트 이미지 마우스 hover 이미지 마우스 클릭 이미지 건반은 MFC의 Customized Button으로, 별도로 버튼 속성을 정의한 클래스를 작성하여 구현한다. 기본적으로 버튼 위에 비트맵 이미지(bmp 확장자) 파일이 쓰이게 되고, 마우스 동작에 따라 버튼에 쓰이는 이미지가 달라진다. 2017-03-05
Part 3. Demo 2017-03-05
3. Demo 2017-03-05
Part 4. 추진 체계 및 일정 2017-03-05
4. 추진 체계 및 일정 마정희 200824452 박미주 200824462 이고운 200824488 6월 1 영상처리 공부 2 3 눈 깜빡임 검출 법 연구 눈 검출 법 연구 눈 추적 법 연구 4 7월 차 영상 연구 영상 입출력 구현 차 영상 구현 눈 추적 구현 눈 깜빡임 구현 눈 검출 구현 8월 인터페이스 제작 어플리케이션 제작 마우스 제어 9월 연동 및 테스트 보고서 작성 2017-03-05
아이트래킹을 이용한 피아노 연주 시스템 2011 졸업과제 최종 발표 Outlier Team Dept. of Computer Science and Engineering Pusan National University 2017-03-05