서미나 심규형 -color tracking 연구 (flash)

-일단은 색을 잘 트레킹 하는 것이 중요하므로 트래킹부분에 관하여 여러가지 자료 수집과 다양한 테스트를 해보았다.
단순한 컬러트레킹의 프로세스는 마술같은 효과에 비해 그렇게 복잡하지는 않았다.
일단 webcam을 작동– > BitmapData  instance 생성 –> 매프레임마다 BitmapData에 webcam의 화면을 저장
–> 그 BitmapData에서 (보통 마우스 클릭 이용) 한 픽샐의 색상정보 저장  –> 해당 픽셀의 위치값 확인 , 활용
정확한 값을 알아내기 위해서는 더욱 많은 코드가 들어가야 하겠지만 대강의 큰 방법은 위의 방식을 많이 이용하는 듯했다.
그중 내가 눈여겨 본것은 http://redblind.com/blog/2009/11/19/color-tracking-source/ 의 트레킹 소스였는데
이유는 colorIsolate라는 클레스를 이용하여 특정색의 범위를 감지하여
그냥 픽셀만 이용하는 방법에 비해 색 인식율이 매우 높았기 때문이다
-기본화면

이것은  ColorIsolate라는 클래스를 이용, 캠화면을 마우스로 클릭했을 당시의 색상값만을 보여주는 다른 BitmapData를 만들고
하나의 Sprite을 이용하여
그 픽셀들을 감싸는 형식을 취하고 있었다 .
이것은 코드의 한 부분이다 .

camDisp(CameraDisplay)는 cam 화면출력, ci(ColorIsolate)는 webcam의 비트맵 데이타(CameraDisplay클래스에
bitmapdata를 반환하는 bitmap함수가 있다)에서 지정 색상만 출력, bmDisp는 ci로 걸러진 지정색상의 비트맵에서 지정색상이
아닌것을 null시켜 마치 alpha값을 적용한 것처럼 사이 사이를 투명하게 해주었다. 이러한 프로세스를 거쳐 배경이 없는 지정색상의
bitmapData가 만들어 지는 데 여기서 x,y값을 추출해 내기 위하여 특정 Sprite(여기서는 RectAngle) 로 감싼다(swapChildren).
결과적으로는 이렇게 특정색상의 BitmapData를 감싸고 있는 Sprite의 위치값을 추적함으로써
컬러 트레킹 효과를 낼 수 있는 것이다.

실제로 적용시켜 본 화면 , 조명에 따라 차이가 있긴 있지만 트레킹 인식률이 좋다.
처음엔 2~3개를 하는 것에 대하여 어렵겠다고 느꼇다. camera를 2중 3중으로 쓰는 게 아닐까 하고.
하지만 각각을 addChild 시켰을때 무리 없이 구동이 되었으며 이 클래스가 2개가 호출된다하여
카메라가 두번 구동되는 것이 아니구나 라는 것을 알게 되었다.
이러한 것이라면 애초 기획했던 마커로 이벤트를 호출하고 그것을 이용해 save나 reset을 하는 방법도
시도를 해보아야겠다.

댓글 남기기