Image processing 对无窦和余弦的图像应用旋转

Image processing 对无窦和余弦的图像应用旋转,image-processing,Image Processing,我在某个地方读到过(但我不记得确切的位置)可以通过应用单个矩阵(仅仅是加法和乘法)来旋转图像的像素 这是在没有窦和余弦功能的情况下完成的 我想知道我是否有一个梦想,或者这是否真的有可能 谢谢是的,也不是 使用矩阵应用旋转,因为这是仿射变换() 但是,如果旋转振幅由角度指定,则无法避免使用三角函数来计算系数 最后一句话:这是完全无害的,为什么要担心呢?3x3变换矩阵是2D图形工作中的标准抽象。请参阅:。这是否避免了正弦和余弦,还有点争议,因为如果从一个角度开始,通常会使用这些三角函数来构造旋转矩阵

我在某个地方读到过(但我不记得确切的位置)可以通过应用单个矩阵(仅仅是加法和乘法)来旋转图像的像素

这是在没有窦和余弦功能的情况下完成的

我想知道我是否有一个梦想,或者这是否真的有可能

谢谢

是的,也不是

使用矩阵应用旋转,因为这是仿射变换()

但是,如果旋转振幅由角度指定,则无法避免使用三角函数来计算系数


最后一句话:这是完全无害的,为什么要担心呢?

3x3变换矩阵是2D图形工作中的标准抽象。请参阅:。这是否避免了正弦和余弦,还有点争议,因为如果从一个角度开始,通常会使用这些三角函数来构造旋转矩阵。

在图形中,我们通常用于此类任务。所以算法是这样的:

  • 创建变换矩阵

    保存您想要的所有变换。对于2D而言,它是3x3同伦变换矩阵或2x2旋转矩阵(无平移)

  • 处理所有目标像素

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

    dst[y][x] = src[y'][x']
    
    其中:

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

  • 使用2x2或3x3矩阵或硬编码乘法(如示例所示)并不重要,请参见:

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

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


    你有一个C++的源代码,手工计算矩阵应用到图像吗?我找到的每一个代码都与opencv一起工作,所以我不知道它在内部是如何工作的。谢谢
    (x',y') = (-y,x)
    
    (x',y') = (y,-x)