Transformada de Distância por Morfologia Matemática Francisco de Assis Zampirolli Orientador: Roberto de Alencar Lotufo DCA - FEEC – UNICAMP 1 Conteúdo Introdução Erosão & Dilatação Padrões Erosão TD por Erosão Conclusões 2 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 3 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Transformada de Distância (TD) Distância mínima dos pixels do objeto ao fundo TD 00kkkkkkkk00 001234432100 0 k TD 4 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Métricas para a TD Chanfrada City-Block ou 4 conexo Chessboard ou 8 conexo Euclidiana Outras: 3:4, 5:7:11, ... 5 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Principais contribuições • Novo enfoque de padrões de algoritmos da erosão morfológica: – Paralelo – Seqüencial – Propagação Estudo da equivalência entre estes padrões • Classificação de algoritmos clássicos da TD: – Paralelo e Seqüencial - Rosenfeld e Pfaltz – Propagação - Vincent • Construção de novos algoritmos da TDE: – Direcional – Multidimensional 6 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 7 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão Binária Subtração de Minkowski X B = {y E : By X} y X XB E 8 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Dilatação Binária Soma de Minkowski X B = {Xy : y B} B y XB X Xy E 9 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Definições Infinito: X B = {Xy : y B} Limitado: X B = {Xy E: y B} B y Xy Xy E y X X E E Infinito Limitado 10 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão em Níveis de Cinza f b b(f) : x E, b(f)(x) = onde E f [0,k] , b B e y Bx E { f(y) b(y-x) } Bx 11 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Dilatação em Níveis de Cinza f b b(f) : x E, b(f)(x) = onde E f [0,k] , b B e { f(y) + b(x-y) } y Bx E Bx 12 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposições Se então Caso particular 1: Caso particular 2: bG = b 1 . . . bk bG(f) = bk(. . .(b1(f)). . .) bG = kb bG = b k=10 b -1 -1 0 -1 -1 13 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 14 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Motivação para o estudo da erosão • Erosões e Dilatações podem ser caracterizadas por funções estruturantes [Serra’88] • Qualquer operador entre reticulados pode ser decomposto por operadores elementares: erosões, dilatações, anti-erosões e anti-dilatações [Banon&Barrera’92] • Funções Estruturantes podem ser decompostas para melhorar a eficiência dos algoritmos • Será classificado a erosão em níveis de cinza com relação à ordem de varredura dos pixels: paralelo, seqüencial e propagação Analogias podem ser feitas para outros operadores elementares 15 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão Paralela x E, b(f)(x) = yBxE { f(y) b(y-x) }; onde f [0,k]E , b B e B x –1 –1 –1 –1 0 –1 –1 –1 –1 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 k k k 0 0 0 0 k k k 0 0 0 0 k k k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 k 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E 16 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Características da Erosão Paralela Simples para implementar Provavelmente o mais simples Baixa eficiência devido à varredura desnecessária Simples implementar em hardware Permite computação paralela bG = b1 . . . bk bG(f) = bk(. . .(b1(f)). . .) 17 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão Seqüencial { (f)(y) {- (f) (y) +b+(f) (x) = x E na ordem raster, yB+xE x E na ordem anti-raster, -b-(f) (x) = yB-xE B+ + b , E onde f[0,k] , Bb + + b b+(y-x)}; b- b-(y-x)}; e Bx –1 –1 –1 –1 0 b0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 k k k 0 0 0 0 k k k 0 0 0 0 k k k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +b+ E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 k 0 0 0 0 2 k k 0 0 0 0 3 k k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 –1 –1 –1 –1 b+ E 18 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposições [Rosenfeld’66] Aplicar um operador seqüencial com vizinhança local Aplicar uma seqüência de operadores paralelos com mesma vizinhança +b+(f) = b+(. . .(b+(f)). . .) = kb (f) + b : b0 = 0 e bG=kb+ kbb estável (kb = (k+1)b) e bG = kb+ kb- +b+(f) - bG(f) = ( f) + bG(f) = b+( b-(f) ) b- 19 Introdução Erosão & Dilatação Padrões da Erosão Ilustração de bG = –1 –1 –1 –1 0 0 –1 –1 –1 –1 b- 2b–2 –2 –2 –2 –2 –2 –1 –1 –1 –2 –1 0 TD por Erosões kb Conclusão + kb b+ 2b+ 0 –1 –2 –1 –1 –1 –2 –2 –2 –2 –2 –2 = –2 –2 –2 –2 –2 –1 –1 –1 –2 –1 0 –1 –1 –1 –1 –2 –2 –2 –2 –2 –2 –2 –2 bG = 2b- 2b+ 20 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Características da Erosão Seqüencial Mais eficiente Simples de implementar em hardware Restrito à máquinas seqüenciais Equivalência restrita entre erosão paralela e seqüencial: bG = kb- kb+ b genérico e não cobre E b = kb- kb+ b estável e aplicável à TD G 21 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão por Propagação • A idéia é processar somente os pixels que podem mudar na erosão: – Fronteira: conjunto de pixels que podem causar mudança nos pixels vizinhos • Enquanto processa a erosão a próxima fronteira é calculada • É adequado para uma seqüência de funções estruturantes não crescentes 22 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão por Propagação f b fb p g b ’fb 23 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Fronteira (f,b) = {xE: yBx, f(y) > f(x) b(x-y)} 0 0 0 0 0 0 0 0 [0] [0] [0] [0] [0] 0 0 [0] k k k [0] 0 0 [0] k k k [0] 0 0 [0] k k k [0] 0 0 [0] [0] [0] [0] [0] 0 0 0 0 0 0 0 0 0 0 0 0 0 Exemplo 2 0 0 Exemplo 1 0 0 0 0 0 0 0 0 0 0 0 [1] [1] [1] 0 0 [1] k [1] 0 0 [1] [1] [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 –1 –1 –1 –1 0 –1 –1 –1 –1 b 24 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão por Propagação x (f,b), y Bx E , if pb(f)(y) > f(x) b(x-y) pb(f)(y) = f(x) b(x-y); fifo_add(’(f,b), y); onde f [0,k] , b , B x E 0 0 0 0 0 0 0 [0] [0] [0] [0] [0] 0 [0] k k k [0] 0 [0] k k k [0] 0 [0] k k k [0] 0 [0] [0] [0] [0] [0] 0 0 0 0 0 0 0 0 0 0 0 0 0 B pb –1 –1 –1 –1 0 –1 –1 –1 –1 b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [1] [1] [1] 0 0 [1] k [1] 0 0 [1] [1] [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposição da Função Estruturante Se existe bi tal que bG = b1 . . . bk onde: b1 . . . bk [ ordem no reticulado ] Então: f fb f1 p f1b b1 f2 ... p f2b 1 b2 ... fk = bG(f) p fkb 2 k bk 26 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Características da Erosão por Propagação Elimina varreduras desnecessárias Menor restrição de bG (se b1 . . . bk ) Implementação em hardware mais complexa Requer estrutura de armazenamento Util quando aplicado em uma seqüência de algoritmos paralelos 27 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 28 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Motivação Mitchell mostrou que: – TD simples erosões em níveis de cinza – Função estruturante • Negativo da distância à origem – Para métrica euclidiana • Negativo do quadrado da distância à origem TDE2 29 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Transformada de Distância TD através de erosões por bG x E, TD(f)(x) = bG(f)(x) = k { f(y) b(y-x) }; yBxE TD(f) = bG(f) f Propriedade: bG(bG(f)) = bG(f) bG(x) = - d(x,(0,0)) 30 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposição da TD bG = b1 b2 . . . g = f; f g { g = f; f = b (g); } i function g = distPar (f,b1, b2, … ) g = f; while f ~= g g = f; f = eroPar (g,bi); end Function g = eroPar(f,b) For all x E in parallel For all y Bx E g(x) = min{f(y) - b(y-x)}; k b4 b3 b2 f TD(f) = b (f)=b (b ( b ( (f)))) G 4 3 2 1 b1 31 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposição da TDE f b1(f) b4 b3 b2(b1(f)) b3(b2(b1(f))) b4(b3(b2(b1(f)))) = TDE(f) = bG(f) b2 b1 32 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão TD com métrica euclidiana (TDE) Decomposição da função estruturante bG -4i+2 bi = -2i+1 -4i+2 -2i+1 -4i+2 0 -2i+1 -2i+1 -4i+2 bG = b1 b2 . . . f bG(f) = bk(. . .(b1(f)). . .) 33 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Classificação da TD por Erosão Métricas Padrões de Algoritmos TD Paralelo Seqüencial Propagação X Rosenfeld66 Rosenfeld68 X Borgerfors86 X Mitchell92 X Vincent92 X Mitchell94 X b8 bO X X X X X X X X X X b3:4 b5:7:11 bE X X X X X X X X X b4 X X X 34 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 35 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão inicial x E, y Bx E , if inib(f)(y) > f(x) b(x-y) inib(f)(y) = f(x) b(x-y); fifo_add(’(f,b), [y d++]); 5 6 4 3 7 8 2 1 direções –2 –1 –2 –1 0 -1 -2 –1 -2 b1 inib 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 k k k k 0 0 1 k k k k 0 0 1 k k k k f 36 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão Direcional [x k] (f,b), y Bx [k--, k, k++] E , if dirb(f)(y) > f(x) b(x-y) dirb(f)(y) = f(x) b(x-y); fifo_add(’(f,b), [y d]); k-k k ++ –6 –3 –6 –3 0 -3 -6 –3 -6 b2 dirb 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 2 4 4 4 0 0 1 4 k k k f 0 0 1 4 k k k 37 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 38 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão TDE = b (f) 1D G f TDE(f) = b (f) G bG 39 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposição da função estruturante bi = -2i+1 0 -2i+1 -1 0 -1 b 1 b2 b2 b1 -3 0 -3 = -4 -1 0 -1 -4 40 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposição da função estruturante • 4 seqüências decrescentes de funções estruturantes 1-D direcional: – North, South, East, West bNi -2i+1 0 bWi -2i+1 bEi 0 0 -2i+1 0 bSi -2i+1 41 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Decomposição da função estruturante • Vantagens desta decomposição – Linhas e colunas podem ser processadas independentemente (processamento paralelo) • Processamento 1-D – algoritmos simples • Família decrescente direcional de funções estruturantes – Implementações eficientes de erosões por propagação 42 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Algoritmo em dois passos • Primeiro passo – TDE para todas as colunas (North/South) – Varreduras raster e anti-raster • Segundo passo – TDE para todas as linhas (West/East) – Erosão por propagação • Nota: somente processamento 1-D 43 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Erosão 1-D direcional para TDE Melhorias adicionais • Para funções estruturantes direcionais – East e West: é possível usar uma fila (FIFO) e usar um processamento seqüencial – usar imagens de entrada e saída iguais • Evita cópias de imagens 44 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Exemplo 1 Primeiro passo: colunas da imagem binária original Raster Anti-raster Este passo é muito eficiente: 1.5 acessos por pixel 45 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Exemplo 1 Segundo passo Entrada East West Este passo é mais lento: Usa erosões por propagação 46 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Exemplo 2 k k f= k 0 -5 -3 -1 b= 0 -1 -3 -5 9 4 fv=b(f) = 1 0 4 1 0 1 0 1 4 9 k k k k b1 = -1 0 -1 5 2 f1= b1(fv) = 1 0 1 1 0 1 0 1 1 2 1 2 5 10 b2 = -3 0 -3 4 2 b2(f1) = 1 0 1 1 0 1 0 1 1 2 1 2 4 5 k k 0 k 0 k k k k k k k 47 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Desempenho image2 80 60 100 90 90 80 121 120 90 101 EroDir 190 210 EroPro 230 240 Saito Eggers PMN Meijster LZ EroPar 1012 701 mili-segundos Desempenho de Algoritomos da TDE 0,3 Saito 0,2 Eggers segundos image1 512x512 PMN Meijster LZ EroDir 0,1 EroPro 0 Pentium III - 800 MHz - 256 MB image1 image2 48 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Comparação de desempenho • A TDE proposta é comparável com os algoritmos mais eficientes da TD • É o mais simples algoritmo da TDE – Para entendimento – Para codificação • É satisfatório para processamento paralelo • É satisfatório para dimensões mais altas 49 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão O que tem de ruim • A condição de pior caso – Acontece com uma linha diagonal de fundo – O número de vezes que os pixels entram na fila é O(n3), considerando uma imagem nxn O que tem de bom • Para imagens típicas, eficiência OK 64K LZ 256K 1M 4M 0.022 0.153 0.659 2.81 Mei 0.028 0.181 0.763 3.08 segundos Pentium III 750 MHz 128 MB 50 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conteúdo 51 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Resultados • Foram apresentados algoritmos da erosão em três padrões de varredura: – paralelo, – seqüencial e – por propagação • Foram feitos estudos da equivalências entre estes padrões • Foram classificados algoritmos da TD usando estes padrões • Foram definidos algoritmos simples e eficientes para o cômputo da TDE – Direcional – Multimensional • Existe algoritmo linear para a TDE – Meijster, Roerdink, Hesselink (00) 52 Introdução Erosão & Dilatação Padrões da Erosão TD por Erosões Conclusão Conclusões • É possível aplicar os conceitos apresentados em outros algoritmos, como MAT e reconstrução • Morfologia Matemática é uma boa teoria para entender e desenvolver algoritmos novos e eficientes Fim 53 54 55