发布时间:2026/7/16 11:30:57
PCA 原理 一、什么是PCAhttps://www.bilibili.com/video/BV1E5411E71z/?spm_id_from333.337.search-card.all.clickvd_source52997da921a43b4ed3611981bbdf91a4PCA 在最小二乘意义下找到数据方差最大的正交方向在点云里最大特征值方向 → 主方向最小特征值方向 → 法向量二、数学推导1、问题定义2、去中心化非常关键均值去中心数据3、方差最大化建模拉伸拉伸的方向就是方差最大的方向拉伸的方向就是方差最大的方向拉伸的方向就是方差最大的方向旋转旋转决定了方差最大的方向的角度旋转决定了方差最大的方向的角度旋转决定了方差最大的方向的角度计算R旋转矩阵协方差矩阵的特征向量就是旋转矩阵R协方差矩阵的特征向量就是旋转矩阵R协方差矩阵的特征向量就是旋转矩阵R协方差矩阵计算协方差协方差的特征向量4、约束优化问题5、 拉格朗日乘子法结论PCA 协方差矩阵的特征值分解6、结论总结特征值几何意义最大特征值最大方差方向主方向最小特征值垂直数据分布方向法向7、求截图8、PCA与标准圆、置信椭圆实例三、PCA 与点云法向量的关系对局部点云邻域点近似落在一个平面法向量 最小特征值对应的特征向量https://blog.csdn.net/weixin_39354845/article/details/157579276?sharetypeblogdetailsharerId157579276sharereferPCsharesourceweixin_39354845spm1011.2480.3001.8118这是点到平面最小二乘的解。四、MATLAB 示例示例12D PCA直观理解clc; clear; close all; % 生成带噪声的直线数据 x linspace(-5,5,100); y 2*x randn(1,100); X [x; y]; % 去中心 mu mean(X,2); Xc X - mu; % 协方差矩阵 C (Xc*Xc)/size(Xc,2); % 特征分解 [V,D] eig(C); % 按特征值排序 [d,idx] sort(diag(D),descend); V V(:,idx); % 画图 figure; hold on; axis equal; grid on; scatter(X(1,:),X(2,:),20,b,filled); quiver(mu(1),mu(2),V(1,1),V(2,1),5,r,LineWidth,2); quiver(mu(1),mu(2),V(1,2),V(2,2),5,g,LineWidth,2); legend(Data,1st PC,2nd PC); title(2D PCA Principal Directions);示例 23D 点云 PCA 法向估计创建一个平面点云clear; clc; close all; %% 1. 生成示例点云平面 噪声 N 500; X rand(N,1)*2 - 1; Y rand(N,1)*2 - 1; Z 0.2*X 0.1*Y 0.02*randn(N,1); % 平面 少量噪声 pts [X Y Z]; %% 2. 可视化原始点云 figure; scatter3(X,Y,Z,8,Z,filled); title(原始点云); axis equal; grid on; hold on;特征值分解% 构建KD树用于最近邻查询MATLAB 2019 支持 k 20; % 邻域点数量 Mdl KDTreeSearcher(pts); % 对每个点计算 PCA 法向 normals zeros(N,3); for i 1:N % 查找最近邻 idx knnsearch(Mdl, pts(i,:), K, k); nbrs pts(idx,:); % 求均值 mean_p mean(nbrs,1); % 去均值 Q nbrs - mean_p; % 构造协方差矩阵 C (Q * Q) / k; % eigen 分解 [V,D] eig(C); % 最小特征值对应的特征向量 [~, id] min(diag(D)); n V(:,id); normals(i,:) n; end可视化 PCA 法向结果step 10; % 每隔一定数量画一个法向 quiver3(pts(1:step:end,1), ... pts(1:step:end,2), ... pts(1:step:end,3), ... normals(1:step:end,1), ... normals(1:step:end,2), ... normals(1:step:end,3), ... 0.3, r, LineWidth, 1.5); title(PCA 估计的点云法向量); xlabel(X); ylabel(Y); zlabel(Z); hold off;结果示例 33D 点云 PCA 法向估计兔子读入点云clear; clc; close all; %% 1. 读取点云 filename bun000.ply; % 或者dragon_vrip_res3.ply ptCloud pcread(filename); pts ptCloud.Location; N size(pts,1); fprintf(Loaded %d points from %s\n, N, filename); %% 2. 显示原始点云 figure; pcshow(ptCloud, MarkerSize, 20); title(原始点云); axis equal; hold on;构建KD treek 50; % 邻域大小真实点云需稍大 Mdl KDTreeSearcher(pts);特征值分解normals zeros(N, 3); % PCA 法向估计 for i 1:N idx knnsearch(Mdl, pts(i,:), K, k); nbrs pts(idx, :); % 均值 mean_p mean(nbrs); % 协方差矩阵 Q nbrs - mean_p; C (Q * Q) / k; % PCA -很重要 [V, D] eig(C); % 最小特征值对应的特征向量 [~, id] min(diag(D)); n V(:, id); normals(i,:) n; end法向统一朝外避免翻转% 使用点云中心 center mean(pts); for i 1:N v pts(i,:) - center; if dot(normals(i,:), v) 0 normals(i,:) -normals(i,:); end endcode五、PCA 的工程注意点1️⃣ 邻域大小敏感小噪声大大细节丢失曲率 特征值比例2️⃣ 法向方向不唯一n和−n等价工程中通常朝向视点或保持一致性传播3️⃣ PCA vs 积分图法向RGB-D方法特点PCA (KDTree)精度高慢Integral Image快受深度噪声影响六、为什么 PCA 最小特征值是法向数学协方差矩阵特征分解为什么最小特征值对应法向几何直觉局部点集近似平面平面上有两个主方向 → 点分布方差大垂直于平面的方向 → 点分布最紧密 → 方差最小数学上取最小 Var(v) → 找到方差最小的方向这就是垂直于点云平面的方向 → 法向量Matlab 显示点云%% ------------------------------- % PCA 法向直观可视化 % ------------------------------- clear; clc; close all; %% 1. 生成模拟局部点云近似平面 N 100; X randn(N,1); Y randn(N,1); Z 0.05*randn(N,1); % Z 方向方差很小模拟平面 pts [X Y Z]; % 中心化 p_mean mean(pts,1); Q pts - p_mean; %% 2. 协方差矩阵 C (Q*Q)/N; %% 3. 特征分解 [V,D] eig(C); [lambda, idx] sort(diag(D),ascend); % 升序 V V(:,idx); % 法向量 n V(:,1); % 最小特征值方向 v2 V(:,2); % 次主方向 v3 V(:,3); % 最大方差方向 %% 4. 绘制点云 figure; hold on; axis equal; grid on; scatter3(pts(:,1), pts(:,2), pts(:,3), 30, b, filled);计算法向量显示%% 5. 绘制 PCA 特征轴红绿色蓝 scale 0.5; quiver3(p_mean(1), p_mean(2), p_mean(3), ... n(1)*scale, n(2)*scale, n(3)*scale, ... r,LineWidth,2,MaxHeadSize,2); % 法向最小特征值 quiver3(p_mean(1), p_mean(2), p_mean(3), ... v2(1)*scale, v2(2)*scale, v2(3)*scale, ... g,LineWidth,2,MaxHeadSize,2); % 次主方向 quiver3(p_mean(1), p_mean(2), p_mean(3), ... v3(1)*scale, v3(2)*scale, v3(3)*scale, ... b,LineWidth,2,MaxHeadSize,2); % 最大方差方向 %% 6. 图形美化 title(PCA 法向与特征轴可视化); legend(局部点云,法向 n (最小特征值),次主方向,最大方差方向); xlabel(X); ylabel(Y); zlabel(Z); view(45,30);七、PCA的缺点以及SVD的区别缺点与SVD的区别

相关新闻

2026/7/16 11:25:57

图胜千言·懒人版

近半年如果你关注 AI 客户端、MCP、Agent Memory、Computer Use 这些关键词,就会发现很多 AI 工具正在从“聊天窗口”变成更完整的 Agent 工作台。 这也是今天要聊的开源项目——DeepChat 演变的路线。一开始它是一个 Chatbot,后来逐步演进成一个 Local …

2026/7/16 11:25:57

ESD防护设计:原理、器件选型与电路板实战

1. 静电放电(ESD)的物理本质与危害机制 当两个不同电位的物体接触或靠近时,电荷会重新分配以达到平衡状态,这个过程中产生的瞬时电流就是静电放电现象。在电子工程领域,ESD的破坏力主要体现在三个方面: 热…

2026/7/16 11:25:57

Linux性能优化实战:CPU、内存与I/O全面解析

1. Linux性能优化核心概念解析性能优化是Linux系统管理中的永恒课题。作为在运维一线摸爬滚打多年的老手,我见过太多因为性能问题导致的系统崩溃和服务中断。今天我就结合自己踩过的坑,系统性地梳理Linux性能优化的知识体系。性能优化的本质是平衡系统资…

2026/7/16 12:41:01

单片机流水灯实现:从基础到进阶的三种方法

1. 单片机流水灯的基本原理流水灯是单片机学习中最经典的入门实验之一,它通过控制多个LED灯按特定顺序依次点亮和熄灭,形成类似"流水"的视觉效果。这个看似简单的实验,实际上包含了单片机开发中最基础的几个核心概念:GP…

2026/7/16 12:41:01

终极RTL8852BE Wi-Fi 6驱动指南:从零部署到性能调优全解析

终极RTL8852BE Wi-Fi 6驱动指南:从零部署到性能调优全解析 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be RTL8852BE是一款支持最新Wi-Fi 6标准的Realtek无线网卡芯片&#xf…

2026/7/16 12:41:01

如何用NBTExplorer轻松掌控我的世界游戏数据编辑

如何用NBTExplorer轻松掌控我的世界游戏数据编辑 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer NBTExplorer是一款终极免费的图形化NBT编辑器,专为《我…

2026/7/16 12:41:01

高频电解电容核心技术解析与工程应用指南

1. 高频电解电容的独特定位 在开关电源设计现场,我第一次意识到高频电解电容的重要性是在处理一个诡异的输出电压纹波问题时。当时用普通电解电容替换了原设计中的高频型号,结果纹波从50mV直接飙升到300mV,整个电源模块发出刺耳的啸叫声。这个…

2026/7/16 12:36:01

Windows动态获取函数地址技术解析与实践

1. 项目概述:动态获取函数地址的核心价值 在二进制安全研究领域,动态获取函数地址是一项基础但至关重要的技术。这个技术点之所以被反复讨论,是因为它直接关系到漏洞利用的可靠性和通用性。想象一下,你发现了一个栈溢出漏洞&#…

2026/7/15 17:04:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/15 22:21:34

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/15 23:18:22

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/16 0:04:06

AD9215BRUZRL7-105是一款工业 10bit 流水线模数转换器

型号介绍AD9215BRUZRL7-105 是一款10 位单通道高速流水线模数转换器,它采用模拟单电源独立供电 数字驱动分离供电双电源架构,模拟电源 AVDD 额定 3V,允许工作区间 2.7V~3.3V;数字驱动电源 DRV 独立设计,支持 2.25V~3.…

2026/7/16 0:04:06

LTC4418IUF#TRPBF是一款工业级双通道控制器

型号介绍LTC4418IUF#TRPBF 是一款工业级双通道电源路径控制器,它芯片采用 20 引脚 4mm4mm QFN 封装,底部附带外露散热焊盘作为 21 号 GND 引脚,热阻 θJA 为 47℃/W、θJC 仅 4.5℃/W,散热性能适配大功率切换场景;温区…

2026/7/16 0:04:06

uos-exporter核心组件解析:10个关键监控导出器功能详解

uos-exporter核心组件解析:10个关键监控导出器功能详解 【免费下载链接】uos-exporter uos-exporter collects metrics from os 项目地址: https://gitcode.com/openeuler/uos-exporter 前往项目官网免费下载:https://ar.openeuler.org/ar/ uos-…

2026/7/15 13:36:32

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…