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

有帮助吗?

解决方案

请参阅 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#执行数字运算并不是很好。但是有办法解决它。

其他提示

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

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

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

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

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

玩得开心,

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top