Sto cercando di rilevare l'orizzonte in un'immagine e di restituire una maschera del cielo (o invertita come il terreno). Mentre sembra esserci molti usi, sto lottando per trovare una buona soluzione. Quel che è peggio è che sembra un problema così semplice, e la maggior parte degli umani non ha alcun problema nel rilevare l'orizzonte.Individuazione della separazione Cielo/Terra in OpenCV
Di seguito rende più difficile:
- L'orizzonte è raramente una linea retta nelle immagini utilizzate (paesaggi di montagna), quindi un rilevamento dei bordi e la linea trasformata di Hough non funzionerà.
- Deve funzionare in tutte le condizioni di luce. Il Thresholding (come la soglia di Otsu) funziona ma non funziona bene in condizioni di basso contrasto come prima dell'alba. La soglia del valore fisso non funziona in quanto la luce cambia troppo durante il giorno.
Quello che ho cercato per ora è di usare un filtro colorato limitandolo a basse saturazioni, quindi trovare contorni e rilevare e riempire il contorno più grande. Dopo questo, allagamento riempire l'area sopra il contorno. Funziona, ma non riesco ancora a immaginare che questo problema sia così difficile.
Sto scrivendo il codice in Delphi XE8, utilizzando un wrapper OpenCV, ma le risposte o le idee in qualsiasi altra lingua sono le benvenute!
"Sto scrivendo il codice in Delphi XE8, utilizzando un involucro OpenCV," - oh, che suona terribile, perché probabilmente non è possibile utilizzare funzioni più avanzate, come il C++ o CLAHE bioispirati :: retina per la normalizzazione dell'illuminazione – berak
'la maggior parte degli umani non ha alcun problema nel rilevamento dell'orizzonte' - la maggior parte degli umani ha un'esperienza naturale o appreso nel riconoscimento dei pattern e nella comprensione delle scene. – Micka
probabilmente hai già usato google? dandomi alcuni link e http: // StackOverflow.it/questions/4705837/algoritmo di rilevamento degli orizzonti (che include di nuovo alcuni dei link di Google) – Micka