Domanda

Devo scrivere un programma che utilizza la moltiplicazione di matrici per ruotare un'immagine (un quadrato semplice), basato sul centro del quadrato, un certo grado in base a ciò di cui ho bisogno. Qualsiasi aiuto su questo sarebbe molto apprezzato. Quasi non ho idea di cosa sto facendo perché non ho dato un'occhiata a Calculus.

È stato utile?

Soluzione

Dai un'occhiata a http://www.aforgenet.com/framework/ . Questo è un framework completo di elaborazione delle immagini in C # che sto usando su un progetto. Ho appena controllato il loro aiuto e hanno una funzione che fa quello che vuoi -

// create filter - rotate for 30 degrees keeping original image size
RotateBicubic filter = new RotateBicubic( 30, true );
// apply the filter
Bitmap newImage = filter.Apply( image );

È una libreria LGPL, quindi se la licenza è un problema, se ti colleghi ai loro binari, non avrai problemi. Loro sono anche altre biblioteche là fuori.

Se decidi di scriverlo da solo, fai attenzione alla velocità poiché C # fare scricchiolii di numeri non è eccezionale. Ma ci sono modi per aggirare il problema.

Altri suggerimenti

Ecco un buon articolo di progetto in codice che discute proprio quello che vuoi:

http://www.codeproject.com/KB/GDI-plus /matrix_transformation.aspx

La rotazione di un'immagine digitale sul piano si riduce a molte moltiplicazioni di matrice 2X2. Non ci sono calcoli coinvolti qui! Non è necessario un intero framework di elaborazione delle immagini per ruotare un'immagine quadrata, a meno che ciò non sia realmente sensibile alle prestazioni in termini di qualità e velocità dell'immagine.

Vai a leggere la prima metà del articolo sulla matrice di rotazione e che dovrebbe essere sei partito bene.

In poche parole, stabilisci la tua origine (forse il centro dell'immagine se è lì che vuoi ruotare), quindi calcola nello spazio pixel le coordinate di un pixel che desideri ruotare e moltiplica per la matrice di rotazione (vedi articolo). Una volta effettuata la moltiplicazione, avrai le tue nuove coordinate del pixel nello spazio dei pixel. Scrivi quel pixel in un altro buffer di immagine e sarai spento e in rotazione. Ripetere. Nota che una volta che conosci l'angolo di rotazione, devi calcolare la matrice di rotazione solo una volta!

Buon divertimento

Paul

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