O Detector de Colônias em Placa de Petri é uma aplicação interativa desenvolvida com Python e Streamlit para facilitar a identificação e contagem de colônias bacterianas em imagens laboratoriais. Por meio de técnicas de visão computacional e algoritmos de otimização, o sistema automatiza etapas que geralmente são feitas manualmente, tornando o processo mais rápido, preciso e confiável.
Voltado para aplicações laboratoriais, científicas e educacionais, o sistema oferece controle visual total da imagem, parâmetros ajustáveis e exportação dos dados analisados.
- Upload e visualização de imagem da placa de Petri (formatos
.png
,.jpeg
,.jpg
); - Ferramenta de zoom interativo, com seleção manual da região da placa;
- Definição assistida da placa e de colônias pequenas e grandes por meio de círculos desenhados na interface;
- Detecção automática de colônias com base em transformada de Hough Circular;
- Otimização bayesiana para calibrar o melhor valor de sigma na detecção (algoritmo
gp_minimize
); - Visualização e confirmação manual das colônias detectadas, com recortes da imagem original e binarizada;
- Exportação de imagens em arquivos
.zip
separando colônias confirmadas e descartadas.
Arquivo/Pasta | Descrição |
---|---|
streamlit_app.py |
Ponto de entrada da aplicação (upload da imagem). |
passo_1.py |
Etapa de zoom e marcação da placa de Petri e colônias de referência. |
passo_2.py |
Otimização de parâmetros e detecção automática de colônias. |
passo_3.py |
Análise dos resultados, visualização e exportação. |
detectar_colonias.py |
Função de detecção usando skimage (Transformada de Hough). |
models/Circulo.py |
Classe base Circulo e especialização Colonia com métodos de análise. |
- Python 3.11+
- Streamlit: para construção da interface web interativa;
- OpenCV: para pré-processamento de imagem e limiarização adaptativa;
- Scikit-Image (
skimage
): para transformada de Hough e detecção de bordas; - Scikit-Optimize (
skopt
): para otimização bayesiana dos parâmetros de detecção; - Pillow: para manipulação de imagens;
- Matplotlib: para gráficos e visualização;
- Loguru: para logging detalhado e rastreamento de eventos.
- Clone o repositório
git clone https://github.com/GustavoGLD/colony-detector.git
cd colony-detector
- Crie e ative um ambiente virtual
python -m venv venv
# macOS/Linux
source venv/bin/activate
# Windows
venv\Scripts\activate
- Instale as dependências
pip install -r requirements.txt
- Execute a aplicação
streamlit run streamlit_app.py
- Carregue uma imagem da placa de Petri na tela inicial.
- Use o zoom e desenhe o círculo que define a área da placa.
- Marque colônias pequenas e grandes como referência.
- Avance para a etapa de detecção automática.
- Revise e confirme visualmente as colônias detectadas.
- Exporte as imagens confirmadas ou descartadas para análise futura.
Os resultados incluem:
- Imagens recortadas das colônias;
- Quantidade total e filtrada de colônias detectadas;
- Visualização da detecção sobre a imagem original;
- Exportação em
.zip
.
- Implementar detecção por aprendizado de máquina supervisionado;
- Calcular métricas como densidade e distribuição espacial das colônias;
- Adicionar suporte a múltiplas placas por imagem;
- Internacionalização da interface (Português/Inglês).
- Calibração dos parâmetros de detecção usando otimização bayesiana aumentou significativamente a precisão.
- Segmentação de imagem com limiar adaptativo exigiu atenção à variação de iluminação.
- Modularidade e orientação a objetos foram essenciais para isolar responsabilidades.
- A interface com Streamlit permitiu rápido desenvolvimento com boa usabilidade para usuários não técnicos.
Autor: Gustavo Lídio Damaceno • LinkedIn
Empresa: Siscof