0% acharam este documento útil (0 voto)
326 visualizações5 páginas

Implementação de Plugins no ImageJ

Este documento fornece um tutorial sobre como implementar plugins para o software ImageJ. Ele introduz o ImageJ e explica que plugins podem ser usados para expandir suas funcionalidades. Dois exemplos de código são fornecidos, um que implementa um limiar simples e outro que equaliza o histograma de uma imagem. O tutorial destaca os requisitos e etapas para criar plugins eficazes para o ImageJ.

Enviado por

Porto Gee
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
326 visualizações5 páginas

Implementação de Plugins no ImageJ

Este documento fornece um tutorial sobre como implementar plugins para o software ImageJ. Ele introduz o ImageJ e explica que plugins podem ser usados para expandir suas funcionalidades. Dois exemplos de código são fornecidos, um que implementa um limiar simples e outro que equaliza o histograma de uma imagem. O tutorial destaca os requisitos e etapas para criar plugins eficazes para o ImageJ.

Enviado por

Porto Gee
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

UNIVERSIDADE FEDERAL DE MINAS GERAIS

INSTITUTO DE CINCIAS EXATAS


DEPARTAMENTO DE CINCIA DA COMPUTAO
NCLEO DE PROCESSAMENTO DIGITAL DE IMAGENS (NPDI)

Tutorial

Implementando plugins para


o ImageJ

Flvio Augusto Rocha Bertholdo

Verso 1.1
Belo Horizonte, 22 de abril de 2007

1. Introduo
O ImageJ [1] um programa de domnio pblico, desenvolvido em Java, que permite
exibir, analisar, processar, salvar e imprimir imagens digitais. Ele pode ser executado em
qualquer computador que tenha uma mquina virtual Java instalada.
Ele pode trabalhar com imagens de 8, 16 ,e 32 bits e nos mais variados formatos como
TIFF, GIF, JPEG, BMP, DICOM, FITS e "raw". O sistema pode trabalhar com diversas
imagens simultaneamente, limitado apenas pela quantidade de memria disponvel. Ele tambm
pode executar diversas funes de processamento nas imagens como alteraes de contraste,
suavizao, aguamento, deteco de bordas, aplicao de filtros. Tambm suporta
transformaes geomtricas e possui diversos recursos para analise. As imagens podem ser
ampliadas at 32:1 ou reduzidas at 1:32.
Uma das caractersticas mais interessantes do ImageJ ter sido implementado atravs de
uma arquitetura aberta. Desta forma, novas funcionalidades podem ser adicionadas ao sistema
atravs da implementao de plugins escritos em Java. O sistema possui seu prprio editor
Java, porm o cdigo pode ser escrito utilizando qualquer editor. A compilao dos plugins
bastante simples e pode ser realizadas com qualquer compilador Java. O desenvolvimento de
novos plugins permite aos usurios utilizar o ImageJ como uma plataforma de PDI, onde podese implementar e testar novos algoritmos. Desta forma, pode-se resolver diversos problemas de
analise e processamento de imagens de forma simples e rpida.

2. Sobre este tutorial


Este tutorial uma breve introduo sobre a implementao de plugins no ImageJ e foi
baseado no excelente trabalho de Werner Bailer, intitulado Writing ImageJ PluginsA
Tutorial [2]. Nosso objetivo apresentar de forma rpida e prtica os conhecimentos bsicos
para a implementao de plugins.
Vale destacar que conhecimentos em programao Java e sobre a utilizao do ImageJ
so pr-requisitos de suma importncia. A documentao do ImageJ pode ser encontrada no
seguinte endereo: [Link]

3. Plugins do ImageJ
As funcionalidades oferecidas pelo ImageJ, em seus menus, podem ser ampliadas atravs
da utilizao de plugins. Alis, muitas das funcionalidades padro do programa so
implementadas atravs de plugins. Um plugin uma classe Java implementando prdeterminadas interfaces. Alm disto, todos os plugins devem ser colocados na pasta plugins,
que uma sub-pasta da pasta onde est instalado o ImageJ. Mas para serem exibidas
automaticamente no menu Plugins, o arquivo da classe deve possuir pelo menos uma
sublinhado (underscore) no seu nome, sugerimos utilizar o sublinhado no final do nome da
classe. Desde a verso 1.20, possvel criar sub-pastas dentro da pasta plugins e colocar os
plugins nelas. Desta forma, pode-se simplificar e melhorar a organizao dos plugins.
Os plugins podem ser escritos no editor prprio do ImageJ (que pode ser acessado
atravs do menu Plugins/New ou Plugins/Edit) ou com o seu editor de texto preferido. Em
qualquer um dos casos, os plugins podem ser compilados e executados atravs do ImageJ. Se o
Implementando Plugins para o ImageJ Verso 1.1

seu sistema operacional j possui um compilador Java instalado, voc poder compilar seus
plugins diretamente do ImageJ. A forma mais simples utilizar o menu Plugins/Compile and
Run, que abre uma caixa de dialogo para selecionar um arquivo .java, que ser compilado em
um arquivo class e executado como um plugin.
Para instalar novos plugins (por exemplo algum plugin que voc baixou da Internet),
basta copiar o arquivo .class para a pasta plugins ou para uma sub-pasta dela. O plugin ir
aparecer no menu plugins ou em um de seus sub-menus na prxima vez que voc iniciar o
ImageJ. Ou seja, aps instalar um novo plugin necessrio reiniciar o programa para que o
mesmo seja exibido no menu.

3.1 Tipos de plugins


Existem basicamente dois tipos de plugins: os que no precisam de uma imagem de
entrada (implementam a interface PlugIn) e os chamados plugins filters, que precisam de
uma imagem como entrada (implementam a interface PlugInFilter). Neste tutorial, vamos nos
concentrar apenas em exemplos do segundo tipo, por serem os mais utilizados.

4. Exemplos de cdigo
Aps instalar o ImageJ, se voc procurar na pasta de Plugins, voc encontrar exemplos
que vem com o ImageJ. Vale a pena conferir a analise do cdigo do plugin Inverter_
apresentada em [2]. A seguir, apresentamos dois exemplos de cdigo que ilustram
caractersticas bsicas dos plugins do ImageJ.

4.1 Exemplo 1: Limiarizao Simples


Este exemplo realiza uma limiarizao simples em imagens de 8 bits (tons de cinza),
utilizando como limiar o tom de cinza 128.
/** Aqui voc deve inserir os pacotes necessrios */
import ij.*;
import [Link];
import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
/** Este ImageJ plugin implementa uma limiarizao simples
em imagens de 8 bits.
Consideraes:
1) Filter plug-ins devem implementar a interface PlugInFilter.
2) Plugins que so colocados na pasta "plugins" do ImageJ e
possuem pelo menos um underscore no seu nome so instalados
automaticamente no menu de Plugins.
3) O nome da classe e o nome do arquivo devem ser os mesmos.
4) Tome cuidado para o nome do plugin no entrar em conflito
com plugins j existentes.
*/
public class Ex1_ implements PlugInFilter {
public int setup(String arg, ImagePlus imp) {
if ([Link]("about"))
{showAbout(); return DONE;}
Implementando Plugins para o ImageJ Verso 1.1

return DOES_8G+DOES_STACKS;

public void run(ImageProcessor ip) {


int limiar = 128;
byte[] pixels = (byte[])[Link]();
int width = [Link]();
int height = [Link]();
int offset, i, pixel;

for (int y=0; y<height; y++) {


offset = y*width;
for (int x=0; x<width; x++) {
i = offset + x;
pixel = (int) (pixels[i] & 0xff);
if (pixel<limiar) pixels[i] = (byte)(0);
else pixels[i] = (byte)(255);
}
}

void showAbout() {
[Link]("About Ex1_...",
"Este plugin implementa uma limiarizao simples\n" +
"em imagens de 8 bits."
);
}

4.2 Exemplo 2: Equalizao de histograma


Este plugin implementa uma equalizao de histograma em imagens de 8 bits (tons de
cinza). Vale destacar a utilizao da classe ContrastEnhancer para realizar a equalizao do
histograma. A utilizao desta classe exemplifica a grande capacidade de reutilizao de cdigo
disponvel na arquitetura do ImageJ. Alm disto, as alteraes no so realizadas na prpria
imagem de entrada, ou seja, criada uma nova imagem para exibir os resultados.
/** Aqui voc deve inserir os pacotes necessrios */
import ij.*;
import [Link];
import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
import [Link];
/** Este ImageJ plugin implementa uma equalizao de histograma
em imagens de 8 bits.
Consideraes:
1) Filter plug-ins devem implementar a interface PlugInFilter.
2) Plugins que so colocados na pasta "plugins" do ImageJ e
possuem pelo menos um underscore no seu nome so instalados
automaticamente no menu de Plugins.
3) O nome da classe e o nome do arquivo devem ser os mesmos.
4) Tome cuidado para o nome do plugin no entrar em conflito
com plugins j existentes.
*/

Implementando Plugins para o ImageJ Verso 1.1

public class Ex2_ implements PlugInFilter {


public int setup(String arg, ImagePlus imp) {
if ([Link]("about"))
{showAbout(); return DONE;}
return DOES_8G+DOES_STACKS;
}
public void run(ImageProcessor ip) {
byte[] pixels = (byte[])[Link]();
int width = [Link]();
int height = [Link]();
int offset, i, pixel;
int limiar = 64;
/* Objeto para realizar a equalizao do histograma */
ContrastEnhancer CP = new ContrastEnhancer();
ImagePlus imp = [Link]
height, 1, NewImage.FILL_WHITE);
ImageProcessor nip = [Link]();

("Ex2",

width,

for (int y=0; y<height; y++) {


offset = y*width;
for (int x=0; x<width; x++) {
i = offset + x;
pixel = (int) (limiar + (pixels[i] & 0xff));
[Link](x, y, pixel);
}
}
/* Realizar a equalizao do histograma da imagem */
[Link](nip);

/* Exibir a nova imagem */


[Link]();

void showAbout() {
[Link]("About Ex2_...",
"Este
plugin
implementa
histograma\n" +
"em imagens de 8 bits."
);
}
}

uma

equalizao

de

5. Referncias Bibliogrficas
[1]

Introduo ao ImageJ
[Link]

[2]

BAILER, Weler. Writing ImageJ PluginsA Tutorial


[Link]

[3]

ImageJ Developer Resources


[Link]

Implementando Plugins para o ImageJ Verso 1.1

Você também pode gostar