59
Zeno Rocha tracking.js uma nova dimensão

Tracking.js

Embed Size (px)

DESCRIPTION

Nesta palestra serão apresentadas as novidades do tracking.js, um framework open source de visão computacional.

Citation preview

Page 1: Tracking.js

Zeno Rocha

tracking.jsuma nova dimensão

Page 2: Tracking.js

@zenorocha

Page 3: Tracking.js

discover.liferay.com/tdc2014

Page 4: Tracking.js
Page 5: Tracking.js
Page 6: Tracking.js

Visão computacional

Page 7: Tracking.js

Detecção de faces

Page 8: Tracking.js

Reconhecimento de faces

Page 9: Tracking.js

Robôs autônomos

Page 10: Tracking.js

Realidade virtual

Page 11: Tracking.js

Realidade aumentada

Page 12: Tracking.js

Como fazer isso?

Page 13: Tracking.js

OpenCV

Page 14: Tracking.js

ARToolkit

Page 15: Tracking.js

Como fazer isso no browser?

Page 16: Tracking.js

Acessar a câmera

#1

Page 17: Tracking.js

Acesso à câmera

navigator.getUserMedia({ video: true}, onSuccess, onFail);

Page 18: Tracking.js

Reproduzir o vídeo

#2

Page 19: Tracking.js

<video>

Page 20: Tracking.js

Callback de sucesso

function onSuccess(stream) { var video = document.querySelector('video'); video.src = window.URL.createObjectURL(stream); video.onloadedmetadata = function(e) { // Pronto };}

Page 21: Tracking.js

Obter matriz de pixels

#3

Page 22: Tracking.js

<canvas>

Page 23: Tracking.js

Algoritmos de tracking

#4

Page 24: Tracking.js

Resumo

Permissão do usuário

<video>

Acessar a câmera

Reproduzir vídeo

Algoritmos de tracking

Obter matriz de pixels

<canvas> Resultado

Page 25: Tracking.js

tracking.js

Page 26: Tracking.js

JavaScript

Eduardo Lundgren

Page 27: Tracking.js

Realidade aumentada

Java

Page 28: Tracking.js

Maira Bello

Pablo Carvalho

Zeno Rocha

Time

Eduardo Lundgren

Java

Page 29: Tracking.js

100% JavaScript!

Open Source

Sem dependências de outras bibliotecas

tracking.js

Algoritmos implementados

Facilmente extensível

API simples e intuitiva

Alta performance

Testes de unidade e de performance

Setup automático ~ 7 Kb

Page 30: Tracking.js

Trackers

Page 31: Tracking.js

Color Tracker

Page 32: Tracking.js

Demo

Page 33: Tracking.js

var tracker = new tracking.ColorTracker(‘magenta’);!tracking.track('#video', tracker, { camera: true});!tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Page 34: Tracking.js

Object Tracker

Page 35: Tracking.js

Demo

Page 36: Tracking.js

var tracker = new tracking.ObjectTracker(‘face’);!tracking.track('#video', tracker, { camera: true});!tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Page 37: Tracking.js

Custom Tracker

Page 38: Tracking.js

var MyTracker = function() { MyTracker.base(this, 'constructor');};!tracking.inherits(MyTracker, tracking.Tracker);!MyTracker.prototype.track = function(pixels, width, height) { // Seu código aqui! this.emit('track', { // Seu código aqui });};

Page 39: Tracking.js

var tracker = new tracking.MyTracker();!tracking.track('#video', tracker, { camera: true});!tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Page 40: Tracking.js

Utilitários

Page 41: Tracking.js

Fast

Page 42: Tracking.js
Page 43: Tracking.js

Brief

Page 44: Tracking.js
Page 45: Tracking.js

Lições aprendidas

Page 46: Tracking.js

41ms por frame

24 fps

Tempo real

Page 47: Tracking.js
Page 48: Tracking.js

Complexidade do algoritmo

Page 49: Tracking.js

Int32Array

Uint16Array

Float64Array

Uint8ClampedArray

Arrays tipados

Page 50: Tracking.js

jsperf.com/tracking-js-arrays

Page 51: Tracking.js

jsperf.com/tracking-js-arithmetic

Page 52: Tracking.js

Demo

Page 53: Tracking.js

Web Components

</>

Page 54: Tracking.js

var tracker = new tracking.ColorTracker(‘magenta’);!tracking.track('#video', tracker, { camera: true});!tracker.on('track', function(event) { event.data.forEach(function(rect) { // Seu código aqui });});

Lembra?

Page 55: Tracking.js

<video is="video-color-tracking" target="magenta" camera="true" ontrack="onResult">

Usando Web Components…

Page 56: Tracking.js

Documentação

Page 57: Tracking.js

trackingjs.com

Page 58: Tracking.js
Page 59: Tracking.js

Obrigado!

trackingjs.com

[email protected]/zenorocha