Exercício 5

Autor: Rodrigo Mologni Gonçalves dos Santos
Data: 15/04/2009

Índice

  • 1. Realce de imagens com o uso da função iaapplylut da biblioteca ia636

    • 1.1 Negativo
    • 1.2 Binarização
    • 1.3 Compressão da escala dinâmica
    • 1.4 Alargamento da escala dinâmica
    • 1.5 Fatiamento de níveis de cinza
  • 2. Reprogramação da função iaapplylut

  • 3. Implementação de uma função para alargamento de contraste

1. Realce de imagens com o uso da função iaapplylut da biblioteca ia636

Neste tópico serão apresentados quatro exemplos de realce de imagens usando a função iaapplylut da biblioteca ia636 (http://www.dca.fee.unicamp.br/ia636/ia636/iaapplylut.html). Para todas elas serão utilizadas uma imagem de um fotógrafo representada na Figura 1.

Figura 1 - Imagem de um fotógrafo.

1.1 Negativo

O negativo de uma imagem consiste em reverter a ordem do preto para o branco, de modo que a intensidade da imagem de saída diminua à medida que a intensidade da entrada aumente, tal como expresso pela equação:

Onde:

  • o = intensidade do pixel de saída;
  • T(i) = transformação aplicada sobre a intensidade do pixel de entrada;
  • i = intensidade do pixel de entrada;
  • L = quantidade de variações da intensidade de um pixel.

A Figura 2 (c) exibe o negativo (b) aplicado sobre uma imagem de um fotógrafo (a), e também exibe um histograma da imagem (d) antes (vermelho) e após (verde) a transformação.

(a) Imagem original.

(c) Negativo da imagem.

Figura 2 - Negativo de uma imagem de um fotógrafo.

1.2 Binarização

A binarização de uma imagem consiste no alargamento máximo de contraste, de modo que a intensidade da imagem de saída seja 0 para todas as intensidades de entrada inferiores a L / 2 - 1 e L - 1 caso contrário, tal como expressa pela equação:

Onde:

  • o = intensidade do pixel de saída;
  • T(i) = transformação aplicada sobre a intensidade do pixel de entrada;
  • i = intensidade do pixel de entrada;
  • L = quantidade de variações da intensidade de um pixel.

A Figura 3 (c) exibe a binarização (b) aplicada sobre uma imagem de um fotógrafo (a), e também exibe um histograma da imagem (d) antes (vermelho) e após (verde) a transformação.

(a) Imagem original.

(c) Binarizacao da imagem.

Figura 3 - Binarização de uma imagem de um fotógrafo.

1.3 Compressão da escala dinâmica

A compressão da escala dinâmica consiste em melhorar a visibilidade de imagens escuras, de modo que a intensidade da imagem de saída aumente em proporção logarítmica, tal como expressa pela equação:

Onde:

  • o = intensidade do pixel de saída;
  • T(i) = transformação aplicada sobre a intensidade do pixel de entrada;
  • i = intensidade do pixel de entrada;
  • c = valor da constante.

A Figura 4 (c) exibe a compressão da escala dinâmica (b) aplicada sobre uma imagem de um fotógrafo (a), e também exibe um histograma da imagem (d) antes (vermelho) e após (verde) a transformação.

(a) Imagem original.

(c) Compressão da escala dinâmica da imagem

Figura 4 - Compressão da escala dinâmica de uma imagem de um fotógrafo.

1.4 Ampliação da escala dinâmica

A ampliação da escala dinâmica consiste em melhorar a visibilidade de imagens claras, de modo que a intensidade da imagem de saída dimunua em proporção exponencial, tal como expressa pela equação:

Onde:

  • o = intensidade do pixel de saída;
  • T(i) = transformação aplicada sobre a intensidade do pixel de entrada;
  • i = intensidade do pixel de entrada;
  • c = valor da constante;
  • n = valor do expoente.

A Figura 5 (c) exibe a ampliação da escala dinâmica (b) aplicada sobre uma imagem de um fotógrafo (a), e também exibe um histograma da imagem (d) antes (vermelho) e após (verde) a transformação.

(a) Imagem original.

(c) Ampliação da escala dinâmica da imagem

Figura 5 - Alargamento da escala dinâmica de uma imagem de um fotógrafo.

1.5 Fatiamento de níveis de cinza

O fatiamento de níveis de cinza consiste em enfatizar uma escala específica de níveis de cinza de uma imagem, tal como expresso, por exemplo, pela equação:

Onde:

  • o = intensidade do pixel de saída;
  • T(i) = transformação aplicada sobre a intensidade do pixel de entrada;
  • i = intensidade do pixel de entrada;
  • L = quantidade de variações da intensidade de um pixel.
  • k = valor constante entre 0 e L - 1;
  • iₓ = ponto de inflexão da função o.

A Figura 6 (c) exibe o fatiamento de níveis de cinza (b) aplicado sobre uma imagem de um fotógrafo (a), e também exibe um histograma da imagem (d) antes (vermelho) e após (verde) a transformação.

(a) Imagem original.

(c) Fatiamento de níveis de cinza da imagem.

Figura 6 - Fatiamento de níveis de cinza de uma imagem de um fotógrafo.

2. Reprogramação da função iaapplylut

De acordo com a equação apresentada abaixo e extraída de http://www.dca.fee.unicamp.br/ia636/ia636/iaapplylut.html, a imagem de saída g(x, y) é gerada por uma transformação T cujos índices são os valores da imagem de entrada f(x, y).

A função my_iaapplylut apresentada a seguir implementa a equação citada anteriormente.

1. def my_iaapplylut(fi, it):
2.     return it[fi]

A Figura 7 exibe o negativo de uma imagem de um fotógrafo usando as funções iaapplylut (a) e my_iaapplylut (b).

(a) Resultado da função iaapplylut.

(b) Resultado da função my_iaapplylut.

Figura 7 - Negativo de uma imagem de um fotógrafo.

3. Implementação de uma função para alargamento de contraste

O alargamento de contraste consiste no aumento da escala dinâmica dos níveis de cinza de uma imagem. Uma transformação típica usada para alargamento de contraste é expressa pela equação:

Onde:

  • o = intensidade do pixel de saída;
  • T(i) = transformação aplicada sobre a intensidade do pixel de entrada;
  • i = intensidade do pixel de entrada;
  • rₓ = equação reduzida da reta;
  • iₓ = ponto de inflexão da função o;
  • aₓ = coeficiente angular da reta;
  • bₓ = coeficiente linear da reta.

A função AlargamentoDeContraste apresentada a seguir possui os seguintes parâmetros de entrada: Wi, largura da janela (eixo de entrada); Wo, altura da janela (eixo de saída); Li, coordenada do ponto médio da largura da janela; e Lo, coordenada do ponto médio da altura da janela.

01. def AlargamentoDeContraste(Wi, Wo, Li, Lo):
02.     # Coordenadas dos pontos P1 e P2 no eixo de entrada
03.     i1 = Li - Wi / 2
04.     i2 = Li + Wi / 2
05. 
06.     # Coordenadas dos pontos P1 e P2 no eixo de saída
07.     o1 = Lo - Wo / 2
08.     o2 = Lo + Wo / 2
09. 
10.     # Pontos de inflexão das três semi-retas
11.     p = array([
12.         [  0,   0], # Coordenadas do ponto P0
13.         [ i1,  o1], # Coordenadas do ponto P1
14.         [ i2,  o2], # Coordenadas do ponto P2
15.         [255, 255]  # Coordenadas do ponto P3
16.         ]).astype(float)
17. 
18.     # Cálculo dos coeficientes 'a' e 'b' de uma semi-reta que intercepta os pontos 'pi' e 'pf'
19.     def CoeficientesDaReta(pi, pf):
20.         a = (pf[1] - pi[1]) / (pf[0] - pi[0])
21.         b = pi[1] - a * pi[0]
22.         return [a, b]
23. 
24.     # Semi-retas que interceptam os pontos de inflexão dois a dois
25.     r = array([
26.         CoeficientesDaReta(p[0], p[1]), # Coeficientes 'a' e 'b' da reta R0
27.         CoeficientesDaReta(p[1], p[2]), # Coeficientes 'a' e 'b' da reta R1
28.         CoeficientesDaReta(p[2], p[3])  # Coeficientes 'a' e 'b' da reta R2
29.         ])
30. 
31.     # Vetor de índices variando de 0 a 255
32.     t = arange(256)
33. 
34.     # Geração da função que une as equações das três retas
35.     for k in range(3):
36.         # Equação da reta: f(x) = a . x + b
37.         t[int(p[k, 0]):int(p[k + 1, 0])] = r[k, 0] * arange(int(p[k, 0]), int(p[k + 1, 0])) + r[k, 1]
38. 
39.     # Retorna um vetor com a transformação de alargamento de contraste
40.     return t

Para gerar uma função de alargamento de contraste interativamente, clique em Change Parameters e insira os valores dos parâmetros de entrada da função AlargamentoDeContraste.

A Figura 8 (c) exibe a transformação de alargamento de contraste (b) aplicada sobre uma imagem de um fotógrafo (a) usando a função AlargamentoDeContraste, e também exibe um histograma da imagem (d) antes (vermelho) e após (verde) a transformação.

(a) Imagem original.

(c) Imagem após alargamento de contraste.

Figura 8 - Alargamento de contraste de uma imagem de um fotógrafo.