SlideShare uma empresa Scribd logo
1 de 184
Baixar para ler offline
Mobile Image Processing
Thales Levi Azevedo Valente
João Dallyson Sousa de Almeida
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
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
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
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
INTRODUÇÃO
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
Sistema de Processamento de Imagem Digital
8Mobile Image Processing26/11/2014
Plataformas Mobile Populares
9Mobile Image Processing26/11/2014
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
API do Android
11Mobile Image Processing26/11/2014
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
Fundamentos de Linguagem Java
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
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
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
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
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
Definição de Classe Java
19Mobile Image Processing26/11/2014
Ex: Programa que cria e manipula conta
20Mobile Image Processing26/11/2014
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
Herança em Java
22Mobile Image Processing26/11/2014
Fundamentos de Processamento de Imagens
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
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
Etapas do Processamento de Imagens
26Mobile Image Processing26/11/2014
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
Relacionamento entre pixels
• Operações aritméticas entre 2 pixels
– Subtração
28Mobile Image Processing26/11/2014
Relacionamento entre pixels
 Operações lógicas entre
2 pixels
Mobile Image Processing26/11/2014 27
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
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
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
Melhoramento de Imagens
 Equalização do Histograma
 Exemplo
Mobile Image Processing26/11/2014 31
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
Exemplos Processamento de Imagens
• Melhoramento de Imagens
35Mobile Image Processing
FONTE: [GIRORD, 2013]
26/11/2014
Exemplos Processamento de Imagens
• Redução de Ruídos
36Mobile Image Processing
FONTE: [GIRORD, 2013]
26/11/2014
Exemplos Processamento de Imagens
• Efeitos especiais
37Mobile Image Processing
FONTE: [GIRORD, 2013]
26/11/2014
Exemplos Processamento de Imagens
• Detecção de Faces
38Mobile Image Processing
FONTE: [GIRORD, 2013]
26/11/2014
Exemplos Processamento de Imagens
• Aplicações na Oftalmologia
39Mobile Image Processing26/11/2014
ROTEIRO ANDROID
Preparando o ambiente de desenvolvimento Android –
Passo a Passo
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
Página de download do JRE.
Baixe o JRE no site da Oracle e instale em sua máquina.
43Mobile Image Processing26/11/2014
Página de download do JDK.
Baixe o JDK no site da Oracle e instale em sua máquina
44Mobile Image Processing26/11/2014
Página de download do Eclipse ADT
Baixe a IDE Eclipse ADT no site da Google.
45Mobile Image Processing26/11/2014
Página de download do Eclipse ADT
Baixe a IDE Eclipse ADT no site da Google.
46Mobile Image Processing26/11/2014
Descompacte a IDE Elipse ADT e o Android SDK
47Mobile Image Processing26/11/2014
Tela de escolha do workspace
Abra o Eclipse e escolha o seu workspace
48Mobile Image Processing26/11/2014
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
Tela inicial da IDE Elipse ADT
Verificaremos se o diretório do SDK está correto.
50Mobile Image Processing26/11/2014
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
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
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
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
Fechando o Eclipse ADT
Caso apareçam estes erros, apenas reinicie o eclipse e serão resolvidos.
55Mobile Image Processing26/11/2014
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
• É 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
Inicialização do Android SDK
Inicialização do Android SDK
58Mobile Image Processing26/11/2014
Instalar os Tools, de preferência os mais atualizados por questões de
compatibilidade com as APIs
59Mobile Image Processing26/11/2014
• 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
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
Depois, instale suas APIs preferenciais.
62Mobile Image Processing26/11/2014
Selecionaremos essa API por ainda ser muito utilizada por uma
parte do mercado
63Mobile Image Processing26/11/2014
Extras necessários para utilização das bibliotecas de compatibilidade e usar
um smartphone para teste direto do aplicativo
64Mobile Image Processing26/11/2014
• 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
Ao clicar no botão instalar, aceite os termos de compromisso e
clique em instalar
66Mobile Image Processing26/11/2014
As bibliotecas serão baixadas e o SDK Manager será reiniciado.
67Mobile Image Processing26/11/2014
Ciclo de vida de uma Activity
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
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
• 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
• 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
Mobile Image Processing 7326/11/2014
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
Criando o primeiro projeto Android
Selecione a opção de criação de novo projeto.
76Mobile Image Processing26/11/2014
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
Deixe como está, apenas “dê next”
78Mobile Image Processing26/11/2014
Tela de customização do ícone.
79Mobile Image Processing26/11/2014
Tela de escolha do esqueleto inicial da primeira tela de seu
aplicativo. Selecionaremos a tela vazia.
80Mobile Image Processing26/11/2014
Definiremos os nomes da classe principal e do arquivo de
layout dela
81Mobile Image Processing26/11/2014
Projeto criado. Ignore estes erros, se ocorrerem. São bugs
da IDE.
82Mobile Image Processing26/11/2014
Porque foram criados 2 projetos?
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
Estrutura básica de um projeto Android
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
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
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
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
Criando Máquina Virtual usando o AVD Manager
Abriremos o AVD Manager apertando este botão
91Mobile Image Processing
Abrindo o AVD Manager
26/11/2014
Tela inicial do AVD Manager
Aba 1- Android Virtual Devices
92Mobile Image Processing26/11/2014
Dispositivos Virtuais Android disponíveis. Também
podem ser criados outros
Aba 2- Devices Definitions
93Mobile Image Processing26/11/2014
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
Tela de criação de máquina virtual.
95Mobile Image Processing
Tela de criação de Máquina Virtual
26/11/2014
96Mobile Image Processing
Máquina virtual criada pronta para ser inicializada
26/11/2014
Desmarcar essa
opção para que
fique maior a
tela
97Mobile Image Processing
Máquina virtual criada pronta para ser inicializada
26/11/2014
98Mobile Image Processing
Máquina virtual inicializada
26/11/2014
Executando o primeiro “Hello World”
100Mobile Image Processing
Executando o primeiro projeto
26/11/2014
101Mobile Image Processing
Aplicativo HelloWorld
26/11/2014
Carregando uma imagem da galeria
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
Mudanças no código
104Mobile Image Processing26/11/2014
Mudanças no código
105Mobile Image Processing26/11/2014
Mudanças no código
106Mobile Image Processing26/11/2014
Mudanças no código
107Mobile Image Processing26/11/2014
Mudanças no código
108Mobile Image Processing26/11/2014
Mudanças no código – mudar aqui
109Mobile Image Processing26/11/2014
Mudanças no código
110Mobile Image Processing26/11/2014
Mudanças no código
111Mobile Image Processing26/11/2014
Voltando ao emulador
112Mobile Image Processing26/11/2014
Mudanças no código
113Mobile Image Processing26/11/2014
Mudanças no código
114Mobile Image Processing26/11/2014
Mudanças no código
115Mobile Image Processing26/11/2014
ROTEIRO OPENCV
Importando a biblioteca OpenCV para Android no
Workspace
Página de download do OpenCV
118Mobile Image Processing
1- Baixe o OpenCV
26/11/2014
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
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
Página de download do OpenCV
121Mobile Image Processing
4- Selecione a opção ...marcada de vermelho...
26/11/2014
Tela de importar projetos do Eclipse
122Mobile Image Processing
5- Selecione o diretório do(s) projeto(s) que deseja importar
26/11/2014
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
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
125Mobile Image Processing
8 – A biblioteca aparecerá em seu Workspace
26/11/2014
Instalação do OpenCV Manager no AVD por linha de
comando
• 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
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
Adicionando a biblioteca ao Projeto
130Mobile Image Processing
1- Clique com botão direto do mouse sobre o projeto e selecione a opção
“Properties.
26/11/2014
131Mobile Image Processing
2- Clique em “Android” do lado esquerdo e depois em “Add...” no lado direito
26/11/2014
132Mobile Image Processing
3- Selecione o projeto do OpenCV e clique em “Ok”
26/11/2014
133Mobile Image Processing
4- Verifique se a biblioteca foi adicionada e clique em “Ok”
26/11/2014
134Mobile Image Processing
5- A biblioteca aparecerá em seu Workspace
26/11/2014
Processamento de imagens pela primeira vez
(sem OpenCV)
1- Imagem em tons de cinza (sem OpenCV)
Mobile Image Processing 13626/11/2014
1- Imagem em tons de cinza (sem OpenCV)
Mobile Image Processing 13726/11/2014
1- Imagem em tons de cinza (sem OpenCV)
Mobile Image Processing 13826/11/2014
• 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
Processamento de imagens pela segunda vez
(Agora usando OpenCV)
Segmentando o olho do Android
Nível de cinza
Detecção de
Bordas
Buscar olhos
Metodologia
102Mobile Image Processing26/11/2014
142Mobile Image Processing
Resultado a ser alcançado
26/11/2014
0- Chamada à biblioteca
Estes métodos
SEMPRE devem ser
chamados em sua
Activity principal.
104Mobile Image Processing26/11/2014
2- Imagem em tons de cinza (com OpenCV)
Mobile Image Processing 14426/11/2014
• 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
3- Detecção de bordas com Canny - Teoria
Exemplos:
Mobile Image Processing 16026/11/2014
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
3- Detecção de bordas com Canny
Mobile Image Processing 16226/11/2014
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
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
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
4- Buscando os olhos do Android na Imagem - delimitar
Mobile Image Processing 16626/11/2014
4- Buscando os olhos do Android na Imagem - exibir
Mobile Image Processing 16726/11/2014
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
Manipulando pixels com OpenCV
Manipulando pixels com OpenCV
Trocando o verde pelo azul
130Mobile Image Processing26/11/2014
Manipulando pixels com OpenCV
131Mobile Image Processing
Gerando o instalador (.apk)
Gerando o instalador
133Mobile Image Processing26/11/2014
Gerando o instalador
134Mobile Image Processing26/11/2014
Gerando o instalador
135Mobile Image Processing26/11/2014
Gerando o instalador
136Mobile Image Processing26/11/2014
Gerando o instalador
137Mobile Image Processing26/11/2014
Gerando o instalador
138Mobile Image Processing26/11/2014
Gerando o instalador
139Mobile Image Processing26/11/2014
Gerando o instalador
140Mobile Image Processing26/11/2014
Gerando o instalador
141Mobile Image Processing26/11/2014
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
183Mobile Image Processing
Dúvidas ?
26/11/2014
184Mobile Image Processing
Até a próxima
26/11/2014

Mais conteúdo relacionado

Destaque

Sistem Kardiovaskular Jantung - 5.1 Keluaran Jantung
Sistem Kardiovaskular Jantung - 5.1 Keluaran JantungSistem Kardiovaskular Jantung - 5.1 Keluaran Jantung
Sistem Kardiovaskular Jantung - 5.1 Keluaran Jantungkakapalapes
 
Design de Interação e Inovação
Design de Interação e InovaçãoDesign de Interação e Inovação
Design de Interação e InovaçãoErico Fileno
 
Baby boomers and x and y generation
Baby boomers and x and y generationBaby boomers and x and y generation
Baby boomers and x and y generationArslan Rafiq
 
13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo FísicoPhilippe Elias
 
Search Exchange Analytics Insights
Search Exchange Analytics InsightsSearch Exchange Analytics Insights
Search Exchange Analytics InsightsBrian McDowell
 

Destaque (7)

Daftar obat ugd
Daftar obat ugdDaftar obat ugd
Daftar obat ugd
 
Sistem Kardiovaskular Jantung - 5.1 Keluaran Jantung
Sistem Kardiovaskular Jantung - 5.1 Keluaran JantungSistem Kardiovaskular Jantung - 5.1 Keluaran Jantung
Sistem Kardiovaskular Jantung - 5.1 Keluaran Jantung
 
Design de Interação e Inovação
Design de Interação e InovaçãoDesign de Interação e Inovação
Design de Interação e Inovação
 
Baby boomers and x and y generation
Baby boomers and x and y generationBaby boomers and x and y generation
Baby boomers and x and y generation
 
Analisa Aspek Teknis
Analisa Aspek TeknisAnalisa Aspek Teknis
Analisa Aspek Teknis
 
13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico
 
Search Exchange Analytics Insights
Search Exchange Analytics InsightsSearch Exchange Analytics Insights
Search Exchange Analytics Insights
 

Semelhante a Mobile Image Processing - JIM 2014

Como construir uma boa realidade aumentada
Como construir uma boa realidade aumentadaComo construir uma boa realidade aumentada
Como construir uma boa realidade aumentadaVinícius da Costa
 
Apostila de Introdução ao Infraworks LT
Apostila de Introdução ao Infraworks LTApostila de Introdução ao Infraworks LT
Apostila de Introdução ao Infraworks LTOsvaldo Júnior
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Marcelo Marques Gonçalves
 
Microsoft research e inovação
Microsoft research e inovaçãoMicrosoft research e inovação
Microsoft research e inovaçãoVitor Ciaramella
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenhariabruno2003sp
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisIgor José F. Freitas
 
Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos
Animação Foto-Realista de Fluidos Utilizando Métodos LagrangeanosAnimação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos
Animação Foto-Realista de Fluidos Utilizando Métodos LagrangeanosJoão Vicente P. Reis Fo.
 
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...Michel Meneses
 
Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...
Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...
Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...Ricardo Ferreira
 
CV - JCP Maio 2015_Brasil_atz
CV - JCP Maio 2015_Brasil_atzCV - JCP Maio 2015_Brasil_atz
CV - JCP Maio 2015_Brasil_atzKarlos Paiva
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservicesDanilo Iurovski
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebJorge Roberto
 
18.ago ouro i 11.15_463_copel-d
18.ago ouro i 11.15_463_copel-d18.ago ouro i 11.15_463_copel-d
18.ago ouro i 11.15_463_copel-ditgfiles
 
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_juniorJuarez Junior
 
Five Minute Speech - Academic Interests, Current Works and Experiences.
Five Minute Speech - Academic Interests, Current Works and Experiences.Five Minute Speech - Academic Interests, Current Works and Experiences.
Five Minute Speech - Academic Interests, Current Works and Experiences.Michel Alves
 
Desenvolvimento de software autônomo para determinação e controle de órbita e...
Desenvolvimento de software autônomo para determinação e controle de órbita e...Desenvolvimento de software autônomo para determinação e controle de órbita e...
Desenvolvimento de software autônomo para determinação e controle de órbita e...Opencadd Advanced Technology
 

Semelhante a Mobile Image Processing - JIM 2014 (20)

Como construir uma boa realidade aumentada
Como construir uma boa realidade aumentadaComo construir uma boa realidade aumentada
Como construir uma boa realidade aumentada
 
Apostila de Introdução ao Infraworks LT
Apostila de Introdução ao Infraworks LTApostila de Introdução ao Infraworks LT
Apostila de Introdução ao Infraworks LT
 
INOVADEF - Apresentação Marcelo Lopes
INOVADEF - Apresentação Marcelo LopesINOVADEF - Apresentação Marcelo Lopes
INOVADEF - Apresentação Marcelo Lopes
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Microsoft research e inovação
Microsoft research e inovaçãoMicrosoft research e inovação
Microsoft research e inovação
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenharia
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades Computacionais
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Final
 
Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos
Animação Foto-Realista de Fluidos Utilizando Métodos LagrangeanosAnimação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos
Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos
 
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
 
Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...
Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...
Transformando Grandes Volumes de Dados em Insight em Tempo Real usando Fast D...
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
CV - JCP Maio 2015_Brasil_atz
CV - JCP Maio 2015_Brasil_atzCV - JCP Maio 2015_Brasil_atz
CV - JCP Maio 2015_Brasil_atz
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservices
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na Web
 
18.ago ouro i 11.15_463_copel-d
18.ago ouro i 11.15_463_copel-d18.ago ouro i 11.15_463_copel-d
18.ago ouro i 11.15_463_copel-d
 
Palestra realidade aumentada
Palestra   realidade aumentadaPalestra   realidade aumentada
Palestra realidade aumentada
 
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
 
Five Minute Speech - Academic Interests, Current Works and Experiences.
Five Minute Speech - Academic Interests, Current Works and Experiences.Five Minute Speech - Academic Interests, Current Works and Experiences.
Five Minute Speech - Academic Interests, Current Works and Experiences.
 
Desenvolvimento de software autônomo para determinação e controle de órbita e...
Desenvolvimento de software autônomo para determinação e controle de órbita e...Desenvolvimento de software autônomo para determinação e controle de órbita e...
Desenvolvimento de software autônomo para determinação e controle de órbita e...
 

Mobile Image Processing - JIM 2014

  • 1. Mobile Image Processing Thales Levi Azevedo Valente João Dallyson Sousa de Almeida
  • 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. 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. 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. 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
  • 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. Sistema de Processamento de Imagem Digital 8Mobile Image Processing26/11/2014
  • 9. Plataformas Mobile Populares 9Mobile Image Processing26/11/2014
  • 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. API do Android 11Mobile Image Processing26/11/2014
  • 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
  • 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. 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. 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. 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. 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. Definição de Classe Java 19Mobile Image Processing26/11/2014
  • 20. Ex: Programa que cria e manipula conta 20Mobile Image Processing26/11/2014
  • 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. Herança em Java 22Mobile Image Processing26/11/2014
  • 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. 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. Etapas do Processamento de Imagens 26Mobile Image Processing26/11/2014
  • 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. Relacionamento entre pixels • Operações aritméticas entre 2 pixels – Subtração 28Mobile Image Processing26/11/2014
  • 29. Relacionamento entre pixels  Operações lógicas entre 2 pixels Mobile Image Processing26/11/2014 27
  • 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. 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. 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. Melhoramento de Imagens  Equalização do Histograma  Exemplo Mobile Image Processing26/11/2014 31
  • 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. Exemplos Processamento de Imagens • Melhoramento de Imagens 35Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  • 36. Exemplos Processamento de Imagens • Redução de Ruídos 36Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  • 37. Exemplos Processamento de Imagens • Efeitos especiais 37Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  • 38. Exemplos Processamento de Imagens • Detecção de Faces 38Mobile Image Processing FONTE: [GIRORD, 2013] 26/11/2014
  • 39. Exemplos Processamento de Imagens • Aplicações na Oftalmologia 39Mobile Image Processing26/11/2014
  • 41. Preparando o ambiente de desenvolvimento Android – Passo a Passo
  • 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. 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. 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. Página de download do Eclipse ADT Baixe a IDE Eclipse ADT no site da Google. 45Mobile Image Processing26/11/2014
  • 46. Página de download do Eclipse ADT Baixe a IDE Eclipse ADT no site da Google. 46Mobile Image Processing26/11/2014
  • 47. Descompacte a IDE Elipse ADT e o Android SDK 47Mobile Image Processing26/11/2014
  • 48. Tela de escolha do workspace Abra o Eclipse e escolha o seu workspace 48Mobile Image Processing26/11/2014
  • 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. Tela inicial da IDE Elipse ADT Verificaremos se o diretório do SDK está correto. 50Mobile Image Processing26/11/2014
  • 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. 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. 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. 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. Fechando o Eclipse ADT Caso apareçam estes erros, apenas reinicie o eclipse e serão resolvidos. 55Mobile Image Processing26/11/2014
  • 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. • É 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. Inicialização do Android SDK Inicialização do Android SDK 58Mobile Image Processing26/11/2014
  • 59. Instalar os Tools, de preferência os mais atualizados por questões de compatibilidade com as APIs 59Mobile Image Processing26/11/2014
  • 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. 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. Depois, instale suas APIs preferenciais. 62Mobile Image Processing26/11/2014
  • 63. Selecionaremos essa API por ainda ser muito utilizada por uma parte do mercado 63Mobile Image Processing26/11/2014
  • 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. • 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. Ao clicar no botão instalar, aceite os termos de compromisso e clique em instalar 66Mobile Image Processing26/11/2014
  • 67. As bibliotecas serão baixadas e o SDK Manager será reiniciado. 67Mobile Image Processing26/11/2014
  • 68. Ciclo de vida de uma Activity
  • 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. 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. • 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. • 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. Mobile Image Processing 7326/11/2014
  • 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. Criando o primeiro projeto Android
  • 76. Selecione a opção de criação de novo projeto. 76Mobile Image Processing26/11/2014
  • 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. Deixe como está, apenas “dê next” 78Mobile Image Processing26/11/2014
  • 79. Tela de customização do ícone. 79Mobile Image Processing26/11/2014
  • 80. Tela de escolha do esqueleto inicial da primeira tela de seu aplicativo. Selecionaremos a tela vazia. 80Mobile Image Processing26/11/2014
  • 81. Definiremos os nomes da classe principal e do arquivo de layout dela 81Mobile Image Processing26/11/2014
  • 82. Projeto criado. Ignore estes erros, se ocorrerem. São bugs da IDE. 82Mobile Image Processing26/11/2014
  • 83. Porque foram criados 2 projetos?
  • 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. Estrutura básica de um projeto Android
  • 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. 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. 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. 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. Criando Máquina Virtual usando o AVD Manager
  • 91. Abriremos o AVD Manager apertando este botão 91Mobile Image Processing Abrindo o AVD Manager 26/11/2014
  • 92. Tela inicial do AVD Manager Aba 1- Android Virtual Devices 92Mobile Image Processing26/11/2014
  • 93. Dispositivos Virtuais Android disponíveis. Também podem ser criados outros Aba 2- Devices Definitions 93Mobile Image Processing26/11/2014
  • 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. Tela de criação de máquina virtual. 95Mobile Image Processing Tela de criação de Máquina Virtual 26/11/2014
  • 96. 96Mobile Image Processing Máquina virtual criada pronta para ser inicializada 26/11/2014
  • 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. 98Mobile Image Processing Máquina virtual inicializada 26/11/2014
  • 99. Executando o primeiro “Hello World”
  • 100. 100Mobile Image Processing Executando o primeiro projeto 26/11/2014
  • 101. 101Mobile Image Processing Aplicativo HelloWorld 26/11/2014
  • 102. Carregando uma imagem da galeria
  • 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. Mudanças no código 104Mobile Image Processing26/11/2014
  • 105. Mudanças no código 105Mobile Image Processing26/11/2014
  • 106. Mudanças no código 106Mobile Image Processing26/11/2014
  • 107. Mudanças no código 107Mobile Image Processing26/11/2014
  • 108. Mudanças no código 108Mobile Image Processing26/11/2014
  • 109. Mudanças no código – mudar aqui 109Mobile Image Processing26/11/2014
  • 110. Mudanças no código 110Mobile Image Processing26/11/2014
  • 111. Mudanças no código 111Mobile Image Processing26/11/2014
  • 112. Voltando ao emulador 112Mobile Image Processing26/11/2014
  • 113. Mudanças no código 113Mobile Image Processing26/11/2014
  • 114. Mudanças no código 114Mobile Image Processing26/11/2014
  • 115. Mudanças no código 115Mobile Image Processing26/11/2014
  • 117. Importando a biblioteca OpenCV para Android no Workspace
  • 118. Página de download do OpenCV 118Mobile Image Processing 1- Baixe o OpenCV 26/11/2014
  • 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. 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. Página de download do OpenCV 121Mobile Image Processing 4- Selecione a opção ...marcada de vermelho... 26/11/2014
  • 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. 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. 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. 125Mobile Image Processing 8 – A biblioteca aparecerá em seu Workspace 26/11/2014
  • 126. Instalação do OpenCV Manager no AVD por linha de comando
  • 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. 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
  • 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. 131Mobile Image Processing 2- Clique em “Android” do lado esquerdo e depois em “Add...” no lado direito 26/11/2014
  • 132. 132Mobile Image Processing 3- Selecione o projeto do OpenCV e clique em “Ok” 26/11/2014
  • 133. 133Mobile Image Processing 4- Verifique se a biblioteca foi adicionada e clique em “Ok” 26/11/2014
  • 134. 134Mobile Image Processing 5- A biblioteca aparecerá em seu Workspace 26/11/2014
  • 135. Processamento de imagens pela primeira vez (sem OpenCV)
  • 136. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13626/11/2014
  • 137. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13726/11/2014
  • 138. 1- Imagem em tons de cinza (sem OpenCV) Mobile Image Processing 13826/11/2014
  • 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. Processamento de imagens pela segunda vez (Agora usando OpenCV)
  • 141. Segmentando o olho do Android Nível de cinza Detecção de Bordas Buscar olhos Metodologia 102Mobile Image Processing26/11/2014
  • 142. 142Mobile Image Processing Resultado a ser alcançado 26/11/2014
  • 143. 0- Chamada à biblioteca Estes métodos SEMPRE devem ser chamados em sua Activity principal. 104Mobile Image Processing26/11/2014
  • 144. 2- Imagem em tons de cinza (com OpenCV) Mobile Image Processing 14426/11/2014
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 3- Detecção de bordas com Canny - Teoria Exemplos: Mobile Image Processing 16026/11/2014
  • 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. 3- Detecção de bordas com Canny Mobile Image Processing 16226/11/2014
  • 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. 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. 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. 4- Buscando os olhos do Android na Imagem - delimitar Mobile Image Processing 16626/11/2014
  • 167. 4- Buscando os olhos do Android na Imagem - exibir Mobile Image Processing 16726/11/2014
  • 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
  • 170. Manipulando pixels com OpenCV Trocando o verde pelo azul 130Mobile Image Processing26/11/2014
  • 171. Manipulando pixels com OpenCV 131Mobile Image Processing
  • 173. Gerando o instalador 133Mobile Image Processing26/11/2014
  • 174. Gerando o instalador 134Mobile Image Processing26/11/2014
  • 175. Gerando o instalador 135Mobile Image Processing26/11/2014
  • 176. Gerando o instalador 136Mobile Image Processing26/11/2014
  • 177. Gerando o instalador 137Mobile Image Processing26/11/2014
  • 178. Gerando o instalador 138Mobile Image Processing26/11/2014
  • 179. Gerando o instalador 139Mobile Image Processing26/11/2014
  • 180. Gerando o instalador 140Mobile Image Processing26/11/2014
  • 181. Gerando o instalador 141Mobile Image Processing26/11/2014
  • 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
  • 184. 184Mobile Image Processing Até a próxima 26/11/2014