Ho iniziato a giocare con OpenCV per un progetto su cui sto lavorando.
Per questo progetto sto coltivando piante in vaso. Le immagini statiche di diversi stadi di sviluppo sono prese dall'alto (vedi figura sotto).Approccio ottimale per rilevare forme simili a foglie in opencv
L'obiettivo è quello di rilevare e misurare in definitiva (cioè formato) foglie delle piante che crescono in diversi stadi di sviluppo.
Ho provato un approccio ingenuo all'uso del rilevamento di bordo Canny, tuttavia non funziona bene (vedi la figura sotto) perché rileva anche i piccoli bordi nel terreno (indipendentemente dal tipo di soglia che ho usato).
penso che l'approccio migliore è quello di primo segmento l'immagine in base al colore e quindi utilizzare qualche algoritmo di rilevamento del bordo per rilevare le foglie.
C'è un modo migliore per farlo?
La struttura della foglia è nota in anticipo. Posso usare l'algoritmo di apprendimento automatico/classificazione per ottenere risultati ancora migliori?
Non ho anche pensato a come misurare le dimensioni delle foglie? Esistono modelli comuni per misurare le dimensioni e altri descrittori? (potrebbe avere un oggetto di riferimento con dimensioni note nell'immagine?).
Infine, devo anche occuparmi dell'occlusione. Questo non è visibile nelle immagini, ma nelle fasi successive di sviluppo potrei avere a che fare con foglie sovrapposte. Ci sono approcci per affrontarlo?
non posso pregiudizi l'immagine a mio favore (vale a dire oscurare il suolo, ecc) come ci potrebbe essere migliaia di piante che devono essere elaborati.
In sintesi le mie domande:
- Qual è l'approccio migliore per individuare foglie in un terreno (vedi figure)?
- L'algoritmo di apprendimento automatico può migliorare il rilevamento?
- Come posso misurare la dimensione delle foglie?
- Come trattare le foglie di occlusione/sovrapposizione?
Sarei davvero grato per alcuni suggerimenti o idee.
Aggiornamento (sulla base dei commenti Jeff7):
ho eseguito la segmentazione del colore modificazione in senso insieme ad un algoritmo floodfill e finito con questa immagine:
Quando ho ora eseguire il rilevamento canny edge + findcontours su quella foto i risultati sono molto meglio:
grazie per il feedback. Hai ragione, ho il controllo sulle condizioni e ho anche pensato di "oscurare" il terreno. Sfortunatamente non è davvero possibile in quanto devo occuparmi non solo di una pianta, ma a volte delle quali migliaia e l'oscuramento del suolo richiederebbero troppo tempo. Per misurare le dimensioni delle foglie, hai ragione. Questo posso controllare in realtà dato che l'immagine prende sempre dalla stessa posizione e le pentole hanno le stesse dimensioni. –
Ci scusiamo per la confusione. Ho aggiornato le domande originali per chiarire un po '.Stavo solo mostrando una pianta come esempio, ma di solito ho 36 di quei vasi in un vassoio. –
No, non ci ho pensato, ma questi sono buoni suggerimenti. Grazie. Lo esaminerò. Potete raccomandare algoritmi o approcci che funzionano meglio in quell'impostazione (dove non posso pregiudicare l'immagine e avere questo tipo di distribuzione dei colori)? –