visual studio library form example drawrectangle graphics gdi+ image-manipulation

graphics - studio - Transformaciones de imagen no afines en.NET



winforms draw line (3)

¿Hay clases, métodos en la biblioteca .NET o algoritmos en general para realizar transformaciones no afines ? (es decir, transformaciones que implican algo más que rotación, escala, traslación y cortante)

p.ej:

texto alternativo http://i43.tinypic.com/2qlcyup.jpg

texto alternativo http://www.last100.com/wp-content/uploads/2008/01/iphone-maps.jpg

¿Hay otro término para las transformaciones no afines ?


Todas las imágenes de ejemplo que publicó se pueden hacer con una distorsión cuadrilátera. Aunque no puedo decir con certeza que un cuádruple distorsionará TODAS las transformaciones no afines.

Aquí hay un enlace a una implementación no tan buena en C # ... funciona, pero es lento. Busca en Wikipedia las diferentes optimizaciones disponibles para este tipo de cálculos

http://www.vcskicks.com/image-distortion.html

-Neil


Puede hacer esto en wpf usando un control Viewport3d y una matriz de transformación no afín. Volver a representar esto en un mapa de bits puede ser interesante ... Lo cual "solucioné" al incluir un control invisible <imagen> con la misma imagen que en mi plano texturizado ... (Además, he tenido que trabajar alrededor del máximo problemas de tamaño de la textura al dividir el plano y recortar imágenes ...)

http://www.charlespetzold.com/blog/2007/08/060605.html

En mi caso, yo quería el reverso de esto (transformar los puntos tan arbitrarios en los deformados se convierten en las esquinas de mi ventana rectangular), que es el inverso de la matriz para hacer lo contrario.


No conozco nada integrado en .Net que le permita realizar transformaciones no afines.

¿Supongo que estás tratando de tener algún tipo de mapeo de texturas 3D? Si ese es el caso, necesita una transformada afín homogénea, que no está disponible en .Net. Tampoco estoy al tanto de ninguna forma integrada para hacer transformaciones de desplazamiento de píxeles en .Net.

Sin embargo, la solución elegida actualmente podría ser buena para lo que está intentando hacer, solo tenga en cuenta que no hará una corrección de perspectiva desde el primer momento.

Por ejemplo:

La imagen de la izquierda se generó utilizando la única biblioteca de distorsión cuádruple proporcionada por Neil N. La imagen de la derecha se generó utilizando un solo quad (dos triángulos en realidad) en DirectX.

Esto puede no tener ningún impacto en lo que estás tratando de hacer, pero esto es algo a tener en cuenta si quieres hacer cosas en 3D, se verá muy extraño sin una asignación de perspectiva correcta.