单应矩阵推导

一、基本设定

1. 相机系坐标

P_i 在相机坐标系下的坐标 \rho 为:
\boldsymbol{\rho}_{i}=\left[\begin{array}{l}x_{i} \\ y_{i} \\ z_{i}\end{array}\right]

2. 像素系坐标

相机系坐标转换成像素系齐次坐标:
\mathbf{q}_{i}=\mathbf{K}_{i} \frac{1}{z_{i}} \boldsymbol{\rho}_{i}
其中:q_i 为像素系齐次坐标,K_i 为相机内参矩阵。

3. 平面参数

P 所在平面在相机系下的参数:
\left\{\mathbf{n}_{i}, d_{i}\right\}
其中:n_i 为平面法向量,d_i 相机系原点到平面距离。

\rho 在平面 \{n,d\} 上由以下公式表达:
\mathbf{n}_{i}^{T} \boldsymbol{\rho}_{i}+d_{i}=0 \tag{1.1}

二、平面参数:由像素系计算相机系

1. 由像素系坐标计算相机系坐标:

\boldsymbol{\rho}_i=z_i\mathbf{K}_i^{-1}\mathbf{q}_i \tag{2.2}

存在未知数深度 z_i,因此无法由像素系计算出相机系坐标。

2. 加入平面参数

结合(1.1)(2.2)得:

z_{i} \mathbf{n}_{i}^{T} \mathbf{K}_{i}^{-1} \mathbf{q}_{i}+d_{i}=0 \tag{2.3}

整理:
z_{i}=-\frac{d_{i}}{\mathbf{n}_{i}^{T} \mathbf{K}_{i}^{-1} \mathbf{q}_{i}} \tag{2.4}

结合(2.2)(2.4)得:
\boldsymbol{\rho}_{i}=-\frac{d_{i}}{\mathbf{n}_{i}^{T} \mathbf{K}_{i}^{-1} \mathbf{q}_{i}} \mathbf{K}^{-1} \mathbf{q}_{i} \tag{2.5}

可知,加入平面信息 {n,d} 后,可完全由像素坐标还原出相机坐标。

三、单应矩阵:由像素系a计算像素系b

1. 由a系像素计算b系像素

有两个相机系,a 和 b,其下坐标有关系:

\left[\begin{array}{c}\boldsymbol{\rho}_{b} \\ 1\end{array}\right]=\underbrace{\left[\begin{array}{cc}\mathbf{C}_{b a} & \mathbf{r}_{b}^{a b} \\ \mathbf{0}^{T} & 1\end{array}\right]}_{\mathbf{T}_{b a}}\left[\begin{array}{c}\boldsymbol{\rho}_{a} \\ 1\end{array}\right]

\boldsymbol{\rho}_{b}=\mathbf{C}_{b a} \boldsymbol{\rho}_{a}+\mathbf{r}_{b}^{a b}

其中:
C_{ba} 表示从坐标系b原点运动到坐标系a原点的旋转矩阵;
r_b^{ab} 表示b坐标系下,从b到a的向量。

转到对应像素系,有关系:
z_{b} \mathbf{K}_{b}^{-1} \mathbf{q}_{b}=z_{a} \mathbf{C}_{b a} \mathbf{K}_{a}^{-1} \mathbf{q}_{a}+\mathbf{r}_{b}^{a b}

可得到由a系的像素表达出的b系像素:
\mathbf{q}_{b}=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \mathbf{C}_{b a} \mathbf{K}_{a}^{-1} \mathbf{q}_{a}+\frac{1}{z_{b}} \mathbf{K}_{b} \mathbf{r}_{b}^{b a} \tag{3.1}

但是存在未知数 z_a,z_b,所以无法直接通过a系像素得到b系像素。

2. 加入平面参数

结合(2.4)(3.1)

\begin{align*} \mathbf{q}_{b} &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \mathbf{C}_{b a} \mathbf{K}_{a}^{-1} \mathbf{q}_{a}+\frac{1}{z_{b}} \mathbf{K}_{b} \mathbf{r}_{b}^{b a} \\ &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \left( \mathbf{C}_{b a} \mathbf{K}_{a}^{-1} \mathbf{q}_{a} +\frac{1}{z_{a}} \mathbf{r}_{b}^{b a} \right) \\ &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \left( \mathbf{C}_{b a} \mathbf{K}_{a}^{-1} \mathbf{q}_{a} -\frac{\mathbf{n}_{a}^{T} \mathbf{K}_{a}^{-1} \mathbf{q}_{a}} {d_{a}} \mathbf{r}_{b}^{b a} \right) \\ &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \left( \mathbf{C}_{b a} -\frac{\mathbf{n}_{a}^{T}} {d_{a}} \mathbf{r}_{b}^{b a} \right) \mathbf{K}_{a}^{-1} \mathbf{q}_{a}\\ &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \left( \mathbf{C}_{b a} -\frac{\mathbf{n}_{a}^{T}} {d_{a}} \mathbf{C}_{b a}\mathbf{r}_{a}^{b a} \right) \mathbf{K}_{a}^{-1} \mathbf{q}_{a}\\ &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \mathbf{C}_{b a} \left( 1-\frac{\mathbf{n}_{a}^{T}} {d_{a}}\mathbf{r}_{a}^{b a} \right) \mathbf{K}_{a}^{-1} \mathbf{q}_{a}\\ &=\frac{z_{a}}{z_{b}} \mathbf{K}_{b} \mathbf{C}_{b a} \left( 1+\frac{\mathbf{n}_{a}^{T}} {d_{a}}\mathbf{r}_{a}^{a b} \right) \mathbf{K}_{a}^{-1} \mathbf{q}_{a}\\ &=\mathbf{K}_{b} \mathbf{C}_{b a} \left( 1+\frac{\mathbf{n}_{a}^{T}} {d_{a}}\mathbf{r}_{a}^{a b} \right) \mathbf{K}_{a}^{-1} \mathbf{q}_{a}\\ \end{align*}

上面推导用到的理论:

  1. \mathbf{r}_{b}^{a b}=-\mathbf{C}_{b a} \mathbf{r}_{a}^{b a}
  2. 齐次坐标与系数无关,因此可省去\frac{z_a}{z_b}

3. 定义单应矩阵

符号简化:
\mathbf{q}_{b}=\mathbf{H}_{b a} \mathbf{q}_{a}

其中 H_{ba}单应矩阵
\mathbf{H}_{b a}= \mathbf{K}_{b} \mathbf{C}_{b a}\left(\mathbf{1}+\frac{1}{d_{a}} \mathbf{r}_{a}^{b a} \mathbf{n}_{a}^{T} \right) \mathbf{K}_{a}^{-1} \tag{3.2}

单应矩阵包含了相机内参矩阵、旋转、平移和平面参数信息。
引入单应矩阵后,可以直接通过a系像素得到b系像素。

四、匹配点计算单应矩阵

(3.2)给出的单应矩阵的定义是通过旋转平移信息计算的,现实中有时不知道旋转平移信息,而知道两张图像中的匹配点,可以由匹配点计算出单应矩阵。

对于图片上的一对匹配点有如下关系:
\begin{align*} q_2&=Hq_1 \\ \left(\begin{array}{c}u_{2} \\ v_{2} \\ 1\end{array}\right)&=\left(\begin{array}{lll}H_{11} & H_{12} & H_{13} \\ H_{21} & H_{22} & H_{23} \\ H_{31} & H_{32} & H_{33}\end{array}\right)\left(\begin{array}{c}u_{1} \\ v_{1} \\ 1\end{array}\right) \end{align*}

1. 单应矩阵有8个未知数

因为转换的是齐次坐标,所以单应矩阵H与尺度无关,也即 aHH 的作用是相同的,因此自由度为 8,使用 H_{33}=1 来进行归一化。

\left( \begin{array}{c}u_{2} \\ v_{2} \\ 1\end{array}\right)=\left(\begin{array}{lll}H_{11} & H_{12} & H_{13} \\ H_{21} & H_{22} & H_{23} \\ H_{31} & H_{32} & 1\end{array}\right)\left(\begin{array}{c}u_{1} \\ v_{1} \\ 1 \end{array}\right)

H 共8个未知数,需要8个方程来解。

2. 一对匹配点提供2个方程

由于是齐次坐标,所以展开是这种形式:
\left\{\begin{aligned} u_{2} &= \frac{H_{11} u_{1}+H_{12} v_{1}+H_{13}}{H_{31} u_{1}+H_{32} v_{1}+1} \\ v_{2} &= \frac{H_{21} u_{1}+H_{22} v_{1}+H_{23}}{H_{31} u_{1}+H_{32} v_{1}+1} \end{aligned}\right.

3. 四对匹配点提供8个方程

\left(\begin{array}{cccccccc}u_{1}^{1} & v_{1}^{1} & 1 & 0 & 0 & 0 & -u_{1}^{1} u_{2}^{1} & -v_{1}^{1} u_{2}^{1} \\ 0 & 0 & 0 & u_{1}^{1} & v_{1}^{1} & 1 & -u_{1}^{1} v_{2}^{1} & -v_{1}^{1} v_{2}^{1} \\ u_{1}^{2} & v_{1}^{2} & 1 & 0 & 0 & 0 & -u_{1}^{2} u_{2}^{2} & -v_{1}^{2} u_{2}^{2} \\ 0 & 0 & 0 & u_{1}^{2} & v_{1}^{2} & 1 & -u_{1}^{2} v_{2}^{2} & -v_{1}^{2} v_{2}^{2} \\ u_{1}^{3} & v_{1}^{3} & 1 & 0 & 0 & 0 & -u_{1}^{3} u_{2}^{3} & -v_{1}^{3} u_{2}^{3} \\ 0 & 0 & 0 & u_{1}^{3} & v_{1}^{3} & 1 & -u_{1}^{3} v_{2}^{3} & -v_{1}^{3} v_{2}^{3} \\ u_{1}^{4} & v_{1}^{4} & 1 & 0 & 0 & 0 & -u_{1}^{4} u_{2}^{4} & -v_{1}^{4} u_{2}^{4} \\ 0 & 0 & 0 & u_{1}^{4} & v_{1}^{4} & 1 & -u_{1}^{4} v_{2}^{4} & -v_{1}^{4} v_{2}^{4}\end{array}\right) \left(\begin{array}{l}H_{11} \\ H_{12} \\ H_{13} \\ H_{21} \\ H_{22} \\ H_{23} \\ H_{31} \\ H_{32}\end{array}\right) = \left(\begin{array}{c}u_{2}^{1} \\ v_{2}^{1} \\ u_{2}^{2} \\ v_{2}^{2} \\ u_{2}^{3} \\ v_{2}^{3} \\ u_{2}^{4} \\ v_{2}^{4}\end{array}\right)

解此方程组,可得 单应矩阵 H

参考:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345