RICOH THETA의 전천구 동영상을 정거리 원통도법으로 FFmpeg로 변환

RICOH THETA의 전천구 동영상을 정거리 원통도법 동영상으로 ffmpeg를 이용하여 변환하는 방법을 공유합니다.

결론



FFmpeg의 master 브랜치 빌드( Windows&Mac: "1" , Linux: 「2」 )를 구한 다음 아래 명령을 실행하여 두 개의 어안 동영상을 정거리 원통도법 동영상으로 변환할 수 있습니다.
ffmpeg -i INPUT.MP4 -y -vf crop=1920:960:0:0,v360=dfisheye:in_pad=0.112:roll=-90:e:pitch=90,crop=1920:840:0:0,pad=1920:1080:0:0 -c:a copy OUTPUT.mp4

해설



FFmpeg에 전방위 카메라용의 라이브러리v360가 작년의 9월 주변에 master 브랜치에 들어갔습니다.
다만, 2020/03/08 시점의 최신판인 4.2.2에는 포함되어 있지 않기 때문에, master 브랜치의 빌드 ( Windows&Mac: "1" , Linux: 「2」 )를 사용해 작업을 할 필요가 있습니다 .

비디오 필터 옵션-vf의 각 의미는 다음과 같습니다.
  • crop=1920:960:0:0
  • 입력 이미지는 1920x1080이지만 실제로 어안 이미지가있는 1920x960 범위에만 제한해야합니다

  • v360=dfisheye:in_pad=0.112:roll=-90:e:pitch=90
  • dfisheye : Dual Fisheye Movie로 입력 이미지 해석
  • in_pad=0.112 : 어안 동영상의 여백 무시
  • roll=-90 : 롤 각도 조정 (선택적으로 조정)
  • e : 정거리 원통도법에 투영하여 출력
  • pitch=90 : pitch 각도 조정 (선택적으로 조정)
  • 이 외에도 필요에 따라 옵션 추가
  • interp : gaussian , lanc 등 고차의 보완 처리를 이용해도 좋을지도 모릅니다 (표준은 linear ).


  • crop=1920:840:0:0,pad=1920:1080:0:0
  • 손잡이 부분이 노이지이므로 검은 색 채우기
  • 불필요한 경우 필터 옵션 ,crop=1920:840:0:0,pad=1920:1080:0:0을 모두 제거해야합니다


  • 변환 결과 예







    도전



    이음새가 부자연스럽기 때문에 SLAM에 걸릴 때 부작용이있을 것 같습니다.in_pad 를 적게 취한 다음에, 그 경계를 자연스럽게 블렌드를 하고 싶습니다만, 해당하는 구현을 찾을 수 없습니다.

    배경



    RICOH THETA 시리즈는, 아직 라이벌이 적은 전천구 촬영을 간단하게 실시할 수 있는 우수한 디바이스입니다만, 동영상 촬영의 경우에 정거리 원통도법에 투영되지 않는 동영상 데이터가 토출됩니다. 어안 카메라 2 개의 영상을 원시 인코딩 한 것 (Dual Fisheye
    영화)입니다.
    일반적으로 많은 서비스나 동영상 처리에서 사용되고 있는 것은 정거리 원통도법(Equirectangular)에 투영한 것을 입력으로 하고 있으므로, 그대로는 취급할 수 없습니다.

    이 문제를 해결하기 위해 RICOH의 본가 도구이 있습니다. 변환 자체의 기능은 만족하지만, GUI에서의 조작이 전제가 되고 있어 대량 변환·자동 변환에 적합하지 않다는 문제가 있습니다. 또, Linux에 대응하고 있지 않는 점도 SLAM 구현에 던지는 등의 환경 구현상, 매우 마이너스입니다.

    거기서, 메이저인 OSS로의 구현, 한편 지속 가능한 조달이 예상되는 방법을 조사한 결과가 본 기사가 됩니다.
    거의 정리된 언급이 없었습니다만, 유일한 구체적인 Q&A가 Stack overflow에 1건 있었습니다. 다만, 이 기술대로는 잘 되지 않았기 때문에, 시행착오를 한 결과가 상기의 커멘드가 됩니다.

    참고문헌


  • Download FFmpeg
  • FFmpeg Static Builds
  • FFmpeg Filters Documentation # v360
  • RICOH THETA 다운로드
  • Is there a fisheye or dual fisheye to equirectangular filter for ffmpeg? - Stack overflow
  • 좋은 웹페이지 즐겨찾기