Você está na página 1de 29

Filtragens

e operadores sobre
imagens

Componentes conexos
Uma coleo de pixels dito ser um componente 4-conexo (ou 8-conexo)
se, para quaisquer 2 pixels (x,y) e (i,j) dentro de uma coleo, exis@r um
caminho (ou uma seqncia) de (x,y) a (i,j), onde cada elemento desse
caminho 4-conexo (ou 8-conexo) do prximo elemento.

1
1
1
0
1
1

1
1
0
0
1
1

0
0
0
1
0
0

1
1
1
0
1
1

1
1
0
0
1
1

1
1
1
0
1
1

1
1
0
0
1
1

0
0
0
1
0
0

1
1
1
0
1
1

1
1
0
0
1
1

4-conexo = 5 componentes

1
1
1
0
1
1

1
1
0
0
1
1

0
0
0
1
0
0

1
1
1
0
1
1

1
1
0
0
1
1

8-conexo = 2 componentes

Rotulao de CCs (algoritmo)


Para todo pixel (x,y) do domnio da imagem
Se (x,y) for um pixel do objeto da imagem E (x,y) no
rotulado ento
1. Inicialize uma pilha P
2. P.empilhe( (x,y) )
3. Enquanto a pilha P no est fazia, faa
(i, j) = P.desempilhar( )
Rotule o pixel (i,j)
Para todos os pixels (xx, yy) C8(i,j) E (xx,yy) no rotulado

P.empilhar( (xx, yy) )


Conjunto dos pixels
8-conexos em relao
ao pixel (I, j)

Filtros conexos (p/ imagens binrias)


Um Filtro conexo aplicado em uma imagem
binria elimina algumas CCs de acordo com
algum critrio.
Exemplos:
Filtro por rea: Elimina as CCs cujo a rea menor
que um dado limiar
Filtro por largura ou altura: Elimina as CCs cujo a
largura ou altura menor que um dado limiar.

Exemplo

Filtragem
por rea:
limiar = 100

Operador de limiarizao
Converte uma imagem em tons de cinza para
binria.
Limiares de
Denio:
entrada
$1, se t1 f (x, y)t2
(x, y) D f , [T[t1,t2 ] ( f )](x, y) = %
&0, caso contrrio

Por simplicao, fazemos t1 = 0 e assim


$1, se f (x, y)t2
(x, y) D f , [T[t2 ] ( f )](x, y) = %
&0, caso contrrio

Exemplo

Entrada: vamos chamar de f

Sada: T[0, 140](f) = T[140](f)

Exemplo

10

20

200

11

31

11

21

190

21

12

11

180

150

111

200

190

160

51

170

141

11

21

145

81

61

91

91

150

51

81

Entrada: vamos chamar de f

Sada: T[0, 140](f) = T[140](f)

Operador para imagens binrias


(booleanos)
Considere duas imagens binrias com o mesmo
domnio, digamos f e g.
Podemos aplicar, os usuais operadores booleanos para
todos os pixels do domnio e produzir novas imagens:

[OR(f)](x, y) = f(x, y) OR g(x, y) o mesmo que a unio de f e g


[AND(f)](x, y) = f(x, y) AND g(x, y) o mesmo que a interseco de f e g
[XOR(f)](x, y) = f(x, y) XOR g(x, y) o mesmo que a diferena entre f e g
[NOT(f)](x, y) = 1 - f(x,y) o mesmo que a negao de f

Exemplo

vamos chamar esta imagem de f

vamos chamar esta imagem de g

OR(f, g)

AND(f, g)

XOR(f, g)

NOT(f)

Operador pontuais para imagens


Considere duas imagens nveis de cinza com o
mesmo domnio, digamos f e g.
[Nega@vo (f)](x, y) = 255 - f(x, y) o mesmo que
inverter os pixels de f
[OperadorAritm@co(f, g)](x, y) = f(x, y) OP g(x, y)
Exemplos:
[Soma(f, g)](x, y) = f(x, y) + g(x, y)
[Subtrao(f, g)](x, y) = f(x, y) - g(x, y)
[Mul@plicao(f, g)](x, y) = f(x, y) * g(x, y)
[Diviso(f, g)](x, y) = f(x, y) / g(x, y)
Obs: Se uma operao, para um pixel (x,y), ultrapassar os limites da
imagens ento atribumos o valor mximo para um pixel para (x, y)

Exemplo

10

20

200

11

31

245

235

55

244

224

11

21

190

21

12

244

234

65

234

234

11

180

150

111

200

244

65

105

144

55

190

160

51

170

141

65

95

204

85

114

11

21

145

81

61

244

234

110

174

194

91

91

150

51

81

164

164

105

204

174

Entrada: vamos chamar de f

Sada: nega@vo(f)

Decomposio
Podemos decompor uma imagem em nveis
de cinza em 256 imagens binria
"1, se f (x, y) i
Decomposio inferior: Ti ( f ) = #
$0, caso contrrio

Observao:

Se i < j ento
Ti(f) contm todos os pixels de valor 1 de Tj(f)

f(x, y) = min{ k : [Tk(f)](x,y) = 1 } Assim, podemos


reconstruir f a par@r das 256 imagens binrias
"1, se f (x, y) i
Decomposio superior: T ( f ) = #
$0, caso contrrio
Se i > j ento
i

Ti(f) contm todos os pixels de valor 1 de Tj(f)

f(x, y) = max{k : [Tk(f)](x,y) = 1} Reconstruo

Decomposio
Podemos decompor uma imagem em nveis de
cinza em 256 imagens binria
"1, se f (x, y) i
Ti ( f ) = #

Decomposio superior:
Para aplicar um operadores conexos em uma imagens em nveis de cinza f,
$0, caso contrrio
fazemos:

Observao:

1. Decompor f em 256 imagens binrias


Se i < j ento
2. Aplicar o operador conexo binrio em cada imagem binria
Ti(f) contm todos os pixels de valor 1 de Tj(f)
3. Reconstruir a imagem em nveis de cinza a par=r das imagens binrias

f(x, y) = min{ k : Tk(f) = 1 } Assim, podemos reconstruir f a


Se usarmos a decomposio superior ento chamamos este operador de
par@r das 256 imagens binrias

"1, se f (x, y) i
abertura por atributo => elimina regies conexas escuras menores que
i
Decomposio inferior:
T (f)=#
um dado limiar
$0, caso contrrio
Se i > j ento
Se usarmos a decomposio inferior ento chamamos este operador de
fechamento por atributo => elimina regies conexas claras menores que
Ti(f) contm todos os pixels de valor 1 de Tj(f)
um dado limiar
i
f(x, y) = max{k : T (f) = 1} Reconstruo

Exemplo

Abertura por atributo


Atributo = rea, limiar= 1000

Entrada

Fechamento por atributo


Atributo = rea, limiar= 1000

Filtros com base em vizinhana


Os ltros com base em vizinhana calcula o
valor de um dado pixel (x, y) em anlise
levando em considerao os valores dos pixels
vizinhos a (x, y).
Tambm conhecido como ltro espacial
Pixel em
anlise

Pixels da imagem
ltrada

10

11

10

12

12

11

10

13

91

111

120

110

18

80

22

20

100

11

21

200

198

51

11

21

231

231

Filtros com base em vizinhana


Exemplo de vizinhana (retangulares: largura x altura)

pixel em anlise

5 x 5

3 x 1

5 x 3

1 x 3

3 x 3
3 x 5

u@liza-se valores
mpares

Filtros com base em vizinhana


Exemplo de vizinhana (retangulares: largura x altura)


Geralmente,
armazenamos a

vizinhana em um vetor de
5 x 5
deslocamente para x e para y.

Por exemplo, se o pixels em
5 x 3
anlise (x,
y) ento o vetor de
deslocamento para a vizinhana
3 x 1 (-1, 0), (0,0) e (1, 0)

3 x 3
(x-1, y)

(x, y)

(x+1, y)

pixel em anlise

3 x 1

1 x 3

3 x 5

u@liza-se valores
mpares

Filtros com base em vizinhana


Exemplos de ltros
Mdia tambm chamado de mdia mvel
O valor do pixels transformado a mdia aritm@ca
dos valores dos pixels da vizinhana do pixels em
anlise.
Suaviza (borra) a imagem
Muito u@lizado para diminuir a resoluo da imagem
Com isso, podemos criar uma representao mul@resoluo a
par@r de uma imagem com alta resoluo => Muito usado em
anlise de imagens

Denio:
(x, y) D f , [mdia[ M ,N ] ( f )](x, y) = mdia{ f (x + i, y + j)},

onde N i N e M j M
2
2
2
2

Exemplo (filtro mdia)

Filtros com base em vizinhana


Exemplos de ltros
Mximo um caso par@cular de um operador
chamada dilatao
O valor do pixels transformado o maior valor dos
pixels da vizinhana do pixels em anlise.
Aumenta as regies claras e diminui as regies escuras
Denio:

(x, y) D f , [mximo[ M ,N ] ( f )](x, y) = max{ f (x + i, y + j)},


onde N i N e M j M
2
2
2
2

Exemplo (filtro mximo)

Filtros com base em vizinhana


Exemplos de ltros
Mximo um caso par@cular de um operador
chamada dilatao
O valor do pixels transformado o maior valor dos
pixels da vizinhana do pixels em anlise.
Tambm, podemos u@liza-lo para extrair as bordas
Aumenta as regies claras e diminui as regies escuras
da imagem da seguinte forma:
Denio:
1)
Para todo pixels (x, y) do domnio, fazemos

2)
borda(x, y) = [mximo
(x,
y) D , [mximo
( [N, M]
f )](x,(f)](x, y) f(x, y)
y) = max{x + i, y + j},
f

[ M ,N ]

onde N i N e M j M
2
2
2
2

Exemplo (filtro mximo e borda)


a

Filtros com base em vizinhana


Exemplos de ltros
Mnimo um caso par@cular de um operador
chamada eroso
O valor do pixels transformado o menor valor dos
pixels da vizinhana do pixels em anlise.
Aumenta as regies escuras e diminui as regies claras
Denio:

(x, y) D f , [mnimo[ M ,N ] ( f )](x, y) = min{ f (x + i, y + j)},


onde N i N e M j M
2
2
2
2

Filtros com base em vizinhana


Exemplos de ltros
Mnimo um caso par@cular de um operador
Tambm, podemos u@liza-lo para extrair as bordas
chamada eroso
da imagem da seguinte forma:
O valor do pixels transformado o menor valor dos
1)
Para todo pixels (x, y) do domnio, fazemos
2)pixels da vizinhana do pixels em anlise.
borda(x, y) = f(x, y) - [mnimo[N, M](f)](x, y)

Aumenta as regies escuras e diminui as regies claras


Denio:
Tambm, podemos extrair a borda atravs da

diferena pixel-a-pixel entre os ltros de mximo e


(x, y) D f , [mnimo[ M ,N ] ( f )](x, y) = min{x + i, y + j},
mnimo. N
N
M
M
onde

e j
2
2

Exemplo (filtro mnimo e borda)


a

Filtros com base em vizinhana


Exemplos de ltros
Mediana
O valor do pixels transformado a mediana dos valores
dos pixels da vizinhana do pixels em anlise.
Muito u@lizado para eliminar rudos do @po sal e pimenta
Denio:

(x, y) D f , [mediana[ M ,N ] ( f )](x, y) = mediana{ f (x + i, y + j)},


onde N i N e M j M
2
2
2
2

Exemplo (filtro mediana)


a

Entrada

Entrada
com rudo sal e pimenta

Filtro da mediana
na imagem com rudo

Você também pode gostar