我正在开发一个C#程序来处理图像(以int [,]为单位)..
我有一个2D像素数组,我需要围绕一个点旋转它们,然后缩小它们以适应原始数组。我已经找到了关于使用矩阵转换为点并旋转然后转换回来的文章。剩下的就是缩放生成的图像以适合原始大小的数组。
怎么做? (最好用2个方程,一个用于x,一个用于y)
答案 0 :(得分:2)
答案 1 :(得分:1)
看看here。这应该给你做坐标旋转的所有数学。
答案 2 :(得分:1)
您需要找到从结果数组到原始图像的变换。然后,将目标中的点转换为源图像中的点并进行复制。通过过采样进行抗锯齿也是一种选择。您的旋转矩阵也可以应用缩放 - 只需将矩阵乘以比例因子(假设为2x2)。如果你正在进行3x3矩阵的旋转,缩放和平移,那么只需将左上角2x2乘以比例因子。
最后,冒着一些谦虚的风险,这里有一些链接到我写的用于全屏旋转缩放的旧TP6 / asm DOS代码。奇怪的是网上的东西: http://www.hornet.org/cgi-bin/scene-search.cgi?search=Paul%20H.%20Kahler
答案 3 :(得分:0)
您需要做的一切都可以使用GDI +中的Bitmap
图像(使用System.Drawing...
命名空间)完成。这些类的设计和优化正是为了做这种事情(图像处理)。您是否有任何特殊原因无法使用实际Bitmap
代替int[,]
?您甚至可以编写一个非常简单的例程来从Bitmap
创建int[,]
,在Bitmap
上执行您需要的操作,然后将其转换回int[,]
at结束。