Domanda

Sto lavorando su un'applicazione che rileva il rettangolo più prominente in un'immagine, quindi cerca di ruotarlo in modo che la parte inferiore sinistra del rettangolo poggi sull'origine, in modo simile a come OSCAR funziona. Tuttavia, una volta rilevato il rettangolo più prominente, non sono sicuro di come prendere in considerazione il componente di profondità o l'asse z, poiché il rettangolo non sarà sempre "frontale". Qualsiasi esempio per approfondire la mia comprensione sarebbe molto apprezzato. Di seguito è riportato un esempio del sistema OSCAR di IUPR.

alt testo http://quito.informatik.uni-kl.de/oscar/oscar.php?serverimage=img_0324.jpg&montage=use

È stato utile?

Soluzione

In questo caso non è necessario gestire le informazioni 3D, è solo una funzione di mappatura, da un set di coordinate a un altro.

Guarda le trasformazioni affine, sono in grado di correggere semplici effetti di inclinazione e prospettiva. Dovresti essere in grado di trovare codice da qualche parte che calcolerà una trasformazione dai 4 punti agli angoli del rettangolo.

Quasi dimenticato - se " veloce " è davvero importante, potresti semplificare il sistema in modo da utilizzare solo trasformazioni di taglio semplici in combinazione, anche se ciò avrà un impatto negativo sulla qualità delle immagini per soggetti fortemente inclinati.

Altri suggerimenti

In realtà, penso che tu possa cavartela con qualcosa di molto più semplice di Approccio di Mark .

  1. Dopo aver posizionato le coordinate 2D sull'immagine inclinata, riutilizzare quelle coordinate come coordinate di trama.

  2. In un renderer, disegna un semplice rettangolo in cui i vertici di ogni angolo sono mappati a trama sui vertici presenti nell'immagine 2D inclinata (normalizzati e altrimenti trasformati nel piano di coordinate della trama del sistema di rendering).

Ora puoi fare affidamento sull'hardware (usando OpenGL o simili) per fare la correzione per te, oppure puoi scrivere il tuo mappatore di texture:

Le proporzioni dovranno essere indovinate dal momento che stiamo eliminando le informazioni 3D reali. Tuttavia, puoi cavartela semplicemente prendendo la larghezza massima e l'altezza massima del tuo rettangolo obliquo.

Mappatura texture prospettica di Chris Hecker

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top