Projeto de pesquisa para detectar sinais de stress hidrico em acaiizeiros usando apenas video RGB comum (ex.: celular), com foco em extracao de modos vibracionais e analise espectral.
- Contexto
- Ideia tecnica
- Setup rapido
- Estrutura principal
- Pipeline principal (
thin_pipeline) - Scripts auxiliares
- Dicas praticas
- Proximos passos sugeridos
Na pratica agricola, o manejo de irrigacao depende de medir, com antecedencia, quando a planta entra em condicao de deficit hidrico. Sensores dedicados existem, mas podem ter alto custo e baixa capilaridade em campo.
A proposta aqui e investigar se o movimento natural da planta, capturado por video, carrega informacao suficiente para inferir estagios de stress hidrico de forma mais acessivel.
A hipotese central e que a dinamica vibracional do acaiizeiro muda conforme o nivel de stress hidrico.
De forma resumida, o pipeline:
- carrega o video e converte os frames para escala de cinza;
- vetoriza os pixels por frame e remove a componente DC (media temporal por pixel);
- reduz dimensionalidade com PCA;
- separa fontes com CP (Canonical Polyadic / separacao cega);
- estima coordenadas modais e plota resultados no tempo e na frequencia.
- Python 3.10+ (recomendado)
pip- OpenCV com suporte a leitura de
.mp4
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtNote
Opcional: para acelerar etapas numericas em GPU, instalar uma build de CuPy compativel com sua versao CUDA.
Tip
Para testes rapidos, rode primeiro com --scale 0.5 e --max-frames 200.
scripts/thin_pipeline.py: pipeline principal enxuto (PCA + CP + modos + figuras)scripts/base_pipeline.py: variante com augmentacao de Hilbert antes da PCAscripts/initial_video_pipeline.py: preprocessamento em lote e exportacao decoeffs.npy/scores.npyscripts/cp_runner.py: roda CP sobre arquivoscoeffs.npyja geradosscripts/video_single_plot.py: gera figuras e CSV de picos a partir deunmixed.npysrc/moises/: nucleos de dados, decomposicao e solucao modalsrc/marajomodes/: analise espectral e funcoes de visualizacao
O thin_pipeline e o fluxo mais direto para analise de um video unico.
- caminho para um video (
.mp4) - parametros opcionais:
--max-frames: limite de frames processados (padrao400)--scale: fator de escala espacial do frame (padrao1)--out-dir: pasta de saida (padraoout)
python scripts/thin_pipeline.py input/seu_video.mp4 --max-frames 400 --scale 0.5 --out-dir out/exec_01- Le metadados do video (fps, dimensoes, total de frames).
- Monta matriz
datasetcom shape(n_frames, n_pixels)em grayscale. - Remove media temporal por pixel.
- Executa PCA no dataset transposto.
- Seleciona
num_pc = 16componentes para a etapa de CP. - Aplica CP para separar fontes vibracionais.
- Resolve coordenadas modais e formas modais para fontes selecionadas.
- Salva figuras de diagnostico.
No diretorio definido em --out-dir, sao salvos:
sources.png: sinais/frequencias das fontes separadasmode_shapes.png: formas modais estimadasmodal_coord.png: coordenadas modais no tempo/frequencia
Gera artefatos intermediarios (coeffs.npy, scores.npy) para multiplos videos.
python scripts/initial_video_pipeline.pyWarning
Os caminhos de entrada/saida e combinacoes de escala/frame estao definidos no final do proprio script.
python scripts/cp_runner.py out/raw/.../coeffs.npy --npc 16Flags uteis:
--cuda: forca execucao com CuPy/CUDA--cpu: forca execucao em CPU--out-dir: altera pasta de saida (unmixed.npy,winvmix.npy)
python scripts/video_single_plot.py out/raw/.../unmixed.npy --out-dir out/processedSaidas:
sources_large.pngsources_simple.pngpeaks.csv(top frequencias por fonte)
- Comece com
--scale 0.3ou0.5para reduzir custo computacional. - Para exploracao inicial, limite
--max-frames(ex.:200a500). - Garanta boa estabilidade na captura (tripe/apoio) para diminuir ruido nao estrutural.
Important
O desempenho e a qualidade dos modos extraidos dependem muito da qualidade da captura (iluminacao, estabilidade, vento e compressao do video).
- Padronizar experimento por protocolo de captura (distancia, iluminacao, vento).
- Versionar metadados por video (talhao, horario, condicao hidrica).
- Criar etapa de classificacao/regressao sobre features modais e espectrais.
Se esse projeto te ajudar na pesquisa, considere deixar uma estrela no repositorio.