写真から深度マップを作る方法
写真を追加する。 「画像を選ぶ」でJPEG、PNG、WebPを選びます(HEICはブラウザが開ければ使えます)。スマホでは写真ライブラリが開きます。写真がなければ「サンプルを読み込む」へ。
奥行きの計算を待つ。 初回は、ブラウザが深度モデル(約27 MB、WebGPUでは50 MB)をダウンロードして保存するので、次の写真からはすぐ始まります。深度マップは写真の横に表示されます。
使うソフトに合わせて設定する。 手前を白か黒か(どちら? )、PNGを8bitか16bitか、「サイズ」(出力サイズ)を選びます。コントラストが足りなければ「レベル補正」で調整します。
3Dで確かめてダウンロードする。 「表示」を「3Dプレビュー」にして、ポインターを動かすかスマホを傾け、奥行きが正しいか確かめます。最後に「深度マップをダウンロード」を押します。
深度マップ(デプスマップ)とは
深度マップは、写真の各部分がどれだけ遠くにあるかを白黒の濃淡で表した画像です。デプスマップ、深度画像、Depth画像とも呼ばれます。このツールの初期設定では、手前が白、奥が黒です。
左:ヨセミテ滝を前にした馬上の3人。1900年代初めのステレオ写真カードより(Underwood & Underwood、メトロポリタン美術館所蔵の23枚組の1枚、パブリックドメイン[7] )。右:このツールで作った深度マップ。手前が白で、下の帯にマークが入っています。
深度マップは、白黒写真とは違います。 白黒写真が表すのは明るさなので、黒いひげや影が穴のように表れてしまいます。深度マップが表すのは近さで、色には左右されません。白黒写真をそのまま彫刻や切削に使うとおかしな仕上がりになるのはこのためです。
奥行きは、AIモデルが1枚の写真から推定します。使っているモデルは Depth Anything V2 Small で、Lihe Yang 氏らが2024年に Apache-2.0 ライセンスで公開したものです[1] 。ONNX Runtime Web でブラウザの中で動き、WebGPU に対応したブラウザではGPUで、それ以外ではCPUで計算します。
できあがるのは相対的な深度 です。どれが手前か、面がどんな形かを表すもので、メートル単位の距離ではありません。Depth Anything V2 の開発者もそう説明していて、距離(メトリック深度)用のモデルは別に公開しています[1] 。彫刻、レリーフ、ディスプレイスメント、ControlNet に必要なのは相対的な深度で、実際の深さ(ミリ)や強さは、読み込むソフトの側で決めます。
設定項目の説明
項目 選択肢 変えるとき
手前の色 白(初期設定)か黒 一部の彫刻ソフトやアプリは、手前が黒の深度マップを求めます
保存形式 PNG(8bit)かPNG(16bit) Blenderのディスプレイスメント、レリーフ、CNCには16bit。ControlNetや多くのアプリには8bit
サイズ 写真のサイズ(長辺4,096 pxまで)かモデルのサイズ モデルのサイズは小さく送りやすい。元の写真と重ねるなら写真のサイズ
レベル補正 黒点、白点、中間調 気になる部分の奥行きに、灰色の階調を集めたいとき
スムージング オフ、弱(初期設定)、強。境目は保つ 平らな面がざらつくなら強。モデルの出力そのままならオフ
8bitか16bitか。 8bitのグレースケールPNGは256階調、16bitは65,536階調です[2] 。256段階しかないと、ディスプレイスメントやCNCで立体にしたとき、なめらかな斜面に段差(テラス状の段)が出ることがあります。ここで保存する16bitは、8bitの値を16bitに引き伸ばしただけのものではなく、本物の16bitグレースケールPNGで、黒から白までの全範囲を使います。多くの画像アプリやControlNetは8bit前提なので、ソフトが16bitに対応していなければ8bitのままにしてください。
レベル補正。 黒点を上げ、白点を下げると、灰色の階調がすべてその間の奥行きに使われ、コントラストが上がります。「中間調」は、両端を変えずに手前側か奥側の差を広げます。
よくある質問
白が手前?黒が手前?白は高い、それとも低い?
深度マップを読み込むソフトによって決まります。LightBurn の「3D Sliced」モードでは、明るい画素ほど彫る回数が少なく、真っ白は彫らないので、暗い部分ほど深く彫られます[5] 。手前が白なら、手前のものはコインのように盛り上がって残ります。「Negative Image」の設定はこれを逆にし、明るい部分ほど深く彫ります[5] 。型(モールド)を作るときの設定です。ControlNet の depth モデルは、白が手前(shallow)、黒が奥(deep)の深度マップで学習されています[3] 。Blender の Displace(ディスプレイス)モディファイアーでは、「Midlevel(中間レベル)」より明るい値は面を外側へ押し出し、暗い値は内側へ押し込みます[4] 。手前が白なら、手前のものが浮き出ます。ソフトが逆を求めるなら「黒」を選び、迷ったら小さく試してください。
デプスマップは自動生成できますか?
できます。このツールでは写真を選ぶだけで、AIが深度マップを作ります。写真1枚から作るので、ステレオ写真の2枚組や深度センサー付きのカメラは要りません。推定なので、誤りが出ることはあります(ガラスや鏡 )。
レーザー彫刻やCNCのレリーフに使えますか?
使えます。彫刻やレリーフのソフトは、深度マップを高さマップ(ハイトマップ)として読み込み、濃さを高さや彫る深さに変えます。対応していれば16bit PNGを写真のサイズで保存し、下の帯は先に切り取ります(下の質問 )。残すと帯も彫られます。平らな面がざらつくなら、スムージングを「強」に。
彫刻が平らになる、段差が出るのはなぜですか?
平らになるのは、多くの場合、彫りたい部分の奥行きが灰色の範囲の一部にしか入っておらず、ソフトが使える深さの段階が少ないためです。「レベル補正」の黒点と白点で範囲を広げてください。段差は、階調か彫る回数が少ないと出ます。16bitのファイルを使い、回数かレリーフソフトの層を増やしてください。
深度マップの下にある帯は何ですか?
「made with owl3d.com」のマークです。深度の値を変えないよう、深度マップの下に別の帯として付けています。BlenderやAfter Effectsで写真と重ねるときなど、写真と同じサイズが必要なら、画像を写真の高さまで切り詰めてください。深度マップは何も欠けません。
Blenderで深度マップを使うには?
16bit PNGを写真のサイズで保存し、下の帯を切り取ります。細分化した平面に Displace(ディスプレイス)モディファイアーを追加し、深度マップを画像テクスチャとして指定します。各頂点はテクスチャの明るさに応じて動き、「Strength(強さ)」で動く量を、「Midlevel(中間レベル)」で動かない基準の灰色を決めます[4] 。同じ平面に元の写真をカラーのテクスチャとして貼れば、立体的な写真になります。
Stable Diffusion の ControlNet(ComfyUI、AUTOMATIC1111)で使えますか?
使えます。手前の色を「白」、保存形式を「PNG(8bit)」にして、下の帯を切り取ってから、深度マップをコントロール画像として読み込みます。深度マップはもうできているので、プリプロセッサは「none」にします。ControlNet の depth モデルは、いくつかの推定方法で作ったグレースケールの深度マップで学習されています[3] [6] 。
深度マップからステレオグラムは作れますか?
作れます。ステレオグラム作成ツール で深度マップを読み込むと、その形が隠れたステレオグラムになります。手前が白の深度マップが前提で、手前が黒ならチェックボックスで切り替えます。下の帯も形として読み込まれるので、先に切り取ってください。
距離(メートル)がわかりますか?
わかりません。表すのは奥行きの順番と形で、測った距離ではありません。同じ景色の2枚の写真でも、同じ距離が違う灰色になることがあります。
ガラス、鏡、空で奥行きがおかしくなるのはなぜですか?
モデルは見た目から奥行きを推測するので、見た目と実際の奥行きが違うもの(映り込み、窓、写り込んだポスターや風景写真、霧など)には惑わされます。空はいちばん奥として扱われます。小さな誤りは、画像編集ソフトで深度マップを塗って直してください。
写真はアップロードされますか?
されません。モデルはお使いの端末のブラウザの中で動きます。ダウンロードされるのはモデル本体だけで、それも最初の1回だけです。
動画を3Dにしたい、深度マップではなく3Dの写真がほしいとき
ほしいのが深度マップではなく3Dの写真や動画なら、Owl3Dアプリ があります。WindowsとMac用のデスクトップアプリで、2Dの写真や動画を、お使いのパソコンの上でAIによって立体視用の3Dに変換します。保存形式はサイドバイサイド、ハーフサイドバイサイド、トップボトム、Apple Vision Pro向けの空間ビデオ(Macのみ)で、深度マップは保存できません。どのAI変換でも、奥行きはソフトの推定です。
もっと見る
1枚の写真から3Dの画像を作るなら:ウィグルグラム作成 (左右に揺れる3D写真)、アナグリフ作成 (赤青メガネで見る3D)。立体写真のしくみと見方:立体写真 。