Seminário
Introdução à Visão
Computacional
- The Cyclops Project CPGCC - INE -UFSC
Domí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.
Domí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ísticas
V7. Operações Combinadas
V1. Operações Matemáticas de
imagem 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)
V1. Operações Matemáticas de
imagem 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)
V1. Operações Matemáticas de
imagem 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
V2. Operações Lógicas com
operando 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)
V2. Operações Lógicas com
operando 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
V3. Operações Matemáticas de
imagem 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)
V3. Operações Matemáticas de
imagem 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.
V3. Operações Matemáticas de
imagem 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
V4. Operações Lógicas de imagem
com 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)
V4. Operações Lógicas de imagem
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 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
V5. Operações de Limiarização
Limiarização simples
V5.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ção
Limiarização de faixa
V5.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ção
Limiarização com Tolerância
V5.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ção
Limiarização com Tolerância
V5.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ção
Vizinhança de 4:
Vizinhança de 8:
V5. Operações de Limiarização
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 0
limiarfaixa -i ima.pgm -o res.pgm -op fora -inf 128 -sup 200
-c1 255 -c2 0
limiartoler -i ima.pgm -o res.pgm -op acima -inf 128 -sup 130
-c1 255 -c2 0
V6. 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.
V6. Operações Estatísticas
V6. 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:
255
21 34 56 678 9000 7890 67 5677 456 ....
V6. 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:
4
0 34
35 90
91 200
200 255
V6. Operações Estatísticas
Implementação do Cálculo de Pontos Nodais em
Histograma
•
Histograma abaixo aparentemente possui dois pontos nodais
#
0
256
V6. 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
V6. 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
V6. 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
V6. 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
V6. 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
V6. 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.
V6. Operações Estatísticas
Implementação
Saí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
V7. 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
Download

Implementação - INE