Eu tenho uma imagem
Existe alguma maneira de remover as manchas brancas brilhantes? Por favor ajude obrigado
Editar:
Depois de operar com gaussian e depois exibir usando imagesc, obtenha a seguinte saída, que mostra claramente os pontos vermelhos brilhantes Como faço para me livrar deles
Canal vermelho:
Canal verde:
Canal azul:
Edição 2:
Detecção de defeitos usando o filtro Gabor
Seu histograma:
Como calcular adaptativamente o seu limite apropriado.
image-processing
matlab
vini
fonte
fonte
Respostas:
Vamos supor que as porções ofuscantes sejam as únicas áreas saturadas da imagem. A detecção pode ser realizada limitando a intensidade (código no Mathematica):
Então, precisamos apenas substituir as partes da imagem ao redor da máscara de saturação (o aumento da máscara é feito pela função morfológica
Dilation
). Pintar usando a síntese de textura (usando a funçãoInpaint
) parece funcionar bem neste exemplo, embora eu não possa testá-lo como entrada para o seu algoritmo de detecção de defeitos:fonte
Esta pode ser uma resposta um pouco simplista, mas você poderia simplesmente limitar? por exemplo:
resulta em:
Obviamente, seria melhor selecionar o limiar de forma adaptativa. Por exemplo, você pode olhar para o histograma da imagem:
e tente selecionar um limite apropriado com base nisso.
fonte
Sem informações de iluminação, é difícil. No entanto, se a forma do objeto na imagem for conhecida, você poderá configurar um modelo de forma do brilho branco (gaussiano) e fazer uma janela deslizante para encontrar a possível detecção do brilho (seguido pela mistura de cores da área adjacente). Perceptivelmente, inferimos a forma 3D a partir de imagens usando sombreamento. Se a forma do sombreamento for capaz de fornecer o gradiente da superfície, poderíamos fazer uma janela deslizante e verificar nosso modelo de ofuscamento em cada local.
Após a detecção de borda inteligente: -
Basicamente, a sobreposição (área de sobreposição máxima) entre as imagens 1 e 2 será o defeito.
fonte
Minha opinião é que esse é um problema de visão de máquina no qual você deve controlar a iluminação e ter uma boa idéia do brilho máximo de um brilho de pixel não ofuscante na imagem. A detecção de defeitos geralmente é um problema de visão de máquina e não um problema de visão de computador.
O que vemos como resultado da iluminação é uma adição de reflexos especulares e difusos da luz (mais alguma emissão, mas aqui é insignificante).
O componente especular é o brilho, numa superfície brilhante como esta maçã, é muito mais do que a reflexão difusa (> 10x)
Isso significa que, se você configurar sua iluminação, ganho e exposição antes disso, em uma superfície difusa, poderá ter certeza de que nada ficará nem perto de saturado. Portanto, usar um limite fixo é realmente a solução preferida aqui, desde que você tenha comprovado com dados suficientes que "nenhum pixel sem brilho" estaria acima do limite. Em essência, você está configurando as condições de iluminação e os parâmetros da câmera para que a classificação de um pixel se torne trivial, neste caso realizada por um limiar simples, em vez de uma função aprendida por máquina mais complexa dos pixels ao redor.
Eu gosto da abordagem do "vini", não há necessidade real de mostrar os planos RGB. Apenas um simples limiar de escala de cinza realmente funcionaria aqui.
1- você projeta as condições de iluminação, não o ambiente
2- tornar o trabalho de classificação extremamente trivial (limiar)
3- medir o recurso
4- comparar com tolerância
fonte
Converta primeiro no espaço de cores do laboratório, mapminmax, depois use o primeiro canal de luminosidade. Isso reduz os problemas de cores. Em seguida, use alguns limites no pixel com 80% de brilho mais alto. Verifique e teste se há uma queda no histograma, o melhor limite está próximo da parte inferior da queda. Se não houver um mínimo local nesta região, sua imagem provavelmente terá reflexos mínimos ...... Martin
fonte