SImPLe: uma Ferramenta de Suporte ao Processo de Ensino

Propaganda
SImPLe: uma Ferramenta de Suporte
ao Processo de Ensino-Aprendizagem
de Processamento Digital de Imagens
José Eustáquio Rangel de Queiroz
Paulo de Tarso Firmino Júnior
André Cavalcante Hora
Vinícius de Araújo Porto
Departamento de Sistemas e Computação
Universidade Federal de Campina Grande (UFCG)
CEP.: 58109-970 – Campina Grande – PB – Brasil
{rangel, paulodt, andrech, vporto}@dsc.ufcg.edu.br
Resumo
Processamento digital de imagens (PDI) é uma área da pesquisa científica bastante produtiva e
desafiadora, com uma gama variada de aplicações em diversos ramos da iniciativa científica,
comercial, e técnica. Contudo, apesar de seu cunho eminentemente prático, grande parte das
iniciativas de ensino/aprendizagem de PDI adota uma estratégia predominantemente teórica. A
fim de desenvolver habilidades práticas em PDI, o uso de ferramentas educacionais para o
ensino/aprendizagem prático parece ser uma estratégia bastante satisfatória e efetiva. SImPLe é
um sistema projetado e implementado em Java para oferecer apoio ao aprendizado de uma
série de funcionalidades básicas e avançadas a estudantes de PDI.
Palavras-Chave: Processamento digital de imagens, software educacional, processo interativo
de ensino-aprendizagem, ensino-aprendizagem de processamento de imagens
Abstract Digital image processing (DIP) is a very productive and challenging scientific research domain
with a varied plethora of applications in diverse fields of scientific, commercial, and technical
endeavor. Nonetheless, in spite of being a very practical discipline, it is perceived as being
rather theoretical. It is equally important for the students to be able to implement it in a practical way and use it effectively. To develop the DPI practical skills, the use of educational tools
for practical teaching appears to be a very suitable and effective strategy. SImPLe is a system
designed and implemented in Java language to give students a powerful collection of fundamental and advanced image processing tools on the desktop.
Keywords: Digital image processing, educational software, interactive education, image processing education
Queiroz, J. E. R. et al.
1. Introdução
Os avanços nos modos de aquisição de imagens, aliado ao crescente poder de processamento do hardware
computacional e ao aprimoramento das tecnologias de
especificação e implementação de ferramentas, vêm tornando o processamento digital de imagens umas das principais estratégias para a resolução de problemas de naturezas as mais diversas em áreas como a Medicina, Biologia, Sensoriamento Remoto, Meteorologia, Automação
Industrial, Engenharia, Geologia, Agronomia, História e
Artes, dentre inúmeras outras.
O Processamento Digital de Imagens (PDI) é, hoje em
dia, uma área de ensino em diversos cursos superiores,
tais como Engenharia Elétrica/Eletrônica, Ciência/ Engenharia da Computação, Meteorologia, Engenharia de
Minas/Geologia e Agronomia/Engenharia Agrícola, dentre outros. Nos dias atuais, o uso de imagens digitais no
quotidiano de profissionais de praticamente todas as áreas
é um fato. As novas possibilidades de comunicação demandam uma dinâmica de tempo e espaço que ultrapassam fronteiras. Neste contexto, o uso de imagens tem
feito parte do cotidiano humano como um dos meios mais
importantes da comunicação.
Apesar de serem áreas bem consolidadas do conhecimento científico, as pesquisas em processamento, síntese
e análise de imagens, prosseguem, não só devido à disponibilidade cada vez maior de computadores cada vez mais
velozes e dispositivos de armazenamento de custos cada
vez menores e capacidades cada vez maiores, mas também em virtude de novos desafios impostos por aplicações cada vez mais diversificadas, as quais exigem o
suporte ao processamento à análise e ao reconhecimento
de padrões de imagens das mais diversas naturezas. Verifica-se uma abundância de técnicas atualmente empregadas extensivamente em diversas áreas do conhecimento
humano (e.g., sistemas multimídia, comunicação segura
de dados, imageamento biomédico, recuperação de imagens baseada em conteúdo, sensoriamento remoto, robótica).
PDI vem despertando, sobretudo nas duas últimas décadas, considerável interesse de outras áreas do conhecimento, tais como redes neurais, teoria de wavelets, morfologia matemática, compressão e reconhecimento de dados, e inteligência artificial. Desde então, diversos modelos de sistemas para processamento digital de imagens
(PDI) têm sido propostos e comercializados no mundo
inteiro Gonzalez e Woods [1].
Entre meados das décadas de 80 e 90, com a progressiva redução nos custos das tecnologias de hardware, as
tendências de mercado se voltaram para as placas projetadas, segundo padrões industriais, para uso em computa-
2
RBIE V.15 N.2 – 2007
dores pessoais e estações de trabalho, diversas empresas
que especializaram na especificação/implementação de
software dedicado ao PDI. Atualmente, o uso extensivo
de sistemas desta natureza ainda é um fato, sobretudo em
aplicações de sensoriamento remoto (processamento de
produtos aerofotogramétricos e orbitais) e imageamento
biomédico (processamento de imagens geradas a partir de
MR, CT, PET/ SPEC, tomografia óptica, ultra-sonografia
e raios X) Queiroz e Gomes [2]. Contudo, tendências
recentes apontam para a miniaturização e integração do
hardware especializado para processamento de imagens a
computadores de pequeno porte, de uso geral. É nesse
contexto que também se insere a demanda crescente por
software para PDI.
O ensino de PDI constitui um desafio, uma vez que
implica a apresentação, para uma audiência cada vez mais
heterogênea, de tópicos interdisciplinares relacionados a
conceitos de uma diversidade de áreas, e.g., Psicofísica
visual, Neurofisiologia, Óptica, Álgebra Linear, Cálculo,
Estatística, Física, Eletrônica e Ciência da Computação.
Neste sentido, a necessidade de ferramentas e técnicas
para o processo de ensino/aprendizagem efetivo de conceitos de PDI, com o mínimo de formalismo matemático,
se afigura de elevado interesse e tem se tornado uma
iniciativa relevante nos últimos anos.
O principal obstáculo enfrentado por estudantes é que
o formalismo matemático que descreve conceitos fundamentais de PDI se afigura, muitas vezes, confuso e de
difícil absorção. Muitos cursos introdutórios de PDI tentam contornar este obstáculo com exercícios fundamentados no uso de software computacional, a fim de reforçar
conceitos concretos básicos. Todavia, o que ocorre muito
freqüentemente é que a atenção do estudante desvia-se da
assimilação dos conceitos de PDI para a familiarização
com a ferramenta de software usada. Uma ferramenta
capaz de oferecer aos seus usuários a possibilidade de
aquisição e análise de conhecimentos teóricos de PDI a
partir da obtenção de resultados práticos mediante a aplicação de diversos algoritmos a imagens possibilita acelerar o processo de ensino/aprendizagem.
Mesmo se tratando de um tópico que envolve um
grande nível de abstração, além de um tratamento matemático rigoroso, a educação em PDI não necessita apenas
do desenvolvimento e da compreensão de tal conhecimento matemático. É igualmente importante para os estudantes a implementação e o uso desse conhecimento de
um modo prático e efetivo. Um conjunto de funcionalidades de fácil uso que ilustrem os conceitos essenciais para
o aprendizado de PDI se afigura ao estudante uma estratégia útil e eficaz à experimentação e assimilação mais
imediata dos conceitos de interesse, isenta da necessidade
de assimilação de complexidades de programação. Por
outro lado, se também for incorporada a possibilidade de
Queiroz, E. R. et al.
reuso das funcionalidades por estudantes de programação,
tal estratégia possibilitará a implementação de novas
funcionalidades.
System for Image Processing Learning
et al. [3]), MATLAB (e.g., Rajashekar & Bovik [4]) e
LabVIEW (e.g., Panayi et al. [5]), Khoros [6], VisiLog
[7], AVS [8], IDL [9], ImageMagik [10], dentre outras
[11]. Outras ferramentas desfrutam da vantagem da independência de plataforma inerente da linguagem Java (e.g.,
Rasband [12]).
Esta foi a motivação para a especificação e implementação, em linguagem Java, da ferramenta SImPLe (System
for Image Processing Learning). SImPLe tem como propósito oferecer a estudantes de PDI um ambiente em que
possam facilmente assimilar conceitos e exercitar técnicas
de PDI de diferentes naturezas. Sua arquitetura incorpora
três módulos, a saber: (i) módulo da interface gráfica; (ii)
módulo da funcionalidade; e (iii) módulo de controle, de
acordo com o padrão MVC, o qual será melhor detalhado
na seção 3.1 deste artigo. Tal modularidade visa possibilitar flexibilidade no aproveitamento da estrutura especificada e implementada, através de análise/adaptação do
código-fonte previamente escrito com fins à alteração de
funcionalidades já existentes e/ou à criação de novas
funcionalidades de PDI.
Frojmowicz e Santos [13] implementaram em linguagem Delphi, na Universidade de Algarve (Portugal),
IPTool, uma ferramenta configurável e extensível. Segundo os autores, IPTool possibilita operações simples
em nível de pixel a partir de diversas funcionalidades, a
saber: filtragem linear e não-linear, detecção de bordas,
segmentação, modelos de ruído, região de interesse, morfologia matemática (como erosão e dilatação), operações
do domínio da freqüência e filtragem de Gabor. Como
funções adicionais, porém não menos importantes, estão o
suporte a scripts, a configuração de idiomas e a ajuda
sensível ao contexto de cada funcionalidade.
O restante deste artigo está estruturado como segue. A
seção 2 contém uma breve revisão de ferramentas acadêmicas destinadas ao processamento digital de imagens.
Na seção 3, descrevem-se, em linhas gerais, a especificação e a implementação da ferramenta SImPLe. Na seção
4, são apresentadas as principais funcionalidades oferecidas por SImPLe. Finalmente, a seção 5 contém algumas
considerações finais sobre o uso da ferramenta em atividades de ensino/aprendizagem.
Almeida et al. [14] descreveram uma ferramenta de
código aberto implementada em Java, na Universidade
Federal de Minas Gerais, denominada PhotoPixJ. Tratase de uma plataforma destinada à execução e integração
de algoritmos de PDI, a qual visa proporcionar a fácil
adição de novos algoritmos. A ferramenta proporciona
grande ganho de produtividade ao desenvolvedor de PDI
devido ao alto nível de abstração da sua implementação.
PhotoPixJ também se aplica a atividades educacionais.
2. Ferramentas Afins
Grgic et al. [15] descreveram uma ferramenta, denominada ImAn, desenvolvida na Faculdade de Engenharia
Elétrica e Computação da Universidade de Zagreb (Croácia), com o propósito de combinar a teoria e a prática de
PDI no tocante à análise de suas propriedades e de possibilitar estudos estatísticos no domínio da freqüência. Uma
das funções da ImAn que merece destaque consiste na
auto-correlação (medida que fornece o grau de relação)
para linhas e colunas, a qual pode servir para avaliar a
qualidade de alguns algoritmos de segmentação. A análise
da freqüência é realizada aplicando DTF (Discrete Fourier
Transform) na imagem de interesse do usuário.
A ferramenta SImPLe surgiu a partir de exercícios da
disciplina Processamento Digital de Imagens, propostos
a alunos do curso de Bacharelado em Ciência da Computação da Universidade Federal de Campina Grande
(UFCG). De posse das melhores soluções para os problemas propostos, um arcabouço de integração, assim
como a interface gráfica com o usuário, foram especificados como um dos projetos da disciplina Interface Homem-Máquina, oferecida a alunos do Curso de Pósgraduação em Informática (COPIN) da UFCG. A especificação de SImPLe resultou da análise de várias ferramentas destinadas ao ensino/aprendizagem de PDI.
Diversas contribuições relevantes têm sido apresentadas para o ensino/aprendizagem de PDI, tanto em nível
comercial quanto acadêmico. Nos dias atuais, verifica-se
uma grande variedade de pacotes stand-alone ou baseados na Web com o propósito de suporte ao aprendizado
de PDI, os quais estão disponíveis para compra ou cópia
gratuita. Em geral, tratam-se de sistemas implementados
em C/C++, C# e Java.
No tocante às iniciativas acadêmicas, encontram-se na
literatura da área vários registros de ferramentas desenvolvidas a partir de recursos do Mathematica (e.g., Evans
ImageJ [12] é uma ferramenta de domínio público desenvolvida em linguagem Java no National Institute of
Mental Health (Estados Unidos). Pode ser executada
como uma applet ou instalada em qualquer computador
que possua máquina virtual J2SE 1.1 ou superior. Dentre
algumas das funções disponíveis, destacam-se as funções
de processamento de imagem tais como: manipulação de
contraste, filtragem da mediana, detecção de bordas,
transformações geométricas (rotação, redimensionamento
e zoom), conversão entre modelos cromáticos, transformada de Fourier rápida, dilatação, erosão, além de operações aritméticas. Segundo o autor, ImageJ também suporta a abertura simultânea de várias imagens, tendo sido
desenvolvida para prover a extensão de plugins Bailer
3
Queiroz, J. E. R. et al.
RBIE V.15 N.2 – 2007
[16].
Benitez et al. [17] projetaram e implementaram TermUV, uma ferramenta modular acadêmica destinada ao
processamento digital de imagens termais, a qual possibilita a aquisição, o pré–processamento e o processamento
de imagens termais mediante uma interface gráfica, gerando posteriormente relatórios e armazenando os resultados do processamento em um banco de dados. Segundo
os autores, cada estágio do processo foi especificado e
implementado segundo critérios de modularidade, flexibilidade e portabilidade.
3. Especificação e Implementação da
ferramenta SImPLe
Conforme anteriormente mencionado, o projeto da interface gráfica de SImPLe consistiu em uma das atividades de avaliação da disciplina de Projeto de Interface
Homem-Máquina do Curso de Pós-graduação em Informática (COPIN) da UFCG.
3.1. Processo de Desenvolvimento e Arquitetura Adotada
O processo de desenvolvimento de software utilizado
na especificação de SImPLe foi o EasyProcess [18], um
processo simples, iterativo e incremental que combina os
principais conceitos do XP [19], RUP [20] e Agile Mode-
VIEW
Usuário
ling [21], surgindo da necessidade de se utilizar melhores
práticas para o desenvolvimento de software no meio
acadêmico, visando um maior sucesso em sua implementação.
A arquitetura de SImPLe baseia-se no MVC (ModelView-Controller) [22] que, apesar de não ser exatamente
um padrão, é uma arquitetura para GUI freqüentemente
adotada em Engenharia de Software.
O MVC visa a separação entre a lógica da aplicação
(Model), a interface com o usuário (View) e o fluxo da
aplicação (Controller), oferecendo ao usuário a possibilidade de extensão dos módulos na implementação de
novas funcionalidades. Assim sendo, a interface ou,
pelo menos, parte dela é dividida em três partes, de
forma a possibilitar que o estado de um objeto possa ter
várias e, possivelmente, diferentes apresentações.
Esta arquitetura tem como elementos participantes o
Model, que gerencia as informações e notifica as Views
quando as informações são alteradas. View é responsável
pelo mapeamento dos dados de um modelo em uma componente gráfica. Estando associada ao Model, View o
apresenta graficamente na componente, refletindo automaticamente todas as suas modificações mediante a reapresentação da informação. O Controller está associado
ao modo como o usuário interage com o Model (vide
Figura 1).
Entrada de
CONTROLLER
informações
Interface com
o Usuário
Fluxo da
Aplicação
Alteração do MODELO
(business logic)
Lançamento de
eventos pelo
MODELO
Aplicação
MODEL
Figura 1: Padrão arquitetural MVC.
No desenvolvimento da ferramenta foram utilizados
diversos modelos de projetos (design patterns) a saber:
Façade, Singleton e Abstract Factory [23].
O padrão Singleton atua de modo a garantir que uma
classe possua somente uma instância, assim como para
fornecer um ponto global de acesso a tal instância. Esse
padrão tem como participante único a classe a ser instanciada unicamente (Singleton). Os clientes obtêm um objeto da classe Singleton solicitando-o à classe. Por sua vez,
a classe Singleton faz o controle do número de instâncias
e, ao solicitar-lhe uma instância, a classe retornará uma já
4
existente, caso esta já exista; caso contrário, será criada
uma instância que será única para todo o sistema.
O padrão Façade fornece uma interface unificada para
um conjunto de interfaces em um subsistema. É definida
uma interface de nível mais alto que torna o subsistema
mais fácil de ser usado por um cliente. Esse padrão tem
como elementos participantes (i) o Façade, que conhece
as classes do subsistema às quais deve delegar solicitações dos clientes e (ii) as classes do subsistema, as quais
devem tratar as solicitações transmitidas pelo Façade.
Como pode ser observado na Figura 2, Façade caracteri-
Queiroz, E. R. et al.
System for Image Processing Learning
za-se por um objeto que fornece uma interface para funcionalidades de uma API, separando a interface com o
usuário da lógica de negócios. O uso desse padrão melhorou o entendimento e a usabilidade da ferramenta,
flexibilizando o desenvolvimento do sistema. O padrão
Singleton é utilizado em conjunto com o padrão Façade,
garantindo uma instância única da classe e facilitando
seu acesso.
Figura 2: Padrão Façade em SimPLe.
O padrão Abstract Factory fornece uma interface
para a criação de uma família de objetos relacionados
ou dependentes sem especificação de suas classes concretas, as quais são mantidas isoladas. A implementação
dos filtros na ferramenta desenvolvida segue o padrão
Abstract Factory, conforme pode ser observado na
Figura 3.
Figura 3: O Padrão Abstract Factory na SImPLe.
3.2. Implementação de SImPLe
SImPLe foi desenvolvida na plataforma J2SE 1.5 (Java), a partir do ambiente de desenvolvimento Eclipse,
com o propósito de oferecer código aberto ao usuário, de
modo que este possa realizar alterações facilmente em sua
implementação, i.e. alterar funcionalidades existente e/ou
incluir novas funcionalidades. Para auxiliar o desenvol-
5
Queiroz, J. E. R. et al.
vimento dos algoritmos de PDI, utilizou-se a API Java
Advanced Image (JAI) e na aquisição e apresentação de
imagens foram utilizadas classes pré-disponíveis na biblioteca básica da linguagem Java. Os testes de unidade foram
automatizados com o uso do framework Junit.
Uma vez escrita em Java, SImPLe pode ser facilmente
executada ou recompilada em outras plataformas além
daquela de origem. O uso da tecnologia Java apresenta
vantagens em relação à plataforma de desenvolvimento
de SImPLe. Os programas em Java são usualmente compilados para o formato de instruções (bytecodes) de uma
plataforma virtual. Assim, uma aplicação Java, no formato bytecode, pode ser executada em qualquer ambiente
operacional para o qual exista uma implementação da
Máquina Virtual Java. Para se adicionar algoritmos e
outros recursos ou para a implementação de elementos de
interface gráfica, utiliza-se sempre e somente a linguagem
Java e sua biblioteca de classes pré-disponíveis.
O sistema de SImPLe está dividido basicamente
em
cinco pacotes lógicos principais: (i) simple.iu;
(ii) simple.manipulacoes; (iii) simple.operacoes;
(iv)
simple.propriedades; e (v) simple.classificacao.
O pacote simple.iu contém as classes que dizem respeito a interface da ferramenta com o usuário, o pacote
simple.manipulacoes contém classes de representação e
manipulação de imagens. Nos pacotes simple.operacoes
e simple.propriedades estão contidas as classes que
realizam operações e recuperam informações contidas na
imagem respectivamente. Por fim, no pacote
simple.classificacao estão presentes classes responsáveis
pela classificação da imagem.
3.2.1 Pacote simple.iu
Um aspecto importante no desenvolvimento da ferramenta foi a interface com o usuário visto que uma das
principais características de SImPLe é a fácil usabilidade.
O pacote simple.iu é constituído por dois módulos, a
saber: simple.iu.janelas que contêm todas as classes que
representam as janelas da ferramenta onde sua implementação foi realizada com o auxílio da biblioteca javax.swing que possui classes que facilitam a interface
com o usuário. Outro módulo é o simple.iu.som que é
constituído pelas classes de manipulações de sons gerados
pelas ações do usuário durante a manipulação da ferramenta.
3.2.2 Pacote simple.manipulacoes
Para a manipulação de imagens foi utilizada a classe
Image (pacote java.awt) e o pacote java.awt.image da
biblioteca básica de Java, para representação e manipulação, no entanto houve a necessidade da criação de uma
classe para representar o tipo de imagem desenvolvida na
ferramenta, a classe MyImage.
6
RBIE V.15 N.2 – 2007
Além da classe supracitada que se encontra no módulo
simple.manipulacoes.util, existem ainda os módulos
simple.manipulacoes.compressorImagens, responsável
pela compressão de imagens e o módulo simple.manipulacoes.manipularArquivo que possui as classes
que manipulam a imagem tais como abrir, fechar, salvar etc.
3.2.3 Pacote simple.operacoes
Este pacote é responsável pelos algoritmos de PDI da
ferramenta que facilita a adição de novas operações
sobre as imagens de forma rápida e eficiente. Os
módulos existentes nesse pacote são sete, a saber:
(i) simple.operacoes.aritmeticas, cujas classes implementam os algoritmos de adição e subtração de imagens;
(ii) simple.operacoes.filtros, que contém classes que
implementam filtros como Laplaciano e Gaussiano;
(iii) simple.operacoes.geometicas, cujas classes estão
associadas a operações como rotação e zoom das imagens; (iv) simple.operacoes.ruidos, que possui classes
que implementam os geradores de ruído, e.g. ruído saltand-pepper e gaussiano; (v) simple.operacoes.logicas,
cujas classes implementam operações lógicas como AND
e NOT; (vi) simple.operacoes.morfologicas, que contém
classes que implementam os algoritmos morfológicos; e
(vii) simple.operacoes.radiometricas, cujas classes
implementam as funcionalidades tais como conversão em
escala de cinza e binarização.
3.2.4 Pacote simple.propriedades
As imagens possuem diversas propriedades que podem
ser recuperadas e são de fundamental importância para sua
manipulação tais como histograma e coordenadas de pixels.
O módulos desse pacote são cinco, a saber:
(i)
simple.propriedades.coordenadas, cujas classes estão associadas
recuperação
de
informações
da
imagem;
(ii) simple.propriedades.decomporCanais, o qual possui
classes responsáveis pela decomposição/recomposição dos
canais da imagem; (iii) simple.propriedades.histograma,
cujas classes estão associadas à representação de
informações
do
histograma
da
imagem;
(iv) simple.propriedades.pseudoCor, o qual contém classes
responsáveis pela pseudocolorização de imagens monocromáticas; e, por fim, (v) simple.propriedades.requantizar, cujas
classes estão associadas a informações sobre a quantidade de
tons de cinza da imagem e à sua requantização.
3.2.5 Pacote simple.classificacao
O pacote classificação é composto por dois
módulos, a saber: (i) simple.classificacao.segmentacao e
(ii) simple.classificacao.paralelepipedo, os quais são
responsáveis pela realização da segmentação da imagem,
ou seja, divisão da imagem em grupos. As classes desse
pacote foram implementadas de acordo com o padrão
Abstract Factory.
Queiroz, E. R. et al.
System for Image Processing Learning
O diagrama ilustrado na Figura 4 explicita o uso desse
padrão na classe Segmentação, através da
interface
SegmentacaoIF,
da
classe
abstrata
SegmentacaoAbstrata e das
SegmentacaoBasicaAdaptativa,
SegmentacaoOperacao.
classes
concretas
BasicoThreshold e
Figura 4: Padrão Abstract Factory do pacote simple.classificacao.segmentacao
4. Funcionalidades da ferramenta
As funções de SImPLe podem ser acessadas via menus, teclas de atalho, barra de tarefas e menus pop-up.
O menu principal da ferramenta contém 6 opções,
a saber: (i) Arquivo; (ii) Editar; (iii) Imagem; (iv) Operações; (v) Classificação; e (vi) Ajuda. As opções de
SImPLe também podem ser acessadas via barra de
ferramentas. A tela de abertura da ferramenta SImPLe é
ilustrada Figura 5.
Figura 5: Tela Inicial da ferramenta SImPLe.
7
Queiroz, J. E. R. et al.
RBIE V.15 N.2 – 2007
Na opção Arquivo do menu principal, estão presentes as funcionalidades primárias da ferramenta, tais
como criar uma nova imagem, carregar uma imagem já
existente, salvar alterações em diferentes formatos
(.JPG, .BMP, .PNG) e a exportação em um dos forma-
tos supramencionados (vide Figura 6A). Por sua vez, a
opção Editar contém as sub-opções Desfazer, Refazer,
Recortar, Copiar e Colar, conforme destaque do painel
de menu da referida opção (vide Figura 6B).
A
B
Figura 6: Menus da ferramenta SImPLe – (A) Arquivo; e (B) Editar.
Na opção Imagem, encontram-se as funcionalidades
associadas à visualização de informações sobre a imagem em tela, tais como o histograma (por canal ou
integrado), coordenada do pixel e seu valor de brilho
(nível de cinza), perfil de linha e de coluna, decomposição/recomposição da imagem segundo diversos modelos cromáticos (e.g., RGB, HSV, CMY, CMYK, YUV,
YES, YCrCb), pseudocolorização de imagens monocromáticas, requantização e Ilusões de Óptica. O painel
de menu associado à opção Imagem é destacado na
Figura 7A, na qual se vê ao fundo a decomposição de
uma imagem nos planos do espaço cromático YCrCb.
A opção Operações contém as sub-opções Radiométricas e Geométricas. Por sua vez, as operações
Radiométricas subdividem-se em Pontuais (Aritméticas, Lógicas, Histogrâmicas e Morfológicas) e Locais
(Filtros). A sub-opção Filtros subdivide-se em Espaciais, no domínio da Freqüência e Morfológicos. Os
filtros espaciais implementados na ferramenta SImPLe
são Passa-Baixas (Média, Mediana, Moda) e Passa-
8
Altas (operadores de Sobel, Prewitt, Roberts, Laplaciano, Gaussiano, Emboss e Frei & Chen).
A filtragem no domínio da freqüência se fundamenta na Transformada Discreta de Fourier (DFT). Em sua
versão atual, SImPle contém um algoritmo para a filtragem homomórfica de imagens. Por fim, os filtros morfológicos implementados são Abertura, Fechamento,
Erosão e Dilatação.
Na Figura 7B, destaca-se o desdobramento dos painéis de sub-opções da opção Operações, sendo apresentado ao fundo o resultado da aplicação do operador de
Sobel a uma imagem. A sub-opção Geométricas contém
funcionalidades Redimensionar (redimensionamento de
imagens com ou sem manutenção das proporções originais, a partir de interpolação por vizinho mais próximo,
bilinear, ou bicúbica), Rotacionar (rotação de imagem),
Zoom In (ampliação de imagem) e Zoom Out (redução de
imagem).gura 7: Menus da ferramenta SImPLe – (A)
Imagem; (B) Operações; e (C) Classificação.
Queiroz, E. R. et al.
System for Image Processing Learning
A
B
C
C
Figura 7: Menus da ferramenta SImPLe – (A) Imagem; (B) Operações; e (C) Classificação.
No painel de menu da opção Classificação encontramse as funcionalidades de segmentação - Global, Adaptativa
e Crescimento de Região– além de classificadores. A
versão atual da ferramenta SImPle contém um algoritmo classificação de imagens pelo método do Paralelepípedo. Na Figura 7C, destaca-se o desdobramento do
painel de sub-opções da opção Classificação, sendo
apresentado ao fundo o resultado da segmentação de
uma imagem pelo método do crescimento de regiões.
Tendo em vista o caráter educacional da ferramenta, os
mecanismos de ajuda são essenciais, pois provêm o
acesso quer às descrições dos algoritmos, quer às se-
qüências de passos para obter resultados satisfatórios de
processamento da imagem de interesse.
Assim sendo, no tocante à Ajuda da ferramenta,
buscou-se estruturá-la de modo a atender tanto às necessidades do usuário estudante quanto do usuário instrutor/desenvolvedor de futuras funcionalidades. A
Ajuda Convencional é apresentada ao usuário sob a
forma de glossário, permitindo-lhe acessar todas as
funcionalidades disponíveis, conforme ilustrada na
Figura 8.
9
Queiroz, J. E. R. et al.
RBIE V.15 N.2 – 2007
A seleção da opção Ajuda no
painel de menu ou via manipulação direta do ícone de Ajuda...
... resultará na visualização tanto da
descrição da funcionalidade quanto da
seqüência de passos necessária à
obtenção de resultados satisfatórios
ao utilizá-la.
... seguida da seleção da funcionalidade sobre cuja informação se deseja consultar...
Figura 8: Mecanismo de Ajuda Convencional da ferramenta SimPLe.
Adicionalmente, o acesso a uma dada funcionalidade implicará a abertura de um quadro de diálogo, no
qual o usuário poderá acessar a ajuda sobre a funcionalidade ativada através do mecanismo de Ajuda Contex-
tual. Neste caso, as informações contidas na ajuda restringem-se à descrição da funcionalidade ativada, assim como
da seqüência de passos para que se possa realizar a operação desejada de modo satisfatório (vide Figura 9).
... resultará na visualização apenas
da
descrição
daquela
funcionalidade e da seqüência de
passos necessária à obtenção de
resultados satisfatórios ao utilizála.
A seleção da opção Ajuda no no
contexto do quadro de diálogo de
uma dada funcionalidade...
Figura 9: Mecanismo de Ajuda Contextual da ferramenta SimPLe.
10
Queiroz, E. R. et al.
System for Image Processing Learning
4.1. Quadro Comparativo
das funcionalidades presentes nas ferramentas revisadas
e na ferramenta SImPLe.
No Quadro 1, apresenta-se uma síntese comparativa
Funcionalidade
Operações Básicas
Pseudocolorização
Histograma
Operações Aritméticas
Operações Lógicas
Análise de Freqüência
Transformada de Fourier
Estatísticas
Morfologia Matemática
Ilusões de Ótica
Geradores de Ruído
Segmentação
Detecção de Bordas
Conversão de Espaços Cromáticos
Perfil de Linha/Coluna
Suporte a Idiomas
ImAn
ImageJ
IPTool
PhotoPixJ
SImPLe
Legenda
Inexistente ou não mencionada
Menor número de opções
Maior número de opções
Quadro 1: Síntese comparativa de SImPLe às ferramentas revisadas.
Como se pode observar, SimPLe incorpora um número
significativo de funcionalidades, quando comparado às ferramentas revisadas na Seção 2 (Ferramentas Afins).
5. Considerações Finais
É inegável a importância e a necessidade de realização
de atividades práticas em cursos de PDI. Além disto, tornar
técnicas PDI acessíveis a comunidades usuárias sempre
crescentes é uma iniciativa altamente estimulante. Neste
artigo, foi apresenta uma ferramenta desenvolvida originalmente sob a forma de exercícios práticos por estudantes
de Processamento Digital de Imagens e Interface HomemMáquina da Universidade Federal de Campina Grande
(UFCG), na qual se encontra em pleno uso e vem sendo
progressivamente aprimorada por uma equipe de alunos de
iniciação científica do Laboratório de Visão Computacional
do Departamento de Sistemas e Computação.
SImPLe possibilita a introdução intuitiva de conceitos
de PDI a estudantes de graduação e pós-graduação com
perfis os mais diversos. Desde a sua versão inicial, a
solução de interface com o usuário adotada mostrou-se
bastante adequada tanto no que diz respeito ao acesso
fácil aos algoritmos quanto à automatização da inserção
de elementos de interface para acesso a novos algoritmos.
A interface gráfica da ferramenta SImPLe tem sido submetida a inspeções de conformidade às Partes 14 (Diálogos via Menus) [24], 16 (Diálogos via Manipulação direta) [25] e 17 (Diálogo via Formulários) [26] do padrão
internacional ISO 9241, com fins à correção de falhas de
usabilidade e à provisão de um ambiente de trabalho útil e
usável. Como resultado de sucesso, esta ferramenta vem
sendo empregada como suporte às atividades práticas da
disciplina Processamento Digital de Imagens, tanto em
nível de graduação quanto de pós-graduação.
Graças às atividades realizadas na referida disciplina,
assim como às atividades de pesquisa da equipe de estudantes de graduação e pós-graduação envolvida no projeto e implementação de SimPLe, a ferramenta tem passado
por várias etapas de refinamento e atualização. O uso de
Java, uma linguagem independente de plataforma de
hardware, apresentou vantagens para a implementação de
SimPLe, uma vez a torna altamente portátil. A inclusão de
novas funcionalidades e/ou a alteração daquelas existentes implicará apenas o uso da própria linguagem Java,
tanto para código relativo aos algoritmos de funcionalidades da ferramenta quanto para eventual código relativo
à interface de aquisição de parâmetros do usuário. Assim
sendo, obteve-se um sistema multiplataforma que se mantém estável após as extensões previstas para a inclusão de
11
Queiroz, J. E. R. et al.
novos algoritmos e/ou a alteração de algoritmos existentes. As experiências realizadas para a alteração de algoritmos existentes e para a incorporação de novos algoritmos à ferramenta SimPLe têm se mostrado satisfatórias
tanto do ponto de vista do usuário estudante quanto do
usuário instrutor/desenvolvedor.
Atualmente, a equipe de projeto e implementação encontra-se trabalhando em algoritmos de geração de ruído
e filtragem no domínio da freqüência, os quais deverão
ser incorporados à nova versão da ferramenta.
Em suma, SimPLe tem se mostrado um suporte eficaz
ao ensino/aprendizagem de PDI, uma vez que estudantes
têm podido assimilar vários conceitos básicos e avançados a partir dos experimentos realizados a partir dos algoritmos que a compõem.
RBIE V.15 N.2 – 2007
tion and Analysis IV, pp. 286-295, 1997.
[9]
K. Bowman, An Introduction to Programming
with IDL, Elsevier - Estados Unidos, 2005.
[10]
M. Still, The Definitive Guide to ImageMagick,
Apress - Estados Unidos, 2005.
[11]
J. A. Robinson, A Software System for Laboratory Experiments in Image Processing, IEEE
Transactions on Education, 43:455-459, 2000.
[12]
W. Rasband, IMAGEJ – Image Processing and
Analysis in Java. http://rsb.info.nih.gov/ij, último
acesso:14 de Novembro de 2007.
[13]
J. G. Frojmowicz, L. Santos, IPTOOL – Image
Processing
Tool.
http://www.ualg.pt/fct/adeec/vision/iptool/, último acesso:14 de Novembro de 2007.
[14]
A. C. R. Almeida, A. A. S. Sol, A. A. Araújo,
(2000) PhotoPixJ 2.0-a Java digital image processing environment, Computer Graphics and
Image Processing Proceedings XIII Brazilian
Symposium on, 2000.
[15]
M. Grgic, N.Sprljan, B. Zovko-Cihlar, Image
Analyser - Educational Tool, Proceedings of the
3rd International Symposium on Video Processing and Multimedia Communications, VIPromCom-2001, Zadar, Croatia, pp. 109-115, 2001.
[16]
W. Bailer, (2006) “Writing IMAGEJ Plugins –
A Tutorial”, Upper Austria University of Applied Sciences, Austria.
[17]
H. Benitez, H. Loaiza, E. Caicedo, B. Bacca, H.
Jimenez, M. Barreto, J. Vargas, Software Tool in
Java for Infrared Image Processing:TermUV,
Proceedings of the 5th International Workshop Advances in Signal Processing for Non Destructive Evaluation of Materials, pp. 209-214, 2005.
[18]
Y. P. C. Aguiar, A. H. G Lima, F. L. J. Leite, D.
S. Ferreira, G. R. C. Rocha, G. W. D. Mendes,
R. F. Pontes, V. K. H. Rocha, V. F. Dantas, F. P.
Garcia, easYProcess: Um Processo de Desenvolvimento para Uso no Ambiente Acadêmico,
Anais do XII Workshop de Educação em Informática – XXIV Congresso da Sociedade Brasileira de Computação, Salvador - Brasil, 2004
[19]
K. Beck, C. Andres, Extreme Programming
Explained: Embrace Change, Addison-Wesley
a
Professional – Londres, 2004, 2 Ed.
[20]
P. Kroll, B. MacIsaac, Agility and Discipline
Made Easy : Practices from OpenUP and RUP,
Addison-Wesley – Estados Unidos, 2006.
Referências
[1]
R. C. Gonzalez, R. E. Woods, Digital Image
Processing, Prentice-Hall – Estados Unidos,
a
2002, 2 Ed.
[2]
J. E. R. de Queiroz, H. M. Gomes, Introdução
ao Processamento Digital de Imagens, Revista de
Informática Teórica e Aplicada (RITA),
13(1):11-42, 2006.
[3]
J. M. Novak, B. L. Evans, Mathematica, Signals
and Systems, Georgia Tech Research Corp.,
Atlanta, Georgia, 1995.
[4]
[5]
U. Rajashekar, G.C. Panayi, F. P. Baumgartner,
and A.C. Bovik, The SIVA demonstration gallery for signal, image, and video processing
education, IEEE Transactions on Education,
45(4):323–335, 2002.
G. C Panayi, A. C Bovik, U. Rajashekar, Image
processing for everyone, Proceedings of the
IEEE International Conference on Acoustics,
Speech, and Signal Processing, Hunt (TX),
Estados Unidos, October 15-18, 2000.
[6]
K. Konstantinides, J.R. Rasure, The Khoros
software development environment for image
and signal processing, IEEE Transactions on
Image Processing, 3(3):243 – 252, 1994.
[7]
W. Böcker, W.-U. Müller, C. Streffer, Image
processing algorithms for the automated micronucleus assay in binucleated human lymphocytes, Cytometry, 19(4): 283 – 294, 2005.
[8]
12
W. Schneider, W. Eckstein, C. T. Steger, Realtime Visualization of Interactive Parameter
Changes in Image Processing Systems, Proceedings of the SPIE (3017) - Visual Data Explora-
Queiroz, E. R. et al.
[21]
J. Hunt, Agile Software Construction, SpringerVerlag – Estados Unidos, 2005.
[22]
S. Ladd, D. Davison, S. Devijver, C. Yates,
Expert Spring MVC and Web Flow, Apress Estados Unidos, 2006.
[23]
E. Gamma, R. Helm, R. Johnson, J. Vlissides,
Design Patterns – Elements of Reusable ObjectOriented Software, Addison-Wesley Publishing
Company, Boston, MA, USA,1995
[24]
INTERNATIONAL ORGANIZATION FOR
STANDARDIZATION, ISO 9241 Ergonomic
Requirements for Office Work with Visual Display Terminals (VDTs) - Part 14: Menu Dialogues. Geneva, 1997.
[25]
INTERNATIONAL ORGANIZATION FOR
STANDARDIZATION, IS09241 Ergonomic
Requirements for Office Work with Visual Display Terminals (VDTs) - Part 16: Direct Manipulation Dialogues. Genebra, 1999.
[26]
INTERNATIONAL ORGANIZATION FOR
STANDARDIZATION, IS09241 Ergonomic
Requirements for Office Work with Visual Display Terminals (VDTs) - Part 17: Form-Filling
Dialogues. Genebra, 1998.
System for Image Processing Learning
13
Download