V Visualizer 는
캠으로 들어오는 매 프레임마다의 이미지들을
영상처리를 통해 외곽선과 좌표를 추출하여 파티클을 움직이고 현재 윈도우의 볼륨 크기 변화를 통해
파티클의 크기를 변화시키는 프로그램입니다.
[ Viewer ]
[ Select Mode ]
- 동적 배경 분할 : 지정한 시간동안의 영상을 통해 배경에 대한 누적치를 계산한 후
매 프레임마다 배경과 사물의 휘도 진폭을 재 계산함으로써 분리해 나갑니다.
http://opencv.jp/sample/accumulation_of_background.html
- 정적 배경 분할 : 동적배경분할과 비슷하지만 배경과 사물을 재 계산하지 않고 처음 계산된 배경 값을 통해
현재 이미지와의 차이를 계산합니다.
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/bgfg_codebook.cpp
- 색상 분리 : RGB를 YCbCr로 변환한 후 Cb 공간을 사용하였습니다.
http://cafe.naver.com/opencv/9466
[ Select Contours Mode ]
- Line : 외곽선을 라인으로 그립니다.
- Ellipse : 외곽선을 원 모양들로 그립니다.
- Rectangle : 외곽선을 사각형 모양들로 그립니다.
- Vlpan : Visualizer 프로그램을 실행시킵니다.
[ Path Data ]
- 외곽선의 좌표 입니다.
[ IP ]
- 현재 영상 및 외곽선 좌표를 전송할 IP를 설정합니다.
[ Learning Time ]
- 동적 배경 분할 및 정적 배경 분할 시 초기 배경 값을 계산할 시간입니다.
[ MinColor, MaxColor ]
- 색상 분리 시 최소, 최대 이진화 임계치 값입니다.
[ 좌표 전송 ]
- 현재 영상 및 외곽선 좌표를 전송합니다.
- Client 프로그램
[ 파일 저장 ]
- 외곽선 좌표들을 파일로 저장합니다.
[ 영상처리 과정 ]
각 모드를 통한 객체 분리 -> 라벨링을 통한 잡음 제거 -> 침식, 팽창 -> 외곽선 추출
[ 개발환경 ]
OS : Windows 7
Tools : VisualStudio 2008, Expression Blend3
Image Processing : EmguCV 2.1 ( cvCreateBGCodeBookModel 함수 사용 시 버그가 있어 약간의 수정을 하였습니다. )
Language : C# (WPF)
[ 실행 ]
EmguCV 2.1 을 설치 하신 후 실행하시면 됩니다.
처음 해보는 영상처리 프로젝트여서 여기저기 자료 찾고 테스트 하느라 힘들었습니다.
특히나 빛에 영향을 많이 받기 때문에 굉장히 까다로웠습니다.
저 처럼 영상처리 프로젝트를 처음 접해 보시는 분들에게 조금이나마 도움이 되었으면 합니다.
한 가지 여담으로 이 프로젝트를 마친 후에 키넥트가 발매가 되었습니다.
좀 더 일찍 나왔다면 배경 분리한다고 이런 수고를 하지 않았을텐데.. 덕분에 많은 공부했네요. ^^