本文算法比较简单 其原理是把原始图像本身的空间分布进行归一化 然后通过旋转平移缩放等变换 变换到目标图像的空间分布 如下所示:
T表示平移 R表示旋转 S表示缩放. 下标t表示目标图像 下标s表示原始图像 文中的原始公式存在问题 我这里进行了调整.
对于n维颜色空间 为了方便处理 可以调整为n+1维的齐次坐标标示. 对于本文 使用的是RGB 3维颜色空间 齐次坐标维4维的.
对于上述几个变换矩阵 平移矩阵T很容易想到 可以使用各颜色通道的均值来表示. 但对于旋转矩阵R和缩放矩阵S就需要用到SVD分解矩阵的性质了: (U) 表示旋转 (Lambda) 表示缩放拉伸.
因而所需变换矩阵如下:
本文算法是对3个通道一起处理 如果每个通道单独处理 上述公式可以等效为:
作者在自己给出的matlab代码中指出了本文算法存在的一个问题 我们先来看看实际的情况 如下所示为一组图像的测试结果.
可以看到 结果出现了异常. 作者给出的分析是:
下面是调整后的结果: