模型视图矩阵和投影矩阵_马尔可夫模型

模型视图矩阵和投影矩阵_马尔可夫模型1概述机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统工作的基本过程是获取目标的图像后,对图像进行识别、特征提取、分类、数学运算等分析操作,并根据图像的分析计算结果,来对相应的系统进行控制或决策的过程。在很多机器视觉应用中,都需要用到机器视觉测量,即根据目标的图像,来得到目标在实际空间中的物理位置,最典型的如行走机器人、SLAM等。要根据图像中的目标像素位置,得到目标的物理空间位置,我们需要首先有一个图像像素坐标与物理空间坐标的映射关系,这种能够表达空间位置如何映射到图像像素位置的数学公式,就

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1 概述

机器视觉就是用机器代替人眼和人脑来做测量和判断。机器视觉系统工作的基本过程是获取目标的图像后,对图像进行识别、特征提取、分类、数学运算等分析操作,并根据图像的分析计算结果,来对相应的系统进行控制或决策的过程。
在很多机器视觉应用中,都需要用到机器视觉测量,即根据目标的图像,来得到目标在实际空间中的物理位置,典型的如抓取机械手、行走机器人、SLAM等。
要根据图像中的目标像素位置,得到目标的物理空间位置,我们需要首先有一个图像像素坐标与物理空间坐标的映射关系,也就是将光学成像过程抽象为一个数学公式,这种能够表达空间位置如何映射到图像像素位置的数学公式,就是所说的机器视觉成像模型,本文即讨论这种模型的机理。

2 小孔成像

机器视觉成像采用小孔成像模型,如下图所示
在这里插入图片描述
再次简化为下图
在这里插入图片描述
图中 X X X是一个空间点, x x x为该空间点在图像中的成像点, C C C为镜头光心(camera centre),从图中可看到, C C C x x x X X X三个点是共线的。
光心 C C C距离成像面(image plane)的距离即焦距 f f f
后面的各个坐标系及其相互关系都是基于这个小孔成像模型推出。

3 坐标系

说到机器视觉测量模型,就少不了先要了解整个模型中涉及的几个坐标系。

3.1 像素坐标系uov

即图像中各像素点坐在的坐标系,如下图所示uov。
在这里插入图片描述
这个坐标系是一个二维坐标系,横坐标为图像宽度方向,纵坐标为图像高度方向,原点位于左上角,坐标轴单位为像素,与图像的像素点对应。

3.2 图像坐标系xoy

即图像传感器(如CMOS、CCD)坐标系,如下图所示xoy。
在这里插入图片描述
这个坐标系同样是一个二维坐标系,横坐标为传感器宽度方向,纵坐标为传感器高度方向,原点位于传感器中心,坐标轴单位为mm(根据实际需要设定,m、mm、……),后面的坐标系也都是同样单位,不再说明。
结合像素坐标系,我们可以得到下图
在这里插入图片描述
从此图中,我们可以得到像素坐标系uov与图像坐标系xoy的映射关系,即:
u = x / d x + u 0 v = − y / d y + v 0 u=x/dx+u_0\\ v=-y/dy+v0 u=x/dx+u0v=y/dy+v0
式中:
u 0 u_0 u0 v 0 v_0 v0——图像中心像素点坐标(通常为图像横纵向分辨率的一半,但如果镜头与传感器位置装偏了,就不是一半了),单位pixel;
d x dx dx d y dy dy——传感器单元的横纵向尺寸(即像元尺寸),单位mm/pixel,通常像元是正方形,就有 d x = d y dx=dy dx=dy
上式写成齐次矩阵形式,就是像素坐标系与图像坐标系的转换关系
[ u v 1 ] = [ 1 / d x 0 u 0 0 − 1 / d y v 0 0 0 1 ] [ x y 1 ] \left[\begin{matrix} u\\v\\1 \end{matrix}\right]= \left[\begin{matrix} 1/dx&0&u_0\\0&-1/dy&v_0\\0&0&1 \end{matrix}\right] \left[\begin{matrix} x\\y\\1 \end{matrix}\right] uv1=1/dx0001/dy0u0v01xy1
注意到以上公式中y方向加了个负号,是因为像素坐标系uov是个左手坐标系,但后面要讨论的三维坐标系都是采用右手坐标系,所以这里图像坐标系xoy直接设置为右手坐标系,负号是用来转换y轴方向。

3.3 相机坐标系 O C X C Y C Z C O_CX_CY_CZ_C OCXCYCZC

在相机镜头上设置一个三维坐标系,如下图,原点位于光心,X轴与Y轴分别与图像坐标系的x和y轴平行,Z轴指向物方。
在这里插入图片描述
根据前文的小孔成像模型,我们可以得到YOZ(YCZ)平面里的投影关系,如下图(XOZ平面同理)
在这里插入图片描述
上图中,根据相似三角形,有 f Z C = y Y C \frac{f}{Z_C}=\frac{y}{Y_C} ZCf=YCy以及 f Z C = x X C \frac{f}{Z_C}=\frac{x}{X_C} ZCf=XCx,因而可以写出相机坐标系与图像坐标系的转换关系,我们直接写为齐次坐标形式
[ x y 1 ] = [ f / Z C 0 0 0 0 f / Z C 0 0 0 0 1 / Z C 0 ] [ X C Y C Z C 1 ] = 1 Z C [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] \left[\begin{matrix} x\\y\\1 \end{matrix}\right]= \left[\begin{matrix} f/Z_C&0&0&0\\0&f/Z_C&0&0\\0&0&1/Z_C&0 \end{matrix}\right] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right]=\frac{1}{Z_C}\left[\begin{matrix} f&0&0&0\\0&f&0&0\\0&0&1&0 \end{matrix}\right] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right] xy1=f/ZC000f/ZC0001/ZC000XCYCZC1=ZC1f000f0001000XCYCZC1
式中: f f f——镜头焦距,有的文献里公式会把焦距分为X和Y向的 f x f_x fx f y f_y fy
代入前文的像素坐标系与图像坐标系的转换公式
[ u v 1 ] = [ 1 / d x 0 u 0 0 − 1 / d y v 0 0 0 1 ] [ x y 1 ] = 1 Z C [ 1 / d x 0 u 0 0 − 1 / d y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] \left[\begin{matrix} u\\v\\1 \end{matrix}\right]= \left[\begin{matrix} 1/dx&0&u_0\\0&-1/dy&v_0\\0&0&1 \end{matrix}\right] \left[\begin{matrix} x\\y\\1 \end{matrix}\right]=\frac{1}{Z_C} \left[\begin{matrix} 1/dx&0&u_0\\0&-1/dy&v_0\\0&0&1 \end{matrix}\right] \left[\begin{matrix} f&0&0&0\\0&f&0&0\\0&0&1&0 \end{matrix}\right] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right] uv1=1/dx0001/dy0u0v01xy1=ZC11/dx0001/dy0u0v01f000f0001000XCYCZC1
我们可以得到相机坐标系与像素坐标系的转换关系如下
[ u v 1 ] = 1 Z C [ f / d x 0 u 0 0 0 − f / d y v 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] \left[\begin{matrix} u\\v\\1 \end{matrix}\right]=\frac{1}{Z_C} \left[\begin{matrix} f/dx&0&u_0&0\\0&-f/dy&v_0&0\\0&0&1&0 \end{matrix}\right] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right] uv1=ZC1f/dx000f/dy0u0v01000XCYCZC1
我们用 M 1 M_1 M1表示公式中这个矩阵
M 1 = [ f / d x 0 u 0 0 0 − f / d y v 0 0 0 0 1 0 ] M_1=\left[\begin{matrix} f/dx&0&u_0&0\\0&-f/dy&v_0&0\\0&0&1&0 \end{matrix}\right] M1=f/dx000f/dy0u0v01000
这个矩阵中的参数只与镜头焦距 f f f、像元尺寸 d x d y dxdy dxdy、中心像素 u 0 v 0 u_0v_0 u0v0有关,这都是相机和镜头的内部参数,相机及镜头确定后这个矩阵就被确定,所以被称为内参矩阵

3.4 世界坐标系 O W X W Y W Z W O_WX_WY_WZ_W OWXWYWZW

世界坐标系是系统的绝对坐标系,同样是三维坐标系,原点及坐标轴方向根据我们需要来选定。
在这里插入图片描述
相机作为一个刚体,在世界坐标系中具有位姿——位置和姿态,位置即为相机(相机坐标系原点)相对于世界坐标系原点的平移,用一个3×1平移向量 T C T_C TC表达,姿态即为相机(相机坐标系)相对于世界坐标系的旋转,用一个3×3旋转矩阵 R C R_C RC表达
那么我们就可以得到相机坐标系与世界坐标系的关系
[ X W Y W Z W 1 ] = [ R C T C 0 1 × 3 1 ] [ X C Y C Z C 1 ] \left[\begin{matrix} X_W\\Y_W\\Z_W\\1 \end{matrix}\right]= \left[\begin{matrix} R_C&T_C\\0_{1×3}&1 \end{matrix}\right] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right] XWYWZW1=[RC01×3TC1]XCYCZC1
反过来
[ X C Y C Z C 1 ] = [ R C T C 0 1 × 3 1 ] − 1 [ X W Y W Z W 1 ] = M 2 [ X W Y W Z W 1 ] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right]= \left[\begin{matrix} R_C&T_C\\0_{1×3}&1 \end{matrix}\right]^{-1} \left[\begin{matrix} X_W\\Y_W\\Z_W\\1 \end{matrix}\right]=M_2\left[\begin{matrix} X_W\\Y_W\\Z_W\\1 \end{matrix}\right] XCYCZC1=[RC01×3TC1]1XWYWZW1=M2XWYWZW1
这就是世界坐标系与相机坐标系的转换关系,其中的矩阵 M 2 M_2 M2与相机的位姿有关,称为外参矩阵
代入前文的像素坐标系与相机坐标系的转换公式,得到
[ u v 1 ] = 1 Z C [ f / d x 0 u 0 0 0 − f / d y v 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] = 1 Z C [ f / d x 0 u 0 0 0 − f / d y v 0 0 0 0 1 0 ] M 2 [ X W Y W Z W 1 ] \left[\begin{matrix} u\\v\\1 \end{matrix}\right]=\frac{1}{Z_C} \left[\begin{matrix} f/dx&0&u_0&0\\0&-f/dy&v_0&0\\0&0&1&0 \end{matrix}\right] \left[\begin{matrix} X_C\\Y_C\\Z_C\\1 \end{matrix}\right]=\frac{1}{Z_C} \left[\begin{matrix} f/dx&0&u_0&0\\0&-f/dy&v_0&0\\0&0&1&0 \end{matrix}\right]M_2 \left[\begin{matrix} X_W\\Y_W\\Z_W\\1 \end{matrix}\right] uv1=ZC1f/dx000f/dy0u0v01000XCYCZC1=ZC1f/dx000f/dy0u0v01000M2XWYWZW1

4 机器视觉投影矩阵

至此,我们就得到了像素坐标系与世界坐标系的映射关系,即机器视觉投影矩阵
[ u v 1 ] = 1 Z C M 1 M 2 [ X W Y W Z W 1 ] \left[\begin{matrix} u\\v\\1 \end{matrix}\right]=\frac{1}{Z_C} M_1M_2 \left[\begin{matrix} X_W\\Y_W\\Z_W\\1 \end{matrix}\right] uv1=ZC1M1M2XWYWZW1
其中:
Z C Z_C ZC——空间点在相机坐标系中的Z坐标
M 1 M_1 M1——内参矩阵,3×4矩阵, M 1 = [ f / d x 0 u 0 0 0 − f / d y v 0 0 0 0 1 0 ] M_1=\left[\begin{matrix} f/dx&0&u_0&0\\0&-f/dy&v_0&0\\0&0&1&0 \end{matrix}\right] M1=f/dx000f/dy0u0v01000
M 2 M_2 M2——外参矩阵,4×4矩阵, M 2 = [ r 11 r 12 r 13 t x r 21 r 22 r 23 t y r 31 r 32 r 33 t z 0 0 0 1 ] M_2=\left[\begin{matrix} r_{11}&r_{12}&r_{13}&t_x\\ r_{21}&r_{22}&r_{23}&t_y\\ r_{31}&r_{32}&r_{33}&t_z\\ 0&0&0&1 \end{matrix}\right] M2=r11r21r310r12r22r320r13r23r330txtytz1
模型建立后,其中的参数如何获取?这就涉及到下一个问题:《机器视觉-相机标定》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185810.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • file_handle_windows句柄

    file_handle_windows句柄1.概述在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错:toomanyopenfiles,如果你对相关知识一无所知,那么debug起来将会异常痛苦。在linux操作系统中,文件句柄(包括Socket句柄)、打开文件、文件指针、文件描述符的概念比较绕,而且windows的文件句柄又与此有何关联和区别?这一系列的问题是我们不得不面对的。博主通过翻…

    2022年10月10日
  • 什么是透传(虚拟服务器地址)

    moxa串口服务器配置点对点透传模式步骤MOXA串口服务器基本要点:使用TCP/IP通讯协议,需要2个串口服务器配对使用。将串口服务器A设置为Server模式(出厂默认模式),另一个串口服务器B设置为Client模式。将串口服务器B要连接的远程主机地址和端口,设置为A的IP地址和监听端口,即可完成配对。RS232/RS485串口服务器A(Client)串口服务器B(Server)RS232/RS4…

  • dropDownList属性

    dropDownList属性Bootstrap是当下流行的前端UI组件库之一。利用Bootstrap,可以很方便的构造美观、统一的页面。把设计师从具体的UI编码中解放出来。 Bootstrap提供了不少的前端UI组件。带下拉菜单的文本框就是其中之一,效果图如下(真要自己完全设计,还得费一番功夫) 关于该组件的详情参看Bootstrap官网、带下拉菜单的文本框 看到上面的效果图,使我想到WinFor

    2022年10月17日
  • redis学习#随便瞎玩的收获2 -server

    redis学习#随便瞎玩的收获2 -server

  • SQL聚合函数「建议收藏」

    SQL聚合函数「建议收藏」一、知识点聚合函数对组执行计算并返回每个组唯一的值。GROUPBY子句通常与聚合函数一起用于统计数据。GROUPBY子句将行排列成组,聚合函数返回每个组的统计量。常用的聚合函数有:COUNT(),SUM(),AVG(),MIN(),MAX()。COUNT(),其作用主要是返回每个组的行数,也会返回有NULL值的列,可用于数字和字符列。SUM(),主要用于返回表达式中所有的总和,忽略NULL值,仅用于数字列。AVG(),返回表达式所有的平均值,仅用于数字列并且自动忽略NULL值。MIN(),返

  • navicat 激活码【2021免费激活】

    (navicat 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlS32PGH0SQB-eyJsa…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号