二次型能量方程求解

二次型 能量方程求解

背景

本人从事于视频拼接,看相关拼接论文,经常会遇到能量优化的问题,如 E=Ep+αEg+βEs 。目的是通过使得E最小来得到期望的参数。这些参数包含在等式右边的各项中。

二次能量方程解

本文基于cvpr2014的一篇文章(parallax-tolerant image stitching )来具体阐述如何解二次型能量方程。

文章链接:http://web.cecs.pdx.edu/~fliu/papers/cvpr2014-stitching.pdf

文章相关

  1. 文章简要介绍
    这篇文章是致力于解决图像拼接领域中具有大视差情况下的拼接问题。文章的创新点在于:大视差的图像拼接问题,不需要保证图像在重叠区域完全重合,只需要存在这样一个狭窄区域–它可以保证能找到一个最佳的拼接线。

  2. 文章的实现步骤 :
    (1). 首先对图像进行预对齐(pre-warping).就是用一个单应矩阵对图像进行warp.这样得到一个初始的warp结果。原始图像记为 I, pre-warping的结果记为 I
    (2).对初始结果进行refine(local-warping),最终的结果记为 I^ .

  3. refine策略
    refine的做法是首先对于原始图像I进行均匀划分格网MXN,每个格网的顶点坐标记为V.
    经过pre-warping 之后,V变为 V .再经过local-warping之后, V 变为V^. 文章的所有优化工作都是对于格网的顶点进行的,通过优化得到最终的格网,然后直接对格网应用纹理映射机制得到最终的图像。

能量项

文章看不懂或者是不想去看没关系,不影响这里的讲解。
首先,我先列出文章中设计的能量方程。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

求解

对于 Ep 项,V是未知数, α 和P是已知值。V统一写成列向量形式
因而 Ep 项可以改为
Ep=||ApVP||2
a0,0a1,0..am,0a0,1a1,1..am,1a0,2a1,2..am,2..........a0,2n+1a1,2n+1..am,2n+1v0xv0yv1xv1y....vnxvnyp0xp0yp1xp1y....pmxpmy2
同理 :
Eg=||AgVV||2
Es=||AsV||2

总的能量就表示为:
E=||ApVP||2+m||AgVV||2+n||AsV||2

对于E的求解有两种方式:normal equation 方式 和linear least square方式

先给出两种方式的比较:
根据本人了解的和实践的结果,normal equation方式比linear least square速度快很多。

解法一:normal equation方式:

还是从 Ep 项分析:由于 P 是列向量,列向量各个元素的平方 再相加的和 可以写成这个列向量的转置乘以列向量本身。因而,有如下推导:
Ep=||ApVP||2=||ApVLp||2便L=(ApVLp)T(ApVLp)=VTATpApVVTATpLpLTpApV+LTpLp   (1x1)=VTATpApV2VTATpLp+LTpLp

同理:

Eg=||AgVLg||2=VTATgAgV2VTATgLg+LTgLg
Es=||AsV||2=VTATsAsV

因而:
E=VTATpApV2VTATpLp+LTpLp+VTATgAgV2VTATgLg+LTgLg+VTATsAsV
等式对V求导,得到
EV=2ATpApV2ATLp+2ATgAgV2ATLg+2ATsAsV =0
合并系数得到 ATAVATL=0
这个公式可以直接使用 V=(ATA).inv()ATL 求得,也可以使用LU、QR分解等线性求解器求得,一般不直接使用求逆公式,速度慢。推荐使用LU、QR分解等线性求解器。

解法二 :linear least square equation

还是回归到 E=||ApVP||2+m||AgVV||2+n||AsV||2
直接把 ApAgAsLpLg 得到如下:
E=ApmAgnAsv0xv0yv1xv1y....vnxvnyLpmLg02
合并系数得到 E=||AVL||2 这个E的最小值等价于线性方程 AVL=0 的最小二乘解。
因而直接使用线性最小二乘求解器对 AVL=0 进行求解

注意

虽然两种方式最终都化成Left *V = Right的方式,但是二者是有区别的。第一种的V是可以直接使用求逆或线性分解器求得确定的解的。第二种的V是没有解的,需要使用最小二乘求得最优解。

你可能感兴趣的:(算法,图像处理)