Imagens para as aulas de PDI (TOCI-11) Alexandre Gonçalves Silva [email protected] http://www.joinville.udesc.br/portal/professores/alexandre/ Sala F211 DCC/UDESC Bibliografia ● ● Livro texto – Rafael C. Gonzalez, Richard E. Woods. Processamento de Imagens Digitais. Editora Edgard Blucher Ltda., 2000 – Hélio Pedrini, William R. Schwartz. Análise de Imagens Digitais Hall, Thomson, 2008. Notas de aula 1) Fundamentos de Processamento de Imagem Digital, Alexandre X. Falcão e Neucimar J. Leite, Unicamp. 2) Processamento e Análise de Imagens, Jacques Facon, PUC-PR, 2002. ● Webliografia 1) Curso DIP para Khoros http://www.dca.fee.unicamp.br/dipcourse/ 2) Image Processing Fundamental http://www.ph.tn.tudelft.nl/Courses/FIP/frames/fip.html 3) CVonline http://homepages.inf.ed.ac.uk/rbf/CVonline/ Programa ● Processamento de Imagens – Motivação, objetivos, introdução ● Ferramentas ● Fundamentos – definições básicas ● Realce – melhoramento da qualidade visual ● Restauração – informação sobre a fonte de degradação ● Segmentação – divisão em partes de interesse ● Reconhecimento – identificação de objetos Motivação ● Formas de aquisição acessíveis ● Poder de processamento ● Aprimoramento de ferramentas computacionais ● Mais diversas aplicações – Medicina, automação industrial, geologia, artes, ... Objetivos ● ● Melhoramento de imagens para interpretação humana Armazenamento, transmissão e extração de informações para percepção por máquinas Introdução ● (1) Sub-área de processamento de sinais – Funções que contêm informações ● – Mecanismos ● – Texto, voz, música, imagens, vídeos Telégrafo, telefone, rádio, radar, televisão Transmissão Aquisição – Compressão Codificação Descompressão Decodificação Recepção Interpretação Introdução ● ● ● (2) A imagem é um tipo de sinal bidimensional Da aquisição à interpretação, a imagem pode ser transformada, modificada e retransmitida Áreas relacionadas PI Imagem VC CG Descrição IA Introdução ● (3) Uma imagem monocromática é uma função f(x,y) – Onde x e y denotam as coordenadas espaciais e o valor de f(x,y) é proporcional à intensidade de luz (ou nível de cinza) no ponto ou pixel (x,y). y f(x,y) x Introdução ● Uma imagem multibanda consiste, para cada pixel (x,y), em um vetor (c0, c1, ..., cn-1), sendo o componente ck , k∈[0,n1] , monocromático. – Uma imagem colorida é multibanda com k∈[0,2] , por exemplo, c0=R (red), c1=G (green), c2=B (blue) (4) Ferramentas ● Apropriadas – Khoros – MATLAB / Octave – PhotoPixJ – Gimp – – Photoshop ImageMagik ● (1) Escolhidas – Python ● ● – Numpy Gnuplot C/C++ ● OpenCV Ferramentas ● (2) Linguagem Python – Interpretada, orientada a objetos, trata erros e exceções, coleta de lixo automática, com recursos avançados de estruturas de dados – Código aberto, gratuita e extremamente portável – Módulos nativos: os, cgi, ftplib, gzip, math, re, xmllib, sockets, entre outros – Módulos instaláveis: administração de sistemas, interfaces gráficas, internet, banco de dados, programação científica, inteligência artificial, ... – Referências: ● http://www.python.org/ ● http://www.python.org/doc/nonenglish/#portuguese Ferramentas ● (3) Numerical Python – Módulo numérico do Python – Implementa um eficiente modelo de matriz (array) multidimensional – Projetados sob influência de linguagens como MATLAB e FORTRAN – Código aberto e gratuito – Rápida prototipação para Processamento de Imagens – Referência ● http://www.numpy.org Ferramentas ● (4) Modelo de programação – Perfis de programadores – Produtividade – Desempenho Linguagem de Sistema Linguagem Visual •C • C++ • Java • Visual Basic • Tcl • Perl • Python Usuário Ferramentas ● (5) Flexibilidade Python/Numpy def xadrez1(s): from Numeric import zeros a = zeros(s) for i in range(s[0]): for j in range(s[1]): a[i,j] = (i+j) % 2 return a def xadrez2(s): from Numeric import zeros a = zeros(s) a[ ::2,1::2] = 1 a[1::2, ::2] = 1 return a def xadrez3(s): from Numeric import indices (i,j) = indices(s) return (i+j) % 2 1 2 N 1 2 N 1 2 M 0 1 0 1 2 1 2 M 1 0 1 0 + % 2 = 0 1 0 1 N 1 2 M 1 Instalação ● Pacotes necessários 1 Python http://www.python.org 2 Numpy http://www.numpy.org 3 Gnuplot http://www.gnuplot.info 4 Gnuplot.py http://gnuplot-py.sourceforge.net Experimentação ● ● ● Abrir uma imagem fotográfica – Exibir a imagem – Exibir a imagem invertida Criar uma cossenóide 2D – Exibir a imagem – Plotar algumas linhas Aplicações ... Programa ● Processamento de Imagens – Motivação, objetivos, introdução ● Ferramentas ● Fundamentos – definições básicas ● Realce – melhoramento da qualidade visual ● Restauração – informação sobre a fonte de degradação ● Segmentação – divisão em partes de interesse ● Reconhecimento – identificação de objetos Fundamentos ● Percepção visual – Estrutura do olho – Formação da imagem – Adaptação ● Modelo de imagem ● Amostragem ● Quantização ● Conectividade Percepção visual ● Estrutura do olho (1) Percepção visual ● Formação da imagem (2) Percepção visual ● (3) Adaptação à distância/perspectiva Linha vertical parece maior Linha superior parece maior Percepção visual ● (4) Adaptação ao brilho 8 níveis 64 níveis Modelo de Imagem ● (1) Dada uma imagem em níveis de cinza f(x,y) – Representação de 8 bits: 0 ≤ f(x,y) ≤ 255 – Preto: f(x,y) = 0 Branco: f(x,y) = 255 Cinza: 0 ≤ f(x,y) ≤ 255 Modelo de Imagem ● (2) Dada uma imagem colorida f(c,x,y) – Componentes da representação RGB de 24 bits: ● Vermelho R: 0 ≤ f(0,x,y) ≤ 255 ● Verde G: 0 ≤ f(1,x,y) ≤ 255 ● Azul B: 0 ≤ f(2,x,y) ≤ 255 R G B Amostragem ● Espaçamento entre valores discretos no domínio do sinal 240x256 64x64 16x16 Quantização ● Espaçamento entre valores discretos da função 8 bits (256 intensidades) 3 bits (8 intensidades) 1 bit (2 intensidades) Conectividade ● (1) Vizinhança de um pixel p na coordenada (x,y) N4(p) vizinhança-4 de p (x-1, (x , (x , (x+1, y ) y-1) y+1) y ) N8(p) vizinhança-8 de p (x-1, (x-1, (x-1, (x , (x , (x+1, (x+1, (x+1, y-1) y ) y+1) y-1) y+1) y-1) y ) y+1) Nx(p) vizinhança-x de p (definido pelo usuário) Conectividade ● Adjacência – ● (2) Um pixel p é adjacente a um pixel q se eles são conectados pela vizinhaça definida Caminho – Seqüência de pixels (p0, p1, ..., pn) para que, a partir de p0, se alcance pn, sendo pi conectado a pi-1, i ∈ [1,n] Conectividade ● (3) Exemplo de caminhos N4(p) N8(p) Conectividade ● Componente conexo (4) Fundamentos (continuação...) ● Aquecimento – Sintetização de imagem de círculo – Produção de imagem colorida ● Medidas de distância ● Operações aritméticas ● Operações lógicas ● Operações de mínimo e máximo ● Operações de vizinhança Aquecimento ● (1) Sintetização de imagem de círculo – Equação – Função circulo(s,r,c): ● ● Entradas: – s : dimensões (linhas,colunas). – r : raio – c : centro do círculo (xc,yc) Saída: imagem binária de círculo >>> f = circulo((5,7),2,(2,3)) >>> [[0 [0 [0 [0 [0 print 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 f 0 1 1 1 0 0 0 1 0 0 0] 0] 0] 0] 0]] Aquecimento ● (2) Produção de imagem colorida – Função figRGB(tam): ● Entrada: – ● tam : tamanho da imagem (número de linhas igual ao de colunas). Saída: imagem do exemplo da aula Medidas de distância ● (1) Para os pixels p1, p2 e p3, com coordenadas (x1,y1), (x2,y2) e (x3,y3) respectivamente, D é uma função distância ou métrica se – – D(p1, p2) ≥ 0 (D(p1, p2) = 0 se e somente se p1= p2) – D(p1, p2) = D(p2, p1) – D(p1, p3) ≤ D(p1, p2) + D(p2, p3) Medidas de distância ● (2) A distância Euclidiana: – De(p1, p2) = [ (x1 – x2)2 + (y1 – y2)2 ]1/2 ● ● A distância D4 (city block ou quarteirão): – D4(p1, p2) = | x1 – x2 | + | y1 – y2 | ● ● A distância D8 (xadrez): – D8(p1, p2) = max( | x1 – x2 | , | y1 – y2 | ) Operações aritméticas ● Operação global, pixel a pixel, entre uma imagem e uma constante ou entre imagens – Adição (+) (ex.: média para redução de ruído) – Subtração (-) – Multiplicação (*) iluminação) – Divisão (/) - (ex.: detecção de movimento) (ex.: efeitos, correção de = Operações lógicas ● Operação global, pixel a pixel, entre imagens binárias A NOT(A) NOT(B) B – Complemento (NOT) – – A E lógico (AND) – – OU lógico (OR) B AND A = B OR = – – OU exclusivo (XOR) A B XOR = Operações de mínimo e máximo ● Operação global, pixel a pixel, entre imagens em níveis de cinza – Imagens – Mínimo (min) – Máximo (ma Programa ● Processamento de Imagens – Motivação, objetivos, introdução ● Ferramentas ● Fundamentos – definições básicas ● Realce – melhoramento da qualidade visual ● Restauração – informação sobre a fonte de degradação ● Segmentação – divisão em partes de interesse ● Reconhecimento – identificação de objetos Realce ● Introdução ● Operações globais ● Operações de vizinhança ● Realce ponto a ponto – Negativo, brilho e contraste, compressao de escala, fatiamento – Processamento de histograma, equalização, especificação ● Realce local ● Teorema da convolução – Domínio espacial, domínio da freqüência, relação entre domínios Filtragem espacial ● Filtros de suavização – Filtros passa-baixas (lineares) ● – Filtros não-lineares: ● ● Média Mediana Filtros de aguçamento – Filtros passa-altas (lineares) ● Roberts, Prewitt, Sobel Filtros de suavização ● (1) Filtros passa-baixas (lineares) – Filtro de Média Original 1 1 1 1/9 1 1 1 1 1 1 1 1 1 1/49 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Filtros de suavização ● (2) Filtros não-lineares – Filtro Mediana Original – Filtrada (viz. 5x5) Filtros de aguçamento ● (1) Filtros passa-altas – Original Filtro Roberts 1 0 0 -1 0 1 -1 0 a b (a2+b2)1/2 Filtros de aguçamento ● (2) Filtros passa-altas – Original Filtro Prewitt -1 -1 -1 0 0 0 1 1 1 -1 0 1 -1 0 1 -1 0 1 a b (a2+b2)1/2 Filtros de aguçamento ● (3) Filtros passa-altas – Original Filtro Sobel -1 -2 -1 0 0 0 1 2 1 -1 0 1 -2 0 2 -1 0 1 a b (a2+b2)1/2 Exercício ● Escrever, em Python, a função conv(imagem, mascara) – Entradas: ● ● >>> >>> >>> >>> [[ [ [ [ imagem em níveis de cinza matriz contendo os pesos da máscara – Saída: imagem filtrada (normalizada de 0 a 255) – Exemplo de execução f = Numeric.array([[0,0,0,0,0],[0,10,20,30,0],[0,60,50,40,0],[0,0,0,0,0]]) m = 1./9 * Numeric.ones((3,3)) g = conv(f,m) print g 1.11111111 3.33333333 6.66666667 5.55555556 3.33333333] 7.77777778 15.55555556 23.33333333 15.55555556 7.77777778] 7.77777778 15.55555556 23.33333333 15.55555556 7.77777778] 6.66666667 12.22222222 16.66666667 10. 4.44444444]] Introdução ● ● ● O realce consiste em tornar a imagem mais apropriada para uma aplicação específica Normalmente se configura como um pré-processamento ou filtragem, mas também pode ser o resultado final de uma aplicação Há dois objetivos principais e distintos no realce: – Melhora da qualidade visual da imagem – Destaque de alguma característica peculiar da imagem para o processamento seguinte por máquinas Operações globais ● ● As operações são globais quando aplicadas sobre toda a imagem. Ou seja, cada pixel sofre a mesma operação, independente de região. Entre as operações globais, podem ser destacadas: – – – – – – Negação, brilho e contraste Normalização e equalização de histograma Operações aritméticas e lógicas entre imagens Operações de máximo e mínimo entre imagens Limiarização global Limiarização de Otsu Operações globais ● Negativo (1) Operações globais ● Brilho e contraste (2) Operações globais ● Compressao de escala (3) Operações globais ● (4) Fatiamento – – Níveis de cinza f i=[80,100] fi←128 bit 3 bit 5 bit 7 Planos de bits Operações de vizinhança ● ● ● Além de operações globais, podem ser consideradas operações sobre cada região da imagem. Neste caso, cada pixel é substituído pelo resultado de uma determinada operação sobre os valores dos pixels, por exemplo, em sua vizinhança. Entre as operações de vizinhança, podem ser citadas: – – – – Convolução Filtro mediana Filtro k-vizinhos Limiarização de Niblack Convolução Imagem de entrada Máscara Imagem de saída Teorema da convolução ● ● (1) Domínio espacial – Plano da própria imagem – Manipulação direta dos pixels – Convolução da imagem pela máscara Domínio da freqüência – Modificação da transformada discreta de Fourier (DFT) – Multiplicação da DFT da imagem pela DFT da máscara Teorema da convolução ● (2) Relação entro os domínios – Espacial: g(x,y) = h(x,y) * f(x,y) – Freqüência: G(u,v) = H(u,v) F(u,v) g(x,y) = ℑ-1 [ G(u,v) ] ● Considerações – Para máscaras suficientemente grandes, é mais eficiente realizar a convolução no domínio da freqüência por ser implementada através de multiplicações simples. Tópicos ● Transformada Discreta de Fourier (DFT) – Formulação – Exemplos – Filtros passa-baixas e passa-altas ● ● Ideal (seleção abrupta) Butterworth ● ● Modelo de cores ● Pseudo-coloração DFT ● ● ● Transformação do domínio da imagem (x,y) para o espaço de freqüências (u,v) Melhor avaliação das particularidades da imagem e interpretação para o projeto de filtros Formulação DFT ● Formulação (continuação...) – Onde N=128 parte real N=128 parte imaginária DFT de algumas imagens Filtragens na freqüência ● Filtro passa-baixa ideal Filtragens na freqüência ● Filtro passa-alta ideal Filtragens na freqüência ● Filtro passa-baixa de Butterworth – – Filtragens na freqüência ● Filtro passa-baixa de Butterworth (continuação...) – – Pseudo-coloração ● ● ● ● Pseudo-coloração: inserção de cores em imagens monocromáticas. Motivação: contraste de diferentes cores é maior que o contraste de níveis de cinza próximos. Aplicações: imagens médicas, detecção de metais, etc. Método: atribuição de uma cor a cada nível de cinza. Pseudo-coloração Frequência DFT filtro 1 DFT-1 proc. R filtro 2 DFT-1 proc. G filtro 3 DFT-1 proc. B Imagem colorida Imagem em níveis de cinza ● Pseudo-coloração ● Mapa de cores hsv hot Programa ● Processamento de Imagens ● Ferramentas ● Fundamentos – definições básicas ● Realce – melhoramento da qualidade visual ● Restauração – informação sobre a fonte de degradação ● Segmentação – divisão em partes de interesse ● Reconhecimento – identificação de objetos Restauração ● Introdução ● Modelo de degradação ● Filtragem inversa ● Filtro de Wiener ● Exemplos ● Modelagem de H(u,v) ● Transformações geométricas Introdução ● Remoção ou redução da degradação da imagem ● Modelos de ruídos ● – Gaussiana (borramentos), impulsiva (sal e pimenta) – Uniforme (movimentos), periódico (picos de freq.) Modelo de degradação N(u,v) I(u,v) H(u,v) + ? D(u,v) R(u,v) I'(u,v) Modelo de degradação ● Modelo no domínio espacial ● – d(x,y) = i(x,y) * h(x,y) + η(x,y) Onde ● ● ● ● d(x,y) é a imagem degradada i(x,y) é a imagem original h(x,y) é o processo de degradação η(x,y) é o ruído presente na imagem degradada ● ● Modelo no domíno de frequência ● D(u,v) = I(u,v) ⋅ H(u,v) + N(u,v) Modelo de degradação ● O problema consiste em encontrar o filtro R(u,v) que aproxima I'(u,v) do espectro I(u,v) da imagem original. ● Se a restauração for perfeita, então I'(u,v)=I(u,v) ● Portanto Filtragem inversa ● ● ● Assumindo N(u,v) = 0, Especial atenção quando H(u,v) = 0 para algumas frequências (u,v) Como normalmente H(u,v) tem características de bassa-baixas, é comum assumir um frequência de corte w (raio). Filtragem de Wiener ● Minimiza o erro quadrático médio ● Resultando é a relação ruído-sinal normalmente constante Exemplos Filtro inverso completo Filtro inverso com raio w Filtro de Wiener Modelagem de H(u,v) Rejeita-banda Ideal Rejeita-banda de Butterworth Rejeita-banda Gaussiano Modelagem de H(u,v) ● Estimação da função de degradação – – – Observação: – Experimentação: H(u,v)=D(u,v) / I'(u,v) Movimento: H(u,v) = D(u,v) / A Modelagem de H(u,v) (Falcão, 2005) Modelagem de H(u,v)