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