41
Carlos André T. Campos

Carlos André T. Campos - webserver2.tecgraf.puc-rio.brwebserver2.tecgraf.puc-rio.br/~mgattass/teses/2009DissertacaoAndre... · Não requer moldura para os LEDs. ... u S 31 32 33

Embed Size (px)

Citation preview

Carlos  André T. Campos

Natural User Interface Group

Estatísticas ate maio 2008 58.266 visitas 5.619 cidades diferentes

Sistemas tradicionais

Tecnologia da década de 70Modelos robustos são populares em ambientes industrias pesados Em geral possuem uma interface simples e intuitiva Interação com sistema tende a ser muito restrita

Palm Auto atendimento bancário

Diferentes métodos disponíveis 

Hardware dedicado Visão computacional

• Tipos: Resistivo Capacitivo Ultra som

....

• Exemplos: iPhone iPod touch               (Finger Works)Mac book pro Diamond touch Dell Latitude XT     (Dou Sense) Displax

• Tipos: Correspondência estéreo Diffuse Illumination (DI) Frustrated total internal          reflection (FTRI) Usuário fornece fonte de luz

....

• Exemplos: Touch lightMicrosoft surface (DI) Perspective pixel (FTRI) 

Hardware dedicado

Bill Buxton(Universidade de Toronto)

Multi‐Touch Tablet (1982)  Diamond Touch (2001) 

Mitsubishi Research Labs(Cambridge MA)

Smart Skin (2002)

Sony Computer Science Laboratories (Tokyo)

Visão computacional

Rear DI

Vantagens: Não requer superfície de acoplamento. Pode usar qualquer material transparente não só o acrílico. Não requer moldura para os LEDs. Iluminadores de IR podem ser comprados prontos (não requer soldas). Pode capturar qualquer tipo de objeto posto na superfície.

Desvantagens: Dificuldade de conseguir uma iluminação uniforme na superfície. Pouco contraste nos objetos (maior dificuldade para parte de visão). Requer uma caixa fechada.

Front DI

Vantagens:Mais simples dos sistemas. Baixo custo, fácil de montar com itens caseiros.

Desvantagens: Depende fortemente da iluminação ambiente. Reconhecimento é altamente instável. Não existe imagem projetada.

FTIR

Vantagens: Forte contraste nos pontos de contato. Permite pressão variável. Com superfície de acoplamento pode ser utilizada com qualquer tipo de objeto.

Desvantagens: Requer suporte para LEDs (soldas) Requer superfície de acoplamento para uso apropriado. Forte dependência das camadas de matérias empregados.

Jefferson Y. Han

Criador do método (requerimento de patentes) Fundou a empresa Perspective Pixel em 2006 para comercializar seu sistema

CNN Fantástico  (rede globo)

Reflexão interna total confinada

Lei de Snell‐Descartes Frustrated total internal reflection(FTIR )

Sen(i) = N2N1

N2

N1Ѳ

Ângulo Limite i =

Θ > i  Reflexão interna total

Parafina Gel

Características:• Transparência

• Modelos com diferentes graus de rigidez 

• Se liquefaz a 80 °c 

( O Acrílico se deforma a 73 °c )

• Pode ser derretido e reaproveitado

• Índice de refração próximo ao do acrílico

BrutoBruto

Derretido a 80 °cDerretido a 80 °c

Aplicado sobre o acrílicoAplicado sobre o acrílico

28 LEDs de 5mm 20 LEDs de 10mm

Resposta a variação da corrente elétrica

LED de 5mmLED de 5mm

LED de 10mmLED de 10mm

Ambos testados a 140 mA  Intensidade do LED de 5mm  fortemente ligada a corrente elétrica aplicada LED de 10mm aproximadamente 18x mais intenso

Dados técnicos

Imagem capturada

29,97 quadros por segundo  720x480 pixels entrelaçados

Filtrando a luz visível

Luz visívelLuz visívelLuz visível

Sem filtro1 Camada3 Camadas

Filme fotográfico velado Reflexos da lente do projetor

255 128 0

28 LEDs de 5mm 20 LEDs de 10mm

Resposta ao toque

28 LEDs de 5mm• Baixa intensidade dos toques• Pouco contraste

20 LEDs de 10mm• Toques com brilho intenso• Bom contraste

Imagem da câmera Histograma da imagem

Sony VPL‐EX4

Acrílico

Espelhos

1m

A imagem projetada de 42” requer 1.40m de afastamento da tela

Requer jogos de espelhos para encapsular o projetor na interior do sistema

Retificar imagens da câmera 

Coordenada da câmera

Coordenada do projetor

11 333231

232221

131211

YX

hhhhhhhhh

vu

S

333231

131211

hyhxhhyhxhu

333231

232221

hyhxhhyhxhv

)1,,( ii YX

)1,,( ii vu

Matriz de homografiaMatriz de homografia

Grade de calibração do projetor

Pontos transformados pela homografia

Solução do sistema

bAx

vu

vuvu

hhhhhhhh

yvxvyxyuxuyx

yvxvyxyuxuyxyvxvyxyuxuyx

n

n

nnnnnn

nnnnnn

2

2

1

1

32

31

23

22

21

13

12

11

222222

222222

111111

111111

10000001

1000000110000001

X = A‐1 b

X = (A‐T A)‐1  AT b

3 ou menos pontos

Não pode ser determinado

4  Pontos

(Solução única) 

Mais do que 4 pontos

(minimização)

3 ou menos pontos

Não pode ser determinado

4  Pontos

(Solução única) 

Mais do que 4 pontos

(minimização)

Cada ponto corresponde a 2 linhas na matriz

h33 = 1

Evita que uma constante multiplicado pela matriz 

seja solução do sistema

Resultados da calibração

Coordenadas da filmadora

(pixel)

Coordenadas da homografia (pixel)

Distância entre as coordenadas X’, Y’ e

X,Y (pixel)

Distância entre as coordenadas X’,Y’

e X,Y (cm)X Y X’ Y’8 8 9,22 7,46 1,33 0,15

8 162 7,11 160,59 1,66 0,19

8 317 6,9 315,38 1,95 0,22

8 472 8,16 469,89 2,11 0,24

184 8 180,69 5,96 3,88 0,44

184 162 181,45 160,82 2,80 0,32

184 317 181 317,51 3,04 0,34

184 472 181,72 471,49 2,33 0,26

360 8 358,57 4,94 3,37 0,38

360 162 357,93 160,07 2,83 0,32

360 317 359,2 317,16 0,81 0,09

360 472 358,08 470,7 2,31 0,26

536 8 534,93 7,29 1,28 0,14

536 162 537,46 160,81 1,88 0,21

536 317 536,54 316,96 0,54 0,06

536 472 534,55 470 2,47 0,28

712 8 709,1 8,02 2,90 0,33

712 162 711,31 161,12 1,11 0,12

712 317 711,11 317,67 1,11 0,12

712 472 710,46 468,89 3,47 0,39

Coordenadas da filmadora

(pixel)

Coordenadas da homografia (pixel)

Distância entre as coordenadas X’, Y’ e

X,Y (pixel)

Distância entre as coordenadas X’,Y’

e X,Y (cm)X Y X’ Y’

8 8 6,86 6,92 1,57 0,17

8 162 -50,74 165 58,81 6,70

8 317 3,9 317,09 4,10 0,46

8 472 6,91 470,99 1,48 0,16

184 8 146,12 -1,63 39,08 4,45

184 162 145,67 165,62 38,50 4,38

184 317 145,23 327,07 40,05 4,56

184 472 144,81 483,02 40,70 4,64

360 8 350,45 -2,84 14,44 1,64

360 162 346,35 166,26 14,29 1,62

360 317 342,39 329,42 21,54 2,45

360 472 338,57 486,97 26,14 2,97

536 8 559,38 -4,08 26,31 2,99

536 162 551,46 166,9 16,21 1,84

536 317 543,82 331,82 16,75 1,90

536 472 536,45 491 19,00 2,16

712 8 710,85 6,87 1,612 0,18

712 162 761,14 167,56 49,45 5,63

712 317 749,66 334,28 41,43 4,72

712 472 710,91 470,95 1,513 0,17

Calibração com 4 pontos externos da gradeCalibração com 4 pontos externos da grade Calibração com todos os 20 pontos da gradeCalibração com todos os 20 pontos da grade

Erro médio = 2,7 cm Erro médio = 2,4 mm

Câmera Imagemcâmera

ImagemFundo

Subtração do fundo

Início

BinárizaçãoFiltro Mediano

Busca de regiões conexas

Descarte de 

regiões

Toques ativas

Toques válidos

Região já  

ativa?

Cria nova toque

Atualiza coordenada 

toqueNão

Sim

Para cada toque ativo

Coordenada foi 

atualizada?Faz o broadcast do toque

Remove o toque da lista de ativos

Sim

Não

IV

III

II

I

Subtração de fundo

Identificação de regiões conexas

Tracking de regiões

Broadcast de regiões

Subtração de fundo

Imagem da Câmera (C)(Tons de cinza)

Com fundo extraído (S)

Modelo de fundo (F)

Calcula a imagem de fundo S:

S = max(C‐F, 0)

Atualiza modelo de fundo:

F = F(1‐α) + C α

Grande parte dos pixels que não pertencem a um ponto de contato tem valor próximo de 0

Identificação de regiões conexas

Imagem com fundo extraído

Imagem binária Converte imagem com fundo extraído para uma imagem binária

Aplica um fator β predefinido Aplica filtro da mediana para eliminar ruídos Identifica regiões conexas na imagem Descarta regiões fora dos padrões

Filtro da mediana(8 vizinhos)

ID Região Número de pixels

Coordenadas na imagem

X Y

180 16 293.5 98

181 5 291.4 105.8

182 232 402.07 213.19

183 241 349.88 233.86

184 229 343.16 266.72

185 184 352.08 283.66

186 243 381.46 300.80

D = |R  ‐ Pn‐1|

Distância Real (D)

PEST

Pn‐1

Pn‐2

Pn‐3

R

ΔPosΔpos   = Pn‐1 – Pn‐2

PEST = Pn‐1 + Δpos

DEST = |PEST ‐ R|

ΔPos

Distância estimada  (DEST)

Tracking de regiões

Distância real entre duas imagens consecutivas da câmera:

Extrapola linear mente a próxima posição da região na imagem atual:

Resultados do tracking de regiões 

Coordenadas reais do movimento Ganho obtido com a extrapolação

Justifica usar um método mais robusto como o filtro de Kalman? Com uma câmera que capture a 60 quadro por segundo as  distâncias seriam ainda menores.

Comunicação entre processos

TUIO:: A protocol for tangible user interfaces

Utiliza o protocolo Open Sound Control Faz conexão do cliente e servidor utilizando Sockets Utiliza pacotes de dado UDP

Vantagens: Utilizado pela maioria dos sistema multi touch opensource

Touchlib, tBeta, OpenTouch, BBTouch .... Permite que cliente e servidor estejam emmáquinas distintas

Pode no entanto aumentar o tempo de resposta dosistema!

Compatibilidade com muitos aplicativos sendo desenvolvidosMulti‐plataforma: Windows, Linux, C++, Java , Flash ...

Desvantagens: Pacotes UDP não tem garantia de entregaMesmo com cliente e servidor local pode haver latência Requer gerenciamento de conexão entre cliente e servidor Um pouco mais complexo de usar

Sistema adotado

Implementado utilizando o sistema de mensagens do Windows Utiliza mensagens do sistema operacional para enviar dados do servidor para o(s) cliente(s)

Vantagens: Não existe etapa de conexão entre cliente e servidorMesmo método utilizado para eventos de mouse e teclado (dentre outros) Simples de usar Garantia de entrega das mensagens

Desvantagens: Suportado apenas no Windows 98 > Cliente e servidor tem que ser locais

Servidor

void enviaMensagemCoordenada(int x, int y, int codHit)

{

unsigned int coord = x + (y << 16);

PostMessage (HWND_BROADCAST, MSG_FTIR_HIT, coord, codHit);

}

Void enviaMensagemTermino (int codHit)

{

PostMessage (HWND_BROADCAST, MSG_FTIR_HIT_FIM, codHit, 0);

}

UINT MSG_FTIR_HIT = RegisterWindowMessage("MSG_FTIR_HIT");

UINT MSG_FTIR_HIT_FIM = RegisterWindowMessage("MSG_FTIR_HIT_FIM");

Na inicialização do programa registrar os códigos das mensagens no sistema operacional:

A cada interação do programa, identifica as regiões Para cada região identificada, transmite para os clientes MT:

Para cada região extinta:

Cliente

LRESULT CALLBACK WindowProc(

HWND hwnd,

UINT uMsg,

WPARAM wParam,

LPARAM lParam );

UINT MSG_FTIR_HIT = RegisterWindowMessage("MSG_FTIR_HIT");

UINT MSG_FTIR_HIT_FIM = RegisterWindowMessage("MSG_FTIR_HIT_FIM");

• Na inicialização do programa registrar os códigos das mensagens do servidor MT:

• Fazer tratamento das mensagens na rotina de callbacks do programa:

Manipulação de Fotos

LRESULT CALLBACK WndProc(hWnd, uMsg, wParam, lParam){

switch (uMsg) // Check For Windows Messages{

case WM_KEYDOWN: // Is A Key Being Held Down?keys[wParam] = TRUE; // If So, Mark It As TRUEreturn 0; // Jump Back

case WM_KEYUP: // Has A Key Been Released?keys[wParam] = FALSE; // If So, Mark It As FALSEreturn 0; // Jump Back

case MSG_FTIR_HIT: // Recebe uma mensagem de toque na telaint x = (wParam & 0xFFFF);int y = wParam >> 16;int id = lParam;

if (hitManeger.getHit(id) == false) // Verifica se o Hit ja existe

{ pickPhotos(x, y, id); // Se for um hit novo, verifica se ele intercepta alguma das imagens

}else{

hitManeger.updateHit(x, y, id); // Se ja existir apenas atualiza as coordenadas dele}return 0;

case MSG_FTIR_HIT_FIM: // Remove da lista um dos hitsint id = wParam;hitManeger.removeHit(id);

....}

Is the foundation and lowest level of the API. Enables touch‐optimized experiences

WM_TOUCHDOWNWM_TOUCHMOVEWM_TOUCHUP

Semantically similar to mouse messagesConveys raw touch data to Win32 appsScenario examples:

Finger painting, custom gestures, feeding higher level controls, etc

BOOL WINAPI RegisterTouchWindow(__in HWND hwnd,__in ULONG ulFlags);

BOOL WINAPI GetTouchInputInfo(__in HANDLE hTouchInput, // input event handle__in UINT cInputs, // number of elts in the array__out_ecount(cInputs) PTOUCHINPUT pInputs,   // array of touch inputs__in int cbSize); // sizeof(TOUCHINPUT)

typedef struct tagTOUCHINPUT {LONG x;LONG y;HANDLE hSource;DWORD dwID;DWORD dwFlags;DWORD dwMask;DWORD dwTime;ULONG_PTR dwExtraInfo;DWORD cxContact;DWORD cyContact;

} TOUCHINPUT, *PTOUCHINPUT;typedef TOUCHINPUT const * PCTOUCHINPUT;

BOOL WINAPI CloseTouchInputHandle(__in HANDLE hTouchInput);                   // input event handle

Good gesture support is keyWindow message conveying gesture notifications and information to applications

Why use it? Richer than legacy notifications, smoother more responsive scrolling and zooming

BOOL WINAPI GetGestureCommandInfo( __in UINT uMsg, __in WPARAM wParam, __in LPARAM lParam, __in LPARAM lExtraInfo, __inout PGESTUREINFO pGestureInfo

);

typedef struct _GESTURECOMMANDINFO {UINT cbSize;DWORD dwFlags;DWORD dwCommand;DWORD dwArguments;POINTS ptsLocation;

} GESTURECOMMANDINFO, *PGESTURECOMMANDINFO;

Software utilizado:

Windows 7 M3 buildWPF Multi‐touch.Net 4.0 preview release 2009

public partial class Form1 : Form{

[DllImport("user32", EntryPoint = "RegisterTouchWindow")] public static extern int RegisterTouchWindow(IntPtr hwnd, uint flags);

public Form1() {

InitializeComponent();

RegisterTouchWindow(Handle, 0); RegisterGestureHandlerWindow(Handle, 0);

}

protected override void WndProc(ref Message m) {

switch (m.Msg) {

// WM_TOUCHDOWNcase 0x0241:

Trace.WriteLine("TouchDown"); break;

// WM_TOUCHUPcase 0x0242:

Trace.WriteLine("TouchUp"); break;

} base.WndProc(ref m);

}

}

Controle sobre a qualidade da parafina em gel

Melhoria na metodologia utilizada para aplicar a parafina no acrílico.

Evitar deformações no acrílico.

Aplicar algoritmos mais sofisticados na parte de visão (GPU).

Permitir reconhecimento de padrões sobre a tela.

Estudo mais detalhado do tecido de revestimento e uma camada de proteção sobre ele.

Impacto na resposta do sistema de visão.

Suavidade ao toque.

Proteção e facilidade de limpar.

Qualidade de imagem projetada.

Equipamentos mais adequados ao sistema.

Playstation eye

FOV: 56° ‐ 75° com zoom óptico  640×480 @ 60 fps ou320×240 @ 120 fps Vídeo sem compressão, ou com compressão JPEG USB 2.0 Filtro de infravermelho pode ser removido * Baixo custo:  40,00 USD Funciona no PC apesar da ausência de suporte ou driver do fabricante

Benq MP771

Imagem  projetada de 74” a 1m da tela.  4.000 horas de tempo de vida da lâmpada. 3000 ANSI Lumens. 2.000:1 de contraste. Resolução XGA (1024x768)

Flex Strip

Tamanho: 5m x 10mm x 2 mm. Alimentação: 12V DC, 3A.  16.8mm (0.66”) de espaçamento entre cada LED.

“Everything is best for something and worst for something else.”

Bill Buxton