Question

Je dois écrire un programme qui utilise la multiplication matricielle pour faire pivoter une image (un simple carré), en fonction du centre du carré, d'une certaine quantité de degré en fonction de mes besoins. Toute aide à ce sujet serait grandement appréciée. Je n'ai presque aucune idée de ce que je fais parce que je n'ai pas jeté un coup d'œil à Calcul.

Était-ce utile?

La solution

Consultez http://www.aforgenet.com/framework/ . Il s’agit d’un framework complet de traitement d’image en C # que j’utilise dans un projet. Je viens de vérifier leur aide et ils ont une fonction qui fait ce que vous voulez -

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

Il s’agit d’une bibliothèque LGPL. Par conséquent, si le problème des licences pose problème, si vous établissez un lien avec leurs fichiers binaires, vous ne rencontrerez aucun problème. Il existe également d’autres bibliothèques.

Si vous décidez de l'écrire vous-même, faites attention à la vitesse, car le calcul des chiffres en C # n'est pas génial. Mais il existe des moyens de contourner le problème.

Autres conseils

Voici un bon article de projet de code décrivant ce que vous voulez:

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

La rotation d’une image numérique dans l’avion se résume à de nombreuses multiplications matricielles 2X2. Il n'y a pas de calcul impliqué ici! Vous n'avez pas besoin d'un framework de traitement d'image complet pour faire pivoter une image carrée - à moins que cela ne dépende vraiment des performances en termes de qualité d'image et de vitesse.

Consultez la article de Wikipedia dans la première moitié de la matrice de rotation. vous partez du bon pied.

En un mot, déterminez votre origine (peut-être le centre de l'image si c'est l'endroit où vous souhaitez faire pivoter), puis calculez dans l'espace en pixels la coordonnée du pixel que vous souhaitez faire pivoter et multipliez-la par votre matrice de rotation. (voir article.) Une fois que vous avez fait la multiplication, vous aurez vos nouvelles coordonnées du pixel dans l'espace de pixel. Ecrivez ce pixel dans un autre tampon d'image et vous serez en rotation. Répéter. Notez qu'une fois que vous connaissez votre angle de rotation, il vous suffit de calculer votre matrice de rotation une fois!

Amusez-vous,

Paul

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top