Pregunta

Necesito escribir un programa que use la multiplicación de matrices para rotar una imagen (un cuadrado simple), basado en el centro del cuadrado, una cierta cantidad de grado basado en lo que necesito. Cualquier ayuda en esto sería muy apreciada. Casi no tengo idea de lo que estoy haciendo porque no he echado un vistazo al cálculo.

¿Fue útil?

Solución

Eche un vistazo a http://www.aforgenet.com/framework/ . Este es un marco completo de procesamiento de imágenes en C # que estoy usando en un proyecto. Acabo de comprobar su ayuda y tienen una función que hace lo que quieres:

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

Es una biblioteca LGPL, por lo que si las licencias son un problema, si se vincula con sus archivos binarios, no tendrá problemas. También hay otras bibliotecas por ahí.

Si decide escribirlo usted mismo, tenga cuidado con la velocidad, ya que C # haciendo cálculos numéricos no es excelente. Pero hay formas de solucionarlo.

Otros consejos

Aquí hay un buen artículo de proyecto de código que discute exactamente lo que quieres:

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

Girar una imagen digital en el plano se reduce a muchas multiplicaciones de matriz 2X2. ¡No hay cálculo involucrado aquí! No necesita un marco completo de procesamiento de imágenes para rotar una imagen cuadrada, a menos que esto sea realmente sensible al rendimiento en términos de calidad y velocidad de imagen.

Vaya y lea la primera mitad del artículo de Wikipedia en la matriz de rotación y eso debería obtener Te fue un buen comienzo.

En pocas palabras, establezca su origen (tal vez el centro de la imagen si es allí donde desea rotar), luego calcule en el espacio de píxeles la coordenada de un píxel que desea rotar y multiplique por su matriz de rotación (ver artículo). Una vez que haya hecho la multiplicación, tendrá sus nuevas coordenadas del píxel en el espacio de píxeles. Escriba ese píxel en otro búfer de imagen y estará apagado y girando. Repetir. Tenga en cuenta que una vez que conoce su ángulo de rotación, ¡solo necesita calcular su matriz de rotación una vez!

Diviértete,

Paul

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top