Detecte padrões com filtros de imagem
Deslize uma pequena grade de pesos sobre uma imagem para desfocar, aumentar a nitidez e encontrar bordas.
- Calcule uma saída de convolução manualmente
- Preveja o que os kernels de desfoque, nitidez e bordas fazem
- Conecte a convolução aos filtros que uma rede neural aprende
Desfocar, aumentar a nitidez, “encontrar bordas”: esses efeitos de editor de fotos são todos uma operação, convolução. Um kernel - uma pequena grade de pesos, geralmente 3×3 - desliza sobre a imagem. Em cada posição, cada pixel abaixo do kernel é multiplicado pelo seu peso e os produtos são somados. Essa soma é o pixel de saída.
1patch = [
2 [10, 10, 200],
3 [10, 10, 200],
4 [10, 10, 200],
5]
6kernel = [
7 [-1, 0, 1],
8 [-2, 0, 2],
9 [-1, 0, 1],
10]
11total = sum(patch[row][column] * kernel[row][column] for row in range(3) for column in range(3))
12print(total)760
Esse kernel subtrai a coluna da esquerda da coluna da direita: em uma mudança acentuada de escuro para claro, ele fornece um grande número (760), enquanto em uma região plana os produtos se cancelam em 0. Esse é um detector de borda.
Experimente
Até 15 XPParque infantil do kernel
Escolha um kernel e clique em qualquer pixel da saída para ver exatamente como ele foi calculado.
- Blur calcula a média de cada vizinhança 3×3. O que acontece com os cantos agudos do quadrado?
- Arestas verticais e Arestas horizontais encontram, cada uma, apenas alguns dos lados do quadrado. Quais? (Laranja significa negativo: uma mudança do claro para o escuro.)
- Edite você mesmo os pesos do kernel. Você pode fazer um filtro que encontre apenas a linha diagonal?
Saída na linha 6, coluna 6 = soma de (pixel × peso) na janela destacada 3×3 (pixels fora da imagem valem 0):
220×0 + 220×0 + 220×0 + 20×0 + 20×1 + 20×0 + 20×0 + 20×0 + 220×0 = 20
Principais conclusões
Convolução desliza um kernel sobre a imagem; cada saída é uma soma ponderada de uma vizinhança.
Pesos médios → desfoque; pesos que subtraem vizinhos → arestas; um centro reforçado → aguçar.
As bordas na borda da imagem precisam de preenchimento (aqui, os pixels externos contam como 0).
Quiz da aula
6 perguntas · aprovação com 5 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: aplique visão computacional com Python
Use pequenas matrizes de pixels para explorar conceitos de visão, execute seu código com imagens de exemplo e relacione cada resultado à ideia maior de visão computacional.
Encontre a mudança vizinha mais forte
Leia uma lista JSON de pelo menos dois valores em escala de cinza. Encontre a maior diferença absoluta entre valores adjacentes e imprima-a.
- Uma vantagem forte
- Pequenas variações
O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.
Convolver uma imagem
Leia uma imagem JSON em tons de cinza e, na próxima linha, um kernel JSON 3×3. Aplique o kernel em todas as posições onde ele caiba inteiramente dentro da imagem (sem preenchimento) e imprima a imagem de saída como uma lista de linhas. A saída é 2 menor em cada direção.
- Borda vertical
- Some um bloco 3x3
O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…