Como extrair sinais de trânsito de uma fotografia?


15

Quais técnicas de análise de imagem posso usar para extrair os sinais de trânsito de uma imagem como a abaixo?

Foto exterior de uma estrada metropolitana

Editar:

Após a difusão anisotrópica: O fundo que eu não quero fica um pouco limpo

insira a descrição da imagem aqui

Após a dilatação:

insira a descrição da imagem aqui

Limiar após difusão: não é possível descobrir o melhor limiar para esse fim

insira a descrição da imagem aqui

No entanto, eu não sou capaz de descobrir como remover o fundo?

Edit: eu só quero essas partes da minha imagem

insira a descrição da imagem aqui

Tirando outra imagem de entrada:

insira a descrição da imagem aqui

Aplicando filtragem mediana e detecção de borda:

insira a descrição da imagem aqui

Após a filtragem do fundo do chapéu:

insira a descrição da imagem aqui

Como isolar os sinais de trânsito, por favor ajude?


Para mim, "sinal de trânsito" significa um dispositivo aceso justsymbol.com/images/traffic-signal-sign-6.png , não um sinal. Você quer dizer apenas sinais?
endolith 4/02/12

Sim, apenas os sinais #
415 vini

Que abordagem você já tentou?
Maurits

Sim, eu tenho modelos
vini

Edited @mauritis
vini

Respostas:


17

Você tentou algo simples como correlação?

( EDIT ). A idéia por trás da correlação é usar um modelo (no seu caso, uma amostra de sinal de trânsito treinado) e compará-lo com todas as posições na imagem de teste. A operação de comparação que usei para gerar as imagens abaixo é chamada de correlação cruzada normalizada . Grosso modo, você padroniza (média = 0, desvio padrão = 1) os pixels no modelo e a parte da imagem que deseja corresponder, multiplica-os pixel por pixel e calcula o valor médio dos produtos. Dessa forma, você obtém uma "pontuação de correspondência", ou seja, uma medida de semelhança entre o modelo e a imagem de teste em todas as posições na imagem de teste. A posição com a melhor correspondência (maior correlação) é o candidato mais provável para a posição do sinal de trânsito. (Na verdade, eu usei a função MathematicaCorrelationDistance para gerar a imagem abaixo, que é 1 - (correlação normalizada). Portanto, o ponto mais escuro da imagem da correspondência corresponde à melhor correspondência).

Como não tenho outros modelos, recortei o sinal da segunda foto que você postou:

insira a descrição da imagem aqui

Embora o modelo seja girado levemente, a correlação cruzada ainda parece útil

insira a descrição da imagem aqui

e a melhor correspondência é encontrada na posição correta:

insira a descrição da imagem aqui

(Você precisaria de várias versões em escala de cada modelo para detectar sinais de qualquer tamanho, é claro)


11
@nikie: Você poderia explicar o processo que usou?
21712 smokris

Sim, isso ajudaria um pouco mais. A idéia parece boa
vini

@vini Se você tem modelos e está tentando encontrar instâncias na sua imagem, a correlação cruzada é a abordagem mais natural e deve estar entre as primeiras abordagens que você tenta. Aqui está uma resposta aqui (código do Mathematica) e outra no SO (código do MATLAB), onde eu uso essa abordagem.
Lorem Ipsum

7

Durante o meu mestrado, o projeto em que meu supervisor estava envolvido lidava com a detecção e o reconhecimento de todos os tipos de sinalização de tráfego diferentes em uma sequência de vídeo (por exemplo, detecção de estradas, detecção de linha central de estradas, mas também detecção e reconhecimento de sinais de trânsito ). Os quadros de vídeo em que estávamos trabalhando são de várias maneiras semelhantes às imagens de exemplo.

Embora eu pessoalmente não tenha trabalhado em sinais de trânsito, acho que os melhores resultados foram obtidos usando o algoritmo Viola-Jones (artigo) . Em resumo, é um algoritmo que usa uma cascata de classificadores fracos (com precisão um pouco maior que a de um algoritmo aleatório) para construir um classificador forte que é robusto mesmo em tarefas difíceis.

O projeto foi chamado MASTIF (Mapeamento e avaliação do estado da infraestrutura de tráfego) e fez um trabalho realmente bom. A página de publicação do projeto pode ser realmente útil, pois fornece links para todos os artigos publicados relacionados ao projeto. Só para você ter uma idéia, deixe-me destacar algumas das publicações (em ordem cronológica):

Mais uma vez, não trabalhei pessoalmente nos sinais de trânsito, mas acho que você pode encontrar bastante material útil aqui. Além disso, eu sugeriria passar por referências citadas nos documentos, pois elas também podem ajudar.


6

Bem, pesquisar no Google road way signs detectionoferece muitos bons artigos sobre esse assunto.

Alguns usam segmentação de cores devido a cores azuis, verdes, vermelhas, etc.

Alguns aplicam primeiro a suavização gaussiana, depois a detecção inteligente de bordas e a busca de contorno para extrair a placa de sinalização.

Tente seguir dois links: Link 1 , Link 2


links mortos, infelizmente
CharlesB 29/05

Na verdade, os dois links funcionam para mim.
Abid Rahman K

@CharlesB: Os links são atualizados :)
Anoop KP

5

Definitivamente, não sou um especialista aqui, mas você pode começar com a detecção de arestas (como astutos), depois transformar para detectar círculos, retângulos, quadrados ou triângulos (com base no sinal que você deseja detectar) e depois criar o modelo correspondência ou correspondência de histograma, se as cores forem suficientemente distintas (sobre os candidatos retornados pela transformação hough).

O primeiro passo (detectar os candidatos usando a transformação hough) é o passo mais difícil. Posso pensar em várias maneiras de tentar detectar se esse candidato é o sinal ou não. Este é um problema divertido. Desfrute de resolvê-lo :)

A propósito, tenho certeza de que você pode encontrar bons artigos de pesquisa altamente relacionados

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.