9. Face Detection
- 주인이 집에 있는 HomeMode에서
얼굴을 감지하는 기능
- 주인이 인지되면 경비원에게 반기도록 명령
- 낯선 사람이 인지되면 경비원에게
방문자의 신원을 밝히도록 명령
command
“반가워요!”
"누구십니까?”
10. Face Detection (얼굴 감지)
- SurfaceView로 CCTV 카메라로부터의 실시간 화상 확보
- Android의 hardware package에서 제공하는 Camera.Face와
FaceDetectionListener를 통해 실시간 얼굴 감지
- OpenCV로도 FaceDetection이 가능하지만
프레임 드롭과 낮은 정확도가 불편함을 가져다 주어
안드로이드에서 제공하는 하드웨어 패키지를 사용함.
11. Face Recognition (얼굴 인지)
- Face Recognition을 위해서는 얼굴을 구별해야 하므로
Detection으로부터 얻은 얼굴의 정보(Facial Features)가 필요함.
- Face Detection에서 사용한 Camera.Face에는 정보가 부족
- FaceDetector.Face를 사용함.
- 얼굴인지 알고리즘으로
얼굴 전체 면적에 상대적인 눈코입 위치와
눈 사이의 거리를 기준으로 인지하였음.
- GT-I300 모델에서 지원이 됨
12. Face Detection & Recognition
후면 카메라의 실시간 화상
얼굴 감지시
감지한 얼굴 영역을
사각형으로 표시함.
(실시간 얼굴 감지)
얼굴 감지 후 경비원
폰에게 적절한 행동을
명령함.
14. Motion Detection
- 주인이 집에 없는 GuardMode에서는 도둑이 들었는지 확인해야 함.
- 도둑은 얼굴을 가린 경우 FaceDetection기능만으로는
도둑을 포착하는 것이 불충분함.
- GuardMode에서 움직임을 포착하는 기능
15. Motion Detection
- 주기적으로 현재 camera의 preview
화면과 다음 preview화면을 비교
- Pixel threshold & image threshold의 상수 값에 따라
모션 감지 민감도 조절
- 화면의 pixel들이 pixel threshold만큼 다를 경우에
그 pixel의 차이를 축적
- 축적한 수가 image threshold의 값을 넘어설 경우
모션이 일어났다고 판단
- 이렇게 모션이 일어난 경우, Camera capture로
사진 저장하고 SMS로 전송한다.
16. Motion Detection
- 카메라 앞에서 손을 움직였을 때의 motion detection
- Motion detection을 위한 화면 비교 분석 로그
18. 경비원 폰과 BeautoRover의 동작
1. HomeMode에서 주인을 인지한 경우 원으로 돌면서 반겨준다.
2. HomeMode에서 낯선 사람을 인지한 경우 신원을 확인한다.
3. GuardMode에서는 움직임을 포착하면
원으로 돌면서siren 소리를 낸다.
“반가워요”
“누구세요?”
(siren sound)
19. BeautoRover 제어 및 경비원 폰의 행동 기작
- 경비원 폰은 CCTV 폰로부터 받은 명령으로
BeautoRover의 움직임을 제어한다.
- BeautoRover의 움직임을 제어하는 동시에 Audio를 출력함.
- Bluetooth에서 sendMessage(“character”)로
BeautoRover의 움직임 제어
- Audio 출력시 MediaPlayer를 이용해서
raw폴더에 저장된 오디오 파일을 가져와서 play
21. CCTV 폰과 경비원 폰 사이의 통신
- 모든 폰과 뷰토로버 사이는 블루투스 방식으로 통신을 할 예정이었음.
- 경비원 폰은 CCTV 폰과 뷰토로버와 동시에 통신을 해야 함.
- 블루투스 방식으로 다중 기기와 소통하는 것이 어려움.
CCTV 폰과 뷰토로버 폰은 수업시간에 배웠던
TCP 통신을 활용하는 방향으로 해결.
22. openCV 대체
- Face Detection과 Recognition 기능을 위해 openCV
라이브러리를 사용할 예정이었음.
- openCV 라이브러리를 사용하니 예상보다 성능이나 정확성이 낮음.
Android hardware 패키지에서 제공하는 Camera.Face,
FaceDetectionListener 등을 활용하여 해결
23. MotionDetection의 정밀성 조절
- 처음에 구현한 Motion Detection 기능이 너무 민감하거나,
한번 모션이 인식한 후 모션이 없을 때도 모션이 있는 것으로
인식되는 문제가 있었음.
수 차례 실험으로 실생활 수준에서 모션을 감지할 수 있는
pixel threshold, image threshold 값을 도출하여 구현시 적용함
25. Hardware limitations for face recognition
- Camera.Face와 FaceDetector.Face에서 제공하는
Facial Feature들은 모든 기기에서 제공되지 않음.
- 하드웨어적 제한 때문에 정확성이 떨어지는 얼굴 인지 기능
Camera.Face에서 제공하는 Facial Feature를
제대로 지원하는 안드로이드 폰을 사용하여 프로젝트를 진행
속도가 느려도 openCV 라이브러리를 활용
주기적으로 현재 camera preview 화면과 그 다음 preview화면 비교
pixel threshold & image threshold의 상수 값에 따라 motion감지 예민성 조절
각 화면의 대응하는 pixel에 pixel threshold만큼 ( ex) 10% difference ) 다를 경우를 축적
축적한 수가 image threshold의 값을 넘어설 경우 image가 다르다고 인식
Preview화면과 다음 화면이 다를경우 Camera capture후 sdcard에 파일 write
Tcp 소켓 통신
주기적으로 현재 camera preview 화면과 그 다음 preview화면 비교
pixel threshold & image threshold의 상수 값에 따라 motion감지 예민성 조절
각 화면의 대응하는 pixel에 pixel threshold만큼 ( ex) 10% difference ) 다를 경우를 축적
축적한 수가 image threshold의 값을 넘어설 경우 image가 다르다고 인식
Preview화면과 다음 화면이 다를경우 Camera capture후 sdcard에 파일 write
Tcp 소켓 통신
Tcp 소켓을 받아서 BeautoRover에 블루투스 통신을 해서 움직임 제어
움직임과 같이 Audio출력
Bluetooth에서 sendMessage(“character”)를 통해 BeautoRover의 움직임 제어
sendMessage(“f”) => BeautoRover 앞으로 직진
sendMessage(“l”) => BeautoRover 옆으로 회전
sendMessage(“s”) => BeautoRover 멈춤
sendMessage호출시 connectedThread에서 블루투스 캐릭터 전송
- Audio 출력기 MediaPlayer를 이용해서 raw파일에 저장된 오디오 파일을 가져와서 play