• Nenhum resultado encontrado

REFINAMENTO INTERACTIVO EXPEDITO DE CONTORNOS PARA SEGMENTAÇÃO DE IMAGENS

N/A
N/A
Protected

Academic year: 2021

Share "REFINAMENTO INTERACTIVO EXPEDITO DE CONTORNOS PARA SEGMENTAÇÃO DE IMAGENS"

Copied!
12
0
0

Texto

(1)

REFINAMENTO INTERACTIVO EXPEDITO DE CONTORNOS

PARA SEGMENTAÇÃO DE IMAGENS

Vasco Gervásio* e Joaquim A. Jorge IMMI/INESC-ID

Instituto Superior Técnico Universidade Técnica de Lisboa Rua Alves Redol, 9, 1000-029 Lisboa

e-mail: [email protected] e [email protected], web: http://immi.inesc-id.pt

Palavras-chave: Segmentação, Snakes, GVF, Interactividade, Refinamento Interactivo,

Oversketching

Resumo. Uma maneira de tentar resolver o problema de segmentação de imagens é através

de active contour models. Para tal o utilizador fornece uma aproximação do contorno que deseja e o contorno é depois adaptado automaticamente. No entanto, estes algoritmos apresentam limitações na qualidade da adaptação e na dificuldade em distinguir contornos próximos. De forma a colmatar algumas destas falhas e obter um melhor resultado final este artigo apresenta uma nova abordagem que permite que o contorno obtido possa ser progressivamente melhorado com poucas interacções simples.

(2)

1. INTRODUÇÃO

Segmentação de imagem consiste em separar uma imagem nas suas partes de interesse e para tal existem várias técnicas, desde abordagens manuais, executadas por operadores experientes, por exemplo em imagens médicas, a algoritmos que automatizam a tarefa. Dos vários algoritmos escolhemos os active contour models, snakes [1], pois são uma solução simples e eficiente que apesar de precisarem de inicialização manual, permitem segmentar uma determinada região da imagem, ao contrário de outros que fazem a segmentação de toda a imagem automaticamente [2, 3], mas cujo grau de granularidade é difícil de controlar, por se basearem em thresholdings. No entanto, os active contour models, como se verá adiante, também têm as suas limitações, na qualidade da segmentação obtida, e o objectivo deste artigo é apresentar um novo método para as ultrapassar.

Este método consiste em estender a participação do utilizador para que ele possa de forma interactiva aperfeiçoar o resultado da segmentação, obtido pelas snakes. Para tal, permite-se que ele possa corrigir o contorno de forma simples e rápida, até se encontrar satisfeito com o resultado (ver Figura 1). Desta forma obtém-se uma solução mais rápida do que segmentação exclusivamente manual, mais perfeita do que a obtida só por snakes e mais simples do que métodos “puramente” automáticos, pois não necessita de reparametrizações.

Figura 1: Da esquerda para a direita tem-se: Contorno inicial; Resultado da GVF snake; Extensão do contorno obtido após três correcções interactivas do contorno anterior; Resultado final.

Este artigo organiza-se do seguinte modo, na secção 2 referem-se outras técnicas interactivas para melhorar a segmentação. Na secção 3 descrevem-se dois algoritmos de

snakes e é especificada a forma como são melhorados através de um refinamento interactivo.

Na secção 4 analisam-se vários resultados de segmentação e, por fim, na secção 5, apresentam-se as conclusões e trabalho futuro.

2. TRABALHO RELACIONADO

Existem poucos trabalhos na área de segmentação interactiva, [4] e [5] são duas dessas referências.

Em [4] são referidos alguns métodos semi-automáticos de segmentação, a maioria para casos 3D, que são divididos em três classes: user steering, em que o utilizador faz mudanças

(3)

semelhante o anterior mas as mudanças só são efectuadas quando se observam dados incorrectos, reiniciando ou continuando então o processo de segmentação; correction or

manipulation of final results, em que o utilizador se limita a efectuar correcções ao resultado

depois da segmentação ter acabado. O refinamento interactivo apresentado neste artigo pertence a esta última classe (ver Figura 2).

Em [5] apresentam-se algumas técnicas interactivas para melhorar a segmentação, no caso específico das snakes.

Algumas das técnicas apresentadas em [4] pressupõem algum conhecimento do utilizador do funcionamento dos algoritmos, de forma a poder alterar parâmetros, o que as torna pouco indicadas para todos os utilizadores. Outras técnicas em [4], assim como as de [5], consistem na manipulação do contorno obtido, ponto a ponto. No entanto tais técnicas são demoradas, pouco naturais e podem ser um pouco complicadas na dificuldade de escolha do ponto a mover.

Figura 2: Gráfico genérico de um processo de segmentação, onde o utilizador corrige ou manipula os resultados finais produzidos, adaptado de [4].

3. DESCRIÇÃO DOS ALGORITMOS

Nesta secção vamos começar por apresentar o pré-processamento que fazemos para os algoritmos. De seguida descrevemos os dois algoritmos de snakes que implementámos e o modo como foi feito o refinamento.

(4)

3.1. Pré-processamento

No pré-processamento são efectuadas três operações: converter a imagem em tons de cinzento, caso seja preciso, o que é necessário para o cálculo dos contornos; calcular os contornos, necessário para os algoritmos descritos neste artigo; calcular o GVF field, descrito na secção 3.4. Ao efectuar estes cálculos em pré-processamento, apesar de se perder um pouco mais de tempo no início, os algoritmos usados mais tarde serão mais rápidos, o que é particularmente importante para a vertente interactiva.

Para calcular os contornos é primeiro aplicado um filtro de Gauss, que reduz o ruído, e um filtro passa-alto, que realça os contornos. De seguida, obtém-se o gradiente da imagem, recorrendo à máscara de Sobel, que nos dá a intensidade do contorno para os vários pixels da imagem.

3.2. Snakes tradicionais

A snake tradicional é uma curva x(s) = [x(s), y(s)] definida de forma a que minimize a energia dada pela equação

(

x s x s

)

E

(

x s

)

ds

E =

1⎢⎣⎡ + + ext ⎥⎦

0 2 '( ) ''( ) ( )

1 α β

(1) onde α e β são pesos que controlam, respectivamente, a tensão e rigidez da snake, e são aplicados à primeira e segunda derivada de x(s) segundo s.

A energia externa é obtida da imagem I(x, y) e deve tomar os menores valores nos pontos de interesse. Como o nosso interesse é aproximar contornos, uma boa escolha seráEext(x,y)=−∇

[

Gσ(x,y)*I(x,y)

]

2, onde é a função de Gauss com desvio

padrão σ e é o operador gradiente, pois os pontos de contorno são os que apresentam maior valor de gradiente e logo menor de energia externa.

) , ( yx

Gσ

Uma snake que minimize (1) deve satisfazer a equação de Euler 0 ) ( '' ' ) ( '' − ⋅ −∇ = ⋅x s β x s Eext α (2) que pode ser vista como um equilíbrio de forças, onde a força interna (dois primeiros termos) é responsável por encolher e suavizar a snake e a externa por a puxar para os pontos de contorno.

Para resolver (2) torna-se a snake dinâmica tratando x também como uma função de t. Obtém-se então

ext

t s t a x s t x s t E

x ( , )= ⋅ ''( , )−β⋅ ' ''( , )−∇ (3)

Uma solução numérica pode ser encontrada ao tornar a equação discreta e resolvendo-a iterativamente até x( ts, ) estabilizar. Para mais detalhes ver [1].

Na Figura 3 apresentam-se alguns exemplos de aplicação do algoritmo de snakes tradicionais.

(5)

Figura 3: Duas aplicações do algoritmo de snakes tradicionais. Em cada uma, a imagem da esquerda apresenta o contorno inicial e a da direita o final.

Como se pode ver, as snakes tradicionais necessitam que o contorno inicial seja desenhado perto do contorno desejado, o que se deve a uma fraca magnitude das forças externas (ver Figura 4(a)). Por outro lado, estas snakes têm dificuldade em aproximar-se de contornos em concavidades, pois nessas áreas as forças externas apontam horizontalmente o que faz com que o contorno se aproxime dos contornos verticais mas não progrida para a concavidade (ver Figura 4(b)).

Figura 4: (a) Forças externas tradicionais. (b) Aproximação na concavidade. 3.3. Snakes com refinamento interactivo

Os dois problemas das snakes identificados na secção anterior, alcance de captura limitado e dificuldade de convergência, podem ser resolvidos se o utilizador voltar a desenhar o contorno inicial com mais cuidado (ver Figura 3). No entanto, isto obrigaria todo o processo a ser novamente repetido, uma maior dificuldade a desenhar o contorno inicial, de forma a torná-lo mais parecido com o desejado, e sem garantias de convergência, pois embora pudesse melhorar parte do contorno podia piorar outras. Assim sendo, em vez de redesenhar todo o contorno, por que não só redesenhar as partes incorrectas? É neste princípio que se baseia o refinamento interactivo.

(6)

aproximação para o contorno, analise-o e redesenhe as partes que lhe pareçam incorrectas (chamamos a esta operação oversketching). Nesta fase o algoritmo de snakes volta a ser aplicado mas só localmente, para o contorno que for alterado (ver Figuras 5(a) e 5(b)). O utilizador volta então a analisar o contorno e repete o processo até se encontrar satisfeito (ver Figura 5(c)).

Figura 5: (a) Oversketching do contorno da Figura 3. (b) Resultado do refinamento. (c) Resultado final.

Com este processo a parte do contorno correcta reaproveita-se e como a parte a corrigir é menor, é mais fácil desenhar uma melhor aproximação inicial, obtendo-se assim uma melhor solução final.

3.4. Gradient Vector Flow (GVF) Snake

A GVF snake [6] é um algoritmo que procura resolver as limitações das snakes, referidas anteriormente, mas sem necessitar de intervenção do utilizador. Para tal é apresentada uma nova formulação para as forças externas.

Na GVF snake a componente é substituída pelo GVF field w(x, y) = [u(x, y),v(x, y)] que se obtém minimizando a função

ext E ∇ −

(

)

∫∫

+ + + + ∇ −∇ = μ ux2 uy2 vx2 vy2 f 2 w f 2dxdy ε (4)

onde f é o mapa de contornos derivado da imagem I(x, y), com a propriedade que o seu valor tem de ser maior em pontos de contorno. A escolha tomada para f foi

(

)

2 ) , ( * ) , (x y I x y G f = ∇ σ .

A solução para minimizar (4) obtém-se resolvendo as equações

(

)

(

)

(

)

(

)

0 0 2 2 2 2 2 2 = + − − ∇ = + − − ∇ y x y y x x f f f v v f f f u u μ μ (5) onde 2 é o operador Laplaciano.

Em [6] mostra-se como se encontra uma solução numérica, ao obter uma fórmula iterativa para o cálculo das componentes u e v, que aumenta as suas magnitudes em cada iteração. Com estas modificações os resultados são melhores que as snakes tradicionais (ver Figura 6),

(7)

Figura 6: Exemplo de aplicação da GVF snake.

pois as forças externas aumentam de magnitude (ver Figura 7(a)) e já apontam para o interior das concavidades (ver Figura 7(b)).

Figura 7: (a) Forças externas nas GVF snakes. (b) Aproximação na concavidade.

No entanto, estes resultados pioram quando os contornos já não são tão nítidos e quando se encontram vários contornos perto uns dos outros, pois nesse caso por vezes é escolhido um contorno e por vezes é escolhido outro (ver Figura 8).

Figura 8: Da esquerda para a direita tem-se: Imagem original; Contorno inicial; Contorno após aplicação da GVF snake, sem interacção.

3.5. GVF com refinamento interactivo

Como se viu na secção anterior, apesar da GVF snake ser uma melhoria em relação às

(8)

recorrendo ao oversketching. Este, no entanto, pode ser melhorado ao apresentado anteriormente.

Para tal, o algoritmo que se usa aquando da correcção do contorno será o da GVF snake. Deste modo as próprias correcções não necessitam de estar tão próximas do contorno desejado e aproximam-no com uma maior qualidade (ver Figura 9).

(a) (b) (c) (d)

Figura 9: (a) Detalhe do contorno após aplicação de GFV snake; (b) Stroke correctivo introduzido manualmente; (c) Contorno optimizado por aplicação local de snake normal a (b); (d) Contorno optimizado por aplicação local

de GVF snake a (b).

No entanto, nas correcções, o alcance maior na atracção do contorno, nas GVF snakes, pode ser um defeito, levando novamente à confusão entre contornos próximos, principalmente quando um dos contornos é pouco nítido. Para o evitar o alcance do GVF é reduzido, o que se alcança ao diminuir o número de iterações para o cálculo de u e v.

Por fim, outra das vantagens do refinamento interactivo é permitir alcançar contornos complexos através da combinação de contornos simples (ver Figura 10).

Figura 10: Da esquerda para a direita tem-se: Contorno inicial; Resultado da GVF snake; Extensão do contorno, após três correcções interactivas do contorno anterior; Resultado final.

4. RESULTADOS

Nesta secção apresenta-se o resultado da segmentação, em várias imagens, usando o algoritmo descrito na secção anterior. Para cada uma das imagens mostra-se o contorno inicial, o contorno depois da aplicação da GVF snake e por fim o contorno após as correcções.

(9)

(a) (b) (a) (b)

Figuras 11 e 12: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake.

(a) (b) (c)

Figura 13: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake; (c) Resultado final após 1 correcção.

(a) (b) (c)

Figura 14: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake; (c) Resultado final após 1 correcção.

(a) (b) (c)

Figura 15: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake; (c) Resultado final após 1 correcção.

(10)

Figura 16: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake; (c) Resultado final após 2 correcções.

Figura 17: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake; (c) Resultado final após 4 correcções.

Figura 18: (a) Contorno introduzido manualmente; (b) Resultado após a GVF snake; (c) Resultado final após 4 correcções.

(a) (b) (c)

(11)

Nº pontos contorno inicial

Tempo GVF

snake (em seg.)

Nº correcções

Tempo total das correcções (em seg.)

Figura 11 309 0.280 0 n.a. Figura 12 353 0.310 0 n.a. Figura 13 571 1.041 1 2.173 Figura 14 2060 5.197 1 2.293 Figura 15 454 0.541 1 2.624 Figura 16 534 0.391 2 4.486 Figura 17 904 2.033 4 17.776 Figura 18 399 0.381 4 11.977 Figura 19 1069 2.473 5 21.090

Tabela 1: Apresentação de diferentes medidas de análise dos vários exemplos de segmentação.

A Tabela 1 apresenta para cada uma das imagens o número de pontos do contorno inicial, que têm entre eles uma distância máxima de dois pixels, o tempo que demorou a aplicação do algoritmo da GVF snake, o número de correcções necessárias para produzir o contorno final e o tempo total necessário às várias correcções.

A análise dos resultados mostra-nos que o algoritmo da GVF snake apesar de ser eficiente, e por vezes suficiente para efectuar toda a segmentação (Figuras 11 e 12), em várias ocasiões precisa de ser corrigido parcialmente, com relevo para situações de contornos pouco nítidos (Figura 18 e 19), ruído da imagem (Figura 16) ou rectificação de detalhes locais (Figuras 15 e 17). Cada uma das correcções requer, aproximadamente, 2 a 4 segundos para o utilizador as introduzir, dependendo da sua complexidade. Este tempo é aceitável, pois cada uma delas envolve vários passos (detectar a sua necessidade, aplicar oversketching e esperar que o contorno se adapte por aplicação do GVF), são necessárias poucas correcções e a melhoria nos resultados é bem visível.

5. CONCLUSÕES

A técnica apresentada no artigo permite melhorar os resultados da segmentação, obtidos por outros algoritmos, tanto na sua qualidade, como na sua complexidade, através de interacção com o utilizador. Apesar desta intervenção tornar o processo mais lento, esta abordagem semi-automática parece aconselhável em domínios como a segmentação de imagens médicas, pois tira partido do melhor de dois mundos: por um lado apresenta uma muito maior velocidade que uma solução puramente manual e por outro melhora o resultado final ao permitir o contributo do operador, através de acções locais simples.

No futuro serão feitos testes com utilizadores para avaliar o trabalho deste artigo na segmentação de imagens, em particular, imagens médicas. Outra área a explorar será a aplicação do refinamento interactivo a algoritmos mais elaborados [7], de maneira a reduzir o número de correcções necessárias, ou a possibilidade de utilizar algoritmos diferentes para, por um lado, obter o contorno inicial e, por outro, efectuar correcções.

(12)

6. REFERÊNCIAS

[1] M. Kass, A.Witkin e D. Terzopoulos, “Snakes: Active contour models”, Int J. Comput. Vol. 1, pp. 321-331, (1987).

[2] R.H. Vu, R.M. Rangayyan e G.S. Boag, “Multi-seed segmentation of the primary tumor mass in neuroblastoma using opening-by-reconstruction”, Procedings of the 24th

IASTED International Multi-Conference Biomedical Engineering, (2006).

[3] M. Antonelli, B. Lazzerini e F. Marcelloni, “Segmentation and reconstruction of the lung volume in CT”, ACM Symposium on Applied Computing, (2005).

[4] J.L. Foo, “A survey of user interaction and automation in medical imaging segmentation methods”, Iowa State University Human Computer Interaction Technical

Report, (2006).

[5] J. Hug, C. BrechBühler and G. Székely, “Tamed snake: a particle system for robust semi-automatic segmentation”, (1999).

[6] C. Xu e J.L. Prince, “Snakes, shapes, and gradient vector flow”, IEEE Trans. on Image

Process. Vol. 7, no. 3, pp. 359-369, (1998).

[7] J. Cheng e S.W. Foo, “Dynamic directional gradient vector flow for snakes”, IEEE

Referências

Documentos relacionados