激光雷达点云数据邻域特征计算理论知识学习

一、数学理论

(一)SVD奇异值分解(Singular value decomposition)

       奇异值分解是线性代数中一种重要的矩阵分解,在信号处理、统计学等领域有重要应用。奇异值分解在某些方面与对称矩阵或埃尔米特矩阵基于特征向量的对角化类似。然而这两种矩阵分解尽管有其相关性,但还是有明显的不同。对称阵特征向量分解的基础是谱分析,而奇异值分解则是谱分析理论在任意矩阵上的推广[2]。

        假设M是一个m×n阶矩阵,其中的元素全部属于域K,也就是实数域或复数域。如此则存在一个分解使得

                                                                    M=U\Sigma V^{*}

        其中Um×m阶酉矩阵(其共轭转置恰为其逆矩阵的复数方阵),Σ是m×n阶非负实数对角矩阵,而V*则为V的共轭转置,是n×n阶酉矩阵。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σi,i即为M的奇异值。常见的做法是将奇异值由大而小排列,如此Σ便能由M唯一确定了(虽然UV仍然不能确定)[2]。

        奇异值分解的应用有(包括但不限于下述应用)[2]:

        1、用来计算矩阵的广义逆阵(伪逆);

        2、给出矩阵的列空间、零空间和秩的表示。对角矩阵\Sigma的非零对角元素的个数对应于矩阵M的秩。与零奇异值对应的右奇异向量生成矩阵M的零空间,与非零奇异值对应的左奇异向量则生成矩阵M的列空间。在线性代数数值计算中,奇异值分解一般用于确定矩阵的有效秩,这是因为,由于舍入误差,秩亏矩阵的零奇异值可能会表现为很接近零的非零值;

        3、在统计中的主要应用为主成分分析(PCA)。数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量张成空间为降维后的空间。实际上,SVD在PCA降维上只是使用了右奇异矩阵V,因为右奇异阵V是进行列压缩[3]。   

图一 2*2矩阵的奇异值分解图示(图源wikipedia)

(二)埃尔米特矩阵(Hermitian matrix)

        埃尔米特矩阵(又称厄米特矩阵、厄米矩阵及自伴随矩阵),是共轭对称的方阵,其每一个第i行第j列的元素都与第j行第i列的元素复共轭(在数学中,复数的共轭复数就是对虚部变号的运算)且主对角线元素必须为实数。埃尔米特矩阵可以理解为实对称矩阵的复数扩展,查尔斯·埃尔米特于1855年证明了埃尔米特矩阵和实对称矩阵有一个共同的性质,即总存在实特征值[4]。

        埃尔米特矩阵的应用有(包括但不限于下述应用)[4]:

        1、在信号处理中,厄米矩阵被用于傅里叶分析和信号表示等任务。厄米矩阵的特征值和特征向量在分析信号和提取有意义的信息中起着至关重要的作用;

        2、厄米矩阵在线性代数和数值分析中得到了广泛的研究,它们具有良好定义的光谱特性,许多数值算法,如Lanczos算法,利用这些特性进行高效计算。厄米矩阵也出现在奇异值分解(SVD)和特征值分解等技术中;

        3、在统计学和机器学习中,厄米矩阵用于协方差矩阵,它们表示不同变量之间的关系。厄米协方差矩阵的正定性保证了多元分布的良好定义性。

图二 埃尔米特矩阵的表现形式(图源wikipedia)

(三)实对称矩阵(Real symmetric matrix)

        在线性代数中,实对称阵指的是元素均为实数且转置矩阵和自身相等的方形矩阵。实对称矩阵的不同特征值所对应的特征向量是正交的;实对称矩阵的特征值都是实数,特征向量都是实向量;n阶实对称矩阵必可利用正交矩阵对角化[5]。

(四)协方差矩阵(Covariance matrix)

        在统计学与概率论中,协方差矩阵是一个方阵,代表着任两列随机变量间的协方差,是协方差的直接推广。协方差矩阵是很多领域里非常有力的工具,其能导出一个变换矩阵,这个矩阵能使数据完全去相关,也可以说能够找到一组最佳的基来紧凑地表达数据(瑞利商证明)。这个方法在统计学中被称为主成分分析,在图像处理中被称为K-L变换[6]。

        此处提供一个瑞利商寻求最佳基的使用例子,详见博客Fisher线性判别实践。

二、Numpy现有的计算特征向量和特征值的函数[7][8][9][10]

        在进行激光雷达点云数据的点邻域特征向量和特征值计算时,我们可以选择使用SVD方法,也可以选用实对称方阵求解法。

图三 Numpy计算特征向量与特征值函数图示(图源numpy.org)

参考资料:

[1] numpy.linalg.svd — NumPy v1.26 Manual

[2] https://en.wikipedia.org/wiki/Singular_value_decomposition

[3] SVD分解-CSDN博客

[4] https://en.wikipedia.org/wiki/Hermitian_matrix

[5] https://en.wikipedia.org/wiki/Symmetric_matrix

[6] https://en.wikipedia.org/wiki/Covariance_matrix

[7] numpy.linalg.eig — NumPy v1.26 Manual

[8] numpy.linalg.eigh — NumPy v1.26 Manual

[9] numpy.linalg.eigvals — NumPy v1.26 Manual

[10] numpy.linalg.eigvalsh — NumPy v1.26 Manual

[11] NumPy 高级索引 | 菜鸟教程

[12] Open3D 计算点云的基本特征_点云 平面的条件 特征值 lamda1-CSDN博客

[13] 工程数学.线性代数/同济大学数学系编.--6版.--北京:高等教育出版社,2014.6.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习笔记007——接口的应用

1、接口的转换(向下) 子类对向和父类对象可以进行类型转化。接口也一样可以。 package com.test;// 接口Animal public interface Animal {void bark(); //等价于public abstract void bark();void move(); //等价于public abstract void move(); }pac…

Spring总结之构造注入

构造注入&#xff1a; Spring调用类的有参构造&#xff0c;在构造方法中给属性赋值 构造注入使用的是<constructor-arg>标签&#xff0c;一个<constructor-arg>标签表示构造方法的一个参数。 <constructor-arg>标签属性&#xff1a; name&#xff1a;表示构…

C 数据类型

在 C 语言中&#xff0c;数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。 C 中的类型可分为以下几种&#xff1a; 序号类型与描述1基本数据类型 它们是算术类型&#xff0c;包括整型…

pytest 教程

1. 安装pytest 目前我使用的python版本是3.10.8 pip install pytest命令会安装下面的包&#xff1a; exceptiongroup-1.2.0-py3-none-any.whl iniconfig-2.0.0-py3-none-any.whl packaging-23.2-py3-none-any.whl pluggy-1.4.0-py3-none-any.whl pytest-8.0.2-py3-none-any.…

线性代数笔记10--矩阵的四个基本子空间

0. 引入 矩阵 A m n A_{m \times n} Amn​ 1. 列空间 C ( A ) C(A) C(A)在 R m R^m Rm中 d i m ( C ( A ) ) p i v o t _ c o l u m n _ c n t r a n k ( A ) r dim(C(A))pivot\_column\_cnt rank(A)r dim(C(A))pivot_column_cntrank(A)r 2. 零空间 N ( A ) N(A) N(A)…

web自动化笔记十六:日志收集

日志的作用&#xff1a; -调试程序 -了解系统程序运行情况&#xff0c;是否正常 -系统程序运行故障分析与问题定位 -用来做用户行为分析的数据统计 日志级别&#xff1a;是指日志信息的优先级、重要性或者严重程度 DEBUG&#xff1a;调试级别&#xff0c;…

Kubernetes 外部 HTTP 请求到达 Pod 容器的全过程

文章目录 1、问题一2、HTTP 请求流转过程概述图3、详细过程分析4、容器技术底座5、问题二6、详细过程分析(补充) 1、问题一 当外部发送一个HTTP/HTTPS 请求到Kubernetes 集群时&#xff0c;它是如何达到 Pod 中的 container 的呢&#xff1f; 2、HTTP 请求流转过程概述图 3、…

Scrapy与分布式开发(2.8):布隆过滤器原理及应用

布隆过滤器原理及应用 定义 布隆过滤器&#xff08;Bloom Filter&#xff09; 是一种空间效率极高的概率型数据结构&#xff0c;用于测试一个元素是否在一个集合中。它的优点是空间效率和查询时间都远超过一般的算法&#xff0c;缺点是有一定的误识别率和删除困难。 原理 布…

【论文阅读】(DALLE-3)Improving Image Generation with Better Captions

&#xff08;DALLE-3&#xff09;Improving Image Generation with Better Captions 文章目录 &#xff08;DALLE-3&#xff09;Improving Image Generation with Better Captions简介Method实验 引用&#xff1a; Betker J, Goh G, Jing L, et al. Improving image generation…

【数据存储】大端存储||小端存储(超详细解析,小白一看就懂!!!)

目录 一、前言 二、什么是低地址、高地址 &#xff1f; 三、什么是数据的高位和低位 &#xff1f; 四、什么是大小端存储&#xff1f; &#x1f349; 小端存储详解 &#x1f352; 大端存储详解 五、为什么会有大小端存储&#xff1f; &#x1f34d;大端存储的优点 &#…

React | 低代码平台开发实践

⭐简单说两句⭐ 作者&#xff1a;后端小知识&#xff0c;CSDN后端领域新星创作者|阿里云专家博主 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 前言 随着数字…

构造函数:初始化列表 篇

前言&#xff1a;为什么会出现初始化列表这个功能&#xff1f; 在学习初始化列表之前&#xff0c;我们通常在构造函数中为函数赋初值&#xff0c;但这行为并不能称为初始化。因为初始化具有唯一性&#xff0c;只能初始化一次&#xff0c;而构造函数体内可以多次赋值。因此我们…

[蓝桥杯 2020 省 B1] 整除序列

[蓝桥杯 2020 省 B1] 整除序列 题目描述 有一个序列&#xff0c;序列的第一个数是 n n n&#xff0c;后面的每个数是前一个数整除 2 2 2&#xff0c;请输出这个序列中值为正数的项。 输入格式 输入一行包含一个整数 n n n。 输出格式 输出一行&#xff0c;包含多个整数…

AI绘画丨超酷海盗女孩生成攻略

海盗在许多艺术作品中颠覆了历史上的负面模样&#xff0c;以正面的形象登场&#xff0c;这让许多较为年轻的人们对“海盗”这一职位充满憧憬。那么一个兼具野性与美丽的女性海盗该怎么生成呢&#xff1f;小编就带来了本次的生成关键词&#xff01; 关键词&#xff1a;pirate g…

在pytorch中利用GPU训练神经网络时代码的执行顺序并提高训练效率

在pytorch中利用GPU训练神经网络时代码的执行顺序并提高训练效率 在 PyTorch 中&#xff0c;大多数操作在 GPU 上默认是异步执行的&#xff0c;但这并不意味着它们是并行执行的。要理解代码是同步还是异步执行&#xff0c;以及是串行还是并行执行&#xff0c;我们需要考虑几个…

文件操作与IO(3) 文件内容的读写——数据流

目录 一、流的概念 二、字节流代码演示 1、InputStream read方法 第一个没有参数的版本&#xff1a; 第二个带有byte数组的版本&#xff1a; 第三个版本 搭配Scanner的使用 2、OutputStream write方法 第一个版本&#xff1a; 第二个写入整个数组版本&#xff1a; …

【Web】Java反序列化之CC7链——Hashtable

目录 链子原理分析(借尸还魂) 如何构造相等hash 又谈为何lazyMap2.remove("yy") 不过真的需要两个LazyMap吗 EXP 双LazyMap exp HashMap&LazyMap exp 链子原理分析(借尸还魂) 先看Hashtable#readObject origlength和elements分别是原始数组的长度和元素…

信号灯——进程通信——day16

今天主要讲一下信号灯&#xff0c;也是有名信号量&#xff0c;一共分为四个步骤&#xff1a;创建、销毁、申请以及释放 首先是创建&#xff1a; semget int semget(key_t key, int nsems, int semflg); 功能:创建一组信号量 参数:key:IPC对象名nsems:信号量的个数semflg:IPC_…

软件测试 - 测试用例基本理论

1. 概念 为了特定的目的(该目的是检验代码是否满足用户需求)而设计的文档&#xff0c;文档包含测试输入、执行条件、预期结果等。文档的形式一般是excel表格。 比如说我们买了一台电脑&#xff0c;新买的笔记本检查完外观之后第一步需要查看电脑是否能够正常开机&#xff0c;…

机器学习 | 超参数:交叉验证

机器学习算法中&#xff0c;超参数是一个非常重要的问题&#xff1b;     超参数&#xff0c;即&#xff1a;模型开始训练之前&#xff0c;设置好的参数 根据模型评估值&#xff0c;对超参数进行优化&#xff0c;选择最佳超参数值&#xff0c;以提高学习的性能和效果 对于…