Enunciado

Propaganda
Universidade Federal de Minas Gerais
Departamento de Ciência da Computação
Programação Modular (DCC052) – 2014/1
Prof. Jefersson Alex dos Santos ([email protected])
Sistema de Busca por Anotação de
Regiões em Imagens
TP3 - Interface de Anotação
1
Descrição
A terceira parte do trabalho prático consiste em implementar a interface gráfica de anotação de imagens.
A interface deverá ser implementada como um módulo do projeto completo, tendo como requisitos as
seguintes tarefas:
1. Mostrar uma dada imagem;
2. Permitir que o usuário selecione uma ou mais regiões da imagem com o mouse;
3. Mostrar as regiões selecionadas em tempo real.
4. Permitir que o usuário associe um conteúdo textual à imagem.
O módulo deverá utilizar uma biblioteca externa de manipulação e renderização de imagens (Java2D,
JAI, ImageJ, por exemplo). Um código de exemplo, utilizando o JAI, está disponı́vel em: http://
homepages.dcc.ufmg.br/~jefersson/cursos/dcc052/tp3.zip
Note que o módulo deve ser implementado como uma parte independente dos outros componentes gráficos de interface com o usuário (botões, caixas de texto, etc). Isso significa que ele poderá
ser reutilizado em diferentes aplicativos sem que seja necessária nenhuma alteração.
Sugestão: embora a avaliação do projeto completo seja feita apenas no final do curso, aproveite este TP
para projetar e iniciar a implementação do restante das classes necessárias para o módulo de anotação
de acordo com a aplicação alvo (fenologia, área urbana, moda, etc).
2
Objetivos
Os objetivos desse trabalho prático são:
• Implementar um dos módulos do projeto prático da disciplina;
• Exercitar conceitos de modularização e reutilização de código;
• Ter um primeiro contato com manipulação de eventos em Java;
• Utilizar uma biblioteca ou API externa em projeto.
1
3
Avaliação
Cada dupla deverá entregar:
• Relatório (três ou quatro páginas) explicando como o projeto foi modelado e o uso da biblioteca
externa utilizada (vantagens/desvantagens). As seguintes perguntas devem ser respondidas:
– Como o módulo implementando se comunicará com o restante do projeto?
– É possı́vel alterar o módulo para implementar zoom?
– Como outras funcionalidades poderiam ser inseridas no módulo?
– Que refatorações poderiam ser feitas para melhorar o código atual? Por quê?
• Arquivo .jar executável. O módulo deverá ser utilizado em um aplicativo capaz de: ler uma
imagem do disco, anotar regiões e salvar tudo em um arquivo de propriedades. Sugestão: utilize a
ferramenta Swing GUI Builder do NetBeans para criar os componentes dessa interface gráfica.
• Código do módulo implementado. O código deve ser comentado de acordo com os padrões da
ferramenta Javadoc1 .
A distribuição dos pontos será feita da seguinte forma: 2 pontos para o relatório; 1 ponto para
funcionamento correto do aplicativo executável e; 2 pontos para clareza e qualidade do código do módulo
implementado (comentários Javadoc e integração com a biblioteca externa).
4
Referências Externas e Links Úteis
Documentação e guia de instalação do Java e da Plataforma Eclipse:
• http://www.ic.unicamp.br/~santanch/teaching/oop/oop0101.html
Manipulação de eventos em Java:
• Core Java 2 - Volume I Fundamentos, Capı́tulo 8.
Interface gráfica em Java
• Core Java 2 - Volume I Fundamentos, Capı́tulo 9.
• Swing GUI Builder do NetBeans (Tutorial): https://netbeans.org/features/java/swing.html
Arquivo de propriedades (properties)
• Exemplo: http://www.mkyong.com/java/java-properties-file-examples/
Bibliotecas e APIs de manipulação e renderização de imagens
• Java Advanced Imaging (JAI): Tutorial disponı́vel no Moodle.
• Java 2D: Core Java 2 - Volume I Fundamentos, Capı́tulo 7 (Imagens).
• ImageJ: http://www.imagesurvey.com.br/2009/02/como-usar-o-imagej/
1
http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html
2
Download