扁平化图像旋转矩阵A的形式求解及误差最小化问题
图像旋转变换对应矩阵A的形式
设原始图像为H行W列,总像素数N=H×W,扁平化向量x的第k个元素对应原始图像的二维坐标为(u_k, v_k)(行优先展开时满足k = v_k * W + u_k)。经角度θ旋转后的扁平化向量为y,对应的N×N变换矩阵A的形式可分为两种场景说明:
理想无插值、无裁剪场景
仅当θ为90°的整数倍时,旋转后的像素坐标可完全对齐整数格点,且无像素落在画布外:
- 矩阵A为0-1置换矩阵,每一行、每一列有且仅有一个元素为1,其余元素均为0
- 对于A的第m行(对应y的第m个元素,即旋转后图像的第m个像素),仅当原始图像第k个像素经旋转变换后恰好对应旋转后图像第m个像素的坐标时,A[m, k] = 1
- 该场景下A为正交矩阵,满足A^T = A^-1,乘法运算可无误差得到y
实际含插值、裁剪场景
θ不是90°整数倍时,旋转后的坐标为浮点值,需要插值计算像素值,同时边缘像素可能落在画布外被裁剪:
- 矩阵A为高度稀疏矩阵,元素为0到1之间的插值权重
- 对于A的第m行,首先通过逆旋转变换,找到旋转后第m个像素对应原始图像的浮点坐标(u_float, v_float),该行非零元素仅分布在该浮点坐标周围的整数格点对应位置:
- 若采用最近邻插值:仅距离最近的1个原始像素对应位置的权重为1,其余为0
- 若采用双线性插值:周围4个相邻原始像素对应位置的权重为双线性插值系数,权重和为1
- 若采用双三次插值:周围16个相邻原始像素对应位置的权重为双三次插值系数,权重和为1
- 若逆变换得到的浮点坐标落在原始图像范围外,对应行所有元素均为0,对应裁剪效应
- 工程实现中不会直接构造这个矩阵A(N通常为1e5~1e7量级,矩阵存储代价过高),而是直接逐像素通过坐标变换+插值完成计算
受插值精度、裁剪的影响,直接通过Ax计算得到的结果和实际旋转得到的y存在微小误差,此时最小化||Ax - y||²的最小二乘解,就是该变换下的最优拟合结果。如果是需要从旋转后的y恢复原始图像x,也可以通过求解该最小二乘问题得到最优重建结果。
内容的提问来源于stack exchange,提问作者Researcher_Witty
相关产品推荐
相关产品推荐

