Attualmente sto facendo un progetto basato sulla metodologia descritta in questo documento: Camera calibration from a single night sky imagetecniche OpenCV/elaborazione delle immagini per trovare i centri di punti luminosi in un'immagine
Come un principiante in computer vision, non lo faccio Capisco bene come posso implementare il metodo usato nella carta per trovare il centro di tutti i punti luminosi (luminari) all'interno di un'immagine, in particolare sul paragrafo nella sezione 4.1:
Il campo circostante di dimensione 15 × 15 pixel (Figura 1 (a)), viene sovracampionato da un dato fattore (Figura 1 (c)) e viene calcolata la corrispondente mappa del gradiente (Figura 1 (d)). A partire dalla regione più luminosa, la soglia del valore di grigio viene ridotta, finché non viene massimizzata la funzione di energia. La funzione energetica è definita come la somma dei gradienti del bordo e normalizzata dalla lunghezza del bordo (Figura 1 (e)). Questo porta a un'immagine stellare segmentata mostrata nella Figura 1 (f). La segmentazione garantisce che l'algoritmo del baricentro ponderato [11] dia una stima robusta.
Dalla mia comprensione, credo di poter fare una funzione gradiente Laplaciano/Sobel sull'immagine upsampling, ma dopo che io non sono troppo sicuro di come posso eseguire l'energia funzione parte e produce l'immagine segmentata. Inoltre vorrei anche capire come implementare l'algoritmo del centro di gravità ponderato per trovare il centro del punto luminoso usando openCV o altra libreria python.
Molto apprezzato se qualcuno di voi può fornire delle luci su questo.
Grazie e saluti.
Ciao Boyko, grazie mille per la rapida risposta. Voglio solo chiarire ulteriormente, hai detto "Se l'energia è superiore all'energia della precedente iterazione, il nuovo pixel viene aggiunto alla regione" qual è l'iterazione precedente a cui dovrei fare riferimento? Significa che partendo dal seme, controllo ciascuno degli 8 vicini di casa rispetto ai valori dei pixel del seme. Se vengono aggiunti tutti i vicini, proseguo con l'iterazione su ciascuno dei 15 vicini (o su tutti i pixel dei bordi) e controllo la somma degli 8 vicini in precedenza e così via? – LawrenceH
Praticamente quello che hai detto, eccetto la tua seconda iterazione potrebbe non essere su un quadrato perché l'aggiunta di alcuni degli 8 pixel alla regione non è riuscita. –
Sebbene, ora leggo che ciò che effettivamente fanno è semplicemente eseguire un algoritmo di riempimento che riempie tutti i pixel di luminosità [soglia; 255], calcolando le funzioni energiche, diminuendo la soglia, risciacquo e ripetendo, fermandosi quando massimizzano la funzione energetica. Nota che il loro algoritmo è molto inefficiente dato che stanno facendo efficacemente fino a 255 inondazioni per ogni stella pre-rilevata. –