複数の深度推定モデルを比較して、スマホで撮影した写真のボケをミラーレス級に近づける #iosdc #b

316 Views

September 12, 26

スライド概要

iOSDC Japan 2026 にて登壇した内容です。
CfP はこちら。
https://fortee.jp/iosdc-japan-2026/proposal/aa8e908d-9dc0-4c52-a120-79eda6928736

profile-image

iOSアプリの開発をしています。 個人アプリも色々あります。 # Type: https://type-markdown.app WebCollector: https://webcollector.app/ Pity: https://freetimepicker.firebaseapp.com

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

複数の深度推定モデルを比較して、スマホで撮影した写真のボケをミラーレス級に近づける iOSDC Japan 2026 @fromkk

2.

Question ?

3.

どっちがiPhoneで撮影したでしょう?

4.

正解は←

5.

iPhone 17 Pro SIGMA fp / SIGMA 28-70mm F2.8 DG DN CONTEMPORARY

6.

今日のゴール iPhone で撮った写真 背景までくっきり → ミラーレスで撮った写真 主題だけが浮き上がる

7.

Profile struct Profile { let name = "Kazuya Ueoka" let job = "iOS Developer" let x = "@fromkk" let github = "fromkk" let note = "fromkk" let basedOn = "Saitama, Japan" let favorite = "Photography" }

8.

iOSDC Japan 登壇歴 • 2017 自分が欲しいとアプリを作った LT • 2018 ツールとして利用するUIテスト 15min • 2019 iOS 12 以下でDark mode に対応した地獄の話 LT • 2020 Catalyst に対応したアプリをリリースするまでのリジェクト集 LT • 2020 iOS には無いmacOS 独自機能を Catalyst で実装する 20min • 2021 note のiOS アプリで実装したアクセシビリティの全て 20min • 2022 ノートアプリのテキストエディタの解体新書 20min • 2025 独自UIで実現する外部ストレージデバイスの読み書き 20min

10.

! 発表の中で写真を撮影するタイミングがあります。せっかくなのでポーズとかしてもらえると嬉しいです ✌️

12.

— カメラの仕組み なぜスマホで撮った写真はボケないのか

13.

— カメラの仕組み カメラの元祖 出典: https://commons.wikimedia.org/wiki/File:1646_Athanasius_Kircher_-_Camera_obscura.jpg

14.

— カメラの仕組み Camera Obscura 出典: https://commons.wikimedia.org/wiki/File:Camera_Obscura_box18thCentury.jpg

15.

— カメラの仕組み レンズ • 針の穴だけのカメラ・オブスキュラは光量が少なくて暗い • 光を集めるためにレンズが使われるように • 虫眼鏡のような凸レンズが一般的 https://www.irasutoya.com/2013/03/blog-post_385.html

16.

— カメラの仕組み レンズ • 針の穴だけのカメラ・オブスキュラは光量が少なくて暗い • 光を集めるためにレンズが使われるように • 虫眼鏡のような凸レンズが一般的 • 現代では様々なレンズを組み合わせてできている https://www.sigma-global.com/jp/lenses/c021_28_70_28/?tab=construction

17.

— カメラの仕組み 凸レンズのシミュレーション レンズは光を一点に集める。集まる位置とスクリーンがずれると像がにじんでボケになる 焦点距離 f 60 物体の高さ 40 物体〜レンズの距離 140 レンズ〜スクリーンの距離 120

18.

— カメラの仕組み f値 • レンズだけだと光が多すぎて、にじみや収差が出て、被写界深度も浅くなりすぎる • 絞りで入る光を制限すると、被写界深度が深くなりピントが合わせやすくなる • f値 = 焦点距離 ÷ 絞りの直径 • 小さいほど開いている(ボケる)、大きいほど絞っている(ボケない)

19.

— カメラの仕組み 被写界深度 絞りを開ける(f値 小)ほど、ピントが合う範囲を示す緑の帯が狭くなる f値 f/4.0 被写体までの距離 150 近点 125 遠点 188

20.

— カメラの仕組み 被写界深度 同じ被写体をf値だけ変えて撮影 f/1.4 — f/1.4 — f/1.7 — f/2 — f/2.4 — f/2.8 — f/3.3 — f/4 — f/4.8 — f/5.6 — f/6.7 — f/8 — f/9.5 — f/11 — f/13 — f/16 開放(f値 小)ほど背景がボケ、絞り込むほど奥までシャープになる

21.

— カメラの仕組み センサーサイズ • センサーが大きいほど • たくさんの光を受け取れる • 被写界深度が浅くなる(ボケやすい) • iPhone 17 Pro の最大センサーは 1/1.28型 • 面積はフルサイズの約 1/12 実寸比 (mm) 中判 (44x33) フルサイズ (36x24) APS-C (23.5x15.6) マイクロフォーサーズ (17.3x13) 1型 (13.2x8.8) iPhone 17 Pro 1/1.28型 (9.8x7.3)

22.

— スマホの写真 スマホで撮影した写真の問題点 センサーが小さい 被写界深度が深くなり、そもそもボケにくい 全体をはっきり写す絵作り どこにもピントが合っているように見せにいく 主題が背景に埋もれる 結果として情報量の多い、散らかった写真になりがち

23.

— COLUMN スマホでも 背景をぼかす方法 01 被写体に近づく 最短撮影距離まで寄る 02 被写体と背景を離す 03 望遠側 (2x / 5x) で撮る 焦点距離が長いほど被写界深度は浅くなる 1x 24mm 1x 2x 4x 8x

24.

— スマホの写真 ポートレートモード • 2016年10月配信の iOS 10.1 で初登場 (iPhone 7 Plus) • 当初はデュアルカメラの視差から深度を推定して、撮影したい対象以外のボケを生成 • iPhone 12 Pro 以降は LiDAR スキャナも活用され、深度の精度が向上 • 当初はポートレートモードにわざわざ変更する必要があった • 最近は普通に撮影して後でf値を変更することも可能 • 撮影した写真によってはボケに違和感があることも

25.

— スマホの写真 ポートレートモード • 2016年10月配信の iOS 10.1 で初登場 (iPhone 7 Plus) • 当初はデュアルカメラの視差から深度を推定して、撮影したい対象以外のボケを生成 • iPhone 12 Pro 以降は LiDAR スキャナも活用され、深度の精度が向上 • 当初はポートレートモードにわざわざ変更する必要があった • 最近は普通に撮影して後でf値を変更することも可能 • 撮影した写真によってはボケに違和感があることも

26.

スマホで撮影した写真をミラーレス級に近づけるためのアプローチ 写真 iPhoneで撮った 普通の写真 → 深度を得る AVDepthData or ML モデル → ぼかす Core Image の ブラーフィルター → 結果 ミラーレス級の ボケ

27.

深度を得る 写真 iPhoneで撮った 普通の写真 → 深度を得る AVDepthData or ML モデル → ぼかす Core Image の ブラーフィルター → 結果 ミラーレス級の ボケ 写真に埋め込まれた深度 → 無ければ ML モデルで推定する

28.

— 深度を得る 写真に埋め込まれた深度情報を取得 // HEIC の補助データから AVDepthData を取り出す let source = CGImageSourceCreateWithData(data, nil)! let info = CGImageSourceCopyAuxiliaryDataInfoAtIndex( source, 0, kCGImageAuxiliaryDataTypeDisparity ) as! [AnyHashable: Any] let depth = try AVDepthData( fromDictionaryRepresentation: info ) // 視差(近い = 明るい)に統一して CIImage にする let disparity = depth.converting( toDepthDataType: kCVPixelFormatType_DisparityFloat32 ) let image = CIImage(cvPixelBuffer: disparity.depthDataMap) 元画像 AVDepthData

29.

— 深度を得る 配布されている ML モデルを利用して深度を推定する • MiDaS Small • Depth Anything V2 Small (F16) • Depth Pro • Depth Anything 3 (DA3-SMALL)

30.

— 深度を得る スペック比較 MiDaS Small DA V2 Small Depth Pro DA3 Small 公開 2020年 2024年6月 2024年10月 2025年11月 開発元 Intel ISL HKU / TikTok Apple ByteDance バックボーン CNN ViT-S ViT-L ×2 ViT-S 相当 パラメーター数 約21M 24.8M 約504M 公称 0.08B ※ モデルサイズ 32MB 48MB 1.8GB 61MB 入力解像度 256x256 518x392 1536x1536 504x378 深度の種類 相対深度 相対深度 絶対深度(メートル) 相対深度 ライセンス MIT Apache-2.0 apple-amlr Apache-2.0

31.

— 深度を得る 深度の種類 MiDaS Small DA V2 Small Depth Pro DA3 Small 深度の種類 相対深度 相対深度 絶対深度(メートル) 相対深度 • 相対深度: どこが手前でどこが奥かが分かる • 絶対深度: メートル単位の実距離が分かる • Depth Pro は焦点距離の推定も可能 • 本物のレンズの被写界深度計算を再現したい場合に有効

32.

— 深度を得る ライセンス MiDaS Small DA V2 Small Depth Pro DA3 Small ライセンス MIT Apache-2.0 ※ apple-amlr Apache-2.0 ※ • ※ Apache-2.0 なのは Small だけ。DA V2 は Base / Large、DA3 は Large 以上が CC-BY-NC-4.0 で商用不可 • apple-amlr は Apple Machine Learning Research Model License。研究用途向けなので、商用アプリへの組み込みは不可と考えるのが安全

33.

— 深度を得る モデル比較シミュレーター 写真を選んでください 表示モード 深度画像 モデルの入手・変換コード 推論コード 写真ライブラリから選択 ファイルから選択 iPhoneから受信

34.

ぼかす 写真 iPhoneで撮った 普通の写真 → 深度を得る AVDepthData or ML モデル → ぼかす Core Image の ブラーフィルター → 結果 ミラーレス級の ボケ 深度をマスクにして、Core Image のブラーフィルターで背景だけをぼかす

35.

— ぼかす 様々なボケを試して最適なものを選ぶ Core Image のブラーは7種類。役割で分けると4グループ • 一様にぼかす: CIBoxBlur / CIDiscBlur / CIGaussianBlur • 場所ごとに強さを変える: CIMaskedVariableBlur • レンズ風: CIBokehBlur • 演出寄り: CIZoomBlur / CIMotionBlur

36.

— ぼかす フィルターごとのボケの違い 元画像 ボケなし CIBoxBlur 一様: 正方形 CIDiscBlur 一様: 円 CIGaussianBlur 一様: ガウス分布 CIMaskedVariableBlur 深度で強さが変わる CIZoomBlur 演出寄り(目的に合わない) CIMotionBlur 演出寄り(目的に合わない) CIBokehBlur レンズ風(リング強調)

37.

— ぼかす フィルターごとのボケの違い 元画像 ボケなし CIBoxBlur 一様: 正方形 CIDiscBlur 一様: 円 CIGaussianBlur 一様: ガウス分布 CIMaskedVariableBlur 深度で強さが変わる CIZoomBlur 演出寄り(目的に合わない) CIMotionBlur 演出寄り(目的に合わない) CIBokehBlur レンズ風(リング強調)

38.

— 作例 01 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

39.

— 作例 02 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

40.

— 作例 03 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

41.

— 作例 04 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

42.

— 作例 05 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

43.

— 作例 06 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

44.

— 作例 07 / 07 Before 元の写真 After DA3-SMALL → CIBokehBlur + ToneCraft で色味調整

45.

— まとめ 今日やったこと カメラの歴史と仕組みを振り返る 写真に埋め込まれた深度情報を取得する 配布されているモデルで深度を推定する ボケのフィルターを比較する 今回の選択 モデル Depth Anything 3 (DA3-SMALL) フィルター CIBokehBlur

46.

ToneCraft 写真の色補正・レタッチ この機能は ToneCraft v1.5 以降で 試せます 「フォーカスぼかし(fツール)」 タップでピント位置を決めて、スライダーでボケ量を調整。処理はすべて端末内で完結します。 App Store で配信中 apps.apple.com/jp/app/id6760603749

47.

3Dプリンターを使って自作レンズに初挑戦 ♡ 40 かっくん / iOS Developer 2026年7月26日 11:00 今年もiOSDC Japan 2026にCFPを出して無事採択して頂きました。 https://note.com/fromkk/n/nccfcc581863e

48.

参考書籍 カメラとレンズのしくみがわかる光学入門 安藤幸司 著 / インプレス https://amzn.to/4gWqVue

49.

(Optional) 深度推定はボケ以外にも使える • 背景削除: 手前だけ残して背景を透過・差し替え • オブジェクト選択: タップした位置と近い深度の領域を選択 • その他(空間写真、フォグ/空気遠近法、リライティング、3D 点群/メッシュ化、AR オクルージョン、etc...)

50.

深度で背景削除デモ 写真を選んでください 写真ライブラリから選択 ファイルから選択

52.

extension DC {} Day1 9/18(金) 19:00〜22:00 LINEヤフー 赤坂オフィス https://extension-dc.connpass.com/event/391184/ Day2 9/19(土) 12:30〜19:00 六本木ヒルズ某所 https://extension-dc.connpass.com/event/391185/

53.

Kanagawa.swift 10/31(土) 12:00〜21:00 / Hamee 株式会社 (小田原) https://japan-region-swift.connpass.com/event/389036/

55.

11 21 Saitama.swift #1 彩の国へようこそ Saitama.swift #1 ハッシュタグ: #saitama_swift 募集内容 運営枠 1000円(会場払い) 登壇枠 1000円(会場払い) 参加枠 1000円(会場払い) 出席登録 (イベント開始時間の2時間前から終了時間まで、参加者のみに公開されます) グループ Japan-\(region).swift 日本の各地域で開催されるSwift コミュニティイベント イベント数 17回 メンバー数 235人 開催前 2026/11/21(土) 14:00〜18:00 Googleカレンダー icsファイル このイベントに参加できます 受付票を見る ※受付や入場方法は主催者の案内に従ってください。 申し込みキャンセル 開催日時が重複しているイベントに申し込んでいる場合、このイベントには申し込むことができません 募集期間 2026/06/29(月) 08:00〜 2026/11/21(土) 18:00 https://japan-region-swift.connpass.com/event/397259/

56.

11 21 Saitama.swift #1 サブイベント Saitama.swift #1 懇親会 本編では語れないことも...? Saitama.swift #1 懇親会 ハッシュタグ: #saitama_swift 募集内容 参加枠 4000円(会場払い) 出席登録 (イベント開始時間の2時間前から終了時間まで、参加者のみに公開されます) グループ Japan-\(region).swift 日本の各地域で開催されるSwift コミュニティイベント イベント数 17回 メンバー数 235人 開催前 2026/11/21(土) 18:00〜20:00 Googleカレンダー icsファイル 参加は 2026/09/30 に確定されます 申し込みキャンセル 開催日時が重複しているイベントに申し込んでいる場合、このイベントには申し込むことができません https://japan-region-swift.connpass.com/event/397260/

57.

所沢って? • どこ? • 何があるの?

58.

所沢って? • どこ? • 何があるの? フィードバックしてくれよな!