Se já usou o photoshop, gimp e outras ferramentas gráficas você conhece o que vou apresentar. Ainda sim sairá deste artigo com novos termos, mais entendimento e novas perspectivas.
Filtros são fundamentais para o processamento de sinais em geral. Não menos para a visão computacional. Para identificar um carro, um olho, uma pessoa, uma cabeça, realizamos computacionalmente (ou em nossas mentes) uma série de transformações automáticas a fim de determinar encerramento, cores, padrões, linhas, pontos, marcas, contornos, diferenças, sombras e por aí a fora. Esta é a aprensetação destas funcionalidades intrinssecas e que passam quase despercebidas.
Pois bem. O que apresento aqui começa com um pequeno icone com o rosto de uma antiga musa: Shakira. Eu era moleque ainda quando escutava Pies Descalzos, ahh bons tempos.
Eis aqui a imagem original (24 x 24 pixels):
No fim da postagem, encontrará o link para o código fonte Python que usa o OpenCv, para operar a imagem e todas as filtragens, é realmente muito simples e seria um disperdício de tempo da minha parte e de vós leitor, repetír o código em partes. Assim, vou extender sobre o formato computacional utilizado em cada um dos Filtros.
A partir daqui as operações morpholócas são realizadas sobre a ampliação linear da imagem aumentada.
Todos esses kernels e operações podem ser encadeados entre si ou repetidos para ressaltar ainda mais características interessantes. Podemos aplicar por exemplo a identificação de contornos após o gradiente e teríamos quase que uma segmanetação de área por predominância de cores, conforme pode ser visto abaixo:
Ou a busca dos cantos, após a aplicação do filtro básico de contornos:
As técnicas variam e somente a experiência e prática vão facilitar o caminho entre a informação que você precisa extrair e os filtros que precisa aplicar.
Pois bem. O que apresento aqui começa com um pequeno icone com o rosto de uma antiga musa: Shakira. Eu era moleque ainda quando escutava Pies Descalzos, ahh bons tempos.
Eis aqui a imagem original (24 x 24 pixels):
No fim da postagem, encontrará o link para o código fonte Python que usa o OpenCv, para operar a imagem e todas as filtragens, é realmente muito simples e seria um disperdício de tempo da minha parte e de vós leitor, repetír o código em partes. Assim, vou extender sobre o formato computacional utilizado em cada um dos Filtros.
Kernel, Matriz de Transformação ou Máscara
Todos esses nomes são kernels. Kernel é um calculo matricial (multiplicação e soma) que varia em tamanho, aplicado a uma imagem. Geralmente implica em aplicar mudanças a um ponto e seus pixels vizinhos, ressaltando características específicas. Se você possuísse capacidade de zoom de 20 vezes acoplados em seus olhos veria os pixels como a imagem abaixo.
Segmento da imagem e um kernel que será aplicado a este segmento.Lembremos-nos que cada pixel colorido ou PB possui um código de cor correspondente.
O kernel implicará na mudança das características de cor da imagem,
podendo ser reaplicado à imagem ou separado em uma máscara.
Magnificação
Gaussiana
Um kernel gaussiano é aplicado a cada pixel irradiando para os vizinhos.
Se perceber, verá que é a magnificação que os traços do rosto são melhorados.
O Kernel Gaussiano basicamente espalha a tonalidade
do pixel em todas as direções circularmente.
kernel gaussiano 5 x 5
Linear
Um kernel linear, vertical e horizontal é aplicado para melhor espalhar as
cores durante a expansão da imagem.
Area
Um pixel é amplicado proporcionalmente a expansão da imagem, mantendo sua área.
Bi-Cubica
Semelhante ao kernel gaussiano este algoritimo, espalha a intensidade do pixel aos seus vizinhos circularmente.
Porém ele obedece uma intensidade cubica (x^2) que dá mais ênfase as cores mais
fortes. Aparenta maior nitidez e mantém melhor os contornos das linhas.
Operações Morphológicas
Erosão
O Kernel homgeiniza as cores de maior intensidade tornando-as predominantes.
É possível claramente identificar a posição dos olhos, boca e nariz.
Fechamento
O filtro aqui irá suavizar à esquerda e reforçar as cores a direita.
Ao mesmo tempo que suaviza a imagem, realiza o reforço das cores.
Útil por ser rápido e muito utilizado antes de reducação de limiaridade.
Edges / Cantos
A base do cálculo da detecção de bordas é a famosa matriz identidade que aprendemos no colegial.
Variações desta são desenvolvidas na intenção de detectar com mais detalhes as bordas.
Contornos
Kernel de contorno que ressalta a curva visual que une todos os pontos
contínuos com a mesma cor ou intensidade.
Destaque para a capacidade incrível de extrair características tão complexas
a partir de uma imagem inicialmente mínma !
Gradiente
Kernel final que representa a diferença dos kernels de dilatação e a erosão.
Todos esses kernels e operações podem ser encadeados entre si ou repetidos para ressaltar ainda mais características interessantes. Podemos aplicar por exemplo a identificação de contornos após o gradiente e teríamos quase que uma segmanetação de área por predominância de cores, conforme pode ser visto abaixo:
Ou a busca dos cantos, após a aplicação do filtro básico de contornos:
As técnicas variam e somente a experiência e prática vão facilitar o caminho entre a informação que você precisa extrair e os filtros que precisa aplicar.
O link para o código fonte encontra-se no repo do github.
Não exite em conectar-se a mim no linkedin !.














