carlos andré t. campos -...
TRANSCRIPT
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)
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
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
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
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.