Mobile Image Processing - JIM 2014

390 visualizações

Publicada em

.

Publicada em: Celular
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
390
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Mobile Image Processing - JIM 2014

  1. 1. Mobile Image Processing Thales Levi Azevedo Valente João Dallyson Sousa de Almeida
  2. 2. Apresentação • João Dallyson – Joao.dallyson@ufma.br – Doutor em Engenharia Elétrica – UFMA • Área: Ciência da Computação – Professor do DEINF/UFMA e Pesquisador em: • Processamento de Imagens Médicas • Reconhecimento de Padrões – Lattes: • http://lattes.cnpq.br/6047330108382641 • Thales Levi Azevedo Valente – selaht7@gmail.com – Graduando em Ciência da Computação - UFMA – Pesquisador PIBIC em: • Processamento de imagens • Android – Lattes: • http://lattes.cnpq.br/1509490497932923 26/11/2014 2Mobile Image Processing
  3. 3. Este trabalho está licenciado com uma Licença Creative Commons - Atribuição- NãoComercial-SemDerivações 4.0 Internacional. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/4.0/. • Você é livre para: – Copiar, distribuir o material • Sobre as seguintes condições: – Atribuição de créditos: você deve fazer referência ao autor – Não-comercial: você não deve usar este material para propósitos comerciais – Não-Derivados: Se você criar trabalhos derivados deste, você não deve distribuí-lo. Termos de uso deste material 3Mobile Image Processing26/11/2014
  4. 4. Cronograma do Curso • Introdução • Fundamentos da linguagem Java • Fundamentos Processamento de Imagens • Roteiro Android:  Preparando o ambiente de desenvolvimento Android – Passo a Passo  Ciclo de vida de uma Activity  Criando o primeiro projeto Android  Estrutura básica de um projeto Android  Criando Máquina Virtual usando o AVD Manager  Executando o primeiro “Hello World”  Carregando uma imagem da galeria 4Mobile Image Processing26/11/2014
  5. 5. Cronograma do Curso • Roteiro OpenCV:  Importando a biblioteca OpenCV para Android no Workspace  Instalação do OpenCV Manager no AVD por linha de comando  Adicionando a biblioteca ao Projeto  Processamento de imagens pela primeira vez (sem OpenCV)  Processamento de imagens pela segunda vez (Agora usando OpenCV)  Gerando o instalador (.apk) 5Mobile Image Processing26/11/2014
  6. 6. INTRODUÇÃO
  7. 7. Por que nós processamos imagens? • Aquisição de Imagem – Corrigir abertura e equilíbrio das cores • Preparar para exibir ou imprimir – Ajustar o tamanho da imagem • Facilitar o armazenamento e transmissão da imagem – Armazenamento eficiente em câmeras digitais – Enviar uma imagem de Marte para a Terra • Melhorar e restaurar imagens – Remover arranhões de um filme antigo – Melhorar a visibilidade de um tumor em uma radiografia • Extrair informação de imagens – Ler o CEP de uma carta – Medir a poluição da água a partir de imagens aéreas 7Mobile Image Processing26/11/2014
  8. 8. Sistema de Processamento de Imagem Digital 8Mobile Image Processing26/11/2014
  9. 9. Plataformas Mobile Populares 9Mobile Image Processing26/11/2014
  10. 10. Foco no Android • Plataforma Mobile Open Source • Mantido pela Open Handeset Alliance (OHA) – Aliança entre diversas empresas para criar padrões abertos para telefonia móvel. • Usa o kernel do linux personalizado e uma máquina virtual projetada para dispositivo móvel • Android domina 84,6% do mercado global de smartphones. (Pesquisa realizada segundo trimestre 2014 pela Strategy Analytics) 10Mobile Image Processing26/11/2014
  11. 11. API do Android 11Mobile Image Processing26/11/2014
  12. 12. Programando em Java • Android encoraja o desenvolvimento em alto nível; • Android usa Java como a principal linguagem de programação; • Herda classes básicas do Java padrão: – String, Container, Math, IO e Network • Adiciona novas classes especificas para dispositivos móveis: – Camera, Telephony, Map, Speech 12Mobile Image Processing26/11/2014
  13. 13. Fundamentos de Linguagem Java
  14. 14. Dificuldades dos programadores na década de 1990 • Ponteiros • Gerenciamento de memória • Organização • Falta de bibliotecas • Ter de reescrever parte do código ao mudar de SO. • Custo financeiro de usar a tecnologia 14Mobile Image Processing26/11/2014
  15. 15. Máquina Virtual • Realiza a gerência de memória, threads, a pilha de execução, etc... • Java Virtual Machine (JVM) 15Mobile Image Processing FONTE: [Caelum, 2014] 26/11/2014
  16. 16. JVM, JRE, JDK • O que baixar no site da Oracle? – http://www.oracle.com/technetwork/java/. • JVM = Java Virtual Machine. Não existe apenas esse download. • JRE = Java Runtime Environment. JVM + Bibliotecas. Necessário para executar uma aplicação java. • JDK = Java Developement Kit. – JRE + Ferramentas 16Mobile Image Processing26/11/2014
  17. 17. Objetos • Um objeto é uma entidade (física, conceitual, ou do domínio de algum problema) que tem: – identidade (a referência) – estado (seus atributos) – comportamento (seus métodos) 17Mobile Image Processing26/11/2014
  18. 18. Classe • Classes são uma especificação para objetos com propriedades semelhantes (atributos), comportamentos semelhantes (métodos) e relacionamentos comuns com outros objetos • Classes descrevem – Tipos dos dados que compõem o objeto (o que podem armazenar) – Procedimentos que o objeto pode executar (o que podem fazer) 18Mobile Image Processing26/11/2014
  19. 19. Definição de Classe Java 19Mobile Image Processing26/11/2014
  20. 20. Ex: Programa que cria e manipula conta 20Mobile Image Processing26/11/2014
  21. 21. Membros estáticos • Métodos estáticos – Aplicam-se a classe como um todo – Não é necessário criar um objeto para utilizá-los – Chamada: NomeClasse.nomeMétodo() • Campos estáticos – A mesma cópia é compartilhada entre todas as instâncias da classe (objetos) – Uma espécie de ―variável global‖ da classe 21Mobile Image Processing26/11/2014
  22. 22. Herança em Java 22Mobile Image Processing26/11/2014
  23. 23. Fundamentos de Processamento de Imagens
  24. 24. Imagem Digital • Definição: função bidimensional, f(x,y), em que x e y são coordenadas espaciais (plano), e a amplitude de f em qualquer par de coordenadas (x,y) é chamada de intensidade ou nível de cinza da imagem nesse ponto. (Gonzalez and Woods, 2010) 24Mobile Image Processing26/11/2014
  25. 25. Origens do Processamento Digital de Imagens • Transmissão de Imagens por cabo submarino atravessando o oceano atlântico. (1920) – Reduziu de 1 semana para menos de 3 horas 25Mobile Image Processing Fotografia Digital produzida em 1921 com base em uma fita codificada por uma impressora telegráfica com fontes tipográficas especiais. 26/11/2014
  26. 26. Etapas do Processamento de Imagens 26Mobile Image Processing26/11/2014
  27. 27. Relacionamento entre pixels  Operações aritméticas entre 2 pixels  Adição: p + q Reduzir ruídos  Subtração: p – q Imagem médica. Remove informação estática de fundo  Multiplicação: p * q (pq e pxq) Corrigi sombra  Divisão:  p / q  Média z=1/9 (Z1,Z2,...,Z9) 27Mobile Image Processing26/11/2014
  28. 28. Relacionamento entre pixels • Operações aritméticas entre 2 pixels – Subtração 28Mobile Image Processing26/11/2014
  29. 29. Relacionamento entre pixels  Operações lógicas entre 2 pixels Mobile Image Processing26/11/2014 27
  30. 30. Melhoramento de Imagens Objetivo Processar uma imagem de modo que o resultado seja mais apropriado para uma aplicação específica do que a imagem original. Divide-se : Domínio espacial: refere-se ao plano da imagem, e as abordagens são baseadas na manipulação direta dos pixels Domínio da freqüência: baseadas na modificação das transformadas de Fourier Combinação de ambos 30Mobile Image Processing26/11/2014
  31. 31. Melhoramento de Imagens Histograma Representa a freqüência de pixels na imagem algoritmo 31 for(i=0; i< lin; i++) { for(j=0; j < col; j++) { v = valor_do_pixel ++H[ v ]; } } /* H depende do maior valor do pixel */ Mobile Image Processing26/11/2014
  32. 32. 32Mobile Image Processing  Equalização do Histograma  Melhora o contraste da imagem da imagem  Algoritmo  Calcula histograma:  Calcula o histograma acumulado:  Novo histograma  Nova imagem Melhoramento de Imagens 26/11/2014
  33. 33. Melhoramento de Imagens  Equalização do Histograma  Exemplo Mobile Image Processing26/11/2014 31
  34. 34. Melhoramento de Imagens  Convolução 1/9.(10x1 + 11x1 + 10x1 + 9x1 + 10x1 + 11x1 + 10x1 + 9x1 + 10x1) = 1/9.( 90) = 10 10 11 10 9 10 11 10 9 10 1 10 10 2 9 0 9 0 9 9 9 9 0 1 99 10 10 11 10 1 11 11 11 11 1010 I 1 1 1 1 1 1 1 1 1 F X X X X 10 X X X X X X X X X X X X X X XX 1/9 O Mobile Image Processing26/11/2014 32
  35. 35. Exemplos Processamento de Imagens • Melhoramento de Imagens 35Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  36. 36. Exemplos Processamento de Imagens • Redução de Ruídos 36Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  37. 37. Exemplos Processamento de Imagens • Efeitos especiais 37Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  38. 38. Exemplos Processamento de Imagens • Detecção de Faces 38Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  39. 39. Exemplos Processamento de Imagens • Aplicações na Oftalmologia 39Mobile Image Processing26/11/2014
  40. 40. ROTEIRO ANDROID
  41. 41. Preparando o ambiente de desenvolvimento Android – Passo a Passo
  42. 42. Baixe e instale os seguintes itens: • Java Runtime Environment (JRE) para a versão do seu sistema Windows (32/64 bits). • Java Development Kit (JDK) para a versão do seu sistema Windows (32/64 bits). • Baixar e descompactar a IDE Eclipse ADT com o Android SDK da Google para a versão de seu sistema Windows (32/64 bits). • http://www.oracle.com/technetwork/pt/java/javase/downloads/index.h tml • https://developer.android.com/sdk/index.html?hl=i – Obs: esta versão do Eclipse fornecido pela Google só funciona em ambiente Windows. 42Mobile Image Processing26/11/2014
  43. 43. Página de download do JRE. Baixe o JRE no site da Oracle e instale em sua máquina. 43Mobile Image Processing26/11/2014
  44. 44. Página de download do JDK. Baixe o JDK no site da Oracle e instale em sua máquina 44Mobile Image Processing26/11/2014
  45. 45. Página de download do Eclipse ADT Baixe a IDE Eclipse ADT no site da Google. 45Mobile Image Processing26/11/2014
  46. 46. Página de download do Eclipse ADT Baixe a IDE Eclipse ADT no site da Google. 46Mobile Image Processing26/11/2014
  47. 47. Descompacte a IDE Elipse ADT e o Android SDK 47Mobile Image Processing26/11/2014
  48. 48. Tela de escolha do workspace Abra o Eclipse e escolha o seu workspace 48Mobile Image Processing26/11/2014
  49. 49. Figura X. Página de download do Eclipse ADT Tela inicial da IDE Elipse ADT Logo após, o Eclipse carregará e abrirá sua tela de interface. 49Mobile Image Processing26/11/2014
  50. 50. Tela inicial da IDE Elipse ADT Verificaremos se o diretório do SDK está correto. 50Mobile Image Processing26/11/2014
  51. 51. Clique em “Browse” para selecionar o diretório, caso queira mudar Tela da opção preferências do Eclipse ADT 51Mobile Image Processing26/11/2014
  52. 52. Navegue até o diretório do sdk e clique em “OK” Tela da opção preferências do Eclipse ADT 52Mobile Image Processing26/11/2014
  53. 53. Clique no botão “Apply” para aplicar a mudança de diretório. Tela da opção preferências do Eclipse ADT 53Mobile Image Processing26/11/2014
  54. 54. Tela da opção preferências do Eclipse ADT Serão listadas todas as APIs instaladas em seu SDK. Finalize clicando no botão “OK” 54Mobile Image Processing26/11/2014
  55. 55. Fechando o Eclipse ADT Caso apareçam estes erros, apenas reinicie o eclipse e serão resolvidos. 55Mobile Image Processing26/11/2014
  56. 56. Figura X. Página de download do Eclipse ADT Tela inicial do Elipse ADT Abriremos o SDK Manager apertando este botão Logo após, o Eclipse carregará e abrirá sua tela de interface. 56Mobile Image Processing26/11/2014
  57. 57. • É um gerenciador de pacotes do SDK com um UI para iteração com usuário. • O SDK nada mais é que o kit de desenvolvimento para Android, contendo bibliotecas e ferramentas de desenvolvimento necessários para construção, teste e debug de aplicativos para Android. O que é o SDK Manager ? 57Mobile Image Processing26/11/2014
  58. 58. Inicialização do Android SDK Inicialização do Android SDK 58Mobile Image Processing26/11/2014
  59. 59. Instalar os Tools, de preferência os mais atualizados por questões de compatibilidade com as APIs 59Mobile Image Processing26/11/2014
  60. 60. • SDK Tools: – Dalvik Debug Monitor Server (ddms): rede, memória utilizada, logcat, explorador de arquivos, captura de tela, informações sobre o disp. – Hierarchy Viewer: mostra a presentação da hierarquia dos layouts. – Mksdcard: cria imagem de disco para usar com sdcard no emulador • SDK Platform Tools: – Adb: comunicação em linha de comando entre o user e dispositivos – Sqlite3: dá acesso a arquivos Sqlite criados e usados no Android • SDK Build Tools: requerido para geração de código O que são estes 3 itens? (exemplos) 60Mobile Image Processing26/11/2014
  61. 61. A mais recente API é necessária para se utilizar as bibliotecas de compatibilidade. Instale mesmo que não a use 61Mobile Image Processing26/11/2014
  62. 62. Depois, instale suas APIs preferenciais. 62Mobile Image Processing26/11/2014
  63. 63. Selecionaremos essa API por ainda ser muito utilizada por uma parte do mercado 63Mobile Image Processing26/11/2014
  64. 64. Extras necessários para utilização das bibliotecas de compatibilidade e usar um smartphone para teste direto do aplicativo 64Mobile Image Processing26/11/2014
  65. 65. • SDK Platform: kit de desenvolvimento para plataforma específica • ...System Images: tipos de emulador com seus respectivos processadores. Emuladores são utilizados para executar aplicativos • Android Support Repository e Android Support Libraries: necessários para utilização de bibliotecas de compatatibilidades. • Google USB driver: necessário para utilização de aparelhos físicos ao invés de emuladores. O que marcamos? 65Mobile Image Processing26/11/2014
  66. 66. Ao clicar no botão instalar, aceite os termos de compromisso e clique em instalar 66Mobile Image Processing26/11/2014
  67. 67. As bibliotecas serão baixadas e o SDK Manager será reiniciado. 67Mobile Image Processing26/11/2014
  68. 68. Ciclo de vida de uma Activity
  69. 69. O que é uma Activity ? • Representa uma simples tela com interface com o usuário • Um programa Android inicia com uma Activity assim como programas Java/C iniciam com uma Main() • Tem um ciclo de vida bem definido • É gerenciada no sistema por uma pilha de Activitys. Quando uma nova Activity é iniciada, esta vai para o topo da pilha. Ao ser destruída esta saí do topo. Quando uma nova é chamada, a nova vai para o topo. • Se uma Activity não estiver em primeiro plano, ela pode ser destruída pelo sistema caso haja falta de memória. Mobile Image Processing 6926/11/2014
  70. 70. Principais métodos: • OnCreate(): – o sistema o chama ao criar a Activity (Componente “mãe” de GUI) – Nele deve ser chamado setContentView()para definir o layout. – É executada somente uma vez durante a “vida” do aplicativo • OnStart(): – Chamado quando a Activity é visível para o usuário. • OnResume(): – Chamado quando o aplicativo irá interagir com o usuário Mobile Image Processing 7026/11/2014
  71. 71. • OnPause(): – É o primeiro método a ser chamado quando a Activity perde o foco (uma outra Activity vem à frente, mas a primeira não deixa de ser visível). – Mudanças feitas pelo usuário devem ser salvas neste ponto (ex: mudanças no provedor de conteúdo, como contatos, mídias, etc), animações devem ser paradas, sensores, etc.. – Deve ser executada rapidamente, pois a próxima Activity só será só “ganhará a tela” quando este método for finalizado. Principais métodos: Mobile Image Processing 7126/11/2014
  72. 72. • onStop(): – Quando chamado, o aplicativo não é mais visível para o usuário. – Por algum motivo, um outro aplicativo foi colocado no topo da pilha • onDestroy(): – Destruição da Activity – Pode tanto ser chamada em código, quanto o sistema pode fazê-lo caso precise de memória • onRestart(): – Chamado quando o aplicativo volta ao primeiro plano. Principais métodos: Mobile Image Processing 7226/11/2014
  73. 73. Mobile Image Processing 7326/11/2014
  74. 74. Loops chaves do ciclo de vida • Tempo de vida inteiro: – Ocorre entre onCreat() e onDestroy() • Tempo de vida visível: – Ocorre entre onStart() e onStop() – A Activity está visível, mas não está em primeiro plano. • Tempo de vida em primeiro plano: – Ocorre ente onResume() e onPause() – A Activity está a frente de todas as outras e interagindo com o usuário. Mobile Image Processing 7426/11/2014
  75. 75. Criando o primeiro projeto Android
  76. 76. Selecione a opção de criação de novo projeto. 76Mobile Image Processing26/11/2014
  77. 77. Escolha o nome do projeto, pacote, aplicação e APIs mínima, máxima e de compilação do projeto 77Mobile Image Processing26/11/2014
  78. 78. Deixe como está, apenas “dê next” 78Mobile Image Processing26/11/2014
  79. 79. Tela de customização do ícone. 79Mobile Image Processing26/11/2014
  80. 80. Tela de escolha do esqueleto inicial da primeira tela de seu aplicativo. Selecionaremos a tela vazia. 80Mobile Image Processing26/11/2014
  81. 81. Definiremos os nomes da classe principal e do arquivo de layout dela 81Mobile Image Processing26/11/2014
  82. 82. Projeto criado. Ignore estes erros, se ocorrerem. São bugs da IDE. 82Mobile Image Processing26/11/2014
  83. 83. Porque foram criados 2 projetos?
  84. 84. Porque foram criados dois projetos? • O primeiro projeto é uma biblioteca de compatibilidade. Ela está localizada no Android SDK e selecionamos ela no início da apresentação. • Esta biblioteca necessita da API 21 (Android 5.0 /L). Tanto ela quanto o seu projeto devem ter esta API como API de compilação ou haverá erros tanto na linkagem, quanto a biblioteca acusará erros de falta de recursos (classes java ou arquivos xml de layouts) 84 Mobile Image Processing26/11/2014
  85. 85. Estrutura básica de um projeto Android
  86. 86. Estrutura básica de um projeto Android Pasta, pacotes e classes Adicionais (arquivos) Linka Xmls e classes java (gerado automaticamente Bibliotecas .jars Informações sobre o aplicativo Códigos gerados 86Mobile Image Processing26/11/2014
  87. 87. Estrutura básica de um projeto Android Classe principal Sempre chamado na criação de uma Activity Setando o layout 87Mobile Image Processing26/11/2014
  88. 88. Estrutura básica de um projeto Android 240 dpi Definições de layout de menus Definições de layout de telas Recursos para versões especíificas 120 dpi 160 dpi 480 dpi 320dpi Definições de dimensões Definições de strings Definições de estilos de views 88Mobile Image Processing26/11/2014
  89. 89. Estrutura básica de um projeto Android “organizador” View usada para texto Espaço ocupado Espaçamento de margem String que aparecerá para o usuário 89Mobile Image Processing26/11/2014
  90. 90. Criando Máquina Virtual usando o AVD Manager
  91. 91. Abriremos o AVD Manager apertando este botão 91Mobile Image Processing Abrindo o AVD Manager 26/11/2014
  92. 92. Tela inicial do AVD Manager Aba 1- Android Virtual Devices 92Mobile Image Processing26/11/2014
  93. 93. Dispositivos Virtuais Android disponíveis. Também podem ser criados outros Aba 2- Devices Definitions 93Mobile Image Processing26/11/2014
  94. 94. Tela de criação de dispositivos virtuais. Especificam-se características de tela, sensores, câmeras, etc. 94Mobile Image Processing Tela de criação de definição de um dispositivo 26/11/2014
  95. 95. Tela de criação de máquina virtual. 95Mobile Image Processing Tela de criação de Máquina Virtual 26/11/2014
  96. 96. 96Mobile Image Processing Máquina virtual criada pronta para ser inicializada 26/11/2014
  97. 97. Desmarcar essa opção para que fique maior a tela 97Mobile Image Processing Máquina virtual criada pronta para ser inicializada 26/11/2014
  98. 98. 98Mobile Image Processing Máquina virtual inicializada 26/11/2014
  99. 99. Executando o primeiro “Hello World”
  100. 100. 100Mobile Image Processing Executando o primeiro projeto 26/11/2014
  101. 101. 101Mobile Image Processing Aplicativo HelloWorld 26/11/2014
  102. 102. Carregando uma imagem da galeria
  103. 103. Primeiro vamos fazer o emulador inserir uma imagem na galeria • Com seu emulador inicializado, abra o aplicativo de câmera • Ao abrir, clique no botão de tirar foto e uma imagem será adicionada na galeria. 103Mobile Image Processing26/11/2014
  104. 104. Mudanças no código 104Mobile Image Processing26/11/2014
  105. 105. Mudanças no código 105Mobile Image Processing26/11/2014
  106. 106. Mudanças no código 106Mobile Image Processing26/11/2014
  107. 107. Mudanças no código 107Mobile Image Processing26/11/2014
  108. 108. Mudanças no código 108Mobile Image Processing26/11/2014
  109. 109. Mudanças no código – mudar aqui 109Mobile Image Processing26/11/2014
  110. 110. Mudanças no código 110Mobile Image Processing26/11/2014
  111. 111. Mudanças no código 111Mobile Image Processing26/11/2014
  112. 112. Voltando ao emulador 112Mobile Image Processing26/11/2014
  113. 113. Mudanças no código 113Mobile Image Processing26/11/2014
  114. 114. Mudanças no código 114Mobile Image Processing26/11/2014
  115. 115. Mudanças no código 115Mobile Image Processing26/11/2014
  116. 116. ROTEIRO OPENCV
  117. 117. Importando a biblioteca OpenCV para Android no Workspace
  118. 118. Página de download do OpenCV 118Mobile Image Processing 1- Baixe o OpenCV 26/11/2014
  119. 119. Arquivo compactado 119Mobile Image Processing 2- Abra o arquivo de descompacte-o. Você quaisquer adicionais com os arquivos descomparctados, como usar o Cmake ou compilar o projeto de quaisquer forma. 26/11/2014
  120. 120. Interface do Eclipse ADT 120Mobile Image Processing 3- Abra a IDE Eclipse ADT e vá na opção de importar projetos. (Não esqueça de estar n Workspace do projeto que usará a biblioteca) 26/11/2014
  121. 121. Página de download do OpenCV 121Mobile Image Processing 4- Selecione a opção ...marcada de vermelho... 26/11/2014
  122. 122. Tela de importar projetos do Eclipse 122Mobile Image Processing 5- Selecione o diretório do(s) projeto(s) que deseja importar 26/11/2014
  123. 123. Tela de seleção de diretórios para importar projetos 123Mobile Image Processing 6- Navegue em ...OpenCV.. > sdk > java e dê ok. 26/11/2014
  124. 124. Página de download do OpenCV Tela de seleção de diretórios para importa projetos 124Mobile Image Processing 7- Logo após, aparecerá o projeto OpenCV a ser importado. Marque a opção de copiar o projeto e finalize. 26/11/2014
  125. 125. 125Mobile Image Processing 8 – A biblioteca aparecerá em seu Workspace 26/11/2014
  126. 126. Instalação do OpenCV Manager no AVD por linha de comando
  127. 127. • O AVD deve ter sido criado a inicializado antes da realização dos passos a seguir. Instalação do OpenCV Manager no AVD • A versão do APK do OpenCV a ser instalado deve ser a mesma do processador emulado em seu AVD. 127Mobile Image Processing26/11/2014
  128. 128. Instalação do OpenCV Manager no AVD • Abra o CMD • Mude para o diretório do Android sdkplatform – tools • Execute o comando adb install “...diretório opencvapkapk conforme seu emulador” • Espere instalar e feche o CMD • Aparecerá um novo Aplicativo no emulador: OpenCV Manager • OBS: deve haver apenas um AVD inicializado e quaisquer dispositivos Android não deve está conectado no computador em modo de debug. Caso falhe por falta de conexão com o ADB, reinicie o emulador e o Eclipse, para reiniciar o processo do ADB. 128Mobile Image Processing26/11/2014
  129. 129. Adicionando a biblioteca ao Projeto
  130. 130. 130Mobile Image Processing 1- Clique com botão direto do mouse sobre o projeto e selecione a opção “Properties. 26/11/2014
  131. 131. 131Mobile Image Processing 2- Clique em “Android” do lado esquerdo e depois em “Add...” no lado direito 26/11/2014
  132. 132. 132Mobile Image Processing 3- Selecione o projeto do OpenCV e clique em “Ok” 26/11/2014
  133. 133. 133Mobile Image Processing 4- Verifique se a biblioteca foi adicionada e clique em “Ok” 26/11/2014
  134. 134. 134Mobile Image Processing 5- A biblioteca aparecerá em seu Workspace 26/11/2014
  135. 135. Processamento de imagens pela primeira vez (sem OpenCV)
  136. 136. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13626/11/2014
  137. 137. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13726/11/2014
  138. 138. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13826/11/2014
  139. 139. • Executando o projeto e selecionando a imagem da galeria, teremos este resultado. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13926/11/2014
  140. 140. Processamento de imagens pela segunda vez (Agora usando OpenCV)
  141. 141. Segmentando o olho do Android Nível de cinza Detecção de Bordas Buscar olhos Metodologia 102Mobile Image Processing26/11/2014
  142. 142. 142Mobile Image Processing Resultado a ser alcançado 26/11/2014
  143. 143. 0- Chamada à biblioteca Estes métodos SEMPRE devem ser chamados em sua Activity principal. 104Mobile Image Processing26/11/2014
  144. 144. 2- Imagem em tons de cinza (com OpenCV) Mobile Image Processing 14426/11/2014
  145. 145. • Ao executar o código, o resultado será o “mesmo”. • A imagem sempre deve ser convertida de bitmap para mat • Percebe-se que com o OpenCV usamos menos código e o desenvolvimento fica muito mais simples. • O tempo de processamento é muito menor. 2- Imagem em tons de cinza (com OpenCV) Mobile Image Processing 14526/11/2014
  146. 146. 3- Detecção de bordas com Canny • Detecção de Bordas: – Processo no qual a imagem passa por alguma técnica para realçar as suas bordas, sendo que a mais utilizada é a técnica de Canny (Sonka et. al. 1994) Mobile Image Processing 14626/11/2014
  147. 147. 3- Detecção de bordas com Canny - Teoria • Etapas: 1) Suavização da imagem: • Remoção de ruídos 2) Cálculo da Magnitude do Gradiente: • As bordas são os locais onde os gradientes tem maior magnitude 3) Não Máxima supressão: • Locais de máximo devem ser marcados como bordas 4) Limiarização por histerise ou duplo limiar + Rastreamento de bordas • pixels fracos são descartados e pixels fortes determinados como borda. Os que forem meio termo serão analisados e posteriormente classificados como borda ou não borda. Mobile Image Processing 14726/11/2014
  148. 148. 3- Detecção de bordas com Canny - Teoria 1) Suavização da imagem (Gaussiana): – Tem por objetivo eliminar os ruídos, pois podem ser detectados como bordas. – Geralmente é utilizado um kernel com desvio padrão σ = 1.4, como o da figura abaixo Mobile Image Processing 14826/11/2014
  149. 149. 3- Detecção de bordas com Canny - Teoria 1) Suavização da imagem(Gaussiana): Mobile Image Processing 149 (a) Imagem original em escala de cinza (b) Imagem borrada com o filtro da Gaussiana 26/11/2014
  150. 150. 3- Detecção de bordas com Canny - Teoria 2) Cálculo da Magnitude dos Gradientes: – Aplica-se operadores para determinar os gradientes de cada pixel, tanto na direção x quanto na direção y. – Geralmente utiliza-se os operadores de sobel. Mobile Image Processing 15026/11/2014
  151. 151. 3- Detecção de bordas com Canny - Teoria 2) Cálculo da Magnitude dos Gradientes: – Calcula-se a Distância Euclidiana utilizando-se a Lei de Pitágoras(a), ou ainda calcula-se a distância de Manhattan(b) para reduzir a complexidade. Assim, se obtêm a magnitude dos gradientes ou “força das bordas”. Mobile Image Processing 151 (b) Gx e Gy são gradientes nas direções x e y respectivamente. (a) 26/11/2014
  152. 152. 3- Detecção de bordas com Canny - Teoria 3) Não Máxima Supressão: Mobile Image Processing 152 – O ângulo das direções dos gradientes são calculados: – e aproximados para: 26/11/2014
  153. 153. 3- Detecção de bordas com Canny - Teoria 3) Não Máxima Supressão: – Consiste em eliminar os pixels não máximos locais, na direção do gradiente da imagem. Mobile Image Processing 153 (b) Setores considerados para a supressão não máxima(a) Esquema de supressão não máxima para θ=45º; 26/11/2014
  154. 154. 3- Detecção de bordas com Canny - Teoria 3) Não Máxima Supressão: – Compare a força do pixel central (c,l) como a de seus vizinhos na direção positiva e negativa do gradiente. – Então, no caso anterior, será comparada a magnitude do gradiente do pixel central (c, l) com a magnitude de seu vizinho no sentido do gradiente (c+1, l-1)[45 graus]. – Depois compara-se com a magnitude de seu vizinho no sentido contrário ao do gradiente (c-1, l+1). – Se o pixel (c,l) for o maior dos 3, então preserve o valor do pixel. Senão, suprima o seu valor - zera (agora o nome está explicado ). Mobile Image Processing 15426/11/2014
  155. 155. 3- Detecção de bordas com Canny - Teoria 3) Não Máxima Supressão: Mobile Image Processing 155 (a) Gradiente (b) Não-máxima supressão • São preservadas as bordas onde o gradiente é máximo local. • Obs: ninguém, ainda, foi classificado como borda. Apenas dizemos o que não é borda. Até agora não “embrancamos” nenhum pixel. 26/11/2014
  156. 156. 3- Detecção de bordas com Canny - Teoria 4) Limiarização por histerise ou duplo limiar * – Dois limiares: um alto e um baixo. – Tentativa e erro. – Qualquer pixel acima do maior limiar é convertido para branco(forte). o Um pixel (x, y) é chamado forte se cor(x, y) > Thalto – Qualquer pixel abaixo do menor limiar é convertido para preto(supressão). o Um pixel (x, y) é chamado fraco se cor(x, y) <= Thbaixo – Os pixels entre os limiares são candidatos(fracos). Mobile Image Processing 15626/11/2014
  157. 157. 3- Detecção de bordas com Canny - Teoria 4) Limiarização por histerise ou duplo limiar * Mobile Image Processing 157 (a) Não-máxima supressão (b) Duplo limiar (marcando fortes e fracos) 26/11/2014
  158. 158. 3- Detecção de bordas com Canny - Teoria 4) Limiarização por histerise ou duplo limiar + Rastreamento de bordas – Os candidatos são analisados: ose, seguindo a cadeia de pixels (sua vizinhança e seus vizinhos em 3x3 ou 5x5), for descoberto que ele está conectado a um pixel forte ele é considerado borda. oSenão, ele é “descartado”. Mobile Image Processing 15826/11/2014
  159. 159. 3- Detecção de bordas com Canny - Teoria 4) Limiarização por histerise ou duplo limiar + Rastreamento de bordas Mobile Image Processing 159 (a) Duplo limiar (marcando fortes e fracos) (b) Canditatos (B:ligados com forte e R:ligado com fracos) (c) resultado 26/11/2014
  160. 160. 3- Detecção de bordas com Canny - Teoria Exemplos: Mobile Image Processing 16026/11/2014
  161. 161. 3- Detecção de bordas com Canny - Prática Mobile Image Processing 161 Obs: Nossa imagem é simples e pode-se dizer que sem ruídos. Por este motivo, não utilizaremos qualquer filtro para suavizar a imagem. 26/11/2014
  162. 162. 3- Detecção de bordas com Canny Mobile Image Processing 16226/11/2014
  163. 163. 4- Buscando os olhos do Android na Imagem - busca Mobile Image Processing 163 Parâmetros do Hough = img, circles, method, dp, minDist, thCanny, votes, minR, maxR 26/11/2014
  164. 164. 4- Buscando os olhos do Android na Imagem - busca • Detecção de círculos com a Transformada de Hough Mobile Image Processing 16426/11/2014
  165. 165. 4- Buscando os olhos do Android na Imagem - busca • Detecção de círculos com a Transformada de Hough Mobile Image Processing 16526/11/2014
  166. 166. 4- Buscando os olhos do Android na Imagem - delimitar Mobile Image Processing 16626/11/2014
  167. 167. 4- Buscando os olhos do Android na Imagem - exibir Mobile Image Processing 16726/11/2014
  168. 168. IMPORTANTE: Não é necessária a utilização do método do Canny antes do Hough no openCV, pois o próprio Hough do OpenCV já vem com o Canny internamente. Usamos aqui apenas para fins didáticos e ilustrativos. Porém, se for utilizado o Canny antes do Hough (pois dá resultados diferentes em algumas situações), talvez os parâmetros passados para o Hough tenham de ser mudados. Mobile Image Processing 16826/11/2014
  169. 169. Manipulando pixels com OpenCV
  170. 170. Manipulando pixels com OpenCV Trocando o verde pelo azul 130Mobile Image Processing26/11/2014
  171. 171. Manipulando pixels com OpenCV 131Mobile Image Processing
  172. 172. Gerando o instalador (.apk)
  173. 173. Gerando o instalador 133Mobile Image Processing26/11/2014
  174. 174. Gerando o instalador 134Mobile Image Processing26/11/2014
  175. 175. Gerando o instalador 135Mobile Image Processing26/11/2014
  176. 176. Gerando o instalador 136Mobile Image Processing26/11/2014
  177. 177. Gerando o instalador 137Mobile Image Processing26/11/2014
  178. 178. Gerando o instalador 138Mobile Image Processing26/11/2014
  179. 179. Gerando o instalador 139Mobile Image Processing26/11/2014
  180. 180. Gerando o instalador 140Mobile Image Processing26/11/2014
  181. 181. Gerando o instalador 141Mobile Image Processing26/11/2014
  182. 182. Referências GONZALES, Rafael C.; WOODS, Richard E. Processamento Digital de Imagens, 3. ed. São Paulo: Pearson Prentice Hall, 2010. Caelum. Apostila Java e Orientação a Objetos. Disponível em: <https://www.caelum.com.br/apostila-java-orientacao-objetos/ > Acesso em 02 de novembro de 2014. SILVA, Aristófanes C. Fundamentos de Imagens Digitais: pós graduação em Engenharia de Eletricidade, Notas de Aula. 2004. BRAZ, Geraldo. Paradigmas de Programação: curso graduação em Ciência da Computação, Notas de Aula. 2004. GIRORD, Bernd. Digital Image Processing. Stanford, Lecture Notes. 2013-2014. KUMAR, Prem K. Canny Edge Detection. Indian Institute of Technology Delhi, Lectures Notes. 2009. Android Developers. Android API Guides. Disponível em: http://developer.android.com/guide/index.html > Acesso em 02 de novembro de 2014. 182Mobile Image Processing26/11/2014
  183. 183. 183Mobile Image Processing Dúvidas ? 26/11/2014
  184. 184. 184Mobile Image Processing Até a próxima 26/11/2014

×