2

我需要编写一个程序,使用矩阵乘法来旋转图像(一个简单的正方形),基于正方形的中心,根据我的需要旋转一定的度数。对此的任何帮助将不胜感激。我几乎不知道自己在做什么,因为我没有看过微积分。

4

3 回答 3

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# 进行数字运算并不是很好。但是有一些方法可以解决它。

于 2009-10-28T03:27:35.943 回答
2

这是一篇很好的代码项目文章,讨论了您想要的内容:

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

于 2009-10-28T02:12:08.267 回答
2

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

去阅读维基百科关于旋转矩阵的文章的前半部分,这应该会让你有一个好的开始。

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

玩得开心,

保罗

于 2009-10-28T05:02:03.853 回答