Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SUL
DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS
CURSO DE ENGENHARIA ELÉTRICA
Santa Rosa
2019
MARCO AURÉLIO FURMANN
Santa Rosa
2019
MARCO AURÉLIO FURMANN
BANCA EXAMINADORA
Profª. Taciana Paula Enderle
Mestre pela Universidade Federal de Santa Maria
AGRADECIMENTOS
Agradeço primeiramente a Deus, por ter me dado saúde e força para superar
os obstáculos dessa jornada.
À minha esposa Karine, com quem amo partilhar a vida, pelo carinho e apoio
incondicionais.
Aos meus familiares, em especial aos meus pais, Bronislau e Míria, pelo
incentivo e apoio, e pelo exemplo de vida.
Ao meu orientador, Prof. Mauro Fonseca Rodrigues, pelo suporte oferecido
na idealização desse trabalho, pelas suas correções e incentivos.
A todos os amigos, colegas e professores que convivi durante esses anos da
graduação, pela amizade e companheirismo, e pelos conhecimentos compartilhados.
RESUMO
1 INTRODUÇÃO ....................................................................................... 11
1.1 OBJETIVOS ........................................................................................... 12
1.1.1 OBJETIVO GERAL ................................................................................ 12
1.1.2 OBJETIVOS ESPECÍFICOS .................................................................. 13
1.2 ESTRUTURA DO TRABALHO ............................................................... 13
2 REVISÃO BIBLIOGRÁFICA .................................................................. 15
2.1 ANÁLISE AUTOMÁTICA DE VEÍCULOS EM IMAGENS ....................... 15
2.2 IMAGEM ................................................................................................. 16
2.2.1 Aquisição e digitalização de imagens ................................................ 17
2.2.2 Representação de imagens ................................................................. 18
2.2.3 Vizinhança e Conectividade de pixels ................................................ 23
2.3 PROCESSAMENTO E ANÁLISE DIGITAL DE IMAGENS ..................... 24
2.3.1 Níveis de Processamento .................................................................... 25
2.4 TÉCNICAS DE TRANSFORMAÇÃO E ANÁLISE DE IMAGENS........... 26
2.4.1 Histograma de imagens ....................................................................... 27
2.4.2 Operações de convolução com máscaras ......................................... 30
2.4.3 Segmentação ........................................................................................ 32
2.4.4 Operações de Morfologia Matemática ................................................ 40
2.4.5 Reconhecimento de objetos por características ............................... 42
2.5 MATLAB ................................................................................................. 44
3 METODOLOGIA .................................................................................... 45
3.1 MÉTODO DE ABORDAGEM ................................................................. 45
3.2 TÉCNICAS DE PESQUISA .................................................................... 45
4 IMPLEMENTAÇÃO E ANÁLISE DE FUNCIONAMENTO DO
ALGORITMO ......................................................................................... 49
4.1 DETECÇÃO DO TIPO DE SINALIZAÇÃO HORIZONTAL ..................... 50
4.1.1 Análise considerando a presença de faixa dupla continua .............. 50
4.1.2 Análise considerando a presença de faixa tracejada/seccionada ... 61
4.2 DETECÇÃO DA DESCONTINUIDADE DE FAIXA ................................. 66
4.2.1 Análise considerando condição de normalidade (sem
descontinuidade).................................................................................. 66
4.2.2 Análise considerando presença de descontinuidade de faixa ......... 70
4.3 ANÁLISE DOS RESULTADOS .............................................................. 77
5 CONSIDERAÇÕES FINAIS ................................................................... 79
5.1 TRABALHOS FUTUROS ....................................................................... 80
REFERÊNCIAS ......................................................................................................... 82
APÊNDICE A – FLUXOGRAMA COMPLETO DO ALGORITMO ............................ 88
APÊNDICE B – CÓDIGO FONTE............................................................................. 91
11
1 INTRODUÇÃO
1.1 OBJETIVOS
2 REVISÃO BIBLIOGRÁFICA
2.2 IMAGEM
da luz recebida. Essa saída é então interpretada por circuitos digitais e analógicos e
posteriormente digitalizada por um outro componente no sistema de aquisição de
imagens. Finalmente, na saída do sistema, tem-se uma imagem digital (Figura 3(c)).
Matematicamente, uma imagem digital pode ser definida como uma função
bidimensional f (x, y). Nessa função x e y representam coordenadas espaciais, e a
19
𝑁 = 2𝑛 (2)
𝑀 = 2𝑘 (3)
𝐺 = 2𝑚 (4)
𝑏 = 𝑁×𝑀×𝑚 (5)
𝑏 = 𝑁 2 × 𝑚, 𝑠𝑒 𝑀 = 𝑁 (6)
Seja uma imagem de 128 (N) x 128 pixels (M) com 64 (G) níveis de cinza, por
exemplo, substituindo na Equação (4) tem-se que:
20
𝐺 = 2𝑚 → 64 = 2𝑚 → 26 = 2𝑚 → 𝒎 = 𝟔
• Imagem monocromática
Em uma imagem monocromática a intensidade de f nas coordenadas (x, y) é
chamada de Nível de Cinza (L) da imagem naquele ponto. O tom de cinza
compreenderá valores, conforme determinado pela Equação 7 (MARQUES FILHO;
VIEIRA NETO, 1999, p. 20):
𝐿𝑚𝑖𝑛 ≤ 𝐿 ≤ 𝐿𝑚𝑎𝑥 (7)
onde os valores de 𝐿𝑚𝑖𝑛 e 𝐿𝑚𝑎𝑥 são positivos e finitos, e definem a escala de cinza da
imagem.
Usualmente o intervalo é deslocado numericamente para o intervalo dos
inteiros [0, W], sendo L=0, denominado como pixel preto, L=W-1 denominado como
pixel branco (MARQUES FILHO; VIEIRA NETO, 1999). Além disso L=256, o que
resulta em uma variação possível de 256 tonalidades. Dessa forma, e conforme
ilustrado na Figura 6, tons mais escuros se aproximam de 0 (preto), extrema esquerda,
e tons mais claros de aproximam de 255 (branco), extrema direita (MATIAS, 2007).
Figura 7 – Imagem digitalizada com resolução de 100 pixels e 256 níveis de cinza.
• Imagem colorida
Imagens coloridas são formadas pela adição de cores primárias (vermelho,
verde e azul), compondo o padrão conhecido como RGB (Red, Green, Blue). Essas
imagens necessitam de uma função 𝑓(𝑥, 𝑦) para cada banda de cor. Sendo assim são
determinadas por: (SALES, 2014 apud QUEIROZ; GOMES, 2006):
onde as funções 𝑓𝑅 (𝑥, 𝑦), 𝑓𝐺 (𝑥, 𝑦), 𝑓𝐵 (𝑥, 𝑦), representam, respectivamente, os níveis de
intensidade luminosa das cores, vermelha, verde e azul da imagem no ponto (x,y).
Para cada canal, conforme pode ser visualizado na Figura 8, o valor de
intensidade é convertido em uma escala de cinza, a qual varia de 0 (preto) a 255
(branco). Devido a isso, uma imagem colorida pode ser descrita também como a
composição de três imagens monocromáticas (SALES, 2014).
23
Figura 9 - Conceito de vizinhança de pixels. (a) Conectividade +4. (b) Conectividade x4. (c)
Conectividade 8.
𝑛𝑘 (10)
𝑝𝑟 (𝑟𝑘 ) =
𝑛
Figura 12 - Exemplo de histograma para uma imagem de 128 x 128 pixels, com 8 níveis de cinza. (a)
Tabela de dados; (b) Histograma.
elemento do vetor armazenará o número de pixels cujo tom de cinza equivale ao índice
do elemento. Finalmente, dividindo-se cada um desses elementos pelo total de pixels
da imagem, estes valores são normalizados, gerando assim o histograma (MARQUES
FILHO; VIEIRA NETO, 1999).
Pode-se notar na Figura 13(a), uma imagem predominantemente escura
(brilho reduzido), o que se visualiza no histograma logo ao seu lado como uma grande
concentração de pixels aproximando-se dos valores mais baixos da escala de cinza.
Na Figura 13(b), tem-se uma imagem clara (brilho intensificado), o que se apresenta
graficamente no histograma pela grande concentração de pixels com valores próximos
ao limite superior da escala de cinza. Analisando-se os histogramas, verifica-se que
em ambos os casos a maioria dos pixels concentra-se em uma estreita faixa de escala
de cinza, o que as caracteriza como imagens de baixo contraste segundo a literatura
de PADI. (MARQUES FILHO; VIEIRA NETO, 1999).
Figura 13 - Imagens monocromáticas e seus respectivos histogramas. (a) Imagem escura; (b)
Imagem clara.
• Ajuste de contraste
A equalização do histograma, segundo Marques Filho; Vieira Neto (1999),
consiste em redistribuir os valores de níveis de cinza dos pixels em uma imagem, com
a finalidade de obter um histograma uniforme, onde o percentual de pixels de qualquer
nível de cinza seja praticamente o mesmo. Como resultado tem-se a modificação do
contraste da imagem.
29
Figura 15 - Aplicação da técnica de compressão de histograma. (a) Imagem original com respectivo
histograma; (b) Imagem com contraste diminuído e novo histograma.
• Ajuste de brilho
A equalização do histograma também permite ajustar o brilho de uma imagem.
Para realizar tal ajuste, basicamente todos os valores de cinza da imagem são
aumentados ou diminuídos na mesma proporção. Sendo assim, ao adicionar um
número, por exemplo, a todos os valores de cinza, tem-se como resultado um
deslocamento à direita no histograma. Com isso, os pixels da imagem passam a ter
níveis de cinza mais próximos do limite superior da escala (255 – branco). Dessa
forma a imagem se torna mais brilhante (Figura 13(b)). O mesmo é válido para reduzir
o brilho de uma imagem, no entanto, em ambos os casos, assim como a operação de
ajuste de contraste, deve-se atentar ao limite da escala (0 ou 255) (NIKU, 2013).
sobreposição da segunda sobre a primeira, muda a imagem pixel por pixel (NIKU,
2013).
Figura 16 - Operação de convolução com máscaras. (a) Subárea de uma imagem; (b) Máscara 3 x 3.
(𝐴 × 𝑚1 + 𝐵 × 𝑚2 + 𝐶 × 𝑚3 + 𝐸 × 𝑚4 + 𝐹 × 𝑚5 + 𝐺 × 𝑚6 + 𝐼 × 𝑚7 + 𝐽 × 𝑚8 + 𝐾 × 𝑚9 ) (11)
𝑅=
𝑆
𝑆 = |𝑚1 + 𝑚2 + 𝑚3 + ⋯ + 𝑚9 | (12)
2.4.3 Segmentação
• Detecção de descontinuidades
O processo de segmentação por descontinuidade consiste em particionar a
imagem através da detecção de mudanças bruscas nos níveis de cinza. Basicamente
é realizada uma varredura na imagem através de máscaras, conforme descrito na
seção 2.4.2. Com isso, é possível detectar os três tipos básicos de descontinuidades
em imagens digitais: pontos, linhas e bordas.
Sendo assim, seja uma máscara genérica determinada conforme a Figura 17.
𝑅 = ∑ 𝑊𝑖 𝑍𝑖 (13)
𝑖=1
33
• Detecção de pontos
A detecção de um ponto em uma imagem resume-se à utilização de um
operador de convolução (máscara), como por exemplo, a ilustrada na Figura 18.
Observa-se que a máscara utilizada possui valor elevado na célula central e valores
baixos nas outras células (GONZALEZ; WOODS, 2000; LIMA, 2009).
Figura 19 – (a) Radiografia de uma lâmina de turbina de um motor de jato. (b) Imagem obtida após
aplicação da técnica de detecção de pontos (ponto ampliado).
• Detecção de linhas
De forma semelhante à detecção de pontos, o processo de detectar linhas em
uma imagem também consiste basicamente da aplicação de máscaras de convolução.
Nesse caso são utilizadas quatro máscaras (Figura 20), as quais possibilitam detectar
linhas nas posições horizontal e vertical e nas diagonais de +45º e -45º. (GONZALEZ;
WOODS, 2000; LIMA, 2009; MARQUES FILHO; VIEIRA NETO, 1999).
Figura 20 - Máscara para detecção de linhas. (a) Horizontal (b) Vertical (c) +45º (d) -45º.
• Detecção de bordas
Diferentemente do processo de detecção de pontos e de linhas, que utilizam
a operação direta de varredura de imagens através de máscaras, o processo de
detecção de bordas baseia-se na computação de um operador local diferencial. Trata-
se da abordagem mais comum na detecção de descontinuidades, visto que pontos e
linhas isoladas não ocorrem frequentemente em aplicações práticas (GONZALEZ;
WOODS, 2000).
Segundo definição, “uma borda é o limite entre duas regiões com
propriedades relativamente distintas de nível de cinza” (GONZALEZ; WOODS, 2000,
35
pg. 297). Idealmente uma borda envolve a transição entres dois níveis de intensidade,
que ocorrem a uma distância de 1 pixel, conforme Figura 21(a). Entretanto, na prática,
o comportamento da transição entre níveis designa um perfil de rampa, como a
demonstrada na Figura 21(b), onde o conjunto de pontos conectados constitui um
segmento de borda.
𝜕𝑓
𝑔𝑥 𝜕𝑥
∇𝑓 = 𝑔𝑟𝑎𝑑(𝑓) = [ ] = [𝜕𝑓] (15)
𝑔𝑦
𝜕𝑦
Figura 24 - (a) Imagem original monocromática; (b) Realce de bordas utilizando o operador de Prewitt
horizontal e vertical.
2
𝜕 2𝑓 𝜕 2𝑓 (17)
∇ 𝑓= +
𝜕𝑥 2 𝜕𝑦 2
Figura 25 - (a) Máscara utilizada no cômputo do Laplaciano; (b) Imagem original monocromática; (c)
Imagem após filtragem por (a).
(T) é possível separar esses dois grupos. Basicamente é realizada uma varredura na
imagem, pixel por pixel, rotulando-se cada pixel como sendo do objeto ou do fundo,
levando em consideração se o nível de cinza daquele pixel for maior ou menor/igual a
T (GONZALEZ; WOODS, 2000; MATIAS, 2007).
Um aspecto importante a ser observado é que o valor de T influencia
diretamente na qualidade da imagem limiarizada. Nesse sentido, deve ser escolhido
um valor ótimo para T de forma que a imagem não sofra limiarização inadequada, o
que impossibilitaria a correta realização em posterior tarefa de análise (MATIAS,
2007).
A Limiarização é definida pela Equação 18, na qual 𝑓(𝑥, 𝑦) representa a
imagem original (entrada) e 𝑔(𝑥, 𝑦) representa a imagem transformada (saída)
(GONZALEZ; WOODS, 2000, p. 316).
𝐴 ∘ 𝐵 = (𝐴 ⊝ 𝐵) ⨁ 𝐵 (19)
𝐴 ∙ 𝐵 = (𝐴 ⨁𝐵) ⊝ 𝐵 (20)
Figura 28 - (a) Imagem limiarizada; (b) Resultado da abertura sobre (a); (c) Resultado do fechamento
sobre (b).
• Momento de um objeto
Segundo Niku (2013), o momento de um objeto em uma imagem em escala
de cinza pode ser determinado pela Equação 21.
𝑀𝑎,𝑏 = ∑ 𝑥 𝑎 𝑦 𝑏 (22)
𝑥,𝑦
𝑀0,0 = ∑ 𝑥 0 𝑦 0 (23)
𝑥,𝑦
Sendo assim, uma vez que todo número elevado à potência 0 é igual a 1,
todos os 𝑥 0 𝑒 𝑦 0 são iguais a 1, e portanto, o momento 𝑀0,0 corresponde a soma de
todos os pixels ligados, o que determina a área do objeto. Pode-se também determinar
a localização do centroide do objeto, calculando a localização do centro da área em
relação aos eixos x e y conforme as Equações 24 e 25 respectivamente (NIKU, 2013,
p. 326):
∑𝑦 𝑀0,1 (24)
𝑦̅ = =
á𝑟𝑒𝑎 𝑀0,0
∑𝑥 𝑀1,0 (25)
𝑥̅ = =
á𝑟𝑒𝑎 𝑀0,0
Finalmente, conforme Niku (2013), pode-se concluir que, com a utilização das
equações de momento, é possível identificar um objeto em uma imagem através da
comparação da área do mesmo com uma área aproximada (conhecida). Além disso,
é possível determinar a localização do mesmo dentro da imagem, o que constitui uma
informação de grande valia no desenvolvimento de aplicações de rastreamento de
objetos.
44
2.5 MATLAB
3 METODOLOGIA
Como base para elaboração e análise do algoritmo foi utilizada uma imagem
retirada da internet de uma pista de mão dupla, com sinalização horizontal do tipo
faixa dupla contínua amarela (Figura 33).
Figura 34 – Situações simuladas. (a) Presença de faixa tracejada/seccionada amarela; (b) Condição
de ultrapassagem irregular; (c) Condição normal de tráfego.
Figura 36 - Imagem da pista de mão dupla convertida para escala de cinza e respectivo histograma.
130
ROI
Segundo o histograma da Figura 38, pode-se perceber que este foi expandido,
em relação ao histograma da Figura 37, o que indica visualmente a aplicação da
técnica de expansão de histograma para o ajuste de contraste explanada
anteriormente.
Conforme também visto durante a revisão bibliográfica, o ajuste de contraste
visa melhorar o discernimento dos objetos em uma cena. No caso da análise, o objeto
da cena trata-se da linha dupla contínua que divide a pista. Sendo assim, analisando
a Figura 38, pode-se observar que esta tornou mais destacado o objeto em
comparação com a imagem da Figura 37, dessa forma pode-se dizer que o objetivo
do ajuste do contraste foi atingido.
Em seguida é realizada a seleção da região de interesse (ROI – Region of
Interest) a qual para o presente trabalho localiza-se no centro da imagem,
correspondendo a cerca de 40% da parte central (indicação em verde na Figura 38).
Horizontalmente também se retira da imagem a parte que não faz parte da pista,
eliminando-se assim elementos que possam vir a interferir na análise. Basicamente,
nessa etapa, utilizando-se de métodos de indexação de matrizes associados a
operações matemáticas, pode-se isolar a área da imagem que comporta a sinalização
horizontal de divisão de fluxos opostos da pista. A nova imagem obtida pode ser
visualizada na Figura 39.
55
111
Figura 42 - Exemplos de elemento de estruturação do tipo 'line'. (a) LEN=9 e DEG=0. (b) LEN=3 e
DEG=45;
ROI
108
Fonte: Autores.
65
Figura 58 - Resultados obtidos após tarefas iniciais sobre Figura 57. (a) Conversão para escala de
cinza; (b) Ajuste de brilho sobre (a); (c) Ajuste de contraste sobre (b).
ROI
Figura 59 - Resultados obtidos após processamento sobre Figura 58-c. (a) Seleção da ROI; (b)
Binarização sobre (a); (c) Eliminação de objetos desconexos sobre (b); (d) Erosão binária sobre (c).
Figura 61 - ROI da nova imagem após processo de dilatação binária sobre Figura 59(d).
Nesse caso a nova imagem lida pelo programa, logo após a detecção de faixa
como tipo contínua, é a ilustrada na Figura 63. Nela, pode-se observar a presença de
um veículo, posicionado sobre a faixa contínua, realizando uma manobra de
ultrapassagem irregular.
ROI
Figura 65 - (a) Ajuste de brilho sobre Fig.64; (b) Ajuste de contraste sobre (a).
Figura 66 - (a) Seleção da ROI sobre Fig. 65-b; (b) Binarização utilizando Método de Otsu sobre (a);
(c) Eliminação de objetos desconexos sobre (b); (d) Erosão binária sobre (c).
124
Figura 73 - (a) ROI do objeto com elementos desconexos eliminados; (b) Dilatação binária sobre (a).
Figura 74 – (a) Elemento de estruturação do tipo 'disk' utilizado no fechamento binário; (b) Elemento
de estruturação do tipo ‘diamond’ utilizado na erosão binária.
Figura 75 – (a) Resultado de fechamento binário sobre Figura (73-b); (b) Erosão binária sobre (a).
5 CONSIDERAÇÕES FINAIS
REFERÊNCIAS
<https://www.flatout.com.br/por-que-precisamos-humanizar-a-fiscalizacao-de-
transito/> Acesso em: 27/03/2018.
GIL, Antônio Carlos. Como elaborar projetos de pesquisa. 4 ed. São Paulo: Atlas,
2002.
GIL, Antônio Carlos. Métodos e técnicas de pesquisa social. 6 ed. São Paulo:
Atlas, 2008.
MATHWORKS, MATLAB(n). label2rgb - Convert label matrix into RGB image. 2018.
Disponível em: <https://www.mathworks.com/help/images/ref/label2rgb.html> Acesso
em: 25/09/2018.
subplot(1,2,2);
imhist(img_tracej2); title('Histograma original');
impixelinfo;
figure; imshow(label2rgb(r_label));
impixelinfo;
[B,L]=bwboundaries(BWfinal,'noholes'); % B representa o limite de cada objeto encontrado
hold on
for k=1:length(B) % comprimento de B determina o número de objetos rotulados
boundary=B{k}; % representa o limite de um conjunto de pontos
plot(boundary(:,2), boundary(:,1), 'black', 'LineWidth', 2) %interliga os pontos, marcando a
fronteira dos objetos
end
for k=1:length(B) %obtem (X,Y) do contorno k
boundary=B{k};
area=stats(k).Area; %obtem a area calculada correspondente ao rotulo 'k'
area_string=sprintf('%.0f',area); %transforma area em formato string
n_objetos=k;
% text(stats(k).Centroid(1)+1,stats(k).Centroid(2),area_string,...
% 'Color', 'white', 'FontSize',8, 'FontWeight','bold',...
% 'BackgroundColor','black', 'FontName','Times');
title ('Rotulação e número dos objetos encontrados na ROI da pista livre');
end
if n_objetos>=3
imhist(n_imgb);title ('Histograma');
impixelinfo;
n_imgb=n_imga.^3; % aumento do contraste por potenciação onde, valores maior que 1 ficam
ainda maiores e valores menores que 1 ainda menores
for m=1:col_x
if (BWsdil((y_linha(1,m)),(x_coluna(1,m)))==0)
corte_inicialx=x_coluna(1,m);
corte_inicialy=y_linha(1,m);
break
end
end
95
if ((corte_inicialx>0)&&(corte_inicialy>0))
for k=1:col_x
if (BWsdil((y_linha(1,k)),(x_coluna(1,k)))==0)
corte_finalx=x_coluna(1,k);
corte_finaly=y_linha(1,k);
k;
end
end
fprintf(' Descontinuidade detectada!!!\n');
fprintf(' Objeto se sobrepôs a linha \n')
fprintf(' Ponto inicial do objeto: (%d,%d) [X,Y]\n',corte_inicialx,corte_inicialy);
fprintf(' Ponto final do objeto: (%d,%d) [X,Y]\n',corte_finalx,corte_finaly);
[lin_novo, col_novo]=size(novo);
figure; imshow(novo); title('Objeto isolado');
%figure; imhist(novo);
impixelinfo;
figure; imshow(label2rgb(L));
hold on
for k=1:length(B)
boundary=B{k};
plot(boundary(:,2), boundary(:,1), 'black', 'LineWidth', 2)
end
end
end
end
novodel2(corte_inicialy+126:corte_finaly+126+15,(n_centro-
(n_col*0.15)):(n_centro+(n_col*0.2)))=novodel(:,:); %junta objeto isolado ao espaço interno anterior
if area>10000
figure; imshow(novodel2); title('Descontinuidade Detectada - Veículo');
imwrite(novodel2,'Descontinuidade detectada.jpeg'); % salva a infração em arquivo de imagem
else
figure; imshow(novodel2); title ('Descontinuida Detectada - Objeto não é veículo');
end
else
fprintf('Condição normal');
figure; imshow(n_img); title('Condição normal - Sem ultrapassagem indevidas detectadas');
end
end
%--- FIM --------------------------------------------------------------------------------------------------%