LVI-SAM详解:激光雷达+视觉+IMU紧耦合SLAM如何应对退化场景

LVI-SAM这套工作,我在读第一遍时其实没有真正看懂;直到自己跑通雷达、相机、IMU三传感器融合的实验,再回头看论文,才发现它把每一类传感器的优点都安排得很清楚。论文的核心可以概括为一句话:当激光雷达在退化环境里“迷路”时,让视觉帮忙指路;当视觉深度不可信时,让激光点云提供距离信息;再通过因子图把所有约束放在同一个优化问题里一起求解。这篇总结会从问题动机、系统架构、关键算法、实验效果、复现经验五个角度,把论文里的重点一次性讲透,适合正在做多传感器融合SLAM、准备复现LVI-SAM,或者想理解紧耦合方案为什么比松耦合方案更稳的同学。

1. LVI-SAM出现的背景与它要打掉的痛点

1.1 单传感器方案各自有哪些“死穴”

先说激光雷达。很多同学第一次接触SLAM时,会觉得激光点云精度高、范围远,应该是万能的。但实际跑过一轮就能发现,激光最怕的不是传感器本身噪声,而是“退化”问题。你走在一个很长很空旷的走廊,两边的墙几乎是平行平面,前后方向没有明显特征;或者站在广场中央,地面是一个大平面,周围没有可辨识的几何结构。此时激光配准算法看着点云,会发现很多匹配解都能给出差不多低的残差,位姿在这些方向上像“悬浮”一样,只能靠IMU和运动模型猜。我见过纯激光方案在停车场出口跑出一个比小车实际轨迹大一截的偏移,问题就出在退化方向上没有被约束住。

视觉相机的问题正好相反。它有丰富的纹理信息,长廊墙上挂满海报、远处有路牌,视觉特征点非常多;但一到光线剧烈变化、大逆光、夜晚、白墙或者快速运动导致运动模糊,特征追踪就断。而且单目相机没有尺度,角速度一旦被运动模糊污染,估计出的旋转和速度很快发散。IMU能短时间提供比较稳的姿态和加速度积分,但零偏在漂,长期积分的位置误差会随时间平方增长。

所以“多传感器融合”不是把三个估计结果做成平均值那么简单。平均值只会让烂结果污染好结果,系统并不会因为多了一个传感器而自动变得鲁棒。真正有用的是让传感器之间的信息形成互相校验和互相补充,比如视觉特征帮助判断激光匹配是否退化,激光点云帮助视觉特征得到绝对深度。LVI-SAM论文做的正是这件事。

1.2 松耦合和紧耦合的本质区别

有些系统是先把激光跑出一个里程计,视觉跑出一个里程计,最后在输出端做一个位姿平均或切换,这就是松耦合。好处是各模块独立、容易实现,坏处是当一个模块输出错位姿时,另一个模块无法在底层纠正它,融合结果只是“选一个看起来更好的”。

LVI-SAM走的是紧耦合路线。它把IMU预积分误差、视觉重投影误差、激光scan-to-map匹配误差放在同一个因子图优化问题里。某时刻视觉特征约束不足,激光约束能顶上;某方向激光退化,视觉特征就能在优化时对那个方向给出约束。因为误差项在同一个代价函数里按照信息矩阵加权,系统自然会在不同约束之间找全局最优位姿,而不是在一堆已经算好的位姿里做后处理。

不过论文没有把所有传感器塞进同一个优化器。它设计成“视觉-惯性子系统”和“激光-惯性子系统”并行,再通过因子图互相交换约束。这个设计很聪明,因为视觉SLAM和激光SLAM的频率、特征类型、计算复杂度差异太大,强行合在一起会让代码结构和维护成本变得很高。两个子系统各自解决一部分问题,共享一个因子图,既保证紧耦合,又保留模块化。

1.3 论文的核心贡献

用一句话概括贡献:这是第一个把视觉惯性里程计、激光惯性里程计和回环检测组织成实时紧耦合系统的框架之一。再拆开看,有四件事值得记住:

  • 视觉与激光双向辅助:视觉给激光提供姿态初始值和退化场景下的约束,激光给视觉提供特征深度,二者不是单向兜底。
  • 退化感知的鲁棒融合:系统会检测激光匹配的退化方向,并自动调整激光因子在优化中的权重,避免把不靠谱的约束送进图里。
  • 视觉词袋回环加激光几何验证:用视觉快速找候选,用激光配准做精确验证,既快又准。
  • 实时性设计:因子图维护滑窗,边缘化旧节点,保证长时间运行不卡死。

2. 系统总体架构与两大子系统的配合方式

2.1 因子图:把异步传感器放进同一个“协作台”

理解LVI-SAM的关键是理解因子图。很多同学听到优化就觉得是“跑一个最小二乘”,但因子图的核心是节点和因子:节点表示需要估计的状态,比如某个时刻的位姿、IMU零偏、速度;因子表示节点之间或者节点与观测之间的约束,比如IMU预积分约束、视觉重投影约束、激光匹配约束。传感器频率不同没关系,每次来一个测量就往图上添加对应因子,图优化器在全局上调整所有节点,让所有因子的总残差最小。

可以打一个比方:因子图像一张拼图,每块拼图只告诉你局部怎么卡,但当你把所有拼图拼起来,即使个别块有误差,整体形状还是能对上。SLAM里也一样,激光在某方向退化,但视觉在那个方向可能有强约束,整体优化后位姿依然被拉在正确位置。

LVI-SAM的因子图中主要包含IMU因子、视觉因子、激光里程计因子和回环因子。其中IMU因子常数最密,连接相邻关键帧;视觉因子来自视觉惯性子系统的关键帧;激光里程计因子来自scan-to-map匹配;回环因子来自视觉回环检测加激光验证。当关键帧数量超过窗口,老的节点会被边缘化,边缘化就是把被移出窗口的状态对剩余状态的影响整理成先验因子,保留信息而不是直接丢掉。

2.2 视觉-惯性子系统是怎么转起来的

视觉侧的核心任务不是建一个稠密视觉地图,而是输出足够好的位姿估计,并帮助激光侧做退化判断。它的流程大致是:对图像提取角点类特征,用光流追踪;相邻帧之间通过IMU预积分提供初始运动估计;在一个小滑窗里联合优化视觉重投影误差和IMU预积分误差,输出视觉位姿和IMU零偏估计。

值得强调的是,这套视觉惯性子系统在初始化时非常重要。开始运动的前几秒,它需要估计IMU零偏、重力向量和速度状态。如果初始化不成功,后面所有因子里的IMU预积分都带着零偏误差,长期跑图会产生大漂移。论文的方法是让系统先通过视觉和IMU的对齐建立坐标系,再用滑窗优化修正零偏。

激光子系统则会把视觉惯性子系统输出的位姿作为scan-to-map匹配的初始值。这个细节容易被忽略:激光匹配本质是一个非线性优化,初始猜测给得不好,容易落入局部极小,特别是在植被多、结构重复的环境。视觉位姿即使有些漂移,整体趋势仍比“拿上一帧位姿直接猜”要可靠得多,所以两个子系统的配合是从初始值层面就开始的。

2.3 激光-惯性子系统怎么把点云变成约束

激光侧延续了此前经典的“特征提取+scan-to-map匹配”路线。拿到一帧点云后,先根据IMU预积分和当前位姿做点云去畸变,因为机械式激光雷达一帧点云是在几十毫秒内扫描出来的,车在动,每个点的坐标系原点其实不同。然后计算点云局部曲率,按曲率大小分出面点和角点。面点多的墙面能约束平面的法向,角点多的杆子能约束直线的位置。

接下来把这帧特征点与局部地图做配准。论文里用的是基于点到平面/点到线距离的配准,优化位姿使对应特征距离最小。这个匹配残差会转换成激光里程计因子,并被加入因子图。匹配质量不完全可信,所以论文设计了退化检测:通过观察配准问题Hessian矩阵的特征值分布,判断哪几个自由度缺乏约束。如果最小特征值很小,说明激光在这几个方向上“看不清楚”,对应方向上的约束需要被弱化。

激光子系统除了产生里程计因子,还负责维护全局地图。回环校正后,地图点的位姿也要跟着更新,否则后面新帧匹配到旧地图上会错位。这部分在论文里是全局优化后更新局部地图,实际复现时要注意对地图数据结构的修改。

2.4 两个子系统之间到底交换了什么

很多人在看论文时会困惑:视觉和激光不是在同一个优化器里,那怎么算紧耦合?LVI-SAM的答案是“信息交换发生在因子层面”。视觉惯性子系统产生关键帧,把该关键帧的视觉特征和对应位姿作为一个视觉因子放到图里;激光惯性子系统通过scan-to-map匹配也放一个激光因子到同一张图里。优化器看到的是所有因子,而不是两个独立里程计结果。

另外,激光点云还有一个重要任务:为视觉特征提供深度先验。当一帧图像提取出特征点后,把激光点云投影到图像平面,每个特征点附近如果有激光点,就用这些激光点的深度去填充特征点的距离。这个先验直接改变了视觉重投影误差的形式——普通单目视觉优化尺度不可观,有了深度,视觉因子就能对平移和尺度提供约束。一旦遇到激光退化,视觉因子仍然可用,图优化不会完全失去引导。

3. 关键算法模块逐段拆解

3.1 初始化为什么是整个系统最容易崩的地方

我在复现时踩过最深的一个坑就是初始化。LVI-SAM需要先让视觉惯性子系统完成初始化,通常要求设备在启动后有充分的旋转和加速运动。如果设备静止太久或者运动太平滑,IMU零偏和重力方向估计不出来,系统会一直停在初始化状态,激光侧即使能匹配,因子图也不会输出可用位姿。

论文里初始化把视觉轨迹和IMU测量对齐:先通过帧间匹配估计相机运动,再联合估计重力方向、初始速度、IMU零偏。注意重力向量和真实重力方向之间的误差会影响后续预积分,因此在初始化完成后通常还保留一个修正步骤。实际操作时,启动后做“把设备举起来绕几圈”之类的动作比缓慢移动更容易初始化成功。如果你在机器人平台上,可以考虑加一个启动自检脚本,检测初始化状态并提示操作者运动激励不足。

3.2 IMU预积分到底算了个啥

IMU输出的角速度和加速度频率很高,动辄100Hz以上,而视觉关键帧频率可能只有10-30Hz。如果在每次优化时都把两帧之间的所有IMU数据重新积分,计算量很大且重复。预积分的思路是:提前把两个关键帧之间IMU增量运动积分出来,作为相对运动的约束,优化时只需调用这个预积分结果,不需要逐帧反复算。

预积分因子连接相邻的位姿节点,里面包含相对旋转、相对平移和速度变化量,同时把IMU零偏作为优化变量。零偏变化后预积分结果也需要修正,论文里用一阶线性化来更新,而不是重新积分。理解这一点对读代码很重要:你会看到预积分对象里保存着Jacobian和协方差,它们是零偏更新时用来快速修正的关键。

3.3 激光scan-to-map里那个退化检测是怎么算出来的

先回顾一下scan-to-map匹配的代价函数:对每个匹配特征点,构造点到面或点到线的距离残差,所有残差加起来对位姿求导,会在迭代过程中形成一个近似的Hessian矩阵。这个矩阵的特征向量对应空间中的六个自由度(三个平移、三个旋转),特征值大小表示该方向上的约束强度。

如果某个方向几乎没有约束,比如在长走廊里沿着走廊方向平移时,点到墙的距离不变,那么对应特征值会非常小。论文里检测退化时,看最小特征值是否低于某个阈值,并进一步从特征向量中判断哪些自由度退化。然后对激光里程计因子的信息矩阵做处理:退化方向上的信息置为较小值,其它方向保持原样。这样激光因子仍然提供可靠方向的约束,而不是对整个位姿“一票否决”。

这里有个容易误解的地方:退化检测并不是说“激光失效了,干脆丢弃激光因子”,而是“告诉优化器激光在哪些方向不可信”。如果直接丢弃,可能在可靠方向上反而缺少约束,拖累整体精度。论文这种退化感知方式,本质上是在不同方向上动态调节传感器权重,比一个全局的置信度数值精细得多。

3.4 视觉深度先验背后的细节

把激光点投影到图像平面,给视觉特征点填深度,听起来很简单,实际操作有不少隐含问题。首先是时间同步:激光点和图像不是同一时刻采集的,需要严格插值或使用最近邻时间对齐。其次是外参标定:投影矩阵由雷达到相机的外参决定,哪怕只有1-2度旋转误差,远处特征点的深度可能从50米跳到80米。然后是遮挡问题:激光点打在前面障碍物上,而特征点其实在障碍物后面的墙上,直接用最近深度会污染视觉三角化。

论文里对这个问题处理得比较克制,它没有假设每个特征都有激光深度,而是用深度先验来约束那些激光点覆盖到的特征;其余特征依然靠滑窗三角化。从经验看,深度先验值对系统提升最大的是近距离和中距离特征,太远或深度不连续的位置反而容易引入额外噪声。复现时最好检查每个特征点对应深度的一致性,把明显跳变的深度直接标记为无效。

3.5 回环检测与全局优化

LVI-SAM的回环检测放在视觉侧,使用视觉词袋生成候选,这个方向选得很合理。因为视觉特征对场景外观变化有很高辨识度,同一地点哪怕是换个角度,词袋也能给出相似度评分。相比之下纯激光回环检测在某些结构重复环境里容易误报。拿到候选之后,系统先检查候选帧的时间距离,太近的直接跳过;然后做相对位姿估计,并用激光点云配准验证几何一致性。验证通过的回环会成为回环因子,放进因子图,触发全局优化。

需要留意的是,回环因子虽然强,但也不能百分百全信。如果视觉词袋把两个看起来相似但实际不是同一地点的场景判为回环,激光配准又不幸收敛到局部极小,就会生成一个错误回环,把地图拉歪。论文里的几何验证相当于加了一道保险。实际使用时,词袋库应根据应用场景训练,而不是直接用通用模型,否则误检率会明显偏高。

4. 实验结论与适用场景解读

4.1 论文结果传递出什么信号

从论文报告的实验看,LVI-SAM在一组公开自动驾驶数据和一组自采数据上都跑出了比纯激光方案更稳定的轨迹。更关键的不是平均精度高一点,而是退化场景下的表现差异。比如在大片植被区域,激光点云层次感强但重复度高,纯激光容易在平移方向漂移;而LVI-SAM依靠视觉特征判断整体位置,再结合激光在局部结构上的约束,轨迹没有明显跑飞。我复现时在类似场景也观察到了这个规律。

在正常情况下,LVI-SAM的精度不会比纯激光方案有数量级提升,因为激光本身已经很准。它的价值更多体现在“不让系统在关键时刻挂掉”。这其实很符合工业落地的需求:比起“平均精度更高一点”,用户更在乎“连续运行几小时后轨迹还在合理范围”。

4.2 消融实验带来的启发

论文通过消融实验表明,每一个模块几乎都不可省略。去掉激光深度先验后,视觉特征在远距离和大视差处的深度估计噪声变大,视觉因子在优化中的约束质量下降;去掉退化检测后,激光在退化方向上的错误约束会直接拉偏位姿,视觉再强也难救回来;去掉视觉回环检测后,地图长时间漂移问题会更早出现。这些结论提醒我,读论文不能只记住总体框架,还要关注每个模块的“兜底角色”:深度先验主要救视觉,退化检测主要救激光,回环检测主要救长期漂移。如果只在自己的系统里集成部分模块,效果往往会打折扣。

4.3 什么样的项目适合直接用它

LVI-SAM需要三类传感器齐备:激光雷达、单目相机、IMU,并且要能提供稳定同步的数据。如果你的设备只装了相机和IMU,那直接上这个框架会浪费激光一半的能力;如果只有激光和IMU,退化检测再强也没有视觉兜底。从场景看,它最适合结构化环境和半结构化环境,比如园区巡检、室内外接驳、地下停车场等。室内无纹理白墙过多时视觉可能罢工,室外大晴天逆光时视觉追踪也会不稳定,但相比纯激光方案,整体鲁棒性还是有明显提升。

部署成本上,三传感器系统比单传感器复杂很多,标定、同步、算力消耗都是实打实的工程成本。所以项目决策时得先问自己:纯激光方案是否已经够用?如果我的场景里激光退化很少、环境可控,那没必要上来就上LVI-SAM。但如果机器人要长期在复杂场景运行,那么多花一点标定成本换来的稳定性非常值。

5. 复现与参数调优经验

5.1 先花80%精力做标定和同步

所有复现LVI-SAM的人都会告诉你:标定比调参重要。相机内参、激光雷达和IMU的外参、相机和激光雷达的相对外参,任何一个不准都会让融合效果失控。外参不准最典型的表现是视觉深度先验出现条纹状错误:远处特征点的深度一会近一会远,建图出现毛刺。时间同步也一样,IMU消息和图像时间戳差几十毫秒,在快速旋转时预积分和视觉重投影就会互相打架。建议在采集数据前用专门的标定流程,把外参标到误差可控范围,并在在线运行前做一次静态和动态验证。

5.2 需要重点盯的几个参数

不同的平台不可能用同一套参数,我总结几个最值得调的:

  • 关键帧间隔:间隔太密,因子图节点多,实时性变差;间隔太疏,视觉特征追踪容易断,激光匹配初始值变差。一般按时间阈值和视差阈值双重触发。
  • 图像特征数量:特征点太少,退化场景下视觉约束不足;太多则耗时增加。可以按图像分辨率调整。
  • 激光scan-to-map的体素分辨率:分辨率小,局部地图更精细但计算量更大;分辨率大,匹配更粗糙。
  • 退化检测阈值:太敏感会让激光几乎不起作用,太迟钝则失去保护。需要在退化场景里反复试。
  • 词袋库和回环候选阈值:候选数量太多误检风险高,太少则漏检。

调参没有一个万能配方,我自己的习惯是把系统跑一遍,把因子图残差和退化检测标志位打印出来,观察每个模块在不同位置的贡献变化,再针对性地改参数。

5.3 常见问题速查表

现象可能原因处理建议
初始化一直不成功启动时运动激励不足,或IMU零偏初值差启动后做大幅旋转和变速运动,检查IMU频率和噪声参数
地图在长直走廊偏移激光退化检测未生效,视觉特征太少确认退化检测日志,降低特征点数量要求,调低退化阈值
视觉深度出现跳变条纹相机雷达外参误差或时间同步偏差重新标定外参,检查各传感器时间戳对齐
回环误检导致地图变形词袋库不匹配当前场景用场景数据重新训练词袋,提高验证阈值
长时间运行越来越卡关键帧过多或全局优化频繁调大关键帧间隔,检查回环触发条件,开启边缘化

我自己读过不少融合SLAM的论文,LVI-SAM属于那种“刚看框架觉得复杂,跑通之后觉得合理”的工作。它没有把一个全新的理论塞给你,而是把已经被验证过的视觉惯性、激光惯性、回环检测几块积木重新拼装,并且补上了最容易被忽略的退化感知和深度先验。如果你想上手,我的建议是不要直接跑数据就结束,至少做三件事:第一,把代码里的因子图结构和论文的框架图对着读,搞清楚每个因子是从哪几个函数里添加进去的;第二,把退化检测关闭一次,跑一遍退化场景,亲眼看一看错误约束对轨迹的破坏;第三,给自己采集一段带明显退化但视觉还丰富的走廊数据,系统性地调一遍参数。做完这三件事,你对LVI-SAM的理解会和对代码的熟练度一起上一个台阶。最后再分享一个小技巧:调试这类多传感器系统时,把每类因子的残差单独可视化,比看最终轨迹更能判断是哪一块出了问题。

相关新闻

电商UI自动化测试从0到1:Selenium+Pytest+Page Object实战

电商UI自动化测试从0到1:Selenium+Pytest+Page Object实战

1. 动手之前把账算清楚:UI自动化的适用边界与方案选型做UI自动化测试这件事,很多人上来就开干,先装个Selenium,再顺手写几十个脚本,结果跑了俩星期,发现每天都在修脚本,比手工点点点还累。我自己…

2026/10/20 17:29:01 阅读更多 →
深度学习模型管理全链路实践:从训练到部署监控

深度学习模型管理全链路实践:从训练到部署监控

1. 项目背景:从一个"models"文件夹说起做算法这行久了,你会发现一个特别有意思的现象:很多项目的代码仓库里,最不受待见的一个目录就是models/。它往往承担着全项目最重的"责任",却享受最差的&quo…

2026/10/20 17:29:01 阅读更多 →
跨平台个性化程序组“倚天剑术16”:设计与落地实践

跨平台个性化程序组“倚天剑术16”:设计与落地实践

“倚天剑术16”这个项目名,乍一听挺唬人,其实是我给自己一套跨平台个性化程序组起的内部代号。所谓“倚天剑术”,指的是这套工具里头每一件都讲究锋利、直接,拿来就能解决实际问题;“16”则是这系列迭代到第16个版本了…

2026/10/20 17:28:00 阅读更多 →

最新新闻

Claude Skill 下载安装完全指南:三种方法与排错思路

Claude Skill 下载安装完全指南:三种方法与排错思路

我估摸着不少人和我一样,第一次听到"Claude Skill"这四个字的时候,脑子里冒出来的问题就一个:这到底是个插件、一套配置,还是一个能自动干活的小助手?等你真正打开搜索框开始找下载安装教程,又会…

2026/10/20 18:58:59 阅读更多 →
浏览器驱动Agent实战:从感知到执行,效率重构的完整打法

浏览器驱动Agent实战:从感知到执行,效率重构的完整打法

2026年9月15日,下午两点多,运营同事拿着一张截图找到我,说竞品官网改版了,他们手工维护了半年的价格表全部要重来。我一边听一边打开终端,把浏览器驱动Agent的任务描述从"按SKU抓取描述和价格"改成了"打…

2026/10/20 18:58:59 阅读更多 →
C#调用FFmpeg实现文案自动转视频:语音合成与图片合成全流程解析

C#调用FFmpeg实现文案自动转视频:语音合成与图片合成全流程解析

简介:一份C#实现文案转语音并与图片合成视频的完整VS2013工程,面向需要批量生成配音短视频、图文卡点视频的.NET开发者、自媒体运营及课件制作者。项目调用百度API将首行文案合成为配音文件,再依据语音时长计算出所需图片帧数,最后…

2026/10/20 18:58:59 阅读更多 →
Playwright + Python 自动化测试入门:从零搭建稳定脚本

Playwright + Python 自动化测试入门:从零搭建稳定脚本

做自动化测试这几年,我换过好几套方案,Playwright 配合 Python 算是我用得最顺手的一组搭档。它本身就是开源的浏览器自动化框架,主打 Web 端到端测试,支持 Chromium、Firefox、WebKit 三种内核,Python 版本同步异步 A…

2026/10/20 18:58:59 阅读更多 →
三菱FX3U PLC与FR-E700变频器Modbus RTU通讯改造详解

三菱FX3U PLC与FR-E700变频器Modbus RTU通讯改造详解

做电气调试这些年,PLC和变频器之间的通讯改造是一项高频需求。最近刚完成了一套三菱FX3U PLC与三菱FR-E700变频器的Modbus RTU通讯项目,实现启停、正反转、频率给定和运行频率读取。这类方案在小型自动化设备、风机水泵控制、输送线改造里出现频率很高&a…

2026/10/20 18:58:59 阅读更多 →
NSGA-III求解微电网多目标优化调度:Matlab实现与工程实践

NSGA-III求解微电网多目标优化调度:Matlab实现与工程实践

做微电网优化调度的人,多半都经历过这种纠结:费大力气算出一个运行成本最低的方案,结果环保考核指标一路飘红;把碳排放压下来,购电成本又嗖嗖往上涨。这种“按下葫芦浮起瓢”的矛盾,本质上是多目标优化问题…

2026/10/20 18:57:58 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →