(링크) High-quality video view interpolation using a 

layered representation (2004- Microsoft Research)



무려 1484회나 인용된 논문입니다.(2004년 발표)


우선 동영상을 보시면 bullet time 영상을 8개의 카메라로 만들어 냅니다. 14년전 기술인데 현재까지 이렇게 훌륭한 기술이 상용화가 안되었다는 것이 이상할 정도입니다. 




유튜브에 보면 "Interactive "Bullet-Time" 3D Video"라고 소개 되어 있며,

"image-based rendering" 알고리즘을 적용합니다.



이 기술이 왜 연구 하게 되었는지 이렇게 설명합니다.

(비전공자가 발로 번역한것이라 내용이 이상하더라도 이해 바랍니다. 상세한 내용은 원문 참조 바랍니다.)


   " 스테레오 이미지 기반 렌더링의 모든 발전에도 불구하고 동적 장면에 대한 고품질의 고해상도 뷰를 렌더링하는 것은 여전히 매우 어렵습니다. 문제를 해결하기 위해 고해상도 카메라 (1024 × 768) 새로운 색상 세그멘테이션 기반 스테레오 알고리즘을 사용하여 모든 카메라보기에서 고화질의 사진 일치를 생성합니다


심도 불연속 근처의 영역에 대한 매트는 자동으로 추출되어 합성 중에 아티팩트를 줄입니다. 마지막으로, 대화 비율로 온라인 렌더링에 새로운 시간적 2 계층 표현이 사용됩니다. 입력 비디오가 오프라인으로 처리되면 우리의 실시간 렌더링 시스템은 언제든지 중간 뷰를 대화식으로 합성 있습니다.


대화식 "(Bullet Time)총알 시간" 기법은  동안 TV 광고 장편 영화 시청자는 "정지 프레임"효과를 사용하여 시간을 멈추고 카메라 시점을 변경하는 환상을 보게되었습니다. 가장 초기의 광고는 Dayton Taylor 필름 기반 TimetrackR 시스템2 사용하여 제작되었습니다. 시스템은 고정 시간 슬라이스를 통해 움직이는듯한 환상을주기 위해 레일을 따라 배열 여러 스틸 카메라를 활용합니다.


1http://www.3dvsystems.com/products/zcam.html

2http://www.timetrack.com/


처음 등장했을 , 효과는 신선하고 화려 보였습니다. 그리고 그것은 많은 프로덕션에서 에뮬레이트되었습니다. 가장 유명한 매트릭스는 매트릭스에서 수있는 "총알 타임"효과 것입니다. 불행히도, 효과는 일반적으로 일회성, 사전 계획된 사건입니다. 관측점 궤도는 미리 계획되어 있으며 원하는 보간 뷰를 생성하기 위해 많은 시간이 소비됩니다.

Digital Air MoviaR 같은 최신 시스템은 비디오 카메라 배열을 기반으로하지만 소프트웨어보기 보간을 피하기 위해 많은 카메라가 필요합니다.


대조적으로, 우리의 접근 방식은 훨씬 유연합니다. 우선, 일단 모든 입력 비디오가 처리되면, 보기는 상호 작용합니다.


사용자는 시간을 조작 (정지, 감속 또는 역전)하고 원하는 대로 시점을 변경하여 동적 장면을 있습니다. 시공간을 통해 다른 궤도를 촬영할 있기 때문에 가지 시청 경험이 동일 필요는 없습니다. 둘째, 고품질의 3D 스테레오 데이터를 사용할 있기 때문에 객체 조작 (삽입 또는 삭제) 쉽습니다.


우리 시스템의 특징. 현재 시스템은 비디오를 획득하고 오프라인으로 형상 정보를 계산 다음 실시간으로 렌더링 합니다. 우리가 생각한 응용 프로그램에는 발레 무술과 같은 활동을 위한 동적 이벤트 교육용 비디오의 고품질 보관이 포함되어 있기 때문에 방법을 선택했습니다. 우리의 가장 중요한 관심사는 렌더링 품질이며, 현재의 스테레오 알고리즘은 매우 효과적이지만 전체 시스템이 실시간으로 작동 만큼 빠르지 않습니다. 우리 시스템은 몰입 원격 회의 (:  blue-c [Gross et al 2003]) 또는 실시간 (라이브) 방송 3D TV 사용하기 위한 것이 아닙니다.


우리는 현재 한쪽 끝에서 다른 끝까지 30도에 걸쳐 1D 아크를 따라 배치 8 개의 카메라를 사용합니다. 우리는 시스템을 2D 카메라 배열로 확장하고 결국 360 ° 범위로 확장 계획입니다. 이것이 사소한 확장은 아니지만 Unstructured Lumigraph [Buehler et al. 2001] 이를 성취하기 위한 올바른 틀을 제공한다. 우리 연구의 주된 기여는 Unstructured Lumigraph 사용 대강 위임된 보다 훨씬 나은 결과를 만들어내는 깊이 있는 이미지 표현입니다.



아래 처럼 허접(?)한 구조임에도 불구하고 멋진 영상을 만들어 내었다는 것은...

아마도 전/후작업을 어마어마 하게 많이 했을 것이라 생각됩니다. (얼마나? 글쎄요.. 1달이상???)



< 문헌에 설명된 내용은 아래와 같습니다. >


8 개의 카메라가 수평 호를 따라 배치 비디오 캡처 시스템의 구성을 보여줍니다.

우리는 고해상도 (1024 × 768) PtGrey 컬러 카메라를 사용하여 8mm 렌즈로 15fps 비디오를 캡처하여 30 ° 수평 시야를 만듭니다. 모든 입력 비디오의 실시간 저장을 처리하기 위해 Pt-Grey에게 개의 집중 장치를 구축하도록 의뢰했습니다. 집중 장치는 4 개의 카메라를 동기화하고 4 개의 압축 비디오 스트림을 광섬유 케이블을 통해 하드 디스크 뱅크에 파이프합니다. 개의 집중 장치는 FireWire 케이블을 통해 동기화됩니다


카메라는 평평한 판에 마운트 36 "× 36" 캘리브레이션 패턴을 사용하여 모든 캡처 세션 전에 캘리브레이션됩니다. 캘리브레이션 패턴은 모든 카메라 앞에 이동합니다. Zhang [2000] 교정 기술은 유클리드 스테레오 복구에 필요한 모든 카메라 매개 변수를 복구하는 사용됩니다.


놀라운 것은

DSLR 카메라도 아닌 똑딱이(?) 디카로 만들어진 영상이라는 것입니다.


확인해 보니 PtGrey 컬러 카메라는 산업용 카메라로 글로벌셔터 기능있는 것입니다. 어쩐지 영상이 좋다라고 생각했었는데....

Posted by 이미지쿡

(링크1) Windows 환경의 Python2, Python3용으로 OpenCV 3.4 빌드하기 (opencv_contrib 포함)


최근에 PC에 다시 설치해야 할 일이 있어서 구글링해서 찾은 자료입니다.

에러없이 한번에 설치가 잘됩니다.

( * 이전에 올라온 많은 자료들은 에러가 나거나 고생을 많이 할 수 있습니다.)



특히, opencv_contrib 설치까지 쉽게 안내한 내용이라 추천드립니다. ( 2017.12.29일 작성)


3년전에 설치할때는 OpenCV 공식 사이트를 통해서 설치했는다 다시 시도해 보니

여러가지 문제가 있었습니다.(제가 잘못해서 그럴지도...)

다양한 예제와 설명이 있으니 공식사이트는 여전히 강력한 정보습득과 학습에 도움을 줍니다.


예제 활용시 어려운점이 있습니다.

예제에 나오는 모듈(SURF,SIFT 등등..)에 대한 사용 방법을 구글링해서 찾아 보거나

이전 버전의 cv2.pyd 파일을 사용해야 하는 경우도 있습니다.




(링크2) Raspberry Pi 3에 opencv_contrib 포함하여 OpenCV 3.4 설치


윈도우에 설치후 학습을 통해 충분한 이해가 되었다면 raspberry pi에 설치해서 응용해 볼 수 있어야 합니다.

(저의 경우 55가지 예제를 실행하고 이해하는데 약 1달정도 소요된것 같습니다. 참고로 저는 이미지프로세싱관련 비전공자입니다.) 


윈도우즈 설치와는 다르게 시간이 꽤 오래 걸립니다.


아래 사이트도 설명이 잘 되어 있습니다.


https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/





Posted by 이미지쿡

카메라가 여러개 일때 발생하는 오차들과 해결법


Bullet time 카메라를 첫번째 제작했을 때 가장 문제가 된것은 사진의 수평 불균형과 수직 불일치발생한 다는 것입니다.


기구물로 해결하기 위해 보완한 2차 제작때여전히 이러한 오차를 해소한다는 것은 어렵다는 것을 할게되었습니다. 하여 S/W적으로 해결이 가능한 방법을 찾기 위해 네이버 카페인 OpenCV KOREA포럼글을 올렸더니, 많은 분들이 도움을 주셨습니다.


우선 "놀부님"이 알려주신 논문을 보면, "AN EFFICIENT RECTIFICATION ALGORITHM FOR MULTI-VIEW IMAGES IN PARALLEL CAMERA ARRAY(2008)" .경험했던 다시점 카메라에서 Horizontal disparities and vertical mismatches(수평불균형과 수직 불일치)에 대한 해결방법이 나옵니다...(오... 다행입니다.)


카메라 6대를 평형하게(일렬로) 배치하여 사진을 촬영했을 때 아래와 같이 수평 불륜형과 수직 불일치가 발생합니다.(6개를 겹쳐 놓으면 더 확실하게 나옴)

 


 

 

 

저자(강윤석 박사)가 제시 결과를 보면, 보정과정을 통해 각 카메라의 내부 및 외부 인자들을 획득하고 이 인자들로 부터 모든 광심의 3차원 공간상의 좌표를 구할 수 있고, 이 좌표들로 부터 다시점 영상을 정렬화하는 방법을 제안합니다.(아래 사진 참조) 제가 찾던 해결책이라 결과가 아주 맘에 듭니다. ^^

 

 

 

방법은 아래 그림5와 같이 반복적인 중점 연결 알고리즘(C1과 C2의 중점을 구하고 C2와 C3의 중점을 연속해서 구한 다음 이러한 중점을 반복적으로 구해서 최종적으로 두개 남을 때 까지 수행) 을 적용하여 common baseline 을 구합니다.

 

 

common baseline에 맞춰 카메라 배열의 기하학적 오차중 방향에 대한 정렬화를 실시하고

 

 

 

최종적으로 카메라 인자 예측을 통해 만들어진 기하학적 오차가 보정된 평행 카메라 배열을 만들어 해결하는 것으로 나와있습니다.

( 상세한 내용은 다 이해하지 못해서 대략 정리만 했습니다.)

 

 

 

무엇보다 만들어 봤던 Arc형태(수렴형 카메라 배열)의 카메라 배열에 대한 방법도 나와있습니다. "기하학적 오차 보정을 이용한 다시점 영상의 개선 방법" 이 논문도 해결하는데 많은 도움이 될것 같습니다.

 

다만 아쉬운점이 있다면, 외부/내부 파라메터값을 정확하게 획득해야 한다는 것이 제한 조건이라 저같은 초보한테는 넘어야할 벽입니다.


(추가) 상기 논문은 특허로도 등록되어 있네요.


Posted by 이미지쿡

비디오 안정화(Video Stabilization)

라즈베리파이 카메라(Raspberry Pi camera)를 만들어서 사용해 보니 흔들림이 많이 문제가 됩니다. 셔터를 누를때 생기는 롤링현상이나 특히 동영상 촬영시 흔들림 현상은 휴대용 짐벌(Gimbal)을 사용하지 않는한 해결이 어렵습니다.

 

Gimbal에 대한 이미지 검색결과

 

하지만 놀랍게도 이런 기구적인 도움없이 순수하게 S/W처리만으로 각종 왜곡이나 흔들임을 없앨 수 있는 기술이 있습니다. (와 정말 대단합니다.)

  

 

동영상을 보시면 아시겠지만 이런 기술을 만들어 낸다는 것이 그저 놀라울 뿐입니다. 2011년에 논문으로 발표되었고, Matthias Grundmann이라는 분이 제일 저자로 되어있으며, 지금은 구글에 인턴으로 제직중인 것으로 나와 있습니다.

 

이 논문에서 발표된 기술은 구글의 YouTube 서비스에 적용되어 있군요. ( https://www.youtube.com/editor ) 최근 확인 결과 서비스 중단되었습니다.(17.9월)


 

 

 

제가 오래전에 올려놓은 동영상을 위의 서비스로 돌려봤는데, 정말 흔들임이 사라지더군요. 효과가 없는 동영상도 있기는 하지만, 기술의 위대함을 다시한번 느꼈습니다.

 

비 전문가라 기술적인 설명은 잘 못하겠으나 L1(Lasso Regression) 최적화를 통해 걸어며 촬영할 때 발생하는 흔들림이나 노이즈를 최소화 할 수 있는 기술인듯 합니다. 즉 아래 그래프 처럼 붉은색이 실제 움직임을 반영한 흔들림이 있는 카메라 경로 라면 L1 최적화를 통해 파란색의 흔들림이 적은 카메라 경로를 찾아 내는 것이 핵심인듯 합니다.

 

 

 

 

 

흔들임없는 영상을 만들기 위해 기울어진 사진을 특징점을 기준으로 크롭윈도우에 맞게 수평을 맞추고,  사진의 가장 자리는 잘라내서 새롭게 안정화된 프레임을 만듭니다.

 

 

그래서 그런지 실제로 서비스를 통해서 돌려보면 동영상의 가장자리(전체 화면의 30% 정도?)가 나오지 않고 인물이 커져 보입니다. 이것은 일반적으로 나타나는 Binning이 불가능하여 발생하는 화각 감소 효과와 비슷해 보입니다.

 

그밖에 Wobble Suppression(블러링제거?) 및 비디오 리타겟팅(Video Retargeting) 기술이 적용되어 있다고 합니다. (아래 사진은 Retargeting 50% 적용 )

 

 

 

사진 사이즈를 줄일 때 특별한 기술을 적용해서 원하는 부분만 손실없이 줄일 수 있다는 것을 처음 알았습니다.

 

Open CV 3.0에 구현되어 있다고 하니, 조만간 코딩으로 동작시켜 봐야 할것 같습니다.

 

Posted by 이미지쿡
이전버튼 1 이전버튼

블로그 이미지
Raspberry pi 카메라로 영화 매트릭스 처럼 촬영하기
이미지쿡

공지사항

Yesterday
Today
Total