Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FrenchKit 2017 - Update your reality with Visio...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Julien Datour
September 23, 2017
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FrenchKit 2017 - Update your reality with Vision an ARKit
Julien Datour
September 23, 2017
More Decks by Julien Datour
See All by Julien Datour
Android Makers 2019 - Kotlin end to end: du client au serveur
jdatour
0
110
Xebicon 2017 - Réalité augmentée sur les terminaux iOS
jdatour
0
21
Other Decks in Programming
See All in Programming
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
sbt 2.0: takeoff
eed3si9n
0
160
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
AmebaブログはKMPから卒業します
kmars0605
0
180
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
APNsからLive Activityを開始する話
yumnumm
0
170
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
180
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
560
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
Utilizing Notion as your number one productivity tool
mfonobong
4
620
For a Future-Friendly Web
brad_frost
184
10k
Site-Speed That Sticks
csswizardry
13
1.6k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
Update your reality with Vision and ARKit Julien Datour
Demo time!
That’s what I’m talking about Vision ARKit SceneKit
Plane detection - ARKit Rectangle detection - Vision Barcode detection
- Vision Detecting card size - ARKit
Vision
–Brett Keating, Apple Manager, during WWDC “High-level on-device solutions to
Computer Vision problems through one simple API”
–Julien Datour, Me, during FrenchKit “A framework that detects stuff
on images”
How Vision works
The ask VNDetectRectanglesRequest
The machinery VNImageRequestHandler
The results VNRectangleObservation
The ask, the machinery and the results
The ask, the machinery and the results let request =
VNDetectRectanglesRequest { request, error in guard let observations = request.results as? [VNRectangleObservation] else { return } observations.forEach { observation in let topLeft = observation.topLeft } } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([request])
The ask, the machinery and the results let request =
VNDetectRectanglesRequest { request, error in guard let observations = request.results as? [VNRectangleObservation] else { return } observations.forEach { observation in let topLeft = observation.topLeft } } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([request])
The ask, the machinery and the results let request =
VNDetectRectanglesRequest { request, error in guard let observations = request.results as? [VNRectangleObservation] else { return } observations.forEach { observation in let topLeft = observation.topLeft } } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([request])
The ask, the machinery and the results let request =
VNDetectRectanglesRequest { request, error in guard let observations = request.results as? [VNRectangleObservation] else { return } observations.forEach { observation in let topLeft = observation.topLeft } } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([request])
The ask, the machinery and the results let request =
VNDetectRectanglesRequest { request, error in guard let observations = request.results as? [VNRectangleObservation] else { return } observations.forEach { observation in let topLeft = observation.topLeft } } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([request])
The ask, the machinery and the barcode let barcodeDetectionRequest =
VNDetectBarcodesRequest { request, _ in guard let barcodeObservations = request.results as? [VNBarcodeObservation] else { return } barcodeObservations.forEach { barcodeObservation in guard let payload = barcodeObservation.payloadStringValue else { return } // ... }` } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([barcodeDetectionRequest])
The ask, the machinery and the barcode let barcodeDetectionRequest =
VNDetectBarcodesRequest { request, _ in guard let barcodeObservations = request.results as? [VNBarcodeObservation] else { return } barcodeObservations.forEach { barcodeObservation in guard let payload = barcodeObservation.payloadStringValue else { return } // ... }` } let handler = VNImageRequestHandler(ciImage: CIImage(), options: [:]) try? handler.perform([barcodeDetectionRequest])
None
ARKit - SceneKit
SceneKit
SCNode A structural representing a position, an orientation and a
scale relative to its parent node
A plane
A sphere
Or even text
None
ARKit
What ARKit can do for you Scene understanding Plane detection
Real-World surface detection
None
Configuring ARKit if ARWorldTrackingConfiguration.isSupported { let configuration = ARWorldTrackingConfiguration() configuration.planeDetection
= .horizontal sceneView.delegate = self sceneView.session.run(configuration) }
Configuring ARKit if ARWorldTrackingConfiguration.isSupported { let configuration = ARWorldTrackingConfiguration() configuration.planeDetection
= .horizontal sceneView.delegate = self sceneView.session.run(configuration) }
Configuring ARKit if ARWorldTrackingConfiguration.isSupported { let configuration = ARWorldTrackingConfiguration() configuration.planeDetection
= .horizontal sceneView.delegate = self sceneView.session.run(configuration) }
Configuring ARKit if ARWorldTrackingConfiguration.isSupported { let configuration = ARWorldTrackingConfiguration() configuration.planeDetection
= .horizontal sceneView.delegate = self sceneView.session.run(configuration) }
Plane detection done right func renderer(_ renderer: SCNSceneRenderer, didAdd node:
SCNNode, for anchor: ARAnchor) { guard let anchor = anchor as? ARPlaneAnchor else { return } let surface = SurfaceNode(anchor: anchor) surfaces[anchor] = surface node.addChildNode(surface) }
None
None
Hit test let results = sceneView.hitTest(observation.topLeft, types: .existingPlaneUsingExtent)
None
None
Thanks
@JulienDatour