Processamento de Imagem Mestrado ISEP/IST em Eng. Electrotécnica e Computadores António Costa (acc@dei.isep.ipp.pt)
Introdução Definições Ferramentas Amostragem Algoritmos Técnicas Conclusão Informação Adicional Índice Maio 2005 Processamento de Imagem 2
Processamento Digital de Imagem Introdução Desde circuitos simples até sistemas computacionais Enquadramento do Processamento de Imagem Designação Entrada Saída Síntese de Imagem Descrição Imagem Processamento de Imagem Análise de Imagem Compreensão de Imagem Imagem Imagem Imagem Imagem Medidas Descrição Domínio de aplicação 2D (mais comum) Maio 2005 Processamento de Imagem 3
Imagem Definições É uma função escalar a(x,y): intensidade de qualquer coisa traduzida num valor inteiro, real ou complexo Uma imagem digital a[m,n] resulta de imagem analógica a(x,y) através de amostragem - digitalização Uma imagem é formada por N linhas e M colunas, sendo cada elemento de imagem a[m,n] um pixel Na realidade a função a() é a(x,y,z,t,,...), mas será abordado apenas o caso 2D, estático e monocromático Maio 2005 Processamento de Imagem 4
Exemplo Colunas Definições Linhas Valor = a(x,y,z,t, ) Imagem de 16 linhas e 16 colunas Pixel em a[10,3] tem valor inteiro 110 (gama 0-255) Maio 2005 Processamento de Imagem 5
Valores mais comuns Definições Nº de linhas N: 256, 512, 525, 625, 768, 1024, 1035 Nº de colunas M: 256, 512, 768, 1024, 1320 Nº de intensidades: 2, 64, 256, 1024, 65536, 2 24, 2 32 Casos mais comuns: M=N=2 K (K=8,9 ou 10) devido a tecnologias de hardware ou algoritmos (FFT) O número máximo de intensidades é geralmente potência de 2 Caso =2: imagem binária ( preto e branco ) Caso >2: imagem em tons de cinzento Maio 2005 Processamento de Imagem 6
Tipos de operações sobre imagens Definições Transformação de imagem a[m,n] em imagem b[m,n] Pontual: o resultado num pixel apenas depende do valor do pixel de entrada correspondente Local: o resultado num pixel depende dos valores da vizinhança de pixels de entrada próximos Global: o resultado num pixel depende de todos os valores dos pixels de entrada Exemplos Pontual Global Local Maio 2005 Processamento de Imagem 7
Tipos de vizinhança de pixels Definições O conceito de vizinhança de pixels é muito importante No caso mais comum de amostragem rectangular as vizinhanças mais usadas são a viz 4 e a viz 8 Em alguns dispositivos é possível efectuar amostragem hexagonal, de que resulta a vizinhança viz 6 Exemplos Maio 2005 Processamento de Imagem 8
Convolução Obedece ao princípio da sobreposição Ferramentas Permite descrever a saída de um sistema linear, conhecidas a entrada e a função de transferência Versão discreta c[m,n] = a[m,n] b[m,n] = j k a[j,k] b[m-j,n-k] Correlação Mede o grau de similaridade entre dois sinais Versão discreta c[m,n] = a[m,n] b[m,n] = j k a[j,k] b[m+j,n+k] Maio 2005 Processamento de Imagem 9
Transformada de Fourier Versão discreta (DFT) -j( m + n) A(, ) = m n a[m,n] e Ferramentas a[m,n] = 1/4 2 A(, ) e +j( m + n) d d A transformada de uma imagem pode ser complexa Exemplo log( A(, ) ) Reconstrução com (, )=0 a[m,n] (, ) Reconstrução com log( A(, ) )=k Maio 2005 Processamento de Imagem 10
Estatísticas Ferramentas É comum o uso de descrições estatísticas simples A função densidade de probabilidade p(a) de uma região de pixels pode ser estimada por contagem das ocorrências de intensidade nessa região Essa contagem pode ser descrita pelo histograma h[a] a[m,n] P(a) - Intensidade h[a] - Intensidade Maio 2005 Processamento de Imagem 11
Estatísticas Ferramentas Média m a = 1/P j,k a[j,k] (P - nº de pixels da região) Desvio padrão s a = 1/(P-1) j,k (a[j,k] - m a ) 2 Relação sinal/ruído SNR = 20log 10 ((a max - a min ) / s n ) (s n - desvio padrão do ruído) Exemplo Média: 219.3 Desvio padrão: 4.0 Mínimo: 202 Mediana: 220 Máximo: 226 Moda: 220 SNR: 33.3 Maio 2005 Processamento de Imagem 12
Representações de contorno Chain codes Ferramentas Seguimento do contorno em sentido horário com anotação das mudanças de direcção entre pixels sucessivos - exemplo P i +7076666544556... Crack codes Seguimento da linha entre objecto e fundo (crack) Maio 2005 Processamento de Imagem 13
Uma nota de aviso Ferramentas Não é possível ainda modelar o sistema visual humano através das técnicas correntes de análise de sistemas As ilusões ópticas não se enquadram nesses modelos Indução de visualização de valores cinzentos que se sabe não existem e noção de dinamismo na imagem Indução de visualização de contornos inexistentes e contraste exagerado URL: http://www.city.ac.uk/optics/bvtutor/html/ocular_movements_i.html Maio 2005 Processamento de Imagem 14
Amostragem de imagem Amostragem Ideal b ideal [m,n] = m n a(mx0,ny0) (x-mx0,y-ny0) Real b real [m,n] = (a(x,y) p(x,y)) m n (x-mx0,y-ny0) A função de abertura p(x,y) depende da tecnologia usada na captura da informação e é frequentemente: Circular; Quadrada; Gaussiana Deve escolher-se a densidade de amostragem com base na teoria de sinal clássica (teoria de Nyquist) Maio 2005 Processamento de Imagem 15
Algoritmos Baseados em operações de histograma Alargamento do contraste Muitas imagens são geradas com intensidades que não aproveitam a gama máxima de intensidades Corrige-se através do alargamento da gama da imagem b[m,n] = (2 B -1) (a[m,n] - p low% ) / (p high% - p low% ) se p low% < a[m,n] < p high% ; senão 0 ou 2 B -1 p low% - intensidade baixa no histograma (0%, 1%, 5%) p high% - intensidade alta no histograma (100%, 99%, 95%) original contraste alargado Maio 2005 Processamento de Imagem 16
Algoritmos Baseados em operações de histograma Equalização de histogramas Normaliza-se o histograma da imagem para um histograma padrão (comparação de imagens, etc) O objectivo ideal é obter ocorrências iguais para todas as intensidades - histograma plano Pode obter-se algo aproximado usando a função distribuição de probabilidade (normalizada de 0 a 2 B -1) como índice de acesso ao histograma padrão... original histograma equalizado Maio 2005 Processamento de Imagem 17
Algoritmos Baseados em operações matemáticas Operações binárias Baseadas nas operações booleanas pixel a pixel Exemplo Imagem a Imagem b NOT(b) OR(a,b) AND(a,b) XOR(a,b) SUB(a,b) [ AND(a,NOT(b)) ] Operações aritméticas a+b a/b log(a) exp(a) sqrt(a) sin(a) (2 B -1)-a, etc Maio 2005 Processamento de Imagem 18
Enquadramento Algoritmos Baseados em convolução Baseia-se na noção de uma janela finita h() operando sobre a imagem a(), produzindo uma nova imagem c() O pixel de saída é igual à soma pesada dos pixels de entrada dentro da janela, em que os pesos são os valores específicos do filtro de convolução h() Convolução no domínio espacial Pode gerar acessos fora da imagem a[m,n] c[m,n] = a[m,n] h[m,n] = j k h[j,k] a[m-j,n-k] Note-se que m-j ou n-k podem ser negativos Solução: extender artificialmente a imagem Maio 2005 Processamento de Imagem 19
Objectivos gerais Algoritmos Baseados em suavização Tipicamente usados para reduzir o ruído e/ou preparar imagens para outros processamentos mais complexos Filtros lineares Filtro uniforme: Rectangular (J=K=5) Circular (J=K=5) Piramidal (J=K=5) Cónico (J=K=5) Filtro triangular: Filtro gaussiano: cada vez mais utilizado (versatilidade) Maio 2005 Processamento de Imagem 20
Filtros não-lineares Algoritmos Baseados em suavização Estes filtros não podem ser alvo de análises de Fourier Filtro de mediana: em cada aplicação da janela h() usa-se a intensidade mediana dentro da referida janela Filtro Kuwahara: preserva bem os contornos Em cada uma das 4 regiões calcula-se a média e a variância O valor atribuído ao pixel central é o valor médio da região que possui menor variância Região 4 Região 1 Região 2 Pixel central Região 3 Maio 2005 Processamento de Imagem 21
Algoritmos Baseados em suavização Exemplos de vários filtros de suavização Imagem original Histograma Filtro linear Uniforme 5x5 Filtro linear Gaussiano ( =2.5) Filtro não-linear Mediana 5x5 Filtro não-linear Kuwahara 5x5 Maio 2005 Processamento de Imagem 22
Enquadramento Algoritmos Baseados em derivação Os algoritmos apresentados são uma aproximação Tendem a aumentar o ruído de alta frequência, pelo que geralmente são combinados com filtros de suavização Primeira derivada Filtros de gradiente a[m,n] = (h x a[m,n])i x + (h y a[m,n])i y Básicos: Prewitt: Maio 2005 Processamento de Imagem 23
Primeira derivada Algoritmos Baseados em derivação Filtros de gradiente (continuação) a[m,n] = (h x a[m,n])i x + (h y a[m,n])i y Sobel: Construídos à medida: Gaussianos: Maio 2005 Processamento de Imagem 24
Primeira derivada Exemplos de filtros de gradiente Algoritmos Baseados em derivação Imagem original Básico Sobel Gaussiano ( =1.5) Maio 2005 Processamento de Imagem 25
Segunda derivada Algoritmos Baseados em derivação Desempenham um papel muito importante Filtros de Laplaciano 2 a[m,n] = (h 2x a[m,n])i x + (h 2y a[m,n])i y Básicos: Gaussiano: Construídos à medida: SDGD: (2ª derivada na direcção do gradiente) Maio 2005 Processamento de Imagem 26
Segunda derivada Exemplos de filtros de Laplaciano Algoritmos Baseados em derivação Imagem original Básico Gaussiano ( =1.5) À medida SDGD ( =1.0) Maio 2005 Processamento de Imagem 27
Outros filtros Algoritmos Baseados em derivação Há uma infinidade de filtros lineares e não-lineares Para se medir a resposta de filtros não convencionais usam-se imagens de teste (padrões sinusoidais, etc) Permite avaliar os efeitos em termos de frequências Exemplos de resultados com padrão de teste sinusoidal Filtro passa-baixo Filtro passa-banda Filtro passa-alto Maio 2005 Processamento de Imagem 28
Enquadramento Algoritmos Baseados em morfologia Uma definição alternativa do conceito de imagem baseia-se na noção de conjunto de coordenadas que fazem parte dos objectos da imagem Exemplo Os pixels do objecto A partilham uma propriedade Objecto - A = { a propriedade(a) = Verdade } Fundo - A c = { a a A } A B Imagem binária com dois objectos A e B Maio 2005 Processamento de Imagem 29
Enquadramento Algoritmos Baseados em morfologia A noção de objecto implica conectividade de pixels fundo de A objecto A - O objecto A tem conectividade 4 - O fundo tem conectividade 12-4(=8) Definições As operações fundamentais sobre objectos são: Translação: A + x = { a + x a A } Adição/subtracção: A B = b B (A+b) ; A B = b B (A+b) Complemento (fundo) Simetria: -A = { -a a A } Maio 2005 Processamento de Imagem 30
Dilatação e Erosão Algoritmos Baseados em morfologia A dilatação D(A,B) corresponde à adição A B A erosão E(A,B) corresponde à subtracção A (-B ) Exemplos D(A,B) Tipicamente A é uma imagem e B é um estruturante (equivale ao núcleo de convolução dos filtros lineares) Exemplos de estruturantes comuns B E(A,B) -B N 4 N 8 Maio 2005 Processamento de Imagem 31
Dilatação e Erosão Algoritmos Baseados em morfologia Teorema da Decomposição Para um estruturante B finito, simétrico, sem buracos e contendo o seu centro ([0,0] B), verifica-se que D(A,B) = A ( A B) [nota: A é o contorno de A] Resulta que apenas basta processar os pixels do contorno de A, não sendo necessário processar os pixels do seu interior Algoritmo rápido de dilatação: para cada pixel do objecto, todos os seus pixels vizinhos (viz C ) de fundo passam a pertencer ao objecto Algoritmo rápido de erosão: cada pixel do objecto que possua um pixel vizinho (viz C ) de fundo passa a fundo Maio 2005 Processamento de Imagem 32
Dilatação e Erosão Exemplos rápidos Algoritmos Baseados em morfologia Dilatação com estrututante N 4 Dilatação com estrututante N 8 Importante: D(E(A,B),B) A E(D(A,B),B) Abertura e Fecho Abertura: O(A,B) = D(E(A,B),B) Tende a suavizar o contorno pelo interior Fecho: C(A,B) = E(D(A,-B),-B) Tende a suavizar o contorno pelo exterior Maio 2005 Processamento de Imagem 33
HitAndMiss Operador de alto nível HitMiss(A,B) = E(A,B 1 ) E C (A C,B 2 ) Algoritmos Baseados em morfologia B 1 e B 2 são estruturantes finitos e disjuntos entre si Este operador é o equivalente morfológico do template matching (técnica usada para comparar padrões com base na sua correlação) B 1 funciona como template para o objecto B 2 funciona como template para o fundo Maio 2005 Processamento de Imagem 34
Exemplos Estruturantes Algoritmos Baseados em morfologia Imagem A Dilatação com 2B Erosão com 2B Abertura com 2B (separa objectos) Fecho com 2B (preenche buracos) HitAndMiss com B 1 e B 2 [ A = A - E(A,N 8 ) ] Maio 2005 Processamento de Imagem 35
Esqueleto Algoritmos Baseados em morfologia Quando realizavel, é uma polilinha que: Tem largura de 1 pixel Passa pelo meio do objecto Preserva a topologia do objecto Pode ser obtido por um processo iterativo baseado no B 8, não se alterando o pixel central para fundo se 1) o pixel estiver isolado 2) a remoção do pixel alterar a conectividade 3) a remoção do pixel encurtar a linha Maio 2005 Processamento de Imagem 36
Propagação (Reconstrução) Algoritmos Baseados em morfologia Visa reconstruir um objecto parcialmente erodido ou preencher um objecto definido pelo seu contorno Algoritmo iterativo baseado numa imagem semente S (0), uma imagem máscara A e um estruturante B S (k) = D(S (k-1),b) A ; repetir até S (k) = S (k-1) Em cada iteração a semente cresce dentro dos limites de A As conectividades da fronteira de A e de B devem ser iguais A implementação iterativa é ineficiente, mas existe uma implementação recursiva muito mais eficiente Maio 2005 Processamento de Imagem 37
Exemplos Algoritmos Baseados em morfologia E(A,6N 8 ) Imagem A Semente (a preto) Máscara Esqueleto de A Esqueleto de A (sem condição 3) Propagação com N 8 Maio 2005 Processamento de Imagem 38
Algoritmos Baseados em morfologia Tratamento de imagens em tons de cinzento Os algoritmos anteriores podem ser extendidos para imagens com mais de dois níveis (16, 64, 256, etc) Formulações para tons de cinzento Dilatação: D G (A,B) = max [j,k] B { a[m-j,n-k] + b[j,k] } Erosão: E G (A,B) = min [j,k] B { a[m+j,n+k] - b[j,k] } Abertura: O G (A,B) = D G (E G (A,B),B) Fecho: C G (A,B) = -O G (-A,-B) Suavização: MSmooth(A,B) = C G (O G (A,B),B) Gradiente: MGradient(A,B) = 1/2 [D G (A,B) - E G (A,B)] Laplaciano: MLaplacian(A,B) = 1/2 [D G (A,B) + E G (A,B) - 2A] Maio 2005 Processamento de Imagem 39
Algoritmos Baseados em morfologia Exemplos de filtros em tons de cinzento Morfológicos Clássicos Suavização Imagem A Gradiente Dilatação de A Erosão de A Laplaciano Maio 2005 Processamento de Imagem 40
Enquadramento Técnicas Os algoritmos apresentados anteriormente podem ser usados para resolver problemas complexos de processamento de imagem Correcção de sombreamento Os métodos de geração de imagem podem fazer com que as imagens exibam artefactos de sombreamento Imagem brilhante no centro e escura nos limites Imagem a escurecer da esquerda para a direita Efeitos de lentes sujas, iluminação não uniforme, etc Maio 2005 Processamento de Imagem 41
Artefactos de sombreamento Técnicas Correcção de sombreamento Geralmente indesejados, mas difíceis de evitar A sua eliminação é necessária em algumas aplicações Estimação do sombreamento A posteriori Filtragem passa-baixo: a e [m,n] = a[m,n] - LowPass(a[m,n])+K Filtragem morfológica: a e [m,n] = a[m,n] - MSmooth(a[m,n])+K A priori Recurso a imagens de calibração: Preto[m,n] e Branco[m,n] a e [m,n] = K (a[m,n]-preto[m,n]) / (Branco[m,n]-Preto[m,n]) Maio 2005 Processamento de Imagem 42
Exemplos Técnicas Correcção de sombreamento Linha da imagem original 1. O sombreamento indesejado manifesta-se através de uma rampa linear a crescer da esquerda para a direita 2. Os picos são objectos Passa-baixo Homomórfica Morfológica Calibrada (a melhor) Maio 2005 Processamento de Imagem 43
Enquadramento Técnicas Melhoria e restauro O processo de aquisição de imagem geralmente envolve degradação da imagem (inadvertidamente) Desfocagem; Movimento da câmara; Ruído; etc Objectivos Melhoria visa embelezar a imagem Restauro visa repor a verdade na imagem Medição do erro Usa-se frequentemente uma métrica de erro tipo RMS E{a e,a} = 1/MN m n a e [m,n] - a[m,n] 2 Maio 2005 Processamento de Imagem 44
Aumento de nitidez Técnicas Melhoria e restauro Melhorar as silhuetas de uma imagem pode contribuir para aumentar a sua qualidade visual Isolam-se as silhuetas de uma imagem Amplificam-se essas silhuetas Adicionam-se à imagem original O Laplaciano é adequado para isolar as silhuetas a e [m,n] = a[m,n] - (K 2 a[m,n]) Original Melhorada (K=1) Maio 2005 Processamento de Imagem 45
Supressão de ruído Técnicas Melhoria e restauro Pode ser conseguida através de suavização espacial, levando contudo a perda de nitidez Os algoritmos de suavização são os mais adequados Exemplos Wiener Gaussiano ( =1) Imagem original (SNR = 20 db) Kuwahara 5x5 Mediana 3x3 MSmooth 3x3 Maio 2005 Processamento de Imagem 46
Supressão de distorsão Técnicas Melhoria e restauro Um modelo simples assume o ruído como única fonte de distorsão, mas existem modelos mais realistas O filtro Wiener (domínio das frequências) é uma boa solução para distorsões baseadas em ruído Exemplo Imagem distorcida (SNR = 30 db) Wiener Mediana 3x3 A imagem Wiener é mais nítida mas exibe artefactos A imagem Mediana é mais esbatida mas disfarça artefactos Maio 2005 Processamento de Imagem 47
Enquadramento Técnicas Segmentação Designa as diversas técnicas capazes de distinguir objectos de interesse do resto (fundo) Não há uma técnica de segmentação universal ou perfeita Limiarização Recorre a um limiar de intensidade para definir o objecto A escolha do limiar de intensidade adequado é fulcral Escolha do limiar via histograma Exemplo Limiar=155 Imagem a segmentar Histograma de intensidades Maio 2005 Processamento de Imagem 48
Limiarização Escolha do limiar pelo algoritmo do triângulo Exemplo Limiar=152 Técnicas Segmentação Determinação de fronteiras Uma alternativa à limiarização consiste em encontrar os pixels que definem as fronteiras do objectos Gradiente Exemplo Imagem a segmentar Histograma de intensidades Maio 2005 Processamento de Imagem 49
Determinação de fronteiras Cruzamento do zero (método LoG) Técnicas Segmentação Consiste em usar o filtro Laplaciano e processar os cruzamentos do zero da 2ª derivada (mudança de sinal) Requer suavização para evitar o excesso de ruído gerado Método PLUS Também baseado no cruzamento o zero do Laplaciano e no filtro de suavização SDGD(a) Método geral Maio 2005 Processamento de Imagem 50
Exemplos Técnicas Segmentação Imagem original (SNR = 20 db) LoG PLUS Nota: após se encontrar a fronteira dos objectos, podem usar-se algoritmos de propagação para preenchimento Maio 2005 Processamento de Imagem 51
Morfologia binária Técnicas Segmentação Filtragem sal e pimenta (remoção de pixels isolados) Determinação de objectos com furos Exemplo Preenchimento de furos em objectos Exemplo Imagem segmentada Esqueleto após filtro sal e pimenta Imagem final após propagação Máscara Imagem segmentada e invertida Imagem final após propagação e inversão Maio 2005 Processamento de Imagem 52
Morfologia binária Remoção de objectos nos limites da imagem Exemplo Máscara Técnicas Segmentação Geração de exoesqueleto Exemplo Imagem segmentada Imagem após propagação e XOR com a imagem máscara Imagem segmentada e invertida Imagem após geração de esqueleto Maio 2005 Processamento de Imagem 53
Morfologia binária Separação de objectos que se tocam Técnicas Segmentação Segmentar imagem inicial para obter imagem binária Efectuar um número pequeno de erosões da imagem (N 4 ) Calcular o exoesqueleto da imagem erodida Inverter a imagem do exoesqueleto erodido Combinar imagem final através de AND da imagem inicial com a imagem invertida do exoesqueleto erodido! Imagem inicial Erosões Exoesqueleto Pormenor da imagem final Maio 2005 Processamento de Imagem 54
Morfologia de tons de cinzento Técnicas Segmentação É uma extensão das técnicas de morfologia binária Permite abordar os problemas a alto nível Exemplo: método local de alargamento de contraste Processa informação de contraste a nível local Consegue-se obter uma solução mais satisfatória Exemplos Antes Depois Antes Depois Antes Depois Maio 2005 Processamento de Imagem 55
Presente Conclusão O processamento de imagem cada vez está mais embebido em aplicações comuns (Ps2+EyeToy, etc) Ainda há problemas por resolver satisfatoriamente Futuro O processamento de imagem tenderá a evoluir para processamento de sequências de imagem (vídeo, etc) Irão surgir mais implementações em hardware A investigação deslocar-se-á para temas de mais alto nível, que usarão o P. I. como mais uma ferramenta Maio 2005 Processamento de Imagem 56
Sugestões Tutoriais Informação Adicional http://www.google.pt/search?q=image+processing+tutorial http://en.wikipedia.org/wiki/image_processing Softwares livres VIPS - http://www.vips.ecs.soton.ac.uk/ (MS-Windows: http://www.vips.ecs.soton.ac.uk/vips-7.10/) GIMP - http://www.gimp.org/ (MS-Windows: http://gimp-win.sourceforge.net/) Sítios web e documentos Processamento de imagem em GPU s (placas gráficas) http://www.gpgpu.org/ (seguir ligação Image and Volume Processing ) Maio 2005 Processamento de Imagem 57
FIM Maio 2005 Processamento de Imagem 58