概述
- 二、平面标定(Homography变换)
- 1、定义
- 2、计算推导
- 3、应用
- 1、简单平面的转换
- 2、在四轴中求取2D点到3D点的转换关系
- 2.1 相机在手上
- 2.1.1 转换方程
- 2.1.2 直接法
- 2.1.3 旋转法
- 2.2 相机不在手上
- 2.2.1 转换方程
- 2.2.2 直接法
- 2.2.3 圆弧法
- 2.1 相机在手上
二、平面标定(Homography变换)
1、定义
单应性(homography)变换用来描述物体在两个平面之间的转换关系,是对应齐次坐标下的线性变换,可以通过矩阵表示:
X ′ = H ⋅ X X' = H·X X′=H⋅X
2、计算推导
带入数据(x,y)为图片上的点位置:
[ x ′ y ′ w ] = [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ] [ x y 1 ] left[ begin{matrix} x'\ y'\ w end{matrix} right]= left[ begin{matrix} h1 & h2 & h3\ h4 & h5 & h6\ h7 & h8 & h9 end{matrix} right] left[ begin{matrix} x\ y\ 1 end{matrix} right] ⎣⎡x′y′w⎦⎤=⎣⎡h1h4h7h2h5h8h3h6h9⎦⎤⎣⎡xy1⎦⎤
因为是齐次坐标系,方程左右同时除h9
[ x 1 ′ y 1 ′ w ′ ] = [ x ′ h 9 y ′ h 9 z ′ h 9 ] = [ h 1 ′ h 2 ′ h 3 ′ h 4 ′ h 5 ′ h 6 ′ h 7 ′ h 8 ′ 1 ] [ x y 1 ] left[ begin{matrix} x1'\ y1'\ w' end{matrix} right]= left[ begin{matrix} frac{x'}{h9}\ frac{y'}{h9}\ frac{z'}{h9} end{matrix} right]= left[ begin{matrix} h1' & h2' & h3'\ h4' & h5' & h6'\ h7' & h8' & 1 end{matrix} right] left[ begin{matrix} x\ y\ 1 end{matrix} right] ⎣⎡x1′y1′w′⎦⎤=⎣⎢⎡h9x′h9y′h9z′⎦⎥⎤=⎣⎡h1′h4′h7′h2′h5′h8′h3′h6′1⎦⎤⎣⎡xy1⎦⎤
将矩阵展开得到:
公式①:
{
x
1
′
=
h
1
′
x
+
h
2
′
y
+
h
3
′
y
1
′
=
h
4
′
x
+
h
5
′
y
+
h
6
′
w
′
=
h
7
′
x
+
h
8
′
y
+
h
9
′
begin{cases} x1' = h1'x+h2'y+h3' \ y1' = h4'x+h5'y+h6' \ w' = h7'x+h8'y+h9' end{cases}
⎩⎪⎨⎪⎧x1′=h1′x+h2′y+h3′y1′=h4′x+h5′y+h6′w′=h7′x+h8′y+h9′
将下面的矩阵用已知的观测值代替:
[ x 1 ′ y 1 ′ w ′ ] = = > ( x R , y R ) left[ begin{matrix} x1'\ y1'\ w' end{matrix} right] ==>(x^R, y^R) ⎣⎡x1′y1′w′⎦⎤==>(xR,yR)
根据齐次坐标的齐次性质:
公式②:
x
1
′
w
′
=
x
R
,
y
1
′
w
′
=
y
R
frac{x1'}{w'}=x^R,frac{y1'}{w'}=y^R
w′x1′=xR,w′y1′=yR
结合公式①②:
公式③:
{
x
R
=
h
1
′
x
+
h
2
′
y
+
h
3
′
h
7
′
+
h
8
′
+
1
y
R
=
h
4
′
x
+
h
5
′
y
+
h
6
′
h
7
′
+
h
8
′
+
1
begin{cases} x^R = frac{h1'x+h2'y+h3'}{h7'+h8'+1}\ y^R = frac{h4'x+h5'y+h6'}{h7'+h8'+1} end{cases}
{xR=h7′+h8′+1h1′x+h2′y+h3′yR=h7′+h8′+1h4′x+h5′y+h6′
在公式③中
(
x
,
y
)
,
(
x
R
,
y
R
)
(x, y),(x^R, y^R)
(x,y),(xR,yR)
为观测到的已知参数,未知参数有h1’h8’共8个,一对点能够产生两个方程,则求解公式③至少需要四组点对,才能求出h1’h8’。一般的数据会多于4组点对,用最小二乘法或ransac来获取最优参数。
求解过后,h1’~h8’为已知,
H
′
=
[
h
1
′
h
2
′
h
3
′
h
4
′
h
5
′
h
6
′
h
7
′
h
8
′
1
]
H'= left[ begin{matrix} h1' & h2' & h3'\ h4' & h5' & h6'\ h7' & h8' & 1 end{matrix} right]
H′=⎣⎡h1′h4′h7′h2′h5′h8′h3′h6′1⎦⎤
可用于单应性变换的计算。
3、应用
1、简单平面的转换
图片A中的点P为(x,y),求对应在另外一个视角的图片B点P’(x’,y’)?
[ x 2 y 2 z 2 ] = H ′ [ x y 1 ] left[ begin{matrix} x2\ y2\ z2 end{matrix} right]= H' left[ begin{matrix} x\ y\ 1 end{matrix} right] ⎣⎡x2y2z2⎦⎤=H′⎣⎡xy1⎦⎤
P ′ ( x ′ , y ′ ) = ( x 2 z 2 , y 2 z 2 ) P'(x',y') = (frac{x2}{z2},frac{y2}{z2}) P′(x′,y′)=(z2x2,z2y2)
--------------------------------------------------------2020更新 华丽的分割线--------------------------------------------------------
2、在四轴中求取2D点到3D点的转换关系
2.1 相机在手上
求取
r H c {^r}H{_c} rHc
2.1.1 转换方程
r P o = r T t ⋅ t H C ⋅ C P o {^rP_o = ^rT_t cdot ^tH_C cdot ^CP_o} rPo=rTt⋅tHC⋅CPo
参数解释:
r P o ^rP_o rPo(4×1):object在Robot坐标系下的表示
r T t ^rT_t rTt(4×4):Tool到Robot的转换矩阵,即机械手示教器上读回的数值
t H C ^tH_C tHC(3×3):图像平面h1到Tool平面转换矩阵
C P o ^CP_o CPo(2×1齐次变化>3×1):图像中的点
2.1.2 直接法
t T r ⋅ r i P o = t H C ⋅ C i P o ^tT_r cdot ^{ri}P_o = ^tH_C cdot ^{Ci}P_o tTr⋅riPo=tHC⋅CiPo
参数解释: t T r ^tT_r tTr保持不变, t H C ^tH_C tHC为所求的参数, C i P o ^{Ci}P_o CiPo与 r i P o ^{ri}P_o riPo一一对应。
适用条件:u轴不变的情况,末端执行器与机械手只存在x、y的偏移量。
(提示:机械手位姿数目==图像数目+1)
该方法得到的H矩阵是图像点与△Pos (△Pos = P i − P o r i g i n P_i - P_{origin} Pi−Porigin) 之间的关系,所以在后期的使用中,需要先确定一个 P o r i g i n P_{origin} Porigin,再利用图像与Homo关系得到△Pos,再叠加上 P o r i g i n P_{origin} Porigin,得到新的一个 r P i ^rP_i rPi。
操作过程:
t i T r ⋅ r P o = t H C ⋅ C i P o ^{ti}T_r cdot ^rP_o = ^tH_C cdot ^{Ci}P_o tiTr⋅rPo=tHC⋅CiPo
参 数 解 释 : r P o 为 旋 转 法 所 求 量 , 保 持 不 变 , t H C 为 所 求 的 参 数 , C i P o 与 t i T r 一 一 对 应 。 参数解释:^rP_o为旋转法所求量,保持不变,^tH_C为所求的参数,^{Ci}P_o与^{ti}T_r一一对应。 参数解释:rPo为旋转法所求量,保持不变,tHC为所求的参数,CiPo与tiTr一一对应。
操作过程(保持标定板不能动):
r P 1 r P 2 ^rP_1; ^rP_2 rP1rP2
则可以求得object在robot下的坐标:
r P o = ( r P 1 + r P 2 ) / 2 ^rP_o = (^rP_1+^rP_2)/2 rPo=(rP1+rP2)/2
标定过程:在标定板与相机视野内的前提下移动机械手(xy平面,z,u,v,w保持不变)并拍摄图片,存储每个位置与每张图片,采集9组数据,将采集的数据连入PlaneCalibration工具,计算标定结果。
产生的数据为:旋转法对应的两张图片与两个机械手位姿,九点标定对应的九张图片与九个机械手位姿数据。将图像整合在一个文件夹里,机械手位姿整合在一份文件里,按顺序保存,注意数据的对应关系。
标定过程只用到了标定板上的某个点作为object,当选定了某个点A,你的旋转法就需要保持点A在图像中位置不变。用标定板的作用是为了在视野中更好地识别点A,当你的目标够明显,也可以不适用标定板(一般不采用)。
使用如上方法,根据图像中object的点,能得到它在Robot坐标系(xy平面,z,u,v,w保持不变)的位置,就可以将坐标发给机械手执行,该方法不用求取相机的内外参数,不考虑图像的畸变,可以用于对精度要求不高的项目。
2.2 相机不在手上
求取相机坐标系与机械手的底座坐标系的变换关系
r H c {^r}H{_c} rHc
2.2.1 转换方程
r T t ⋅ t P o = r P o = r H c ⋅ c P o ^rT_tcdot ^tP_o = ^rP_o = ^rH_c cdot ^cP_o rTt⋅tPo=rPo=rHc⋅cPo
参数解释:
r T t ^rT_t rTt(4×4):Tool到Robot的转换矩阵,即机械手示教器上读回的数值
r P o {^r}P{_o} rPo(3×1):object在robot下的位置
r H c {^r}H{_c} rHc(3×3):图像平面h1到Tool平面转换矩阵
c P t {^c}P{_t} cPt(2×1齐次变化>3×1):tool在图像中的点
2.2.2 直接法
r P o = r H c ⋅ c P o ^rP_o = ^rH_c cdot ^cP_o rPo=rHc⋅cPo
标定过程:
r P o = r H c ⋅ c P o ^rP_o = ^rH_c cdot ^cP_o rPo=rHc⋅cPo
圆弧法需要将标定板绑在机械手上,该方法也是为了找到 r P o ^rP_o rPo与 c P o ^cP_o cPo两个数据集间的转换关系。每个Poc都需要由3张相同xy(robot base)坐标下相机拍得的图像,用拟合圆心的方法得到。object定义为拟合得到的圆心,即机械手最末端。
(3张图像拟合的圆心是在本软件中使用的默认图像张数,所以该方法所需要的机械手位姿点数与图像张数必须相等,且是3的倍数。)
因为只是标定两个平面之间的关系, r P o ^rP_o rPo的xy与 r T t ^rT_t rTt的xy数据相同。
用 圆 弧 法 需 要 将 标 定 板 绑 在 机 械 手 上 , 该 方 法 也 是 为 了 找 到 r P o 与 c P o 两 个 数 据 集 间 的 转 换 关 系 用圆弧法需要将标定板绑在机械手上,该方法也是为了找到^rP_o与^cP_o两个数据集间的转换关系 用圆弧法需要将标定板绑在机械手上,该方法也是为了找到rPo与cPo两个数据集间的转换关系
操作步骤:
最后
以上就是甜美裙子为你收集整理的平面标定(Homography变换)的全部内容,希望文章能够帮你解决平面标定(Homography变换)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复