32
Seminário Seminário Introdução à Visão Introdução à Visão Computacional Computacional - The Cyclops Project - CPGCC - INE -UFSC

Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Embed Size (px)

Citation preview

Page 1: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

SeminárioSeminárioIntrodução à Visão Introdução à Visão ComputacionalComputacional

- The Cyclops Project - CPGCC - INE -UFSC

Page 2: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

DomíniosDomínios

1. Domínio do Valor• Consideramos apenas o Valor de cada pixel da imagem, sem

levar em consideração o que se encontra ao seu redor.2. Domínio do Espaço• Consideramos o valor de cada pixel e também a relação

deste com os valores de um conjunto de pixels na sua vizinhança.

3. Domínio da Freqüência• Consideramos o comportamento de variação do valor dos

pixels de uma imagem em vários sentidos.

Page 3: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Domínio do ValorDomínio do Valor

V1. Operações Matemáticas de imagem com operando escalar.

V2. Operações Lógicas com operando escalar.V3. Operações Matemáticas de imagem com imagem.V4. Operações Lógicas de imagem com imagem.V5. Operações de Limiarização.V6. Operações EstatísticasV7. Operações Combinadas

Page 4: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V1. Operações Matemáticas de V1. Operações Matemáticas de imagem com operando escalarimagem com operando escalar

V1.1. Soma: Soma-se um escalar a cada pixel da imagem, aumentando sua intensidade.

V1.2. Multiplicação: Multiplica-se um escalar por cada pixel da imagem. Resultado é expresso em valor inteiro.Resultados de ambos os métodos são truncados para o valor máximo de representação de pixel no tipo de imagem (no nosso caso 255)

Page 5: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V1. Operações Matemáticas de V1. Operações Matemáticas de imagem com operando escalarimagem com operando escalar

V1.3. Subtração: Subtrai-se um escalar de cada pixel da imagem, reduzindo-se sua intensidade.

V1.4. Divisão inteira: Divide-se o valor de cada pixel da imagem por um escalar. Expressa-se o resultado como inteiro.Resultados são expressos truncados ao valor mínimo de representação no tipo de imagem (em nosso caso 0)

Page 6: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V1. Operações Matemáticas de V1. Operações Matemáticas de imagem com operando escalarimagem com operando escalar

Implementação:• Um único programa implementa todo o conjunto V1. • Um parâmetro do tipo Símbolo define qual operação será

realizada.Exemplo: mathescalar -i imagem.pgm -o iresult.pgm -valor 20 -op soma

Page 7: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V2. Operações Lógicas com V2. Operações Lógicas com operando escalaroperando escalar

V2.1. OR: Realiza-se OU lógico entre cada pixel da imagem e operando binário escalar.

V2.2. AND: Realiza-se E lógico entre cada pixel da imagem e operando binário escalar.

V2.3. XOR: Realiza-se OU exclusivo lógico entre cada pixel da imagem e operando binário escalar.

V2.4. NOT: Realiza-se negação lógica de cada pixel da imagem. Resultados são expressos sempre de forma binária (em nosso caso 0 ou 255)

Page 8: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V2. Operações Lógicas com V2. Operações Lógicas com operando escalaroperando escalar

Implementação:• Um único programa implementa todo o conjunto V2. • Um parâmetro do tipo Símbolo define qual operação

será realizada.Exemplo: boolescalar -i imagem.pgm -o iresult.pgm -valor 1 -op and

Page 9: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V3. Operações Matemáticas de V3. Operações Matemáticas de imagem com imagemimagem com imagem

V3.1. Soma: Soma-se cada pixel de uma imagem ao correspondente da outra.

V3.2. Multiplicação: Multiplica-se cada pixel de uma imagem com o correspondente da outra. Resultado é expresso em valor inteiro.Resultados de ambos os métodos são truncados para o valor máximo de representação de pixel no tipo de imagem (no nosso caso 255)Método só pode ser executado se ambas imagens possuem dimensões iguais (x@y)

Page 10: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V3. Operações Matemáticas de V3. Operações Matemáticas de imagem com imagemimagem com imagem

V3.3. Subtração: Subtrae-se-se cada pixel de uma imagem do correspondente da outra.

V3.4. Diferença absoluta: Subtrae-se-se cada pixel de uma imagem do correspondente da outra. Resultado é expresso em valor positivo.

V3.5. Divisão: Divide-se cada pixel de uma imagem pelo correspondente da outra. Resultado é expresso em valor inteiro. Valem as considerações sobre limites mínimos.

Page 11: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V3. Operações Matemáticas de V3. Operações Matemáticas de imagem com imagemimagem com imagem

• A ordem dos parâmetros de entrada faz diferença.• Ordem é a mesma da expressão na forma infixada.Implementação:• Um único programa implementa todo o conjunto V3. • Um parâmetro do tipo Símbolo define qual operação será

realizada.Exemplo: math -i1 imagem.pgm -i2 imagem2.pgm -o iresult.pgm -op dif

Page 12: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V4. Operações Lógicas de imagem V4. Operações Lógicas de imagem com imagemcom imagem

V4.1. OR: Realiza-se OU lógico entre cada pixel corespondente das imagens.

V4.2. AND: Realiza-se E lógico entre cada pixel corespondente das imagens.

V4.3. XOR: Realiza-se OU exclusivo lógico entre cada pixel corespondente das imagens.

Resultados são expressos sempre de forma binária (em nosso caso 0 ou 255)

Page 13: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V4. Operações Lógicas de imagem V4. Operações Lógicas de imagem com imagemcom imagem

• A ordem dos parâmetros de entrada faz diferença.• Ordem é a mesma da expressão na forma infixada.Implementação:• Um único programa implementa todo o conjunto V4. • Um parâmetro do tipo Símbolo define qual operação

será realizada.Exemplo: bool -i1 imagem.pgm -i2 imagem2.pgm -o iresult.pgm -op xor

Page 14: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Limiarização simplesV5.1. Limiar acima: Compara-se cada pixel de uma

imagem com um valor limiar. Pixels cujo valor for >= ao limiar recebem a cor #1, o resto a cor #2.

V5.2. Limiar abaixo: Compara-se cada pixel de uma imagem com um valor limiar. Pixels cujo valor for <= ao limiar recebem a cor #1, o resto a cor #2.Para indicar que as cores são branco e preto, podemos expressar #1 = 255 e #2 = 0. Pode-se perfeitamente definir outros valores.

V5. Operações de LimiarizaçãoV5. Operações de Limiarização

Page 15: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Limiarização de faixaV5.3. Limiar dentro: Compara-se cada pixel de uma

imagem com dois valores limiar. Pixels cujo valor for >= ao limiar inferior e <= ao superior recebem a cor #1, o resto a cor #2.

V5.4. Limiar fora: Compara-se cada pixel de uma imagem dois valores limiar. Pixels cujo valor for <= ao limiar inferior e >= ao superior recebem a cor #1, o resto a cor #2.

V5. Operações de LimiarizaçãoV5. Operações de Limiarização

Page 16: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Limiarização com TolerânciaV5.5. Limiar acima com histerese: Compara-se cada

pixel de uma imagem com dois valores limiares. Pixels cujo valor for >= ao limiar superior recebem a cor #1, pixels que forem <= ao inferior a cor #2. Pixels entre os limiares são comparados aos seus vizinhos imediatos (vizinhança de 4 ou vizinhança de 8), se algum vizinho estiver acima do limiar, este pixel receberá a cor #1, senão a #2.

V5. Operações de LimiarizaçãoV5. Operações de Limiarização

Page 17: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Limiarização com TolerânciaV5.6. Limiar abaixo com histerese: Compara-se cada

pixel de uma imagem com dois valores limiar. Pixels cujo valor for <= ao limiar inferior recebem a cor #1, pixels que forem >= ao superior a cor #2. Pixels entre os limiares são comparados aos seus vizinhos imediatos (vizinhança de 4 ou vizinhança de 8), se algum vizinho estiver abaixo do limiar, este pixel receberá a cor #1, senão a #2.

V5. Operações de LimiarizaçãoV5. Operações de Limiarização

Page 18: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Vizinhança de 4:

Vizinhança de 8:

V5. Operações de LimiarizaçãoV5. Operações de Limiarização

Page 19: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

Implementação:• Três programas implementam todo o conjunto V5.

•Limiar Simples•Limiar com Faixa•Limiar com Tolerância

• Um parâmetro do tipo Símbolo define qual operação será realizada.Exemplos:limiarsimples -i imagem.pgm -o iresult.pgm -op acima -lim 100-c1 255 -c2 0limiarfaixa -i ima.pgm -o res.pgm -op fora -inf 128 -sup 200-c1 255 -c2 0limiartoler -i ima.pgm -o res.pgm -op acima -inf 128 -sup 130-c1 255 -c2 0

V5. Operações de LimiarizaçãoV5. Operações de Limiarização

Page 20: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

V6.1.Histograma: Para cada possível valor de pixel na escala de valores utilizada (0 a 255 no nosso caso) conta-se o número de pixels apresentando esse valor. Gera-se um vetor contendo esses valores (256 posições no nosso caso) e também uma imagem representando essa contagem como um gráfico de barras.

V6.2. Histograma por Faixas: Calcula-se o histograma dividindo-se a faixa de valores em pedaços dados por seus limites.

V6.3. Pontos Nodais de Histograma: Calcula-se o histograma e procura-se por n fundos-de-vale no mesmo. Gera-se um vetor contendo esses valores.

Page 21: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Page 22: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Implementação do Histograma V6.1:• Programa toma uma imagem de entrada e gera dois

arquivos de saída: a imagem do histograma e o vetor de valores (em ASCII)

Exemplo: histo -i imagem.pgm -o iresult.pgm -h histo.txt

histo.txt:25521 34 56 678 9000 7890 67 5677 456 ....

Page 23: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Implementação do Histograma por Faixas V6.2:• Programa toma uma imagem e um arquivo texto com a definição das

faixas de entrada e gera dois arquivos de saída: a imagem do histograma e o vetor de valores (em ASCII)

Exemplo:histofaixa -i imagem.pgm -f faixas.txt -o result.pgm -h histo.txt

faixas.txt:40 34 35 90 91 200 200 255

Page 24: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Implementação do Cálculo de Pontos Nodais em Histograma

• Histograma abaixo aparentemente possui dois pontos nodais

0 256

#

Page 25: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Achando Pontos Nodais em Histograma• Primeiramente achamos os picos: pontos de valor elevado onde a

derivada muda de positivo para negativo. Para evitar que pequenas flutuações incluam erros, sempre tomar um conjunto de valores para o cálculo.

0 256

#

Page 26: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Achando Pontos Nodais em Histograma• Depois achamos os vales : pontos pontos entre os picos de menor

valor. Se houver uma faixa grande de valor baixo, pegar o meio desta.

0 256

#

Page 27: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Classificando Pontos Nodais em Histograma• Em terceiro lugar classificamos os vales: vales muito próximos aos

picos não nos interessam, pois representam apenas variações de cor de um mesmo grupo.

0 256

#

Page 28: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Verificando Pontos Nodais em Histograma• Por último calculamos a área (numero de pontos) de cada segmento:

segmentos com muito poucos pontos também não nos interessam e são fundidos com o vizinho que possuir tamanho suficiente.

0 256

#

Page 29: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Verificando Pontos Nodais em Histograma• Exemplo: A área azul é considerada pequena por que possui poucos

pontos e ao mesmo tempo representa um vale relativamente baixo. O ponto nodal em vinho é eliminado. A área é fundida com a área em laranja, já que esse lado é o da menor amplitude.

0 256

#

Page 30: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

Requisitos• Tolerância no cálculo das derivadas: Usamos uma seqüência de vários

valores e uma reta interpolando estes para calcular a derivada tangente. Deve-se implementar o numero de valores como parâmetro.

• Tolerância na identificação do centro de um vale: Ignora-se pequenas variações ao se seguir o fundo de um vale para determinar sua extensão. Implementado como parâmetro.

• Tamanho (área) mínimo de um segmento entre pontos nodais: implementar como parâmetro.

• Seleção de segmentos a fundir: devem ter área abaixo do mínimo e amplitude abaixo de um parâmetro. Melhor forma de expressar isto é multiplicar estes dois valores.

• Número máximo de pontos nodais: parametro definido pelo usuário.

Page 31: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V6. Operações EstatísticasV6. Operações Estatísticas

ImplementaçãoSaídas: • Imagem do histograma mostrando os pontos nodais (mostrar

histograma em cinza e pontos nodais como retas verticais em branco. • Arquivo texto dando lista de valores de pontos nodais.

Linha de comando para forçar encontrar dois pontos nodais:histonodal -i imagem.pgm -o iresult.pgm -h histo.txt -ntan 10

-tolval 20 -amplitude 50 -area 100 -nodos 2

Page 32: Seminário Introdução à Visão Computacional - The Cyclops Project - CPGCC - INE -UFSC

V7. Operações CombinadasV7. Operações Combinadas

V7.1. Limiarização com Histograma: Utiliza o resultado de um Cálculo de Pontos Nodais em Histograma para definição dinâmica do limiar. O método de cálculo de pontos nodais é parametrizado para produzir apenas um único ponto nodal.

limiarhisto -i imagem.pgm -o iresult.pgm -op acima -histo histo.txt -c1 255 -c2 0