论文:Image Deformation Using Moving Least Squares
Nonrigid Image Deformation Using Moving Regularized Least Squares
Github:https://github.com/Jarvis73/Moving-Least-Squares
Moving Least Squares Deformation:
• p: 一列控制顶点.
• q: 控制顶点变换后的坐标.
给定图上的一点 v, 求解一个最优的仿射变换来最小化
其中 pi 和 qi 都是行向量, 每行的分量为点的坐标, 权重 wi 有如下的形式
因为该最小二乘问题中的权重 wi 独立于 v 变形后的点, 所以我们称之为移动最小二乘最小化. 对于不同的 v, 可以得到不同的变换 lv(x). 由于 lv(x) 是仿射变换, 所以可以写成
令原始的优化函数对 T 求偏导数并令其为 0, 解出
其中 p∗ 和 q∗ 是原来一系列控制顶点的加权质心,
所以有
所以原优化函数可以修改为
其中
考虑二维图像时, M 就是一个 2 × 2 的矩阵.
1.1 Affine Deformation
要找一个仿射变换来极小化方程 (4), 直接用古典方法求解优化问题得
从而我们可以写出仿射变换的表达式
其中 Aj 可以预计算
1.2 Similarity Deformation
实际上仿射变换包含了非一致性的平移和放缩,实际中的许多物体并不会产生这么复杂的变化。相似变换是仿射变换的一个子类,仅包含平移、旋转和一致的放缩。为了满足相似变换的性质,我们限制矩阵 M 满足 M⊤M = λ2 I, ∃λ。如果 M 是分块矩阵,有 M = (M1,M2) 的形式,其中 M1, M2 都是长度为 2 的列向量,那么对于 M 的限制可以 变为 M⊤1 M1 = M⊤2 M2 = λ2,并且 M⊤1 M2 = 0。这个限制意味着 M2 = M⊥1 ,其中 ⊥ 是一 个作用于二维向量的算子使得 (x, y)⊥ = ( y, x)。这样原来的目标方程 (4) 可以修改为
(注: 论文上式中有个符号可能写错了, 有待进一步确认.) 该二次方程有唯一的最优值,从而可以得到最优值点 M)
其中
从而得到最终的变换公式
其中 Ai 是
1.3 Rigid Deformation
进一步地,我们要求变换中不包括一致放缩,即限制变为 M⊤M = I。先给出一个定理,这个定理说明了刚性变换和相似变换的关系。
定理 1. 令 C 是可以极小化如下相似问题的矩阵
如果 C 写成 λR 的形式,R 是一个旋转矩阵,λ 是一个标量,那么旋转矩阵 R 极小化如
下的刚性问题
定理证明略去,可以参考原文中的 AppendixA。
根据定理我们知道刚性变化恰好就是方程 (7),除了把其中的 µs 替换为 µr
其中 Ai 由式 (8) 定义,最后的变换公式为
速度显存开销测试:
三种变形方式 |
cpu速度(720*960大小图片) |
gpu显存/速度 |
仿射变形affine |
10.05s |
6.5G/600ms |
相似变形similar |
14.32s |
3.8G/1060ms |
网格变形rigid |
13.47s |
3.8G/1040ms |
移动最小二乘MLS vs 反距离加权IDW:
MLS的显存开销更大,速度更慢
全局变形方法 |
速度 |
显存开销 |
变形效果 |
移动最小二乘MLS |
较慢 |
多(可以通过减少点的数量,减少图片大小,增大网格大小gridsize) |
可以从原始点一模一样的变形到目标点,但是在点多的时候边缘平滑性细节较差,点少的时候边缘平滑性细节较好 |
反距离加权IDW |
较快 |
少 |
不能从原始点一模一样的变形到目标点,会受变形系数的影响,但是边缘细节较好 |
测试效果: