矩阵乘法在C#中旋转图像

时间:2009-10-28 02:06:32

标签: c# matrix rotation multiplication calculus

我需要编写一个程序,使用矩阵乘法来旋转图像(一个简单的正方形),基于正方形的中心,根据我的需要提供一定程度的度数。任何有关这方面的帮助将不胜感激。我几乎不知道我在做什么,因为我没有那么多地瞥一眼微积分。

3 个答案:

答案 0 :(得分:4)

看看http://www.aforgenet.com/framework/。这是我在项目中使用的C#中的完整图像处理框架。我刚检查了他们的帮助,他们有一个功能可以做你想要的 -

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

这是一个LGPL库,所以如果许可是一个问题,如果你链接到他们的二进制文件,你将没有问题。他们也是其他图书馆。

如果您决定自己编写,请注意速度,因为C#执行数字运算并不是很好。但是有办法解决它。

答案 1 :(得分:2)

这是一篇很好的代码项目文章,讨论你想要的东西:

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

答案 2 :(得分:2)

在平面中旋转数字图像可归结为大量2X2矩阵乘法。这里没有涉及微积分!您不需要整个图像处理框架来旋转方形图像 - 除非这在图像质量和速度方面确实对性能敏感。

在旋转矩阵上阅读维基百科的article的前半部分,这应该会让你有个好的开始。

简而言之,确定您的原点(如果您想要旋转的位置,可能是图像的中心),然后在像素空间中计算您想要旋转的像素的坐标,并乘以旋转矩阵(见文章。)。完成乘法后,您将获得像素空间中像素的新坐标。在另一个图像缓冲区中写出该像素,您将关闭并旋转。重复。请注意,一旦知道旋转角度,您只需计算一次旋转矩阵!

玩得开心,