Estou fazendo uma pesquisa sobre os filtros Gabor para detectar amassados nos carros. Eu sei que os filtros Gabor tiveram amplo uso para reconhecimento de padrões, reconhecimento de impressões digitais etc.
Eu tenho uma imagem
Usando algum código do site do MathWorks File Exchange, obtive a seguinte saída.
que de alguma forma não é o resultado esperado. Este não é um bom resultado.
O meu script é o seguinte:
I = imread('dent.jpg');
I = rgb2gray(I);
[G, gabout] = gaborfilter1(I, 2, 4, 16, pi/2);
figure
imshow(uint8(gabout));
EDIT: Aplicando um código diferente à seguinte imagem:
Imagem de saída após diferentes orientações do filtro gabor:
como isolar esse DENT que foi detectado corretamente?
matlab
image-processing
vini
fonte
fonte
Respostas:
Este é um problema extremamente difícil. Eu fazia parte de uma equipe que trabalhava nele há vários anos e, tendo desenvolvido e suportado outros aplicativos por um longo tempo, posso dizer que a detecção de dentes é um problema particularmente complicado e muito mais difícil do que parece à primeira vista.
Ter um algoritmo funcionando em condições de laboratório ou em imagens conhecidas é uma coisa; o desenvolvimento de um sistema preciso e robusto para imagens "naturais", como carros vistos em um estacionamento, provavelmente exigiria uma equipe trabalhando por vários anos. Além do problema central da criação do algoritmo, existem inúmeras outras dificuldades de engenharia.
O código de exemplo que você testou não é um começo ruim. Se você pudesse encontrar as arestas ao redor do lado direito escuro do amassado, poderia comparar o mapa de arestas do carro com o ding com o mapa de arestas de um bom carro conhecido, fotografado do mesmo ângulo e com a mesma iluminação. Controlar a iluminação ajudará bastante.
Os problemas a considerar incluem o seguinte:
1. Iluminação Como Martin B observou corretamente acima, a iluminação correta é crítica para esse problema. Mesmo com uma boa iluminação estruturada, você terá grandes dificuldades em detectar pequenas amolgadelas próximas às linhas de recursos, intervalos entre painéis, alças e assim por diante.
A entrada da Wikipedia para iluminação estruturada é um pouco limitada, mas é um começo para entender o princípio: http://en.wikipedia.org/wiki/Structured_light
Listras claras podem ser usadas para detectar entalhes (amolgadelas) e out-dings (espinhas). Para ver um ding, você precisará de um movimento relativo entre a fonte de luz e o carro. A câmera light + se move em relação ao carro ou o carro passa a câmera light +.
Embora as entradas e saídas tenham aparências características quando vistas na borda de uma faixa clara, a detectabilidade de um determinado dente depende do tamanho e profundidade do dente em relação à largura da faixa clara. A curvatura de um carro é complexa, por isso é bastante difícil apresentar uma faixa de luz consistente para a câmera. À medida que a faixa clara se move pelo corpo do carro, a curvatura e até a intensidade da faixa clara variam.
Uma solução parcial é garantir que a câmera e a faixa de luz estejam sempre em um ângulo consistente em relação ao normal (a perpendicular 3D) da parte da superfície que está sendo inspecionada. Na prática, seria necessário um robô para mover a câmera com precisão em relação à superfície do corpo. Mover o robô com precisão requer conhecimento da pose (posição e ângulos 3D) da carroceria do carro, que é um problema desagradável por si só.
Para qualquer inspeção de aplicações automotivas, você precisa controlar completamente a iluminação. Isso significa não apenas colocar as luzes de sua escolha em locais conhecidos, mas também bloquear todas as outras luzes. Isso significa um gabinete bastante grande. Como os painéis do carro são curvos para fora (quase como uma superfície esférica), eles refletem a luz das fontes ao seu redor. Para simplificar bastante esse problema, você pode usar uma barra fluorescente de alta frequência dentro de um gabinete envolto em veludo preto. Muitas vezes é necessário ir a extremos como esse para aplicações de inspeção.
2. Superfície 3D A superfície externa de um carro é composta por curvas complexas. Para saber se um ponto suspeito é um ding, você precisa comparar esse ponto com os recursos conhecidos do carro. Isso significa que você precisaria combinar a imagem 2D de uma câmera com um modelo 3D visualizado em um determinado ângulo. Esse não é um problema resolvido rapidamente, e é difícil o suficiente para que algumas empresas se especializem nele.
3. Caracterização de defeitos Para pesquisas acadêmicas ou testes de laboratório, pode ser suficiente desenvolver um algoritmo que mostre promessas ou melhore um método existente. Para resolver adequadamente esse problema para uso comercial ou industrial real, você precisa ter uma especificação altamente detalhada para o tamanho dos amassados que deseja detectar.
Quando resolvemos esse problema, não havia padrões razoáveis da indústria ou nacionais para amassados (deformações em 3D). Ou seja, não havia uma técnica combinada para caracterizar um dente por sua área, profundidade e forma. Acabamos de ter amostras que os especialistas do setor concordaram que eram ruins, não muito ruins e marginais em termos de gravidade. Definir a "profundidade" de um ding também é complicado, pois um ding é um recuo 3D em (normalmente) uma superfície 3D curvada para fora.
Dings maiores são mais fáceis de detectar, mas também são menos comuns. Um trabalhador experiente em automóveis pode escanear um corpo de carro rapidamente - muito mais rapidamente do que um observador não treinado - e encontrar dings rasos do tamanho de seu dedo mindinho rapidamente. Para justificar o custo de um sistema automatizado, você provavelmente teria que corresponder à capacidade de um observador experiente.
4. Critérios para erros de detecção Desde o início, você deve definir critérios para falsos negativos e positivos positivos aceitáveis. Mesmo se você estiver apenas estudando esse problema como um projeto de P&D e não pretender desenvolver um produto, tente definir seus critérios de detecção.
falso negativo: dente presente, mas não detectado falso positivo: área sem manchas identificada como dente
Normalmente, há uma troca: aumente a sensibilidade e você encontrará mais dings (diminua os falsos negativos), mas também encontrará mais dings que não estão lá (aumente os falsos positivos). É muito fácil convencer-se de que um algoritmo tem um desempenho melhor do que realmente: nosso viés natural é perceber defeitos detectados pelo algoritmo e explicar aqueles que não foram detectados. Realize testes cegos e automatizados. Se possível, peça a alguém que meça os toques e atribua a gravidade para que você não saiba quais são as medidas reais.
5. Salve os dados e / ou mapeie-os Um dente é caracterizado por sua gravidade e sua localização na carroceria do carro. Para conhecer sua localização, você deve resolver o problema de correspondência 2D para 3D mencionado acima.
6. Determinar a forma "verdadeira" dos dentes Os dentes são difíceis de medir. Um dente agudo e um dente arredondado da mesma área e profundidade da superfície parecerão diferentes. Medir amassados por meios mecânicos leva a julgamentos subjetivos, e também é muito entediante usar medidores de profundidade, réguas, etc., quando você provavelmente precisará medir dezenas, se não mais.
Esse é um dos problemas de engenharia mais difíceis de resolver para qualquer projeto de detecção de defeitos para fabricação: como se mede um defeito e o caracteriza? se houver um padrão para fazê-lo, o padrão se correlaciona bem com algo que o sistema de inspeção mede? se o sistema de inspeção não encontrar um ding que "deveria ter" encontrado, quem é o culpado?
Dito isto, se um sistema de inspeção funcionar bem o suficiente para uma amostra de defeitos conhecidos, os usuários poderão eventualmente confiar nele, e o próprio sistema se tornará o padrão para definir a gravidade do defeito.
7. Banco de dados extenso de amolgadelas Idealmente, você teria centenas, senão milhares, de imagens de amostra de amolgadelas de diferentes gravidades em diferentes locais em veículos de fabricantes difíceis. Se você estiver interessado em encontrar amolgadelas causadas por acidentes durante o processo de montagem, poderá levar muito tempo para coletar esse tipo de dados. Amassados causados durante o processo de montagem não são comuns.
Se você está interessado apenas em encontrar mossas causadas por acidentes ou danos ambientais, isso é outra questão. Os tipos de amolgadelas serão diferentes daqueles causados por colisões acidentais dentro de uma montadora de automóveis.
8. Lidando com cores de tinta diferentes É verdade que os detectores de bordas podem ser razoavelmente robustos na detecção de bordas em imagens com diferentes níveis de contraste, mas pode ser bastante desanimador ver o que "níveis variados de contraste" realmente significam para diferentes tintas e acabamentos automotivos . Uma faixa clara que fica ótima em um carro preto brilhante dificilmente pode ser detectada em um carro branco com tinta velha.
Como a maioria das câmeras possui alcance dinâmico relativamente limitado, é difícil obter um bom contraste para superfícies brilhantes pretas e superfícies opacas brancas. É bem provável que você precise controlar automaticamente a intensidade da iluminação. Isso também é difícil.
fonte
Um filtro Gabor é apenas a primeira de várias etapas que você usaria para uma tarefa de detecção de defeitos. Além disso, observe que você usou apenas uma orientação e escala específica do filtro Gabor - normalmente você usa toda uma gama de orientações e escalas.
Um esboço muito aproximado de uma abordagem simples de detecção de defeitos usando filtros Gabor pode ser o seguinte:
Um ponto que não está nesta lista, mas geralmente é muito importante, é a aquisição de imagens. A maneira como você ilumina seu objeto e coloca suas câmeras tem uma enorme influência sobre como será fácil detectar defeitos nas imagens resultantes. Sua imagem de amostra parece usar a iluminação ambiental que estava presente no momento - isso provavelmente não é o ideal.
Como eu disse, este é apenas um esboço muito aproximado. A inspeção automática é um campo amplo e requer muita experiência para fazê-lo bem.
fonte
Não, não pode. O processamento de imagens não é mágico, você precisa fornecer mais informações. Sem alguma idéia de como o carro deve parecer, como o computador deve distinguir um dente do estilo pretendido?
fonte