Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

Depth in Depth #iOSDC Slide 1 Depth in Depth #iOSDC Slide 2 Depth in Depth #iOSDC Slide 3 Depth in Depth #iOSDC Slide 4 Depth in Depth #iOSDC Slide 5 Depth in Depth #iOSDC Slide 6 Depth in Depth #iOSDC Slide 7 Depth in Depth #iOSDC Slide 8 Depth in Depth #iOSDC Slide 9 Depth in Depth #iOSDC Slide 10 Depth in Depth #iOSDC Slide 11 Depth in Depth #iOSDC Slide 12 Depth in Depth #iOSDC Slide 13 Depth in Depth #iOSDC Slide 14 Depth in Depth #iOSDC Slide 15 Depth in Depth #iOSDC Slide 16 Depth in Depth #iOSDC Slide 17 Depth in Depth #iOSDC Slide 18 Depth in Depth #iOSDC Slide 19 Depth in Depth #iOSDC Slide 20 Depth in Depth #iOSDC Slide 21 Depth in Depth #iOSDC Slide 22 Depth in Depth #iOSDC Slide 23 Depth in Depth #iOSDC Slide 24 Depth in Depth #iOSDC Slide 25 Depth in Depth #iOSDC Slide 26 Depth in Depth #iOSDC Slide 27 Depth in Depth #iOSDC Slide 28 Depth in Depth #iOSDC Slide 29 Depth in Depth #iOSDC Slide 30 Depth in Depth #iOSDC Slide 31 Depth in Depth #iOSDC Slide 32 Depth in Depth #iOSDC Slide 33 Depth in Depth #iOSDC Slide 34 Depth in Depth #iOSDC Slide 35 Depth in Depth #iOSDC Slide 36 Depth in Depth #iOSDC Slide 37 Depth in Depth #iOSDC Slide 38 Depth in Depth #iOSDC Slide 39 Depth in Depth #iOSDC Slide 40 Depth in Depth #iOSDC Slide 41 Depth in Depth #iOSDC Slide 42 Depth in Depth #iOSDC Slide 43 Depth in Depth #iOSDC Slide 44 Depth in Depth #iOSDC Slide 45 Depth in Depth #iOSDC Slide 46 Depth in Depth #iOSDC Slide 47 Depth in Depth #iOSDC Slide 48 Depth in Depth #iOSDC Slide 49 Depth in Depth #iOSDC Slide 50 Depth in Depth #iOSDC Slide 51 Depth in Depth #iOSDC Slide 52 Depth in Depth #iOSDC Slide 53 Depth in Depth #iOSDC Slide 54 Depth in Depth #iOSDC Slide 55 Depth in Depth #iOSDC Slide 56 Depth in Depth #iOSDC Slide 57 Depth in Depth #iOSDC Slide 58 Depth in Depth #iOSDC Slide 59 Depth in Depth #iOSDC Slide 60 Depth in Depth #iOSDC Slide 61 Depth in Depth #iOSDC Slide 62 Depth in Depth #iOSDC Slide 63 Depth in Depth #iOSDC Slide 64 Depth in Depth #iOSDC Slide 65 Depth in Depth #iOSDC Slide 66 Depth in Depth #iOSDC Slide 67 Depth in Depth #iOSDC Slide 68 Depth in Depth #iOSDC Slide 69 Depth in Depth #iOSDC Slide 70 Depth in Depth #iOSDC Slide 71 Depth in Depth #iOSDC Slide 72 Depth in Depth #iOSDC Slide 73 Depth in Depth #iOSDC Slide 74 Depth in Depth #iOSDC Slide 75 Depth in Depth #iOSDC Slide 76 Depth in Depth #iOSDC Slide 77 Depth in Depth #iOSDC Slide 78 Depth in Depth #iOSDC Slide 79 Depth in Depth #iOSDC Slide 80 Depth in Depth #iOSDC Slide 81 Depth in Depth #iOSDC Slide 82 Depth in Depth #iOSDC Slide 83 Depth in Depth #iOSDC Slide 84 Depth in Depth #iOSDC Slide 85 Depth in Depth #iOSDC Slide 86 Depth in Depth #iOSDC Slide 87 Depth in Depth #iOSDC Slide 88 Depth in Depth #iOSDC Slide 89 Depth in Depth #iOSDC Slide 90 Depth in Depth #iOSDC Slide 91 Depth in Depth #iOSDC Slide 92 Depth in Depth #iOSDC Slide 93 Depth in Depth #iOSDC Slide 94 Depth in Depth #iOSDC Slide 95 Depth in Depth #iOSDC Slide 96 Depth in Depth #iOSDC Slide 97
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

5 Likes

Share

Download to read offline

Depth in Depth #iOSDC

Download to read offline

iOSDC Japan 2018でのプレゼンテーションスライドです。

## 概要

原始のiPhoneからカメラは搭載されていましたが、深度センサが搭載されたのは比較的最近のことです。カメラやGPSが、デジタルの世界と我々が生きる現実世界を繋ぐ重要な役割を担い、アプリ開発者に多くの創造性を与えてくれたのと同様に、「奥行き」がわかるようになったというのはアプリ開発の次元がひとつ増えたようなものです。本トークではiOSでの深度の扱いについて、取得方法だけではなく、細かいパラメータの意味やMetalでの処理まで詳解します。

## アジェンダ

## アジェンダ

- 深度の種類とセンサのしくみ
- 深度データを取得する
- 深度データを使ってみる
- できること・できないこと事例集

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Depth in Depth #iOSDC

  1. 1. Depth in Depth Shuichi Tsutsumi @shu223 iOSDC 2018
  2. 2. • Fyusion Inc. @ H-1B • Senior Principal Software Engineer • → • @ • 8 IoT Metal ARKit NFC etc...
  3. 3. • GitHub: shu223 • : Qiita Note • :
  4. 4. Depth in Depth
  5. 5. 1 RGB
  6. 6.
  7. 7. : •
  8. 8. : 3D • 3D •
  9. 9. : 30 ※
  10. 10. • iOS API • •
  11. 11. • • • •
  12. 12. • • • •
  13. 13. Disparity iPhone 7/8 Plus, X
  14. 14. Focal Length
  15. 15. Disparity
  16. 16. Depth Disparity
  17. 17. Depth Disparity • Depth(z) = Disparity(d)
  18. 18. Time of Flight (ToF) • Depth •
  19. 19. TrueDepth iPhone X
  20. 20. • Proximity sensor ToF
  21. 21. • Dot projector ( ) 3
  22. 22. • Infrated camera ( ) →
  23. 23. • • • •
  24. 24. AVDepthData • • • @available(iOS 11.0, *)
  25. 25. AVDepthData var depthDataMap: CVPixelBuffer { get } • • CVPixelBuffer Core Image Metal
  26. 26. iOS • 1: • 2: • 3: ARKit
  27. 27. 1: • ImageIO • URL Photos
  28. 28. URL CGImageSource let source = CGImageSourceCreateWithURL(url as CFURL, nil)
  29. 29. CGImageSource Dictionary let info = CGImageSourceCopyAuxiliaryDataInfoAtIndex( source, 0, kCGImageAuxiliaryDataTypeDisparity // ) as? [String : AnyObject] // info CFDataRef // CGImageMetadataRef
  30. 30. Dictionary AVDepthData let depthData = try! AVDepthData(fromDictionaryRepresentation: info)
  31. 31. 2: • AVFoundation •
  32. 32. AVCaptureDevice .builtInDualCamera, .builtInTrueDepthCamera let device = AVCaptureDevice.DiscoverySession( deviceTypes: [.builtInDualCamera], mediaType: .video, position: .back).devices.first
  33. 33. var supportedDepthDataFormats: [AVCaptureDevice.Format] • AVCaptureDevice.Format • AVCaptureDevice activeDepthDataFormat
  34. 34. AVCaptureDepthDataOutput let depthOutput = AVCaptureDepthDataOutput() captureSession.addOutput(depthOutput) depthOutput.setDelegate( self, callbackQueue: dataOutputQueue) • AVCaptureVideoDataOutput AVCaptureAudio
  35. 35. AVCaptureDepthDataOutputDelegate didOutput AVDepthData func depthDataOutput( _ output: AVCaptureDepthDataOutput, didOutput depthData: AVDepthData, timestamp: CMTime, connection: AVCaptureConnection)
  36. 36. 3: ARKit ARFrame capturedDepthData var capturedDepthData: AVDepthData? { get }
  37. 37. ⚠ • 1: • 2: • 3: ARKit
  38. 38. • • • •
  39. 39. • chroma
  40. 40. CIBlendWithMask Parameters inputImage inputBackgroundImage inputMaskImage • • CIFilter Metal
  41. 41. OK!?
  42. 42. • • CIFilter CIBlendWithMask • Metal MTKView
  43. 43.
  44. 44.
  45. 45. 2 • AVCaptureMetadataOutput • +offset cutOff • • cutOff • cutOff
  46. 46. • • "Holes"
  47. 47. • • Holes RGB
  48. 48. isFilteringEnabled • AVCaptureDepthDataOutput • • "Holes" RGB
  49. 49. • •
  50. 50. Portrait Matte
  51. 51. Portrait Matte • • iOS 12
  52. 52. Portrait Matte
  53. 53. • CGImageSource • PortraitEffectsMatte • AVDapthData AVPortraitEffectsMatte
  54. 54. guard let info = CGImageSourceCopyAuxiliaryDataInfoAtIndex( self, 0, kCGImageAuxiliaryDataTypePortraitEffectsMatte ) as? [String : AnyObject] else { return } let matte = AVPortraitEffectsMatte(fromDictionaryRepresentation: info)
  55. 55. Portrait Matte • • • iOS 12
  56. 56. • • • •
  57. 57. • / / ARKit • Dual / TrueDepth / • / • iOS 12 / 11 / • / /
  58. 58. Photoshop • • Portrait Matte
  59. 59. • Portrait Matte •
  60. 60. • Portrait Matte • Disprity • •
  61. 61. ARKit • OK • NG • ARFaceTrackingConfiguration • ARWorldTracking capturedDepth nil
  62. 62. • • • •
  63. 63. • Twitter: https://twitter.com/shu223 • GitHub: https://github.com/shu223 • : http://shu223.hatenablog.com/
  64. 64. AVCaptureDataOutputSynchronizer
  65. 65. // synchronizer = AVCaptureDataOutputSynchronizer( dataOutputs: [videoOutput, depthOutput])
  66. 66. AVCaptureDataOutputSynchronizerDelegate didOutput AVCaptureSynchronizedDataCollection • → AVCaptureSynchronizedDepthData • → AVDepthData
  67. 67. // AVCaptureSynchronizedDepthData if let syncedDepthData = synchronizedDataCollection.synchronizedData(for: depthOutput) as? AVCaptureSynchronizedDepthData, !syncedDepthData.depthDataWasDropped { // AVDepthData let depthData = syncedDepthData.depthData ... }
  68. 68. Metal 3D
  69. 69. • • z • • RGB
  • daisukenishioka

    Sep. 3, 2018
  • roworks

    Sep. 2, 2018
  • kunihara

    Sep. 1, 2018
  • mono0926

    Sep. 1, 2018
  • dragon_lucky_

    Sep. 1, 2018

iOSDC Japan 2018でのプレゼンテーションスライドです。 ## 概要 原始のiPhoneからカメラは搭載されていましたが、深度センサが搭載されたのは比較的最近のことです。カメラやGPSが、デジタルの世界と我々が生きる現実世界を繋ぐ重要な役割を担い、アプリ開発者に多くの創造性を与えてくれたのと同様に、「奥行き」がわかるようになったというのはアプリ開発の次元がひとつ増えたようなものです。本トークではiOSでの深度の扱いについて、取得方法だけではなく、細かいパラメータの意味やMetalでの処理まで詳解します。 ## アジェンダ ## アジェンダ - 深度の種類とセンサのしくみ - 深度データを取得する - 深度データを使ってみる - できること・できないこと事例集

Views

Total views

6,189

On Slideshare

0

From embeds

0

Number of embeds

3,085

Actions

Downloads

9

Shares

0

Comments

0

Likes

5

×