Buscar

Relatorio2_PDI_GustavoSiebra

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Implementac¸a˜o de Operac¸o˜es Avanc¸adas
no Tratamento de Imagens em
MATLAB
Gustavo Siebra Lopes
22 de Outubro de 2014
1 Introduc¸a˜o
Esse trabalho e´ para compor a nota na disciplina de Processamento Digital
de Imagens, consiste na implementac¸a˜o do co´digo de operac¸o˜es avanc¸adas no
tratamento de imagens em MATLAB e um breve relato´rio sobre as te´cnicas
utilzidas e seus resultados.
2 Imagem Digital
Uma imagem digital pode ser considerada como sendo uma matriz de pontos
elementares, em que cada ponto recebe o nome de pixel. Quanto maior a quan-
tidade de pixels melhor a resoluc¸a˜o da imagem e consequ¨entemente maior o seu
tamanho. Cada pixel e´ representado por um valor que indica a intensidade de
brilho, denominado n´ıvel de cinza, e a quantidade de n´ıveis de cinza depende
da quantidade de bits usada na representac¸a˜o de cada pixel.
3 Pre´-Processamento
O pre´-processamento de imagens consiste na aplicac¸a˜o de te´cnicas para realce
de imagens, que visam destacar uma regia˜o dentro da imagem, permitindo a
sua visualizac¸a˜o com mais detalhes, de modo que a imagem resultante seja mais
apropriada para uma aplicac¸a˜o espec´ıfica do que a imagem original. Neste tra-
balho, a fim de analisar a efica´cia dessas transformac¸o˜es em imagens digitais,
foram abordadas algumas te´cnicas de pre´-processamento como ajuste de con-
traste e brilho utilizando transformac¸a˜o linear e correc¸a˜o Gamma, aplicac¸a˜o de
filtro passa baixa e passa alta no domn´ınio da frequeˆncia, transformada Haar,
detecc¸a˜o de pele e objetos coloridos, erosa˜o, dilatac¸a˜o e morfologia matema´tica.
4 Transformac¸o˜es Geome´tricas
E´ uma aplicac¸a˜o bijectiva entre duas figuras geome´tricas, no mesmo plano ou
em planos diferentes, de modo que, a partir de uma figura geome´trica original
1
se forma outra geometricamente igual ou semelhante a` primeira. Os princi-
pais paraˆmetros de instanciamento utilizados em Computac¸a˜o Gra´fica sa˜o as
transformac¸o˜es de rotac¸a˜o, translac¸a˜o e escala. A seguir cada uma destas trans-
formac¸o˜es sera´ apresentada em detalhe.
4.1 Rotac¸a˜o
Rotac¸a˜o e´ a figura que, sem sair da origem, vai rodando em diferentes graus
definindo a sua posic¸a˜o final. Pode ser positiva, quando se move ao contra´rio do
sentido dos ponteiros do relo´gio, ou negativa, quando se move no mesmo sentido
dos ponteiros dos relo´gios.
Figura 1: Demonstrac¸a˜o da rotac¸a˜o nos eixos x e y.
4.1.1 Rotac¸a˜o 2D
Ca´lculo da equac¸a˜o:{
x = r cosφ
y = r sinφ
{
x′ = r cos(φ+ θ)
y′ = r sin(φ+ θ)
Desenvolvendo as expresso˜es de x’ e y’, tem-se:{
x′ = r cosφ cos θ − r sinφ sin θ
y′ = r cosφ sin θ + r sinφ cos θ
Substituindo r cos(φ) e r sin(φ) por x e y nas equac¸o˜es anteriores tem-se:{
x′ = x cos θ − y sin θ
y′ = x sin θ + y cos θ
Forma matricial:[
x′
y′
]
=
[
cos θ − sin θ
sin θ cos θ
]
×
[
x
y
]
A func¸a˜o utilizada demonstra ser bastante eficiente, na˜o perdendo informac¸o˜es
das bordas como verificado na Figura 2.
2
(a) Imagem Original (b) Rotac¸a˜o de 32° (c) Rotac¸a˜o de 110°
Figura 2: Resultados da transformac¸a˜o geome´trica de rotac¸a˜o
4.2 Translac¸a˜o
Transladar um ponto (x, y) significa desloca´-lo de uma quantidade de movimento
linear (∆x,∆y).
Figura 3: Demonstrac¸a˜o da translac¸a˜o nos eixos x e y.
Ca´lculo da equac¸a˜o: {
x′ = x+ ∆x
y′ = y + ∆y
Forma matricial:[
x′
y′
]
=
[
x
y
]
+
[
∆x
∆y
]
• x’ na˜o e´ uma combinac¸a˜o linear de x e y
• y’ na˜o e´ uma combinac¸a˜o linear de x e y
Pode-se observar os resultados na Figura 4.
3
(a) Imagem Original (b) Translac¸a˜o 1 (c) Translac¸a˜o 2
Figura 4: Resultados da transformac¸a˜o geome´trica de translac¸a˜o
4.3 Escala
Podemos alterar as dimenso˜es de um objeto multiplicando as coordenadas dos
seus ve´rtices por fatores de escala apropriados.
Figura 5: Demonstrac¸a˜o da escala nos eixos x e y.
Tal fato pode ser expresso em termos da seguintes fo´rmula:{
x′ = λx× x
y′ = λy × y
Onde as novas coordenadas x’ e y’ do objeto sa˜o obtidas a partir das suas coorde-
nadas iniciais x e y por aplicac¸a˜o de fatores de escala λx e λy nas direcc¸o˜es X e Y.
Usando notac¸a˜o matricial, podemos representar a transformac¸a˜o geome´trica
atrave´s de uma multiplicac¸a˜o de matrizes.[
x′
y′
]
=
[
x
y
]
×
[
λx 0
0 λy
]
Pode-se observar os resultados na Figura 6.
4
(a) Esacala
de 0.5
(b) Imagem Original (c) Escala de 1.5
Figura 6: Resultados da transformac¸a˜o geome´trica escala
5 Processamento de Intensidade
As te´cnicas de transformac¸o˜es de intensidade atuam diretamente nos pixels da
imagem. Do ponto de vista conceitual, uma u´nica equac¸a˜o define esse tipo de
transformac¸a˜o:
g(x,y) = T [ f(x,y)]
Onde f(x,y) e´ a imagem de entrada (original), g(x,y) a imagem de sa´ıda (pro-
cessada) e T a func¸a˜o de intensidade/func¸a˜o de contraste. A func¸a˜o T e´ aplicada
a cada um dos pontos da imagem (pontual em cada pixel). A transformac¸a˜o
em cada pixel na˜o esta´ atrelada aos pixels da vizinhanc¸a. Embora trivial, essa
operac¸a˜o e´ bastante aplicada para realce de imagens, de forma obter uma nova
imagem com melhor visualizac¸a˜o.
5.1 Transformac¸a˜o Linear
Em operac¸o˜es de aumento de contraste, pode-se controlar com uma maior pre-
cisa˜o qual faixa de valores de intensidade deve ter uma melhor representac¸a˜o
imagens com baixo contraste podem resultar de problemas como iluminac¸a˜o fa-
lha ou faixa de aquisic¸a˜o do sensor inadequada.
Um exemplo de func¸a˜o que possibilita o controle do contraste e´ dado por:
s = c× r + b
Em que:
• b e´ o ajuste de brilho
• b > 0 aumenta o brilho
• b < 0 diminui o brilho
• c e´ o controlador de contraste
5
• θ > 45 : aumenta o contraste
• θ < 45 : diminui o contraste
A Figura 7 mostra os resultados obtidos:
(a) Imagem Original (b) Transformac¸a˜o Linear 1 (c) Transformac¸a˜o Linear 2
Figura 7: Resultados da Transformac¸a˜o Linear
A Figura 8 mostra o resultado dos histogramas:
(a) Imagem Original (b) Histograma 1
(c) Histograma 2
Figura 8: Resultados do Histograma da Transformac¸a˜o Linear
5.2 Transoformac¸a˜o de Poteˆncia
Uma func¸a˜o de transformac¸a˜o exponencial e´ dada por:
6
s = c× rγ
Onde c e γ sa˜o constantes positivas, variando γ obtem-se um grupo de trans-
formac¸o˜es que podem realc¸ar baixas ou altas intensidades de modos diferentes.
Dependendo do valor de γ a func¸a˜o de transformac¸a˜o ira´ se comportar de ma-
neira diferente, para valores de γ fraciona´rios (entre 0 e 1): alargam uma faixa
estreita escura, comprimindo a faixa clara. Inteiros maiores que 1: estreitam
uma faixa estreita escura, alargando a faixa clara.
Correc¸a˜o Gamma de imagens pode ser necessa´ria para que a imagem seja vista
em um monitor com as intensidades originais. Dispositivos CRT teˆm uma func¸a˜o
de resposta de intensidade-voltagem que e´ uma func¸a˜o de poteˆncia com γ vari-
ando entre 1.8 e 2.5. Essa transformac¸a˜o tambe´m utilizada para manipulac¸a˜o
de contraste em imagens.
A Figura 9 mostra os resultados obtidos:
(a) Imagem Original (b) gamma = 2 (c) gamma = 3
Figura 9: Resultados da Transoformac¸a˜o de Poteˆncia
A Figura 10 mostra o resultado dos histogramas:
7
(a) Imagem Original (b) Histograma 1
(c) Histograma 2
Figura 10: Resultados do Histograma da Transformac¸a˜o de Poteˆncia
6 Filtragem no Domı´nio da Frequeˆncia
As te´cnicas de filtragem no domı´nio da frequeˆncia se baseiam na modificac¸a˜o da
transformada de Fourier para atingir um objetivo espec´ıfico e calcular a DFT
inversa para retornar ao domı´nio da imagem.
Portanto, o processamento de imagem no domı´nio da frequeˆncia e´ realizado
usualmente atrave´s de treˆs passos conforme o esquema da Figura 11:
Figura 11: Esquema de processamento no domı´nio da frequeˆncia usando atrans-
formada de imagens.
1 - a imagem e´ transformada do domı´nio espacial para o da frequeˆncia,
usando a transformada de Fourier;
2 - operac¸o˜es sa˜o realizadas nessa imagem;
3 - e para que a imagem possa ser exibida e vista por olhos humanas, ocorre o
processo inverso, onde a imagem no domı´nio da frequ¨eˆncia e´ transformada para
o domı´nio espacial
8
Este u´ltimo passo sera´ realizado atrave´s da transformada inversa de Fourier.
Assim, seguir sera´ descrita a transformada de Fourier, devido a sua importaˆncia
e grande aplicac¸a˜o no processamento de imagens.
6.1 Filtro Passa-Baixa
Sa˜o os detalhes da imagem que geram altas frequeˆncias. Por exemplo as bordas,
lados e outras transic¸o˜es abruptas de n´ıvel de cinza. Utilizando um filtro passa
baixa obte´m-se uma imagem menos n´ıtida ou suavizada, tendo perda de deta-
lhes que sa˜o os componentes de altas frequeˆncias. Os filtroa podem ser de va´rios
tipos, os mais comuns sa˜o: Ideal, Butterworth e Gaussiano. Pode-se observar
os resultados na Figura 12:
(a) Imagem Original (b) Filtro Ideal
(c) Filtro Butterworth (d) Filtros Gaussiano
Figura 12: Resultados dos Filtros Passa-Baixa
Resultado do espectro de Fourier com filtro passa-baixa Figura 13:
9
Figura 13: Resultado do espectro de Fourier
Resultado da imagem do filtro passa-baixa Figura 14:
(a) Filtro Ideal (b) Filtro Butterworth (c) Filtros Gaussiano
Figura 14: Resultado do espectro de Fourier
Resultado da perspectiva do filtro passa baixa Figura 15:
(a) Filtro Ideal (b) Filtro Butterworth (c) Filtros Gaussiano
Figura 15: Resultado da perspectiva do filtro passa baixa
10
6.2 Filtro Passa-Alta
Na filtragem passa-alta, os componentes de alta frequeˆncia da transformada de
Fourier na˜o sa˜o alterados, enquanto os de baixa frequ¨eˆncia sa˜o removidos, isso
faz com que os detalhes finos da imagem sejam enfatizados. Os filtros podem ser
de va´rios tipos, os mais comuns sa˜o: Ideal, Butterworth e Gaussiano. Pode-se
observar os resultados na Figura 16:
(a) Imagem Original (b) Filtro Ideal
(c) Filtro Butterworth (d) Filtros Gaussiano
Figura 16: Resultados dos Filtros Passa-Alta
Resultado do espectro de Fourier com filtro passa-alta Figura 17:
Figura 17: Resultado do espectro de Fourier
11
Resultado da imagem do filtro passa-alta Figura 18:
(a) Filtro Ideal (b) Filtro Butterworth (c) Filtros Gaussiano
Figura 18: Resultado do espectro de Fourier
Resultado da perspectiva do filtro passa alta na Figura 19:
(a) Filtro Ideal (b) Filtro Butterworth (c) Filtros Gaussiano
Figura 19: Resultado da perspectiva do filtro passa alta
7 Transformada Haar
A Transformada de Haar e´ um transformada matema´tica discreta usada no
processamento e ana´lise de sinais, na compressa˜o de dados e em outras aplicac¸o˜es
de engenharia e cieˆncia da computac¸a˜o. A transformada de Haar e´ um caso
particular de transformada discreta de Wavelet, onde o wavelet e´ um pulso
quadrado definido por:
ψ(t) =
 1, 0 ≤ t < 0.5−1, 0.5 ≤ t < 1
0, para outros valores de t
Pode-se observar na Figura 20 o resultado da implementac¸a˜o da transformac¸a˜o
Haar.
12
(a) Imagem Original (b) Primeiro Nı´vel
(c) Segundo Nı´vel (d) Terceiro Nı´vel
Figura 20: Resultados da Transformada Haar
8 Processamento de Imagens Coloridas
A apareˆncia de um objeto e´ o resultado de uma complexa interac¸a˜o da luz
incidente sobre este objeto, suas caracter´ısticas o´pticas e a percepc¸a˜o humana.
A Cor esta´ associada com os comprimentos de onda da luz, ou melhor, com as
distribuic¸o˜es destes comprimento de onda. O olho humano so´ consegue diferir
algumas dezenas e tons de cinza, contudo, pode distinguir uma grande variedade
de cores. Este e´ um fator importante para a ana´lise de imagem atrave´s do olho
humano.
8.1 RGB
Cada cor e´ descrito atrave´s das cores prima´rias Vermelho Verde e Azul. As
cores sa˜o especificadas como vetores da origem a coordenadas de cor. Os n´ıveis
de cinza possuem componentes R, G e B de mesma intensidade.
13
Figura 21: Esquema´tico do cubo de cor RGB.
O modelo de cores RGB e´ conhecido como Cubo de Cores RGB. Nos ve´rtices
do cubo esta˜o as cores prima´rias (Vermelho, Verde, Azul) e as cores secunda´rias
(Ciano, Magenta, Amarelo). O Preto esta´ localizado na origem e o Branco na
extremidade oposta. A diagonal do cubo entre Preto e Branco e´ a Escala de
Cinza.
8.2 HSV
Retina humana tem treˆs tipos de ce´lulas foto-receptoras de cor. As treˆs compo-
nentes nume´ricas necessa´rias para descrever uma cor sa˜o: intensidade, matiz e
saturac¸a˜o. O Espac¸o de Cor HSV e´ baseado em coordenadas cil´ındricas.
Figura 22: Esquema´tico do cilindro de cor HSV.
O H e´ a cor pura e e´ expresso em graus de aˆngulo onde zero e´ a cor Vermelha.
V e´ medido ao longo do eixo do cone hexagonal onde V = 0 e´ o preto e V=1 e´
o branco. S e´ a “pureza da cor” e e´ medida como a distaˆncia do eixo V.
8.3 Aplicac¸o˜es
Resultados da implementac¸a˜o de detecc¸a˜o de pele:
14
(a) Imagem Original (b) Detecc¸a˜o de Pele Binari-
zada
(c) Detecc¸a˜o de Pele HSV (d) Detecc¸a˜o de Pele RGB
Figura 23: Resultados da Detecc¸a˜o de Pele
Resultados da implementac¸a˜o de detecc¸a˜o de um objeto colorido:
(a) Imagem Original (b) Detecc¸a˜o de Objeto Colorido
(c) Detecc¸a˜o de Objeto Colorido
Figura 24: Resultados da Detecc¸a˜o de objeto colorido
15
Resultados da implementac¸a˜o de detecc¸a˜o de objetos conectados:
(a) Imagem Original (b) Detecc¸a˜o de Objeto
Colorido
(c) Imagem Original (d) Detecc¸a˜o de Objeto Colo-
rido
Figura 25: Resultados da Detecc¸a˜o de objeto colorido
9 Morfologia Matema´tica
A morfologia matema´tica e´ a parte do processamento de imagem na˜o-linear que
tem por objetivo extrair caracter´ısticas da imagem associadas a` geometria dos
objetos. A morfologia matema´tica foi desenvolvida inicialmente por Georges
Matheron e Jean Serra na de´cada de 60, para imagens bina´rias utilizando a
teoria de conjuntos. Posteriormente, ela foi estendida para imagens em tons
cinza (func¸o˜es) utilizando a teoria de reticulados, onde uma imagem e´ vista
como a superf´ıcie de um relevo.
9.1 Elemento estruturante
Uma transformac¸a˜o morfolo´gica consiste essencialmente da comparac¸a˜o da ima-
gem com outra menor, cuja geometria e´ conhecida, denominada elemento es-
truturante. Um elemento estruturante planar e´ um conjunto de coordenadas de
pixel. Por exemplo, o elemento cruz e´ definido por E = {(0,1,0);(1,1,1);(0,1,0)}.
Uma transformac¸a˜o morfolo´gica requer uma operac¸a˜o na˜o-linear entre a ima-
gem e o elemento estruturante, o qual desliza sobre a imagem de forma similar a`
16
convoluc¸a˜o discreta. Neste sentido, o elemento estruturante planar define uma
relac¸a˜o de adjaceˆncia do tipo (p, q) ∈ A se q - p ∈ E. Um elemento estruturante
na˜o-planar e´ um par (E,V) que consiste de um conjunto de coordenadas de pixel
E e um conjunto de valores V associados a cada coordenada, assim como uma
imagem. Por exemplo, V = {2, 1, 1, 1, 1} para o caso do elemento cruz. Este
tipo de elemento e´ usado apenas em operac¸o˜es com imagens em tons de cinza.
Neste caso, o elemento estruturante pode ser visto como uma ma´scara de con-
voluc¸a˜o, muito embora a operac¸a˜o seja outra. No caso particular, onde todos
valores em V sa˜o zero, o elemento estruturante se torna planar.
9.2 Dilatac¸a˜o
A dilatac¸a˜o, tambe´m as vezes chamada de dilac¸a˜o, e´ uma transformac¸a˜o mor-
folo´gica que combina dois conjuntos usando adic¸a˜o vetorial. Seu s´ımbolo e´ ⊕.
Como o nome diz, o resultado sera´ uma imagem “engordada”. A dilatac¸a˜o de
um conjunto A pelo conjunto B e definida por:
A ⊕ B = { c | c = a + b , a ∈ A , b ∈ B }
Onde A representa a imagem sendo operada e B e´ um segundo conjunto
onde e´ chamado elemento estrutural e sua composic¸a˜o define a natureza especi-fica da dilatac¸a˜o, sendo assim a dilatac¸a˜o expande uma imagem. Ela pode ser
representada pela unia˜o A ⊕ B = A ∪ B.
Seja o conjunto A = { (0,1);(1,1);(2,1);(2,2);(3,0)} e B = {(0,0);(0,1)} enta˜o
o resultante da dilatac¸a˜o e´:
A ⊕ B = {A + {(x1 ∈ B)} ∪ A + {(x2 ∈ B)}}
A ⊕ B = {(0,1);(1,1);(2,1);(3,0);(0,2);(1,2);(2,2);(2,3);(3,1)}
Uma aplicac¸a˜o da dilatac¸a˜o e´ o preenchimento de buracos, ver Figura 26:
(a) Imagem Original (b) Dilatac¸a˜o - square
(c) Dilatac¸a˜o - line (d) Dilatac¸a˜o - disk
Figura 26: Resultados da Dilatac¸a˜o com diferentes Elementos Estruturantes
17
9.3 Erosa˜o
A erosa˜o basicamente encolhe uma imagem e pode ser vista como uma trans-
formac¸a˜o morfolo´gica que combina dois conjuntos usando vetores de subtrac¸a˜o.
Ela e´ expressa como a intersec¸a˜o de A e B. Assim e definido A 	 B = B ∩ A.
A erosa˜o da imagem A pelo elemento estrutural B pode ser definida como:
A 	 B = {( x | x + b ∈ A para todo b ∈ B)}
ou,
A 	 B = { c | B’ ⊆ A }
Assim define-se que a erosa˜o e o conjunto de todos os pixels, e o elemento
estruturante B e transladado pelo c corresponde a um conjunto de pixel em
A. O conjunto A 	 B e´ o conjunto de translac¸o˜es de B que alinham B sobre
o conjunto de pixels pretos em A. Isso Significa que nem todas as translac¸o˜es
necessitam ser consideradas, mas somente aquelas que inicialmente localizam
sua origem de B em um membro de A. Uma aplicac¸a˜o daerosa˜o e´ a remoc¸a˜o de
detalhes pequenos (irrelevantes), ver Figura 27:
(a) Imagem Original (b) Erosa˜o - square
(c) Erosa˜o - line (d) Erosa˜o - disk
Figura 27: Resultados da Erosa˜o com diferentes Elementos Estruturantes
9.4 Abertura
A abertura em geral suaviza o contorno de uma imagem, quebra estreitos e
elimina proemineˆncias delgadas, a operac¸a˜o de abertura e usada tambe´m para
remover ru´ıdos da imagem. A abertura de um conjunto A por elemento estru-
turante B e denotado A ◦ B e definida como:
A ◦ B = (A 	 B) ⊕ B
A aplicac¸a˜o de uma erosa˜o imediatamente seguida de uma dilatac¸a˜o usando
o mesmo elemento estrutural e´ uma operac¸a˜o de abertura, ela tende a abrir
pequenos vazios ou espac¸os entre objetos pro´ximos numa imagem. Ou seja em
18
outras palavras uma abertura e uma erosa˜o seguida de uma dilatac¸a˜o usando
um mesmo elemento estruturante, relembrando que a erosa˜o acha todos os lu-
gares onde o ajuste do elemento estruturante esta dentro a imagem, mas isto
somente marca esta posic¸a˜o a origem de um elemento.
Pore´m seguinte uma erosa˜o por uma dilatac¸a˜o, nos enchemos de brancos os
lugares onde o ajuste do elemento estruturante estiver dentro do objeto. Na
abertura podem se considerar para ser a unia˜o de todos copias traduzidos de
um ajuste elemento estruturante que possam estar dentro do objeto.
9.5 Fechamento
O fechamento funde pequenos quebras e alargas golfos estreitos elimina peque-
nos orif´ıcios, se uma abertura cria pequenos vazios na imagem, um fechamento
ira´ preencher ou fechar os vazios, estas operac¸o˜es podem remover muitos dos
pixels brancos com ru´ıdos, ou seja basicamente ele e igual a abertura so´ que
primeiramente e feita a dilatac¸a˜o e apo´s e feita a erosa˜o assim ela se define
como:
A • B = (A ⊕ B) 	 B
Em outras palavras o fechamento trabalha de um modo oposto ao me´todo
abertura, onde ela remove todos os pixels onde o ajuste do elemento estrutu-
rante na˜o esta dentro da imagem (primeiro pano), fechamento enche todos os
lugares onde o elemento estruturante na˜o iria ajustar na imagem (pano fundo).
Entretanto operac¸o˜es inversas, abertura e fechamento na˜o ira˜o estabelecer a
imagem original.
9.6 Gradiente Morfolo´gico
Esta operac¸a˜o e´ composta por treˆs outras operac¸o˜es ba´sicas da morfologia: a
dilatac¸a˜o, erosa˜o e a subtrac¸a˜o sendo definida da seguinte forma:
X = (A ⊕ B) - (A 	 B)
Onde: A e´ a imagem original e B o elemento estruturante. Uma importante
aplicac¸a˜o do gradiente e´ para fechar fronteiras, ver Figura 28:
19
(a) Imagem Original (b) Gradiente Morfolo´gico
Figura 28: Resultados Gradiente Morfolo´gico
10 Conclusa˜o
Neste trabalho foi feito um estudo sobre algumas das principais te´cnicas de
pre´-processamento de imagens digitais e para implementac¸a˜o dessas te´cnicas
utilizou-se o software MATLAB como ferramenta computacional a fim de com-
provar a efica´cia dessas te´cnicas em cada imagem analisada.
A importaˆncia de estudar essas te´cnicas de imagem podem ser percebida pela
forte relac¸a˜o entre o processamento digital de imagens e outras a´reas como o
estudo de Redes Neurais, Inteligeˆncia Artificial, Sensoriamento Remoto usando
imagens de sate´lite e Imageamento Me´dico dentre outras.
Refereˆncias
[1] GONZALEZ, Rafael C.; WOODS, Richard E. Processamento de Imagens
Digitais. 1. ed. Sa˜o Paulo: Edgard Blu¨cher, 2000.
[2] PARKER, J. R.. Algorithms for Image Processing and Computer Vision.
New York, John wiley & Sons, 1997.
[3] RUSS, John C. . The image processing handbook. 2 ed., Boca Raton, CRC
Press, 1995.
[4] MARQUES FILHO, Ogeˆ & VIEIRA NETO, Hugo. Processamento digital
de Imagens. Rio de Janeiro, Brasport, 1999.
[5] QUEIROZ, J. E. R.; GOMES, H. M. Introduc¸a˜o ao Processamento Digital
de Imagens. 2001.
[6] GOMES, J.; VELHO, L. Image Processing for Computer Graphics. Springer-
Verlag, 1997.
[7] REBOUC¸AS FILHO, P. P.Notas de Aula da Disciplina Processamento Di-
gital de Imagens. 2014.
20
A Apeˆndice
Co´digo para implementac¸a˜o em MATLAB
Rotac¸a˜o
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('stef-01.gif');
13
14 %% Rotacao
15 A = imrotate(img, 32);
16 B = imrotate(img, 110);
17 C = imrotate(img, 280);
18
19 %% Mostra imagem
20 imshow(img) %Imagem Original
21 figure, imshow(A) %Imagem Rotacionada 32
22 figure, imshow(B) %Imagem Rotacionada 110
23 figure, imshow(C) %Imagem Rotacionada 280
Translac¸a˜o
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('stef-01.gif');
13
14 %% Translacao
15 A = imtranslate(img,[-70, -50]);
16 B = imtranslate(img,[40, -20]);
17 C = imtranslate(img,[50, -50]);
18
19 %% Mostra imagem
20 imshow(img) %Imagem Original
21 figure, imshow(A) %Imagem Translacao [-70, -50]
22 figure, imshow(B) %Imagem Translacao [40, -20]
23 figure, imshow(C) %Imagem Translacao [50, -50]
21
Escala
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('stef-01.gif');
13
14 %% Escala
15 A = imresize(img, 0.5);
16 B = imresize(img, 1.5);
17 C = imresize(img, 2);
18
19 %% Mostra imagem
20 imshow(img) %Imagem Original
21 figure, imshow(A) %Imagem Escala 0.5
22 figure, imshow(B) %Imagem Escala 2
23 figure, imshow(C) %Imagem Escala 2.5
Transformac¸a˜o Linear - Brilho e Contraste
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('pirate.tif');
13
14 %% Transformacao Linear - Contrates e Brilho
15 A = imadjust(img,[0.1 0.3],[]);
16 B = imadjust(img,[0.5 0.7],[]);
17 C = imadjust(img, stretchlim (img), []);
18
19 %% Mostra imagem
20 imshow(img) %Imagem Original
21 figure, imshow(A) %Imagem contrastee brilho 0.1 0.3
22 figure, imshow(B) %Imagem contraste e brilho 0.3 0.7
23 figure, imshow(C) %Imagem contraste e brilho equalizada
22
Transformac¸a˜o de Poteˆncia - Brilho e Contraste
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('pirate.tif');
13
14 %% Transformacao de Potencia - Contrates e Brilho
15 A = imadjust(img,[0.1 0.3],[],2);
16 B = imadjust(img,[0.5 0.7],[],3);
17 C = imadjust(img,stretchlim (img),[],4);
18
19 %% Mostra imagem
20 imshow(img) %Imagem Original
21 figure, imshow(A) %Imagem contraste e brilho gamma 2
22 figure, imshow(B) %Imagem contraste e brilho gamma 3
23 figure, imshow(C) %Imagem contraste e brilho gamma 4
Filtro passa-baixa no domı´nio da frequeˆncia
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('peppers gray.tif');
13
14 %% Grab only the Red component to fake gray scaling
15 img = img(:,:,1);
16 imshow(img), title('Imagem Original');
17
18 %% Preenchimento da matriz PQ
19 PQ = paddedsize(size(img));
20 D0 = 0.05 * PQ(1);
21
22 %% Calculate the LPF
23 H = lpfilter('ideal', PQ(1), PQ(2), D0);
24
25 %% Calculate the discrete Fourier transform of the image
26 F = fft2(double(img),size(H,1),size(H,2));
27
28 %% Multiply the Fourier spectrum by the LPF and apply the inverse,
29 %discrete Fourier transform
23
30 LPF img = real(ifft2(H.*F));
31
32 %% Resize the image to undo padding
33 LPF img = LPF img(1:size(img,1), 1:size(img,2));
34 figure, imshow(LPF img, []); %title('LPF');
35
36 %% Display the Fourier Spectrum
37 Fc = fftshift(F); % move the origin of the transform to
38 %the center of the frequency rectangle
39 S2 = log(1+abs(Fc)); % use abs to compute the magnitude
40 %(handling imaginary) and use log to brighten display
41 figure, imshow(S2,[]), %title('Fourier Spectrum');
42
43 %% Lowpass Filter Ideal
44 HLPF ideal = fftshift(lpfilter('ideal', 500, 500, 50));
45 mesh(HLPF ideal(1:10:500,1:10:500))
46 colormap([0 0 0])
47 axis off
48 grid off
49 axis([0 50 0 50 0 1])
50 figure, imshow(HLPF ideal) %title('Filter Ideal');
51
52 %% Lowpass Filter Butterworth
53 HLPF btw = fftshift(lpfilter('btw', 500, 500, 50));
54 figure, mesh(HLPF btw(1:10:500,1:10:500))
55 colormap([0 0 0])
56 axis off
57 grid off
58 axis([0 50 0 50 0 1])
59 figure, imshow(HLPF btw) %title('Filter Butterworth');
60
61 %% Lowpass Filter Gaussian
62 HLPF gauss = fftshift(lpfilter('gaussian', 500, 500, 50));
63 figure, mesh(HLPF gauss(1:10:500,1:10:500))
64 colormap([0 0 0])
65 axis off
66 grid off
67 axis([0 50 0 50 0 1])
68 figure, imshow(HLPF gauss) %title('Filter Gaussian');
Filtro passa-alta no domı´nio da frequeˆncia
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('peppers gray.tif');
13
14 %% Grab only the Red component to fake gray scaling
15 img=img(:,:,1);
16 imshow(img) %imagem original
24
17
18 %% Preenchimento da matriz PQ
19 PQ = paddedsize(size(img));
20 D0 = 0.05*PQ(1);
21
22 %% Calculate the HPF
23 H = hpfilter('btw', PQ(1), PQ(2), D0);
24 F = fft2(double(img),size(H,1),size(H,2)); % Calculate the discrete
25 %Fourier transform of the image
26 HPF football = real(ifft2(H.*F)); % multiply the Fourier
27 %spectrum by the LPF and apply the inverse, discrete Fourier
28 %transform
29 HPF football = HPF football(1:size(img,1), 1:size(img,2));
30 % Resize the image to undo padding
31 figure, imshow(HPF football, []) %imagem com filtro
32
33 %% Display the Fourier Spectrum
34 Fc=fftshift(F); % move the origin of the transform to the
35 %center of the frequency rectangle
36 S2=log(1+abs(Fc)); % use abs to compute the magnitude
37 %(handling imaginary) and use log to brighten display
38 figure, imshow(S2,[])
39
40 %% Highpass Filter Ideal
41 HHPF ideal=fftshift(hpfilter('ideal', 500, 500, 50));
42 mesh(HHPF ideal(1:10:500,1:10:500))
43 colormap([0 0 0])
44 axis off
45 grid off
46 axis([0 50 0 50 0 1])
47 figure, imshow(HHPF ideal)
48
49 %% High Filter Butterworth
50 HHPF btw=fftshift(hpfilter('btw', 500, 500, 50));
51 figure, mesh(HHPF btw(1:10:500,1:10:500))
52 colormap([0 0 0])
53 axis off
54 grid off
55 axis([0 50 0 50 0 1])
56 figure, imshow(HHPF btw)
57
58 %% Highpass Filter Gaussian
59 HHPF gauss=fftshift(hpfilter('gaussian', 500, 500, 50));
60 figure, mesh(HHPF gauss(1:10:500,1:10:500))
61 colormap([0 0 0])
62 axis off
63 grid off
64 axis([0 50 0 50 0 1])
65 figure, imshow(HHPF gauss)
25
Transformada Haar
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('football.jpg');
13
14 %% Transformada Haar
15 A = haar(img, 1);
16 B = haar(img, 2);
17 C = haar(img, 3);
18
19 %% Mostra imagem
20 imshow(img) %Imagem Original
21 figure, imshow(A) %Imagem Haar 1
22 figure, imshow(B) %Imagem Haar 2
23 figure, imshow(C) %Imagem Haar 3
Detecc¸a˜o de Pele
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img orig=imread('gustavo.png');
13
14 figure, imshow(img orig) %, title('Original');
15
16 img=img orig; %copy of original image
17
18 [m,n] = size(img(:,:,1));
19 bin = ones(m,n);
20
21 hsv=rgb2hsv(img);
22 h=hsv(:,:,1);
23 s=hsv(:,:,2);
24
25 [r c v]=find(h>0.25 | s<=0.15 | s>0.9); %non skin
26 numid=size(r,1);
27
28 for i=1:numid
29 img(r(i),c(i),:)= 0;
26
30 end
31
32 figure, imshow(img); %title('Segmentacao HSV');
33
34
35 %% Segmentacao YCbCr
36 img ycbcr=img; %image from the previous segmentation
37 ycbcr=rgb2ycbcr(img ycbcr);
38 cb=ycbcr(:,:,2);
39 cr=ycbcr(:,:,3);
40
41 %Detect Skin
42 [r,c,v] = find(cb>=77 & cb<=127 & cr>=133 & cr<=173);
43 %[r c v] = find(cb<=77 | cb >=127 | cr<=133 | cr>=173);
44 numid = size(r,1);
45
46 %Mark Skin Pixels
47 for i=1:numid
48 img ycbcr(r(i),c(i),:) = [0 0 255];
49 bin(r(i),c(i)) = 0;
50 end
51
52 figure, imshow(img ycbcr) %, title('Segmentacao YCbCr');
53
54 figure, imshow(bin) %, title('Segmentacao Binaria');
55
56
57 %% Segmentacao RGB
58
59 img rgb=img ycbcr;
60 r=img rgb(:,:,1);
61 g=img rgb(:,:,2);
62 b=img rgb(:,:,3);
63
64
65 [row col v]= find(b>0.79*g-67 & b<0.78*g+42 &
66 b>0.836*g-14 & b<0.836*g+44 ); %non skin pixels
67 numid=size(row,1);
68
69 for i=1:numid
70 img rgb(row(i),col(i),:)=0;
71 end
72
73 figure, imshow(img rgb) %, title('Segmentacao RGB');
27
Detecc¸a˜o de Objetos Coloridos
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 original = imread('lego.png');
13 im = imfilter(original, ones(5)/25);
14
15 %% Tamanho da Imagem
16 [a l c] = size(im);
17
18 %% Convert and slice in HSV
19 im2 = rgb2hsv(im);
20 h = im2(:,:,1);
21 s = im2(:,:,2);
22 v = im2(:,:,3);
23
24 %% Detect color (binarize)25 %im2 = im 2bw(h, 0.2, 0.4) & im2bw(s, 0.25); % Verde
26 im2 = im 2bw(h, 0.6, 0.75) & im2bw(s, 0.3) & im2bw(v, 0.35); % Azul
27 %im2 = im 2bw(h, 0.1, 0.2) & im2bw(s, 0.25); % Amarelo
28
29 %% Show image
30 f = figure;
31 imshow(original);
32
33 %% Extract properties
34 [L Ne] = bwlabel(im2);
35 props = regionprops(L);
36 hold on
37
38 %% Plot rectangles, centroids and positions of objects
39 for i=1:size(props,1)
40 rectangle('Position', props(i).BoundingBox, 'EdgeColor',
41 'g', 'LineWidth', 2);
42 text(props(i).Centroid(1)+5, props(i).Centroid(2)+5,
43 sprintf('%.0f x %.0f',props(i).Centroid(1),
44 props(i).Centroid(2)),'FontSize',18);
45 plot(props(i).Centroid(1), props(i).Centroid(2),
46 'g*', 'LineWidth', 3);
47 end
28
Erosa˜o e Dilatac¸a˜o
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 img = imread('dog-3.gif');
13
14 %% Elemento Estruturante
15 s = strel('square',5) % 11-by-11 square
16 s1 = strel('line',10,90) % length 10, angle 45 degrees
17 s2 = strel('disk',5) % disk, radius 15
18
19 %% Dilatacao e Erosao
20 f2 = imdilate(img,s);
21 f3 = imerode(img,s);
22
23 f4 = imdilate(img,s1);
24 f5 = imerode(img,s1);
25
26 f6 = imdilate(img,s2);
27 f7 = imerode(img,s2);
28
29 %% Mostra Imagens
30 subplot(3,3,1);imshow(img);title('original image1');
31 subplot(3,3,2);imshow(f2);title('dilated image');
32 subplot(3,3,3);imshow(f3);title('erosion image');
33
34 subplot(3,3,4);imshow(img);title('original image2');
35 subplot(3,3,5);imshow(f4);title('dilated image');
36 subplot(3,3,6);imshow(f5);title('erosion image');
37
38 subplot(3,3,7);imshow(img);title('original image3');
39 subplot(3,3,8);imshow(f6);title('dilated image');
40 subplot(3,3,9);imshow(f7);title('erosion image');
29
Detecc¸a˜o de Objetos Conectados
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Primeiro teste
12 im = imread('pocket-20.jpg');
13
14 img = im2bw(im, graythresh(im));
15 cc1 = bwconncomp(img);
16
17 labeled = labelmatrix(cc1);
18 RGB label = label2rgb(labeled, @copper, 'c', 'shuffle');
19 figure, imshow(im);
20 figure, imshow(RGB label,'InitialMagnification','fit');
21
22 %% Segundo teste
23 im = imread('horseshoe-19.gif');
24 figure, imshow(im);
25 cc1 = bwconncomp(im);
26 labeled = labelmatrix(cc1);
27 RGB label = label2rgb(labeled, @copper, 'c', 'shuffle');
28 figure, imshow(RGB label,'InitialMagnification','fit');
29
30 %% Terceiro teste
31 im = imread('dog-7.gif');
32 figure, imshow(im);
33 cc1 = bwconncomp(im);
34 labeled = labelmatrix(cc1);
35 RGB label = label2rgb(labeled, @copper, 'c', 'shuffle');
36 figure, imshow(RGB label,'InitialMagnification','fit');
30
Gradiente Morfolo´gico
1 %% @autor: Gustavo Siebra
2 % IFCE - Campus Fortaleza
3 % Programa de Pos-Graduacao em Ciencias da Computacao - PPGCC
4 % Disciplina: Processamento Digital de Imagens - PDI
5
6 %% Limpeza
7 clear all
8 close all
9 clc
10
11 %% Le imagem
12 I = imread('pirate.tif');
13
14 %% Gradiente Morfologico
15 se = strel(ones(3,3));
16 basic gradient = imdilate(I, se) - imerode(I, se);
17
18 %% Mostra Imagem
19 figure, imshow(I);
20 figure,
21 h = imshow(basic gradient, [0 255]);
31

Continue navegando