【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

这篇具有很好参考价值的文章主要介绍了【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、向量和矩阵的基本运算

1、简单变换

x = [ x y ] \boldsymbol{x} =\begin{bmatrix}x\\y\end{bmatrix} x=[xy]

1. 平移变换

[ x ′ y ′ ] = [ x y ] + [ a b ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}x\\y\end{bmatrix} + \begin{bmatrix}a\\b\end{bmatrix} [xy]=[xy]+[ab]
  将向量 [ a b ] \begin{bmatrix}a\\b\end{bmatrix} [ab]加到 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy]上,得到平移后的新向量 [ x ′ y ′ ] = [ x + a y + b ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}x+a\\y+b\end{bmatrix} [xy]=[x+ay+b]。其中 a a a b b b分别为x方向和y方向的平移量

2. 缩放变换

[ x ′ y ′ ] = [ s x 0 0 s y ] [ x y ] = [ s x x s y y ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}s_x & 0\\0 & s_y\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} = \begin{bmatrix}s_xx\\s_yy\end{bmatrix} [xy]=[sx00sy][xy]=[sxxsyy]
  通过缩放矩阵 [ s x 0 0 s y ] \begin{bmatrix}s_x & 0\\0 & s_y\end{bmatrix} [sx00sy]乘以 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy],可以得到缩放后的向量 [ x ′ y ′ ] = [ s x x s y y ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}s_xx\\s_yy\end{bmatrix} [xy]=[sxxsyy]。其中 s x s_x sx s y s_y sy分别为x方向和y方向的缩放比例

3. 旋转变换

[ x ′ y ′ ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ x y ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}\cos\theta & -\sin\theta\\\sin\theta & \cos\theta\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} [xy]=[cosθsinθsinθcosθ][xy]
  通过旋转矩阵 [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] \begin{bmatrix}\cos\theta & -\sin\theta\\\sin\theta & \cos\theta\end{bmatrix} [cosθsinθsinθcosθ]乘以 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy],可以得到绕原点逆时针旋转 θ \theta θ角度后的向量 [ x ′ y ′ ] \begin{bmatrix}x'\\y'\end{bmatrix} [xy]

4. 一般线性变换

[ x ′ y ′ ] = [ a b c d ] [ x y ] = [ a x + b y c x + d y ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}a & b\\c & d\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} = \begin{bmatrix}ax+by\\cx+dy\end{bmatrix} [xy]=[acbd][xy]=[ax+bycx+dy]
  通过一个2x2变换矩阵 [ a b c d ] \begin{bmatrix}a & b\\c & d\end{bmatrix} [acbd]乘以 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy],可以得到一个新的变换后向量 [ x ′ y ′ ] = [ a x + b y c x + d y ] \begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}ax+by\\cx+dy\end{bmatrix} [xy]=[ax+bycx+dy],这个变换矩阵可以表示缩放、旋转、错切等线性变换的组合

2、齐次坐标

0. 齐次坐标表示

  在使用齐次坐标表示时,我们将n维欧几里得空间中的点 ( x 1 , x 2 , … , x n ) (x_1, x_2, \dots, x_n) (x1,x2,,xn)表示为 ( n + 1 ) (n+1) (n+1)维的齐次坐标形式 ( x 1 , x 2 , … , x n , 1 ) (x_1, x_2, \dots, x_n, 1) (x1,x2,,xn,1),在原始坐标的基础上添加一个1作为最后一个分量。

  • 将2D点用齐次坐标 [ x y 1 ] \begin{bmatrix}x\\y\\1\end{bmatrix} xy1表示,即在笛卡尔坐标 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy]的基础上添加一个1作为最后一个分量;
  • 将3D点用齐次坐标 [ x y z 1 ] \begin{bmatrix}x\\y\\z\\1\end{bmatrix} xyz1表示,即在笛卡尔坐标 [ x y z ] \begin{bmatrix}x\\y\\z\end{bmatrix} xyz的基础上添加一个1作为最后一个分量。

1. 2D点的齐次坐标变换

  • 变换矩阵:
    [ a b c d e f 0 0 1 ] \begin{bmatrix}a & b & c\\d & e & f\\0 & 0 & 1\end{bmatrix} ad0be0cf1

  • 变换结果
    [ x ′ y ′ 1 ] = [ a b c d e f 0 0 1 ] [ x y 1 ] = [ a x + b y + c d x + e y + f 1 ] \begin{bmatrix}x'\\y'\\1\end{bmatrix} = \begin{bmatrix}a & b & c\\d & e & f\\0 & 0 & 1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}ax+by+c\\dx+ey+f\\1\end{bmatrix} xy1=ad0be0cf1xy1=ax+by+cdx+ey+f1

该变换矩阵包含了三个部分:

  • 平移分量 [ c f ] \begin{bmatrix}c\\f\end{bmatrix} [cf]
  • 旋转分量( [ a b d e ] \begin{bmatrix}a & b\\d & e\end{bmatrix} [adbe]构成的2x2子矩阵)
  • 缩放分量(a, b, d, e的大小)
    • 当这些元素的值大于1时,会放大相应方向的坐标;小于1时,会缩小。

2. 投影空间 ( x , y , w ) (x, y, w) (x,y,w)

  引入一个三维投影空间,由 x x x y y y w w w三个坐标构成,用 [ x y w ] \begin{bmatrix}x\\y\\w\end{bmatrix} xyw表示。
其中 w = 0 w=0 w=0表示无穷远的点,即所有投影线的汇聚点所在位置。
【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标,计算机视觉,人工智能,计算机视觉,python,矩阵,线性代数

  • 左图展示了透视投影(Perspective projection)的情况,所有投影线从场景中的点汇聚于一个无穷远点,这种投影方式可以提供深度信息和真实的景深感。
    • 透视投影可以提供更真实的视觉效果,表达式为:

[ x ′ y ′ w ′ ] = [ a b c d e f g h i ] [ x y w ] \begin{bmatrix}x'\\y'\\w'\end{bmatrix} = \begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}\begin{bmatrix}x\\y\\w\end{bmatrix} xyw=adgbehcfixyw

  • 右图展示了正交投影(Orthographic projection)的情况,投影线都是平行的,没有汇聚点,无法获得真实的景深感,但可以保持投影后物体的形状不变形。
    • 正交投影常用于工程制图等需要保持形状的场合,表达式为:
      [ x ′ y ′ w ′ ] = [ a b 0 c d 0 0 0 1 ] [ x y w ] \begin{bmatrix}x'\\y'\\w'\end{bmatrix} = \begin{bmatrix}a&b&0\\c&d&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\w\end{bmatrix} xyw=ac0bd0001xyw

  这种投影空间和投影变换在计算机图形学中被广泛使用,用于将三维物体投影到二维平面上进行显示。

3. 2D直线的齐次坐标表示

a. 直线的参数方程表示

l = ( a , b , c ) x ⋅ l = a x + b y + c = 0 l = (a, b, c)\\x\cdot l = ax + by + c = 0 l=(a,b,c)xl=ax+by+c=0其中 ( a , b , c ) (a, b, c) (a,b,c)是直线的系数,任意一点 ( x , y ) (x, y) (x,y)代入方程,结果为0,则该点位于该直线上。

b. 直线的法向量和原点距离表示

【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标,计算机视觉,人工智能,计算机视觉,python,矩阵,线性代数

l = ( n x , n y , d ) = ( n ⃗ , d ) with  ∥ n ⃗ ∥ = 1 l = (n_x, n_y, d) = (\vec{n}, d) \quad \text{with} \ \|\vec{n}\| = 1 l=(nx,ny,d)=(n ,d)with n =1其中 n ⃗ = ( n x , n y ) = ( cos ⁡ θ , sin ⁡ θ ) \vec{n} = (n_x, n_y) = (\cos\theta, \sin\theta) n =(nx,ny)=(cosθ,sinθ)表示直线的法向量,即垂直于直线方向的单位向量, d d d表示直线到原点的有符号距离。

这种表示直观地描述了直线的性质:

  • n ⃗ \vec{n} n 给出了直线的方向
  • d d d给出了直线到原点的距离,取正负号表示直线在原点的两侧

法向量和原点距离表示对于直线的各种几何运算都很有用,例如求直线交点、判断点和直线的位置关系等。通过矩阵变换,可以很自然地对直线进行旋转、平移等操作。

4. 叉积算子

  1. 两条直线的表示:
    给定两条直线 l ~ 1 \tilde{l}_1 l~1 l ~ 2 \tilde{l}_2 l~2的齐次坐标表示。
  2. 交点的计算:
    两条直线 l ~ 1 \tilde{l}_1 l~1 l ~ 2 \tilde{l}_2 l~2的交点 x ~ \tilde{x} x~可以通过它们的外积(叉积)求得:
    x ~ = l ~ 1 × l ~ 2 \tilde{x} = \tilde{l}_1 \times \tilde{l}_2 x~=l~1×l~2
    其中,外积的计算方式为:
    l ~ 1 = ( x ~ 1 , y ~ 1 , a ~ 1 ) \tilde{l}_1 = (\tilde{x}_1, \tilde{y}_1, \tilde{a}_1) l~1=(x~1,y~1,a~1) l ~ 2 = ( x ~ 2 , y ~ 2 , a ~ 2 ) \tilde{l}_2 = (\tilde{x}_2, \tilde{y}_2, \tilde{a}_2) l~2=(x~2,y~2,a~2) x ~ = l ~ 1 × l ~ 2 = \tilde{x} = \tilde{l}_1 \times \tilde{l}_2 = x~=l~1×l~2=

这种利用直线的齐次坐标表示求交点的方法,可以自然地推广到三维空间,求两条三维直线或平面的交点。同理,在三维情况下,交点坐标为两个直线或平面的齐次坐标外积。

5. 平行线可以相交

  • 两条直线在非齐次坐标系下的方程组表示:
    { A x + B y + C = 0 A x + B y + D = 0 \begin{cases} Ax + By + C = 0\\ Ax + By + D = 0 \end{cases} {Ax+By+C=0Ax+By+D=0
  • 将这两条直线方程转换为齐次坐标表示:
    { A x w + B y w + C = 0 A x w + B y w + D = 0    ⟺    { A x + B y + C w = 0 A x + B y + D w = 0 \begin{cases} A \dfrac{x}{w} + B \dfrac{y}{w} + C = 0\\ A \dfrac{x}{w} + B \dfrac{y}{w} + D = 0 \end{cases} \quad\iff\quad \begin{cases} Ax + By + Cw = 0\\ Ax + By + Dw = 0 \end{cases} Awx+Bwy+C=0Awx+Bwy+D=0{Ax+By+Cw=0Ax+By+Dw=0

在这种表示下,两条直线的齐次坐标分别为 ( A , B , C ) (A, B, C) (A,B,C) ( A , B , D ) (A, B, D) (A,B,D)文章来源地址https://www.toymoban.com/news/detail-840892.html

  • 通过分析可以发现,当 w = 0 w=0 w=0时,对应的是无穷远点,两条直线在这个点处相交

到了这里,关于【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 特征向量与计算机视觉: 解决图像理解的挑战

    计算机视觉是人工智能领域的一个重要分支,它涉及到计算机对于图像和视频的理解与处理。图像理解是计算机视觉的核心技术之一,它旨在让计算机能够理解图像中的对象、场景和动作,并进行相关的分析和判断。然而,图像理解的挑战在于图像中的信息量非常大,并且与

    2024年04月14日
    浏览(56)
  • 特征向量与矩阵分析在计算机视觉中的应用

    计算机视觉(Computer Vision)是人工智能领域的一个重要分支,它旨在让计算机理解和处理人类视觉系统所能看到的图像和视频。计算机视觉的主要任务包括图像处理、特征提取、图像识别、目标检测和跟踪等。在这些任务中,特征向量和矩阵分析技术发挥着关键作用。 特征向

    2024年02月01日
    浏览(57)
  • 矩阵分析与计算机视觉中的图像分类

    计算机视觉(Computer Vision)是一门研究如何让计算机理解和解释图像和视频的科学。图像分类(Image Classification)是计算机视觉中的一个重要任务,它涉及将图像分为不同类别的过程。矩阵分析(Matrix Analysis)是线性代数(Linear Algebra)的一个分支,它研究矩阵的性质、运算和应用。在计

    2024年02月20日
    浏览(38)
  • 【计算机视觉】关于图像处理的一些基本操作

    图像平滑是指受传感器和大气等因素的影响,遥感图像上会出现某些亮度变化过大的区域,或出现一些亮点(也称噪声)。这种为了抑制噪声,使图像亮度趋于平缓的处理方法就是图像平滑。图像平滑实际上是低通滤波,平滑过程会导致图像边缘模糊化。 均值滤波 线性滤波,针

    2024年02月14日
    浏览(44)
  • 计算机视觉 | 基于二值图像数字矩阵的距离变换算法

    Hi,大家好,我是半亩花海。 本实验基于 OpenCV 实现了二值图像数字矩阵的距离变换算法。首先生成一个 480x480 的黑色背景图像(定义黑色为0,白色为1),在其中随机选择了三个白色像素点作为距离变换的原点,利用 OpenCV 中 distanceTransform 等相关函数计算并输出这些原点到其

    2024年04月11日
    浏览(40)
  • 西电智科图像理解与计算机视觉复习笔记(基本完结)

    改正邻域打成领域的错误,2023年6月13日上午11点 改正锥状细胞和杆状细胞功能写反,2023年6月13日下午5点 非常感谢蔡同学提供的复习方案 建议用电脑端通过目录复习,因为手机端只能显示三级以下的目录 或者使用其他同学的复习大纲,不会的知识点可以点开此博客查看对相

    2024年02月09日
    浏览(83)
  • [笔记]Python计算机视觉编程《一》 基本的图像操作和处理

    今天,图像和视频无处不在,在线照片分享网站和社交网络上的图像有数十亿之多。几乎对于任意可能的查询图像,搜索引擎都会给用户返回检索的图像。实际上,几乎所有手机和计算机都有内置的摄像头,所以在人们的设备中,有几 G 的图像和视频是一件很寻常的事。计算

    2024年02月02日
    浏览(53)
  • 向量内积在计算机视觉中的实践

    计算机视觉(Computer Vision)是人工智能领域的一个重要分支,涉及到从图像和视频中抽取高级信息的过程。向量内积(Dot Product)是线性代数的基本概念之一,在计算机视觉中具有广泛的应用。本文将详细介绍向量内积在计算机视觉中的实践,包括核心概念、算法原理、代码实例等

    2024年02月19日
    浏览(37)
  • 向量转置在计算机视觉中的应用

    计算机视觉(Computer Vision)是一门研究如何让计算机理解和理解图像和视频的科学。在过去的几十年里,计算机视觉已经取得了显著的进展,从简单的图像处理任务到复杂的视觉定位、目标识别和场景理解等复杂任务。向量转置(Vector Transpose)是一种常用的数学操作,在计算机视

    2024年02月20日
    浏览(34)
  • 计算机视觉基础:【矩阵】矩阵选取子集

    OpenCV的基础是处理图像,而图像的基础是矩阵。 因此,如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作,从而更好地实现对图像的处理。 示例:选取矩阵中指定的行和列的交集。 例如,在下图中选定第2行、第3行和第

    2024年02月21日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包