Sto scrivendo un'app per Android in OpenCV per rilevare i BLOB. Un compito è quello di sormontare l'immagine per differenziare gli oggetti in primo piano dallo sfondo (vedi immagine).Come ottenere il valore di soglia dall'istogramma?
Funziona correttamente finché l'immagine è nota e posso passare manualmente un valore di soglia a threshold() - in questa immagine specifica, 200. Ma assumendo che l'immagine non sia nota con la sola conoscenza che sarebbe uno sfondo scuro scuro e oggetti in primo piano più chiari come posso calcolare dinamicamente il valore di soglia?
Mi sono imbattuto nell'istogramma in cui è possibile calcolare la distribuzione dell'intensità dell'immagine in scala di grigi. Ma non sono riuscito a trovare un metodo per analizzare l'istogramma e scegliere il valore in cui si trova l'oggetto di interesse (più leggero). Questo è; Voglio differenziare i picchi di sfondo chiaramente scuri dai picchi più chiari in primo piano - in questo caso sopra i 200, ma in un altro caso si potrebbe dire, 100 se gli oggetti sono grigiosi.
C'è un sacco di metodi per questo. Forse il Metodo di Otsu potrebbe funzionare per te. Se non è ancora un buon punto di partenza, IMHO. http://en.wikipedia.org/wiki/Otsu%27s_Method – Florian
Puoi caricare un'immagine in cui 100 soglia è buona? Perché sull'immagine sopra la soglia 50 è anche accettabile ... – ArtemStorozhuk