将旋转应用于没有窦和余弦的图像

时间:2017-10-08 18:49:56

标签: image-processing

我已经读过某处(但我不记得究竟在哪里)可以通过应用单个矩阵(只是添加和乘法)来旋转图像的像素。

这是在没有鼻窦和余弦函数的情况下完成的。

我想知道我是否有梦想或者这是否真的可能......

由于

3 个答案:

答案 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来执行此类任务。算法是这样的:

  1. 创建转化矩阵

    按住你想要的所有变换。对于 2D ,它是 3x3 均匀变换矩阵或 2x2 旋转矩阵(无翻译)。

  2. 处理所有目标像素

    基本上将像素从源图像复制到目标图像,但是循环循环每个目标像素(以避免圆孔)。所以让循环遍历(x,y),这样你就可以复制像素......

    dst[y][x] = src[y'][x']
    

    其中:

    (x',y') = Matrix2x2 * (x,y)
    

    (x',y',w) = Matrix3x3 * (x,y,1)
    
  3. 如果使用2x2或3x3矩阵或硬编码乘法(如示例所示),请参阅:

    但您需要使用sin,cos作为矩阵值(每次旋转一次)。没有sin,cos的唯一轮播是90 deg旋转,其中:

    (x',y') = (-y,x)
    

    或:

    (x',y') = (y,-x)