電気メガネ

XREAL OneシリーズREAL 3Dの仕組みについての考察

Amazonのアソシエイトとして、8796.jp管理日誌は適格販売により収入を得ています。
スポンサーリンク

画像で出オチなんですが、REAL 3Dの仕組みについての考察です。

はじめに

XREAL One / One Pro / 1SにはXREALが自社開発した「XREAL X1」というSoCが搭載されていまして、メガネみたいな形してますが実はデュアルディスプレイ搭載なコンピューターなんです。

SoCというのはシステム・オン・チップの略でCPUとメモリとNPUと…色々詰め合わされている半導体のことです。公式なスペックは公表されていませんが、NPUが搭載されていることが示唆されているので今回話題にするREAL 3Dにはそれが使われているという前提で話を進めます。

ちなみに、CPUはお馴染み中央演算装置、NPUはNeural Processing UnitでAI用、ISPはImage Signal Processorで画像処理用、SRAMは速いRAMで、SDEはなんだかよく分からないんですがCPUとSRAMを介してデータのやり取りをしているのでとても高速に画像データの演算をするいわゆる映像エンジンでSpatial Display Engineの略なんじゃないかな??ちょっと謎。

そんなこんなでしっかりとコンピューターなんですが、分解画像などを見るとeMMC 4GBのチップはあるけどメモリチップは見当たらないのでX1チップ内にあるメモリだけで動いてるようですね。どれぐらい搭載されているかは公表されていないので不明ですが12nmプロセスで製造されているとのことで、数百MBなんじゃないかな?しらんけど。

で、ソニー製のマイクロOLEDディスプレイが片眼に1枚、両眼で2枚搭載されているので当初からSide by sideで3D映像を入力すると立体視が可能でした。

そう。立体視は可能なんですが世の中にはSide by sideの映像コンテンツが少ない。3Dテレビが流行ったのが2010年頃なのでもうずいぶん前になりますし、映画の3D上映もめっきり減りました…

XREAL OneシリーズのREAL 3Dアップデート

そんななか先日のアップデートで3DスペースことREAL 3Dという新機能が追加されました。

ひとことで言えば、表示されるなんでもかんでも3D変換するという機能です。コンテンツ不足を力業で解決しようという試みです。

OSDメニューから日本語だと「3Dスペース」で有効にできます。

単眼深度推定による3D変換について

今回追加された「リアルタイム3D変換」。 単に「AIがなんかイイ感じにしてるんでしょ?」で済ませるには惜しいくらい、内部では猛烈な処理が行われています。

映像の入力

入力される映像は2Dです。写真とか動画とか、PCを繋いだデスクトップ画面ももちろん平面。

「単眼深度推定」で深度マップの生成

ここが今回のキモ。送られてきた2Dの映像(ただの平面の画像)から、「どこが手前で、どこが奥か」 という情報をリアルタイムに解析します。

これは技術的には 「単眼深度推定(Monocular Depth Estimation)」 と呼ばれる処理です。

人間は右目と左目のズレ(両眼視差)で距離を測りますが、カメラで撮った普通の映像は「片目」の情報しかありません。そこで、昨今のオープンソース界隈(MiDaSやDepth Anythingなどのモデルが有名)でもホットなAI(ニューラルネットワーク)の出番です。

XREAL Oneの内部では、膨大な画像データを学習したモデルが、以下のような手がかりを元に推論を行っているはずです。

  • 物体の重なり: AがBの手前にあるから、Aの方が近い。
  • パース(遠近法): 道が一点に収束しているから、あっちは遠い。
  • テクスチャの密度: 遠くの芝生は細かく、近くは粗い。
  • 陰影: 光の当たり方による立体感。

こうして、映像の各ピクセルごとに「距離」を割り出し、「深度マップ(デプスマップ)」 と呼ばれる特殊な画像を作成します。 イメージとしては、手前のものほど白く、奥のものほど黒くなるサーモグラフィのような画像を一瞬で作り出しているわけです。

計算するのはX1チップに内包されたNPUです。もちろん入力されたフルHD(1920×1080)のまま深度マップをリアルタイム生成することはスペックや発熱的に難しいので、おそらくVGA(640×480)以下に縮小してから処理されます。

そんなに縮小して画質に影響がないか?と心配になるかと存じますが、深度情報は低解像度でも拡大してから次の処理を行えば影響はあまりありません。

そうは言ってもあまり小さくしすぎると速度は出ますが前後関係がおかしくなりがちなので塩梅が重要になります。

「視差」を作り出す

深度マップができたら、最後は仕上げです。 元の2D画像と、先ほど作った深度マップを使って、「右目用の映像」と「左目用の映像」を生成します。

具体的には「ワーピング(Warping)」という処理を行います。

  • 奥にあるもの(深度マップが黒い部分): 左右の映像で位置をほとんどずらさない(遠くの景色は両目で見てもあまりズレないため)。
  • 手前にあるもの(深度マップが白い部分): 右目用画像では左へ、左目用画像では右へと、ピクセルを大きく横にずらす。

こうして人工的に「視差」を作り出し、左右のディスプレイに同時に表示します。 これを私たちの脳が統合した瞬間、「あ、これ目の前にあるわ」と錯覚し、平面だった映像が立体として立ち上がってくるわけです。

この計算は先ほど謎だった「SDE」がやってるんじゃないかな?

おしまいに

ということで、長年の勘と経験で「こんなもんだろうなあ」という考察です。根拠があるところとないところがありますが、そんなには外してないと思います。

REAL 3Dは今後アップデートで60fpsまで対応するような話がありますね。深度マップの作成がボトルネックになっているのか、視差を作り出すのがボトルネックになっているのかはたまた別の要因で現状30fpsなのか外部からはさっぱり分かりません。

HDCPに対応したリアルタイム3D変換機能は他にない…と思うので、今後も進化し続けてくれることを期待します。

みんなもぼやぼやしないでXREAL One / One Pro / 1Sを買ってアップデートしてできることが増える楽しみを味わおう!

ちなみに、はなくろさんの写真を使ったサンプル画像はGemini 3 Proさんがイイ感じにしてくれました。すごいね!

現場からは以上です。

タイトルとURLをコピーしました