What Is Projection Mapping 🙄?

안녕하세요!

Projection Mapping 프로젝트를 진행한 강병현, 김지훈입니다 :D

Projection Mapping이 생소한 여러분들을 위해서 간단히
소개를 해보려합니다

"Projection Mapping은 대상물의 표면에 빛으로 이루어진 영상을
투사하여 변화를 줌으로써, 현실에 존재하는 대상이 다른 성격을
가진 것처럼 보이도록 하는 기술이ㄷ....."

?? : "나무위키 꺼라"

쉽게 말하면 Projection Mapping은 Video Art의 일종으로, 공간만
주어진다면 제작자의 상상력을 마음껏 표현할 수 있는 매개체를 말합니다!

자세한건 밑에서 알아보시죠 :D

Technical Environment

aa

실시간 이미지 프로세싱 라이브러리 - OpenCV

시연 영상을 확인하면 알 수 있듯이 Object를 인식하여 Effect를
표시하기 때문에 시각처리 라이브러리가 필요합니다


aa

3D 및 2D 비디오 게임의 개발 환경을 제공하는 게임 엔진 - Unity

갑자기 게임 엔진의 등장에 당황할 수 있지만 물리 엔진을 사용하기 위해서
Projection Mapping 분야에서는 빠질 수 없는 유틸리티입니다

ddabong

인생 쓰다. 따봉

Code Review

1. 시각처리 Part

aa

Object Detection을 위해서 "sdd_mobilenet_v3_large_coco_2020_01_14.pbtxt"를
로드하여서 frozen_inference_graph.pb를 이용해 Object를 예측한다

sdd_mobilenet_v3_large_coco_2020_01_14 = Pretrained Model로써 우리 주위 사물에 대한
정보들이 엄청나게 많이 들어있는 파일이라고 생각하면 된다

frozen_inference_graph = 앞서 말한 Pretrained Model을 기반으로 현재 인식되는
사물의 정보를 예측해주는 역할을 한다.

aa

인식된 Object의 Boundary의 Index를 통하여 VertexPosition을 추출 후
Boundary의 Middle Position 구하기


aa

PyImageSearch사의 CentroidTracker 알고리즘 이용해 각 Object마다 ID 부여,
또한 앞서 추출한 Vertex Position 이용해 width, height 구하기

a

Unity UDP Server로 Middle Position, Width, Height 등등 Object의 정보를 Socket으로 전송



2. Virtual Reality Part

Unity_Positioning

앞서 파이썬에서 계산한 width, height 값 등을 udp 서버로 받아와 분류해줌
그 후 Positions[] 라는 배열에 들어가 있는 객체들을 받아온 위치에 맞게 변경할 수 있는 배열을 만듬

Unity_AudioSpectrum

MP3의 오디오 스펙트럼을 값으로 받아옴

Unity_AudioScale

설정한 bias 값과 MP3의 오디오 스펙트럼 bias 값이 동일해 질 때 객체에 설정해둔 Scale 값을 변경함

파국이다..

시연 영상

느낀점

강병현 : openCV 짜릿해!, 늘 새로워, openCV가 최고야...

김지훈 : 유니티는 사드세요 제발...



Show The Code: GitHub