Escolar Documentos
Profissional Documentos
Cultura Documentos
5
Tcnicas de Processamento Digital de Imagens com
Java
Ilis Cavalcante de Paula Jnior
Abstract
The human brain to processes and recognizes a huge data quantity from visual nature.
This motivates the development of techniques and devices in order to accomplish this capacity. The knowledge about this visual system and the studies of available methodologies
onto balance the image to a actual problem are important to develop automatable computational solutions. In a sense, the Digital Image Processing (DIP) permits to enable a
diversity of applications in different research areas such as medicine, biology, engineering, meteorology, cartography and others one. Some of these applications are developed
in programming languages with established performance and security in dealing with this
type of data (digital image). In this work, it will adopt the Sun Java language in the support for DIP techniques in a simple application of regions description. It is still made a
comparative among the main Application Program Interfaces (APIs) of this domain and
the more adequate usage of memory.
Resumo
O crebro humano processa e interpreta imensa quantidade de dados de natureza visual.
Isso motiva o desenvolvimento de tcnicas e dispositivos de modo a estender ainda mais
essa capacidade. O conhecimento de como reage este sistema visual e o estudo de metodologias disponveis para melhor adequar a imagem a um problema real so importantes
para desenvolver solues computacionais automatizveis. Neste sentido, a rea de Processamento Digital de Imagens (PDI) permite viabilizar diversas aplicaes em diferentes
reas de estudo como na medicina, biologia, engenharia, meteorologia, cartografia, entre outras. Algumas dessas aplicaes so desenvolvidas em linguagens de programao
com reconhecido desempenho e segurana na abordagem deste tipo de dado (imagem
digital). Neste trabalho, ser seguida a linguagem Sun Java como base para realizar tcnicas de PDI em uma aplicao simples de descrio de regies. Tambm feito ainda
um comparativo entre as principais Application Program Interfaces (APIs) deste domnio
e o melhor uso de memria.
5.1. Introduo
At que ponto a interpretao humana pode ser afetada por ajustes em uma informao
visual? Como adequar o processamento dos dados em cenas reais para a percepo automtica atravs de mquinas? Esses e outros questionamentos formam a motivao para
o estudo de processamento digital de imagens. E ainda, isso gera o grande interesse de
diferentes reas de aplicao no uso de suas tcnicas computacionais. Como rea de processamento visual de dados, alguns conceitos relacionados a Processamento Digital de
Imagens (PDI) se assemelham ao que aplicado em outras reas de estudo como Computao Grfica e Viso Computacional. Apesar das semelhanas, esses domnios se
diferenciam justamente pelos tipos de informao utilizados em suas respectivas entradas
e sadas. Como pode-se perceber pela Figura 5.1, processamento de imagens ser todo
processamento digital em que as entradas e sadas so imagens.
y<
yy
Processamento de Imagens
Imagem yyy
yy
yy
y
y
FF
FF
FF Imagem
FF
FF
FF
"
Dado
Computao Grfica
Viso Computacional
idade gestacional o tempo, medido em semanas ou em dias completos, decorrido desde o incio da
ltima menstruao (ou data da ltima menstruao) da mulher grvida.
de regies em imagens. Ao final, na Seo 5.5, so expostas as concluses e consideraes finais deste trabalho.
de uma subclasse de SampleModel. Uma instncia de PlanarImage tambm tem uma instncia de ColorModel associada a ela, a qual contm uma instncia de ColorSpace, que
determina como os valores de pixels sero deslocados aos valores de cores [Santos 2004].
Figura 5.3 mostra a composio geral da classe PlanarImage com as demais classes da
API Java 2D [Liang e Zhang 2006].
Uma PlanarImage permite somente leitura imagem, ou seja, pode ser criada e
seus valores de pixels podem ser lidos de vrias maneiras, mas no h mtodos implementados para a modificao de seus elementos [Santos ]. PlanarImage possui uma grande
flexibilidade j que pode ter a origem da imagem em uma posio diferente da coordenada
(0,0), ou ainda coordenadas de pixels com valores negativos [Rodrigues 2001].
(a)
(b)
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* Lendo imagem usando apenas APIs nativas
* @author ERCEMAPI 2009
*/
public class ExibeImagem extends JFrame {
// Construtor padro: define interface e exibe a imagem lida na mesma
public ExibeImagem() throws IOException {
BufferedImage imagem = ImageIO.read(new File(Lenna.png));
String infoImagem = Dimenses: +imagem.getWidth()+
x+imagem.getHeight()+ Bandas: +
imagem.getRaster().getNumBands();
ImageIcon icone = new ImageIcon(imagem);
JLabel labImagem = new JLabel(icone);
this.setTitle(Display da Imagem: +Lenna.png);
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(labImagem), BorderLayout.CENTER);
contentPane.add(new JLabel(infoImagem), BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(imagem.getWidth(),imagem.getHeight());
this.setVisible(true);
} // fim do construtor
// Mtodo principal
public static void main(String args[]){
try{ // tratamento de exceo de E/S
ExibeImagem appExibeImg = new ExibeImagem();
}catch(IOException exc){
System.out.println(Erro de leitura! +exc.getMessage());
}
} // fim do mtodo principal
} // fim da classe
AWT. Com relao aos plugins, os desenvolvedores podem criar seus prprios ou reaproveitar plugins j utilizados no aplicativo. Isso d uma grande flexibilidade na criao de
classes mas no impede a produo de cdigos redundantes entre os trabalhos de vrios
desenvolvedores.
Figura 5.5. Estrutura geral da API ImageJ. Adaptado de Burger & Burge (2009).
Figura 5.7. Processo de negativo de uma imagem. A imagem submetida funo de transformao dos nveis de cinza. Adaptado de Burger & Burge (2009).
sente na mesma. Uma distoro crtica a presena de rudo na imagem. Esse fator
implica em nova informao na imagem, diferente do seu comportamento real. Normalmente os rudos so definidos por uma distribuio estatstica, como o modelo gaussiano,
speckle e de poisson. Na Figura 5.8 esto identificados os efeitos de alguns tipos de rudo
na mesma imagem.
(c) Mscaras
Prewitt.
de
(g) Mscaras
de Roberts.
(a)
(b)
(c)
(d)
esteja livre de distores para cumprir seu objetivo que separar as regies presentes na
imagem. A tcnica mais simples limiarizao (ver Figura5.11), que consiste em definir
um tom de cinza como limiar e modificar todos os pixels da imagem com base no mesmo.
Isso ocorre a partir de um comparativo, em que o pixel com intensidade menor ou igual
ao limiar recebe valor 0 (zero) e, em caso contrrio, a intensidade do pixel receber valor
igual a 255. Assim duas regies so separadas na imagem.
Figura 5.11. Processo de Limiarizao. Imagem submetida funo de transformao dos nveis de cinza. Adaptado de Burger & Burge (2009) e Gonzalez &
Woods (2008).
Uma tcnica de segmentao bastante conhecida, mas que apresenta maior complexidade, o mtodo watershed2 [Vincent e Soille 1991, Meyer e Beucher 1990]. Aqui
so necessrias duas informaes: a imagem de gradiente e a imagem de marcador(es),
que so definidas com base na imagem processada. Essa imagem de marcador(es) deve
apresentar em que regio(es) da imagem o processo ter incio e o gradiente informa
2 Animao
didtica
sobre
funcionamento
da
http://cmm.ensmp.fr/ beucher/wtshed.html.
tcnica
est
disponvel
em
onde o processo encerrado. De um modo geral, a tcnica de watershed traz uma representao de uma represa que inicia uma inundao a partir dos marcadores de tal
forma que encha a imagem de gua at alcanar a regio identificada pelo gradiente. A
execuo do mtodo pode ser acompanhado na Figura 5.12.
Figura 5.12. Aplicao da tcnica watershed. Adaptado de Meyer & Beucher (1990).
(d) Abertura.
(b) Eroso.
(c) Dilatao.
(e) Fechamento.
mesma (ver Figura 5.15). O objeto de interesse estar presente na imagem resultante aps
a segmentao. Em caso de falha na etapa anterior, permite-se um ps-processamento
no qual se resume a adequar a regio segmentada em uma formatao prxima da sada
do aplicativo. Nesta seo, a classe a ser criada seguir a API ImageJ para definir a
aplicao. Com esta API, todas as operaes sobre as imagens passam pelos mtodos da
classe ByteProcessor que funciona como base para a execuo das tarefas mais simples
de PDI sem necessidade de mudana de parametrizao.
A imagem a ser tratada nesta aplicao (Figura 5.15(a)) se mostra bastante desafiadora. A estrela (objeto de interesse) a ser destacada possui o tom de cinza mais claro em
relao aos demais elementos da imagem (com exceo de alguns pixels do rudo). Com
essa informao, deve-se eliminar o rudo a fim de manter a homogeneidade nos tons de
cinza por todas as regies e, por consequncia, tambm remover a linha de cor preta que
percorre toda a imagem (inclusive sobre o objeto). Efetua-se ento a filtragem na imagem
com o mtodo medianFilter (ver Tabela 5.2) definido na classe ByteProcessor. Este mtodo aplica o filtro da mediana em toda a imagem com uma janela 3x3 de tal maneira que
mantenha as informaes de borda das regies mesmo que ainda permaneam artefatos
do rudo e da linha preta na imagem. Isso adotado por ser possvel a remoo dessa
informao nas prximas etapas do aplicativo.
Ao executar o cdigo sugerido na Tabela 5.2, obtm-se o resultado da filtragem
apresentado na Figura 5.15(b). Pode-se perceber at aqui, que o rudo sal e pimenta foi
eliminado, bem como a linha preta que passava pelo objeto de interesse. Mesmo assim, o
efeito da filtragem em cima da linha preta fez permanecer alguns pixels de tonalidade de
cor preta de tal forma que distorce a homogeneidade das regies da imagem. Apesar desses resduos, a imagem ganha um novo aspecto visual (ver Figura 5.15(b)) e o resultado
da filtragem facilitar a separao da regio da estrela. Isso porque o prximo passo a ser
seguido a segmentao da imagem. Nesse processo, ser utilizada a tcnica de limiarizao para separar a regio de interesse das demais. No exemplo trabalhado, a imagem
possui uma diferena bem perceptvel entre os tons de cinza de cada regio. Desse modo,
basta identificar o valor do tom de cinza predominante no objeto e us-lo como limiar
para a segmentao. Realiza-se a limiarizao com o mtodo threshold (ver Tabela 5.3)
que tambm definido na classe ByteProcessor. Este mtodo tem como argumento um
valor inteiro que indica o limiar da segmentao. A partir dessa informao, o processo
de segmentao converte qualquer pixel, com valor maior ou igual a esse limiar, ao tom
de cinza igual a 0 (zero) - indicando a cor preta - e em caso contrrio, o pixel assume o
valor de 255 (cor branca).
Figura 5.15. Etapas do aplicativo proposto: processa imagem ruidosa para extrao da regio do objeto de interesse.
ajustar o resultado para a obteno de uma regio com todos os seus pixels assumindo o
mesmo valor. Por conta destes buracos, aplica-se um ps-processamento para obter a
homogeneidade dos pixels na regio do objeto.
A etapa de ps-processamento ser realizada por uma operao de fechamento
na imagem, cuja execuo se d por uma operao de dilatao seguida de uma eroso
na mesma imagem e com o mesmo elemento estruturante [Soille 2004]. A API ImageJ
no traz a operao de fechamento implementada em suas classes nativas, mas a partir da
classe ByteProcessor adota-se as chamadas dos mtodos dilate e erode correspondendo
(ver Tabela 5.4), respectivamente, s operaes de dilatao e eroso [Rasband 2009]. As
duas operaes fazem uso de uma janela de forma quadrada com as dimenses 3x3.
Tabela 5.4. Aplicao da operao de fechamento na definio do sistema.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* Lendo imagem ruidosa e extraindo o objeto
* @author ERCEMAPI 2009
*/
public class SegRdI extends JFrame {
// atributos
JPanel painelPrinc, painelBotoes;
JButton btnAbrir, btnProc, btnLimpar, btnSair;
File fileName;
ImagePlus imagemIJ;
// inicializao dos componentes grficos
public void iniciaComponentes() { . . . }
// mtodo da ao ao clicar o boto Abrir
private void abrirActionPerformed(ActionEvent evt) { . . . }
// mtodo da ao ao clicar o boto Processar
private void processarActionPerformed(ActionEvent evt) { . . . }
// mtodo da ao ao clicar o boto Limpar
private void limparActionPerformed(ActionEvent evt) { . . . }
// mtodo da ao ao clicar o boto Sair
private void sairActionPerformed(ActionEvent evt) { System.exit(0); }
// construtor padro
public SegRdI() { this.iniciaComponentes(); }
// mtodo principal
public static void main(String[] args) {
SegRdI aplicacao = new SegRdI();
} // fim do mtodo principal
} // fim da classe
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
classe ImageCanvas. Esta ltima classe habilita a integrao de uma imagem trabalhada
pelas classes da API ImageJ aos componentes oferecidos pela API Swing. Portanto, para
limpar a tela do sistema basta instanciar um novo objeto de ImagePlus e associ-lo
interface. J que o objeto ImagePlus instanciado com seu construtor padro, ento
nenhuma imagem apresentada na tela.
O mtodo abrirActionPerformed tem sua implementao detalhada na Tabela 5.8
e detalha a implementao do boto com ao de abrir uma nova imagem na interface.
Permite-se com esse mtodo o surgimento de uma caixa de dilogo (linhas 03 a 05) para
Tabela 5.7. Cdigo da classe SegRdI mtodo limparActionPerformed que remove a imagem destacada no aplicativo.
01
02
03
04
05
06
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
seleo do arquivo da imagem a ser trabalhada. Se o arquivo for vlido, a imagem escolhida apresentada na tela do aplicativo.
Por fim, na Tabela 5.9 apresenta-se a descrio do mtodo processarActionPerformed com a ao de processar a segmentao da imagem. Como j descrito nesta seo,
nas linhas 02 a 07 define-se a chamada ao filtro da mediana na imagem. Na linha 08 h
o carregamento da imagem filtrada para um objeto de ImagePlus, o que permite a visualizao (quando necessrio) do resultado da filtragem. Em seguida, uma busca pelo pixel
de maior intensidade na imagem feita nas linhas 10 a 15. Nesse trecho de cdigo, uma
varivel inteira armazena o valor assumido por cada pixel consultado na imagem. Com o
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
35
36
mtodo getPixel (linha 13) da classe ImagePlus possvel recuperar um array com quatro elementos distintos: o primeiro o valor de nvel de cinza do pixel e os demais so
o valores nas camadas RGB. Neste caso, apenas a informao do primeiro elemento
relevante.
Como mencionado anteriormente, os trechos de cdigo expostos nas linhas 16 a
20 so aplicados para a execuo da limiarizao da imagem. Na linha 18 da Tabela 5.9,
percebe-se que o limiar assumido possui o valor do pixel de maior nvel de cinza decrementado por uma unidade. Isso se deve ao fato que o mtodo converte para 0 qualquer
pixel com intensidade menor ou igual ao argumento passado no mtodo threshold. Como
na regio de interesse todos os pixels possuem o valor mximo de tom de cinza na imagem, ento decrementa-se esse limiar para que o objeto possa ser destacado. Aps este
passo, realiza-se o ps-processamento nas linhas 22 a 33 com a operao de fechamento.
Ao final dessas operaes, repassada a imagem com o resultado final para componentes
grficos apresentarem a imagem ps-processada na tela do aplicativo.
Nota-se no resultado final que as bordas do objeto de interesse na imagem de sada
no se assemelham com as bordas deste mesmo objeto na imagem de entrada. Pode-se
observar, mesmo com a presena do rudo, que as bordas da imagem de entrada trazem
um aspecto visual de linhas mais retilneas que na imagem final. possvel enumerar
alguns motivos para essa ocorrncia. Primeiramente, a linha preta que passa por toda
a imagem tambm atravessa a regio do objeto e isso faz perder a informao de continuidade da sua borda. Em segundo lugar, o comportamento do rudo sal e pimenta
- que converte um pixel aleatrio em um dos valores extremos de nvel de cinza - pode
afetar o resultado da filtragem quando um pixel de borda possui seu valor modificado. E
por ltimo, na operao de fechamento a borda ter uma degradao em sua topologia se
seu comportamento local (nos valores dos pixels tratados pelo elemento estruturante) foi
afetado pelos motivos anteriores.
Apesar dessas dificuldades, o resultado final ainda se mantm bastante eficiente
com relao identificao da regio de interesse. Pode-se afirmar que outras imagens,
que sigam o mesmo padro de distribuio de tons de cinza e deste mesmo rudo, obtero
resultados semelhantes na segmentao dos objetos.
Com este pequeno aplicativo foi possvel relacionar diferentes tcnicas de PDI
para alcanar um nico resultado para uma determinada imagem. Buscou-se, com esse
exemplo de aplicao, apresentar algumas funcionalidades resumidas da API ImageJ de
forma integrada com APIs voltadas gerao de interface grfica na linguagem de programao Java. Verificou-se ainda como o resultado de uma etapa deste aplicativo interferiu no resultado alcanado por uma etapa conseguinte. Esta mesma aplicao poderia
ser desenvolvida usando a API JAI, ou alguma outra API direcionada a imagens, mas
mesmo assim no teria uma implementao mais breve do que essa apresentada. Pode-se
comprovar isso estudando a documentao destas APIs [Rodrigues 2001, Rasband 2009,
Microsystems ] e ser observado que a API ImageJ possui descrio mais curtas em suas
chamadas de mtodos e implementaes mais simples para as tcnicas bsicas de processamento de imagens.
Referncias
[Arnold et al. 2000] Arnold, K., J., G., e Holmes, D. (2000). The Java Programming
Language. Prentice-Hall, 3rd edition.
[Azevedo et al. 2007] Azevedo, E., Conci, A., e Leta, F. (2007). Computao Grfica:
Processamento de Imagens Digitais, volume 2. Editora Campus.
[Bento et al. 2009a] Bento, M., Medeiros, F., Paula Jnior, I., e Ramalho, G. (2009a).
Image processing techniques applied for corrosion damage analysis. In Proceedings of
the XXII Brazilian Symposium on Computer Graphics and Image Processing, Rio de
Janeiro. RJ.
[Bento et al. 2009b] Bento, M., Medeiros, F., Ramalho, G., e Medeiros, L. (2009b).
Image processing techniques to monitor atmospheric corrosion. In Anais da X Conferncia sobre Tecnologia de Equipamentos (COTEQ), Salvador, BA.
[Bernier e Landry 2003] Bernier, T. e Landry, J. (2003). A new method for representing
and matching shapes of natural objects. Pattern Recognition, 36(8):17111723.
[Burger e Burge 2009] Burger, W. e Burge, M. J. (2009). Principles of Digital Image
Processing: Fundamental Techniques. Springer.
[Calope et al. 2004] Calope, P., Medeiros, F., Marques, R., e Costa, R. (2004). A
comparison of filters for ultrasound images. Lecture Notes in Computer Science,
3124:10341040.
[Castleman 1996] Castleman, K. R. (1996). Digital Image Processing. Prentice Hall,
Upper Saddle River.
[Costa e Csar Jnior 2009] Costa, L. e Csar Jnior, R. (2009). Shape Analysis and
Classification: Theory and Practice. CRC Press, 2nd edition.
[Costa et al. 2004] Costa, L., Dos Reis, S., Arantes, R., Alves, A., e Mutinari, G. (2004).
Biological shape analysis by digital curvature. Pattern Recognition, 37(3):515524.
[Csar Jnior e Costa 1996] Csar Jnior, R. e Costa, L. (1996). Towards effective planar
shape representation with multiscale digital curvature analysis based on signal processing techniques. Pattern Recognition, 28(9):15591569.
[Deitel e Deitel 2005] Deitel, H. e Deitel, P. (2005). Java: Como Programar. PrenticeHall, 6th edition.
[Gomes e Velho 1994] Gomes, J. e Velho, L. (1994). Computao Grfica: Imagem.
IMPA.
[Gonzalez e Woods 2008] Gonzalez, R. e Woods, R. (2008). Digital Image Processing.
Prentice Hall, Nova York, EUA, 3rd edition.
[Jones e Lins 1996] Jones, R. e Lins, R. (1996). Garbage Collection: Algorithms for
Automatic Dynamic Memory Management. John Wiley & Sons.
[Lee et al. 1995] Lee, J.-S., Sun, Y.-N., e Chen, C.-H. (1995). Multiscale corner detection
by using wavelet transform. IEEE Transactions on Image Processing, 4(1):100104.
[Liang e Zhang 2006] Liang, Y. e Zhang, H. (2006). Computer Graphics Using Java 2d
And 3d. Prentice-Hall.
[Lopez et al. 2006] Lopez, D., Ramalho, G., Medeiros, F., Costa, R., e Arajo, R. (2006).
Combining features to improve oil spill classification in sar images. Lecture Notes in
Computer Science, 4109:928936.
[Marques et al. 2004] Marques, R., Carvalho, E., Costa, R., e Medeiros, F. (2004).
Filtering effects on sar images segmentation. Lecture Notes in Computer Science,
3124:10411046.
[Marques et al. 2008] Marques, R., Medeiros, F., e Ushizima, D. (2008). Target detection
in sar images based on a level set approach. IEEE Transactions on Systems, Man and
Cybernetics - Part C, Applications and Reviews, 39(2):214222.
[Marques Filho e Vieira Neto 1999] Marques Filho, O. e Vieira Neto, H. (1999). Processamento Digital de Imagens. Brasport.
[Martins et al. 2008] Martins, C., Veras, R., Ramalho, G., Medeiros, F., e Ushizima, D.
(2008). Automatic microaneurysm detection and characterization through digital color
fundus images. In Anais do Simpsio Brasileiro de Redes Neurais (SBRN), Salvador,
BA.
[Meyer e Beucher 1990] Meyer, F. e Beucher, S. (1990). Morphological segmentation.
Journal of Visual Communication and Image Representation, 1(1):2146.
[Miano 1999] Miano, J. (1999). Compressed Image File Formats. ACM Press - AddisonWesley, Reading, MA.
[Microsystems ] Microsystems, S.
Java Advanced
http://java.sun.com/javase/technologies/desktop/media/jai/.
Imaging
(JAI)
API.
Encyclopedia of
[Passarinho et al. 2006] Passarinho, C., Cintra, L., Medeiros, F., Oliveira, I., e Paula Jnior, I. (2006). Anlise de similaridade e correspondncia de formas aplicada reeducao postural global. In Anais do XX Congresso Brasileiro de Engenharia Biomdica,
pages 117120, So Pedro, SP.
[Paula Jnior et al. 2006] Paula Jnior, I., Medeiros, F., Mendona, G., Passarinho, C., e
Oliveira, I. (2006). Correlating multiple redundant scales for corner detection. In Proceedings of the 2006 IEEE International Telecommunication Symposium (ITS), pages
650655.
[Ramalho e Medeiros 2003] Ramalho, G. e Medeiros, F. (2003). Um sistema de inspeo
visual automtico aplicado classificao e seleo de laranjas. In Anais do IV Congresso Brasileiro da Sociedade Brasileira de Informtica Aplicada Agropecuria e
Agroindstria (SBIAGRO), volume 2, pages 197200, Porto Seguro, BA.
[Rasband 2009] Rasband, W. S. (1997-2009). ImageJ: Image Processing and Analysis
in Java. http://rsbweb.nih.gov/ij/. U. S. National Institute of Health.
[Rodrigues 2001] Rodrigues, L. H. (2001). Building Imaging Applications with Java
Technology: Using AWT Imaging, Java 2D, and Java Advanced Imaging (JAI).
Addison-Wesley Professional.
[Santos ] Santos, R. Java Image Processing Cookbook (online).
www.lac.inpe.br/ rafael.santos/JIPCookbook/.
[Santos 2003] Santos, R. (2003).
Usando Java. Campus.
Disponvel em
[Santos 2004] Santos, R. (2004). Java Advanced Imaging API: A Tutorial. Revista de
Informtica Terica e Aplicada, 11(1):93123.
[Silva et al. 2006] Silva, L., Bellon, O., Lemes, R., Meira, J., e Cat, M. (2006). An image
processing tool to support gestational age determination. In Proceedings of the 19th
IEEE International Symposium on Computer-Based Medical System, pages 867874.
[Soille 2004] Soille, P. (2004). Morphological Image Analysis: Principles and Applications. Springer-Verlag, Nova York.
[Velho et al. 2009] Velho, L., Frery, A., e Gomes, J. (2009). Image Processing for Computer Graphics and Vision. Springer, 2nd edition.
[Vincent e Soille 1991] Vincent, L. e Soille, P. (1991). Watersheds in digital spaces: An
efficient algorithm based on immersion simulations. IEEE Transactions on Pattern
Analysis and Machine Intelligence, 13(6):583598.