Sì, non l'ho fatto ed è coinvolta un po 'di programmazione in C o Python, ma proverò presto.
La mia situazione è una telecamera montata su un albero che si trova su una boa scattare una foto che contiene sempre l'orizzonte. Questa dovrebbe essere un'applicazione più semplice della tua.
Per prima cosa, guarda OpenCV. In particolare la Hough Line Transform.
Nel mio caso, mi aspetto che l'orizzonte sarà molto più distintivo di qualsiasi altra linea, posso regolarlo per trovare solo una linea. Posso quindi ruotare in base all'angolo della linea.
Per la tua applicazione, penso che filtreresti qualsiasi linea più di X gradi dall'orizzontale o dalla verticale.
Un po 'di statistiche, e potresti essere in grado di capire quanto ruotare.
Per quanto riguarda la qualità dell'immagine degradata, convertirò i file RAW in ppm invece che in jpeg, quindi non dovrebbe esserci molto oltre al ritaglio.