Processamento de Imagens

← Voltar

Detecção Automática de Assinaturas em Lista de Presença

Este projeto demonstra o uso de processamento de imagens em Python para identificar e contar automaticamente assinaturas em uma lista de presença digitalizada. A execução foi feita em um ambiente Jupyter Notebook, utilizando bibliotecas como OpenCV, NumPy, Matplotlib e scikit-image.

O sistema pode ser usado para auditoria de documentos, controle de autenticação e automação de processos administrativos.

Etapas do processamento

1. Leitura e exibição da imagem

A imagem (listaPres.jpg) é carregada em escala de cinza, o que facilita o processamento. Em seguida, é exibida para visualização inicial.

Tela principal do sistema

2. Binarização

A imagem é convertida para preto e branco, aplicando um limiar fixo (<140 → preto, >0 → branco). Esse passo separa o fundo claro das regiões escuras (como texto e assinaturas). A imagem é suavizada usando um filtro Gaussiano para reduzir ruídos, o que ajuda na detecção de contornos.

Binarização da imagem

3. Recorte

Partes desnecessárias da imagem são removidas com recortes sucessivos. Isso ajuda a focar apenas na área que contém as assinaturas.

4. Dilatação horizontal

Cada pixel é “esticado” na horizontal, duplicando a largura da imagem. Essa operação ajuda a realçar traços finos das assinaturas, facilitando sua detecção em etapas seguintes.

Dilatacao horizontal

5. Detecção de bordas (Sobel)

filtro Sobel é aplicado para detectar contornos e variações de intensidade. O resultado é uma imagem destacando as linhas principais (assinaturas e pautas).

Detecção de bordas

6. Análise do histograma

É gerado um histograma da imagem resultante, mostrando a distribuição de tons (pretos e brancos).
Uma função personalizada conta quantos pixels são predominantemente pretos e brancos.
Nesse casso foram Pixels pretos: 6813352 | Pixels brancos: 32896

7. Cálculo dinâmico do limiar

A função razao_limiar() calcula um limiar adaptativo baseado na razão entre pixels pretos e brancos.
Isso é importante para ajustar automaticamente a sensibilidade da detecção em imagens com variação de contraste, especialmente aquelas com linhas de pauta.

8. Transformada de Hough

Transformada de Hough é aplicada para detectar linhas verticais na imagem binarizada.
Cada linha identificada representa, em potencial, uma assinatura ou traço relevante.
A função transformada_Hough() desenha essas linhas detectadas sobre a imagem e contabiliza o total.

9. Contagem e resultado

Se o número de linhas detectadas for muito alto, um segundo filtro de Hough é aplicado com limiar ajustado.
Ao final, a imagem processada é exibida com as linhas detectadas em azul e o total de assinaturas é mostrado no console. Que nesse caso foram 5 assinaturas, a quantidade exata na contagem.

resultado

Link para o código no GitHub