我已经读过某处(但我不记得究竟在哪里)可以通过应用单个矩阵(只是添加和乘法)来旋转图像的像素。
这是在没有鼻窦和余弦函数的情况下完成的。
我想知道我是否有梦想或者这是否真的可能......
由于
答案 0 :(得分:1)
3x3变换矩阵是2D图形工作的标准抽象。见:https://en.m.wikipedia.org/wiki/Transformation_matrix。这是否可以避免正弦和余弦是有争议的,因为如果从一个角度开始,通常使用那些三角函数来构造旋转矩阵。
答案 1 :(得分:0)
是的,没有。
使用矩阵应用旋转,因为这是仿射变换(https://en.wikipedia.org/wiki/Affine_transformation)。
但如果旋转幅度由角度指定,则无法使用三角函数来评估系数。
最后一句话:这是完全无害的,为什么要担心?
答案 2 :(得分:0)
在图形中,我们通常使用homogenuous transform matrices来执行此类任务。算法是这样的:
创建转化矩阵
按住你想要的所有变换。对于 2D ,它是 3x3 均匀变换矩阵或 2x2 旋转矩阵(无翻译)。
处理所有目标像素
基本上将像素从源图像复制到目标图像,但是循环循环每个目标像素(以避免圆孔)。所以让循环遍历(x,y)
,这样你就可以复制像素......
dst[y][x] = src[y'][x']
其中:
(x',y') = Matrix2x2 * (x,y)
或
(x',y',w) = Matrix3x3 * (x,y,1)
如果使用2x2或3x3矩阵或硬编码乘法(如示例所示),请参阅:
但您需要使用sin,cos
作为矩阵值(每次旋转一次)。没有sin,cos
的唯一轮播是90 deg
旋转,其中:
(x',y') = (-y,x)
或:
(x',y') = (y,-x)