이전에 연구한 LK를 이용하여 지정한 점들에서 Object의 움직임을 측정하여 파일을 생성하고 Matlab을 이용하여 분석해보았다. 또한 마지막으로 파노라마 촬영을 구현하기위해 카메라 움직임을 인식하는 어플을 연구하였으나 완성하지 못하였다. 동영상에서 보면 OpenCV가 뛰어난 트래킹을 하고 있는것으로 보이지만, 실질적으로는 아주 미세한 오류를 발생시키기 때문에 파노라마 찰영도중 멈춰있더라도 이어서 찍어나가는 문제점을 해결하지 못함.
Optical flow란 프레임 장면에서 객체가 어떻게 움직이고 있는지 추적하는 것으로 루카스-카네데 방법 한프레임의 각 픽셀 윈도우를 설정하고 다음 프레임에서 이 윈도우와 가장 잘 일치하는 곳을 찾는다. 작은 지역 윈도우를 사용하기 때문에 이 윈도우보다 큰 움직임이 발생하였을 경우 움직임을 계산하지 못하는 단점이 있다. ☞ 이러한 문제점을 해결하기 위해 피라미드를 이용한다. 피라미드LK 알고리즘은 원본영상으로부터 영상 피라미드를 구성, 상위계층에서 하위계층으로 추적 => 커다란 움직임도 찾아낸다. 옵티컬 플로우 - 피라미드 루카스-카나데(객체추적) 링크
안드로이드 샘플은 고작 9개 이지만 앞서 링크 사이트를 통해 확인해보면 cpp sample 수백개를 확인할수 있다. Tracking 또는 Detection등 학부생수준에서는 쉽게 구현할수 없는 정말 유용한 샘플들을 제공하고 있기 때문에 이제 우리는 안드로이드로 소스 컨버팅만 하면 된다!. 가장 첫번째로 이미 있는 face-dectecion을 소스 변환 해보았다. 대략적으로 얼굴 인식의 전체적인 흐름은 학습을 통한 대조가 주된 방식이다. OpenCV에서 제공하는 데이터를 로드하여 프레임의 얼굴을 찾고 이렇게 찾은 얼굴안에서 눈 데이터를 이용하여 눈까지 찾을 수 있다.
[15.6.22 ~ 15.7.31간 인턴쉽 기간동안 실습내용을 정리해볼까 합니다.] 기본적으로 안드로이드를 이용한 영상처리를 하기 위해선 오픈소스 OpenCV를 이용하여 컴퓨터 비전 프로그래밍 개발환경 구축이 필요하다. 위키백과에서 찾아볼 수 있듯이 OpenCV는 C 기반의 라이브러리이며, 안드로이드의 경우 리눅스 기반의 달빅 가상머신 위에서 "Java"로 만들어진 프로그램으로 돌아가기 때문에 직접적으로는 이 둘을 연동하게 개발환경을 구축하는 것은 쉽지 않다. 그렇기 때문에 쉽게는 JavaCV라는 java전용 OpenCV를 사용할수 있지만 원래의 OpenCV가 가지고 있는 함수와 하위 레벨에서의 연산을 통한 동작속도 향상을 위해서 JavaCV가 아닌 C기반의 OpenCV를 이용한 환경 구축이 필요하다. ..