Este documento fornece um resumo do processo de configuração do ambiente de desenvolvimento Android usando a IDE Eclipse ADT. Ele explica como baixar e instalar o Java JRE/JDK, o Eclipse ADT e o Android SDK, e como configurar o diretório do SDK dentro do Eclipse. Também mostra como usar o SDK Manager para instalar as ferramentas e plataformas necessárias.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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