Ajuste a espessura da ponte entre as moedas e observe como a erosão morfológica separa os objetos para contagem e extração de descritores (área e caixa delimitadora).
1 px
Em uma linha de produção de moedas, é comum que peças encostem umas nas outras na esteira, formando uma única mancha conectada na imagem — uma contagem ingênua erraria o total. A solução clássica combina operações morfológicas e análise de conectividade: primeiro uma erosão reduz ou rompe conexões frágeis entre objetos, e depois a rotulação de componentes conectados separa cada objeto em uma região distinta. Por fim, descritores geométricos (área e caixa delimitadora) resumem cada componente encontrado.
Ver na Figura 4.39 uma simulação deste EP.
Dimensões da imagem: ler os inteiros \(L\) (linhas) e \(C\) (colunas) de \(f\).
Dimensões de \(B\): ler os inteiros \(L_B\) (linhas) e \(C_B\) (colunas) do elemento estruturante.
Elemento estruturante: ler a matriz \(B\), contendo valores \(0\) ou \(1\), linha a linha.
Dados: ler a matriz binária \(f\) (valores \(0\) ou \(1\)), linha a linha.
Separação: calcular \[ f_{ero} = f \ominus B \] usando erosão binária plana (como no EP04_04), eliminando conexões frágeis entre objetos.
Rotulação: sobre \(f_{ero}\), identificar componentes conectados usando conectividade definida pela vizinhança \(B\). A rotulação deve seguir varredura raster: ao encontrar um pixel \(1\) ainda não rotulado, atribuir um novo rótulo inteiro crescente a partir de 1 e propagar esse rótulo a toda a região conectada.
Descritores: para cada rótulo \(k\), calcular:
Saída: exibir o número total de rótulos e, em seguida, uma linha por rótulo no formato: \[ k,\ \text{área},\ y_{min},\ x_{min},\ y_{max},\ x_{max} \]
| Conceito | Significado | Impacto |
|---|---|---|
| Ponte fina | Conexão estreita entre objetos | Pode ser removida pela erosão morfológica |
| Conectividade | Definida pelo conjunto \[\mathcal{N}(y,x)\] | Determina quais pixels pertencem ao mesmo componente |
| Área | Número de pixels por componente | Estimativa direta do tamanho do objeto |
| Caixa delimitadora | Extensão espacial do rótulo | Resumo geométrico do componente |
Entrada:
Saída:
Ajuste a espessura da ponte entre as moedas e observe como a erosão morfológica separa os objetos para contagem e extração de descritores (área e caixa delimitadora).
%%writefile EP04_10.cpp
// sua soluçãoOverwriting EP04_10.cpp
TestSuite("EP04_10.cpp").run()✔️ EP04_10.cases já existe em casos/
📋 4 caso(s) carregado(s) de casos/EP04_10.cases
🔍 Testando C++: EP04_10.cpp
⚠️ EP04_10.cpp: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.