基于Matlab的静态手势识别系统设计与实现
我一直觉得手势识别是计算机视觉入门阶段性价比最高的课题之一算法链路完整、可视反馈直观、能动手的点特别多而且做出来以后演示效果很拉风。这几年陆续有同学和同行问我为什么选Matlab做静态手势识别系统而不是直接上Python加OpenCV。我的答案很简单如果你手里已经有Matlab而且主要目标是快速跑通完整链路、把精力放在图像处理和分类算法本身而不是跟环境配置和依赖库较劲那Matlab反而是一个被严重低估的选择。这篇文章我不打算系统性地复述教材而是把一套基于Matlab的静态手势识别系统从摄像头采集、肤色分割、特征提取到分类器设计、GUI演示的完整过程按照我自己实际搭建时的思路和踩坑记录讲一遍。适合课程设计、毕业设计以及想入门计算机视觉又不想一上来就被OpenCV各种版本问题劝退的朋友。你照着我这个顺序做大概率能在两周内从头跑出一个能实时识别数字手势的Demo而且每一步都有明确的调试手段。1. 为什么选Matlab做手势识别一个容易被低估的起步选择先说个很多人忽视的事实手势识别这个任务真正难的部分从来不是算法有多高级而是图像预处理和特征能不能做干净。而Matlab在图像处理环节的开发效率说实话比多数人想象中要高得多。1.1 矩阵思维和自带工具箱对新手太友好了Matlab处理图像的基本单位就是矩阵读入一张图片就是一个uint8类型的三维数组。这意味着你不需要先理解指针、内存连续性和图像解码格式这些底层概念就能直接对像素做数学操作。配合Image Processing Toolbox里那些高度封装好的函数像rgb2ycbcr、medfilt2、bwlabel一句话就能完成Python里需要好几行甚至一个辅助函数才能搞定的操作。新手写手势识别最容易翻车的地方是在图像分割阶段——肤色区域总带噪点、边缘有毛刺、背景里混进乱七八糟的东西。Matlab自带imageSegmenter这个交互式分割工具可以直接在图形界面上看阈值调节的效果然后一键导出对应的分割函数。这对理解什么参数会导致什么结果非常有帮助比对着OpenCV的inRange盲调数值直观多了。1.2 与Python和OpenCV的横向对比我知道很多人会拿Python出来说事。客观讲Python的生态更开放深度学习框架支持也更好但静态手势识别这种规模的系统根本用不着上深度学习传统图像处理方法就完全够用。这时候Matlab的优势就体现出来了。对比维度MatlabPython OpenCV环境搭建安装即用工具箱齐全需要处理Python版本、pip依赖、OpenCV编译问题图像调试变量工作区可直接查看图像矩阵可视化方便需要自己写imshow循环调试相对繁琐算法封装图像处理、统计、机器学习工具箱高度集成需要分别导入多个库实时性能向量化运算效率尚可支持Coder加速依赖NumPy做得好也很快上手曲线对算法初学者友好需要额外掌握Python语法和环境配置部署自由度依赖Matlab运行环境部署更灵活适合工程化我个人的建议是如果这只是一个课程设计或者毕业设计目标是快速交付、功能完整、现场演示稳定选Matlab是更省力的路线。如果以后想转工业界部署、或者要接深度学习模型那Python路线更值得投资。两个工具不冲突先用Matlab把算法原理吃透后面换语言成本并不高。2. 从摄像头到ROI采集和预处理环节的底层设计手势识别系统的第一步是把摄像头画面变成一张能用的、干净的图像。这一步看起来简单实际上坑最多。我一开始直接用笔记本自带摄像头全分辨率采集结果程序卡成幻灯片皮肤区域和背景糊成一团后来才老老实实把管线拆开逐段优化。2.1 摄像头采集的参数配置Matlab里做摄像头采集最常用的就是用webcam工具箱配合snapshot函数。采集之前有几个参数建议先固定下来避免后续每次运行结果都不一样cam webcam(1); % 找到默认摄像头 cam.Resolution 640x480; % 分辨率别贪高 preview(cam); % 先看看画面构图是否合适 frame snapshot(cam); % 采集单帧分辨率这里我强烈建议用640x480而不是1080p。原因有两个第一手势识别里肤色分割和轮廓提取都是逐像素操作分辨率翻四倍计算量也翻四倍实时性会被拖垮第二高分辨率并不会提高识别准确率因为后续还要缩放到统一尺寸提取特征真正起作用的是分割质量而不是原始像素密度。2.2 预处理为什么不是简单降噪而已拿到原始帧以后直接送去做肤色分割是新手最容易犯的错误。原始图像里往往有传感器噪声、光照不均匀、色彩偏移这些问题如果直接分割肤色区域会出现大量小洞和孤立噪声点。我的预处理管线是这样的frame rgb2ycbcr(frame); % 转换到YCbCr颜色空间 Y frame(:,:,1); Cb frame(:,:,2); Cr frame(:,:,3); Y medfilt2(Y, [3 3]); % 对亮度分量做中值滤波去噪 Cb medfilt2(Cb, [3 3]); Cr medfilt2(Cr, [3 3]);这里有个容易忽略的细节为什么只对YCbCr做中值滤波而不是直接对原始RGB做因为YCbCr把亮度和色度分开了。手势识别主要依赖色度信息肤色聚类性亮度分量在光照变化时必须平滑处理而RGB三个通道都耦合了亮度信息盲目滤波反而会抹掉肤色和背景的边缘对比。2.3 固定ROI区域省计算量又减少干扰把整帧图像都交给肤色分割算法既浪费算力又容易把背景里跟肤色相近的物体框进来。我建议在画面中间固定截取一个ROI区域让使用者把手放在这个区域内做手势识别。img snapshot(cam); img imcrop(img, [80 60 480 360]); % 屏幕中央区域这样设计的另一个好处是分类器只需要处理固定尺寸的输入特征提取的一致性会好很多。很多教科书在讲手势识别时都默认输入已经是规则的手部区域而在实际系统里这个ROI截取就是保证后续算法稳定的第一道关卡。3. 肤色分割的三种思路与实测对比从阈值到高斯模型肤色分割是整个系统里最核心的环节没有之一。分割质量决定了后面特征提取的输入是什么样的分割做得烂后续算法再精巧都白搭。我在这个环节把RGB阈值法、YCbCr阈值法和高斯肤色模型都完整试了一遍实测结果差异非常明显。3.1 RGB阈值法理论简单实操恼火很多教程喜欢先教RGB阈值分割逻辑很简单肤色的R分量显著大于G和B分量所以设定R 95 G 40 B 20 R - G 15 R - B 15这样的条件就能筛出皮肤。我用这个方法做了测试结果在受控光照下效果尚可但一旦环境光偏暖或者偏冷阈值立刻失效。比如室内暖黄光下整个画面都偏红背景里的木板、纸箱全部被判成肤色。RGB空间的三个通道高度相关阈值条件稍不留神就顾此失彼调参极其痛苦。3.2 YCbCr阈值法目前最稳妥的入门选择YCbCr空间的优势在于色度信息相对集中而且对光照变化的敏感度比RGB低不少。肤色像素在Cb和Cr分量上有比较稳定的聚类范围常见的经验阈值是skinMask (Cb 77 Cb 127) (Cr 133 Cr 173);这个范围不是绝对的实际使用时建议做一个小的校准脚本从自己摄像头拍的几张肤色样本里统计出Cb和Cr的均值与方差再适当扩展阈值范围。这种基于样本标定阈值的思路比死记硬背别人的经验值靠谱得多。3.3 高斯肤色模型更细腻但需要样本如果对分割效果有更高追求可以在YCbCr空间里构建二维高斯模型。思路是收集一批肤色样本像素计算Cb和Cr的均值向量与协方差矩阵然后对每个像素计算它属于肤色分布的概率值mu mean(skinPixels); % 2x1均值向量 sigma cov(skinPixels); % 2x2协方差矩阵 prob mvnpdf([Cb(:), Cr(:)], mu, sigma); prob reshape(prob, size(Cb)); skinMask prob threshold;高斯模型的灵活性更强能处理肤色在不同人种、不同亮度下的分布差异但前提是样本标定要充足。我试下来觉得对于摄像头固定的室内场景简单的YCbCr阈值法配合形态学处理已经足够高斯模型可以作为进阶尝试。3.4 形态学处理分割后的清洗工序无论用哪种方法分割出的二值掩码通常都有两类问题一是噪声点二是边缘不光整。这时候用形态学开运算和闭运算分别处理再合适不过。skinMask imopen(skinMask, strel(disk, 3)); % 去除小噪点 skinMask imclose(skinMask, strel(disk, 7)); % 填补内部空洞 skinMask bwareafilt(skinMask, 1); % 只保留最大连通区bwareafilt(skinMask, 1)这个函数值得多说一句。它直接保留面积最大的连通区域这一步几乎是手势识别系统里默认的强假设——假设画面里最大块的肤色区域就是手。实际使用时要确保手上没有戴手表、手环之类的大面积遮挡物否则连通区可能会被切断最大块的判断就会出错。4. 特征提取从掌心轮廓到凸包与凸性缺陷分割完成以后手部区域变成了一张二值图。接下来最关键的问题是怎么用一组稳定的数值描述这张图里是哪一种手势我采用的是区域特征 轮廓特征的组合方案兼顾了简单性和可区分度。4.1 最基础的一组区域特征静态手势识别常见的应用场景是识别数字1到5。单纯靠面积、宽高比、周长这些基础几何特征其实已经能区分一部分手势。比如数字1的手势手部区域通常又窄又长宽高比比张开五指的数字5明显更大数字2和数字3的面积区间与数字4和数字5有所重叠但结合轮廓细节后就能区分。我提取的基础特征包括五个区域面积像素数边界周长轮廓像素数宽高比外接矩形长宽比欧拉数连通区数量减去空洞数量手掌在主方向上的二阶矩特征反映手部姿态的伸展程度4.2 凸包和凸性缺陷识别手指数量的关键真正让系统分得清2和3这类近似手势的是凸包Convex Hull和凸性缺陷Convexity Defects。这个原理其实不复杂张开的手指之间会形成凹陷区域这些凹陷就是凸性缺陷。数一数凹陷的数量就能大致推断手指的数量。Matlab里可以直接用bwconvhull函数求二值区域的凸包然后通过对比原轮廓和凸包轮廓找出缺陷点。我自己实现的简化流程如下boundary bwboundaries(skinMask); B boundary{1}; % 最外轮廓点坐标 CH bwconvhull(skinMask); % 凸包区域 % 计算轮廓点到凸包边的距离距离大于阈值的区域就是缺陷为了准确捕捉手指间凹陷轮廓点序列要尽量平滑建议先对轮廓坐标做一次Savitzky-Golay滤波或者简单用fspecial配合imfilter平滑二值图边缘再做轮廓提取。这一步不处理的话轮廓上锯齿状的毛刺会产生大量假缺陷点导致手指数量判断出错。4.3 我最终使用的特征向量构成综合下来我实际用于分类的特征向量是7维的特征编号特征含义主要识别作用1手部区域面积与ROI面积之比区分整体大小2外接矩形宽高比区分横向张开与竖向并拢手势3凸包面积与区域面积之比反映轮廓凹凸程度4凸性缺陷数量判断手指分叉数量5平均缺陷深度区分深凹陷张开与浅凹陷并拢6缺陷点平均角度反映手指张开角度7欧拉数过滤异常空洞这套特征做完以后我还做了一个很有意思的可视化实验把不同手势的特征向量画到雷达图上发现数字1和数字5的间距远大于数字2和数字3的间距。这说明特征组合的区分度是足够的只要分类器选得合理准确率不会差。5. 分类器选型与训练决策树、KNN和SVM的实战对比特征提取完成识别任务就变成了一个标准的多分类问题。我在这个环节对比了三种分类器决策树、K最近邻KNN和支持向量机SVM。这三种方法在Matlab里都有现成工具直接可以用fitctree、fitcknn、fitcecoc调起来。5.1 数据采集和标注才是真正的体力活很多教程把重点放在算法上但实际做下来我发现一个规律系统准确率的上限是由数据集质量决定的。我给每个数字手势采集了两百个样本十个不同姿态、五个不同距离、四个不同光照条件下各采集若干张保证样本多样性。采集样本的过程中要注意一点手动截取手部区域时手势位置不要每次都固定在正中央。稍微偏左偏右、偏上偏下都会改变特征向量的取值。如果训练集里全是正中模板数据测试时稍微偏移一点就识别失败。5.2 三种分类器的实测结果我用同一个特征集分别训练了三个分类器用五折交叉验证评估结果如下表分类器平均准确率训练时间预测速度备注决策树深度1092.3%极短极快容易过拟合需要剪枝KNNK5标准化后95.1%几乎为零较快对特征缩放敏感SVM高斯核一对一编码96.7%较短快综合表现最好从表格能看出来SVM在这三类方法里综合表现最优。但我并不是一开始就推荐大家直接跳去用SVM——因为SVM对特征缩放极其敏感Cb和Cr色度值在几十到一百多这个区间缺陷深度可能是几十像素面积比却是零到一之间的小数。数据标准化是在使用KNN和SVM之前必须做的一件事这一步漏掉模型表现会大幅度缩水features normalize(features); % 或者用zscore5.3 决策树的一个意外优势可解释性虽然决策树准确率最低但我在调试阶段反而觉得它最好用。fitctree训练完成后可以用view函数直接画出整棵决策树能看到每个节点是依据哪个特征、什么阈值做的分裂。比如某棵树第一层就直接用凸性缺陷数量是否大于2来区分大类别这个信息能帮你验证特征设计是否合理。有一次我发现某个手势识别错误率特别高看了决策树后发现节点在平均缺陷深度这个特征上的使用频率异常高而缺陷点平均角度几乎没被用到。这说明我采集的角度特征区分度不够后来重新调整了角度计算方法识别率才提上来。这种用模型暴露特征问题的调试思路比凭空猜特征是否有效要高效得多。6. 实测中跑不掉的几个坑光照、背景和性能瓶颈系统跑通一次不代表能稳定跑通一百次。我在联调阶段遇到过很多教科书完全不会提的问题这里专门列出来省得你以后再踩一遍。6.1 光照是最大的变量也是最难调的参数室内日光灯、窗外自然光、屏幕光混合的场景下肤色色度分布会发生明显漂移。我做过一个实验同一只手在上午十点自然光下和傍晚灯光下采集YCbCr阈值分割出来的区域面积差了一倍。应对策略是加在线标定功能。在系统启动时先要求用户把手放在指定位置系统自动取几帧图像估计当前环境下的肤色分布范围动态更新分割阈值。这个方法加完之后系统的环境适应性有了质的提升。6.2 背景里的肤色相似物纸箱、木桌、海报我测试时背景里放了一个浅黄色纸箱结果每次箱子入镜系统都把手势区域判定到纸箱上最大连通区域根本不在手上。解决的办法是在ROI内增加一个简单的背景差判断先拍一张没有手的背景图然后当前帧与背景图做差分只在变化区域里找肤色。这个方法对固定背景非常管用但对摄像头抖动或者背景本身变化的情况会失效实际使用时要根据场景取舍。6.3 实时性能优化运行卡顿的根源和处理刚开始我把整条管线每一帧都从头跑一遍结果帧率只有个位数。后来做了三个优化帧率稳定到了20帧每秒以上降采样预处理阶段先把ROI降采样到320x240处理像素量减少四倍分割质量几乎无感损失。帧间隔控制用parfor或者tic/toc实测每个环节耗时发现肤色分割耗时最高。如果上一帧分割结果足够干净可以通过简单的帧间区域重叠判断决定是否跳过本帧的完整分割直接沿用上一帧掩码做特征提取。关闭不必要的显示调试阶段把每一帧的中间结果都画到figure里确实方便但imshow的开销比想象中大。最终只保留一个最终结果窗口中间过程耗时用命令行输出代替。6.4 静态手势和动态手势的边界要划清楚标题里特别强调了静态手势识别这个定位很重要。系统设计时不考虑手部运动轨迹只关注单帧图像的手部形态。如果你在识别过程中发现手势结果频繁跳变不一定是对手势的判断错了很可能是相邻帧中手部姿态自然抖动导致特征值跨越了分类边界。我的处理办法是引入简易的结果帧投票机制连续五帧识别结果中出现次数最多的手势作为最终输出。这种滑动窗口多数投票策略非常朴素但在静态手势场景下效果极好抖动和偶发误判基本都被抹平了。7. 从脚本到可演示系统GUI封装和体验打磨如果这个系统只是给自己跑着玩那到前面一步其实已经可以收工了。但多数情况下这类系统要拿来答辩、展示或者交给别人使用这时候一个体面的图形界面比算法调试更显得重要。我用Matlab自带的App Designer做了一个简易控制面板整个封装过程其实不复杂。7.1 界面布局和核心交互逻辑我的界面分三个区域左侧是摄像头实时画面右侧是分割结果和识别结果底部是几个核心参数滑杆和按钮。滑杆分别是肤色阈值下界、肤色阈值上界和最大连通区面积阈值。这三个参数就是我在调试过程中最常调整的三个量把它们暴露到界面上等于把调参能力也交付给了用户而不是每次都要跑回代码里改。对于答辩演示场景界面还加了一个采样建库按钮。点击后自动连续采集当前手势样本并保存到对应类别的文件夹里。我当时在答辩现场用这个功能快速补了几个新样本识别率当场就稳住了这个体验比数据已经固化在代码里的方案要灵活得多。7.2 部署为独立可执行程序的注意事项Matlab的compiler可以把App打包成独立可执行文件但有两个需要注意的问题。第一打包后的程序需要目标机器安装对应版本的Matlab Runtime体积比较大如果现场演示的电脑没有提前装好临时安装会非常尴尬。第二Webcam支持依赖额外的硬件驱动有些非主流摄像头在打包后会出现无法识别的问题最好在演示前用目标设备完整测一遍。如果只是课程设计我建议演示时直接用Matlab环境跑既省心又可以在卡死时快速看控制台报错。如果是给外部用户使用再考虑打包成独立程序。提示打包之前别忘了把训练好的分类器模型保存成.mat文件并且在GUI启动时自动加载。我见过不少同学把训练和识别写在同一个脚本里演示时重新训练一遍如果数据集加载路径变了或者样本顺序乱了结果可能当场翻车。训练和识别分离是这类系统一个非常值得养成的习惯。8. 关于系统调试的最后一个建议先稳住单帧再追求实时最后分享一个我做这类系统的经验法则调试顺序一定要先离线后在线。先把摄像头采集的几十张图片存到本地在离线脚本上反复调分割阈值和分类器参数确保静态图片识别准确率到达95%以上再上实时视频流做联调。理由很简单。实时运行时有太多变量在同时变化如果准确率上不去你根本分不清是分割参数不对劲、特征提取不稳、还是分类器过拟合。离线阶段一次只调一个变量问题定位会清晰得多。等我离线做到满足要求后再处理实时的光照漂移和帧率问题系统整体开发周期反而短很多。我现在做手势识别类项目仍然默认走这个流程。有时候同学问我说为什么我的实时识别一会准一会不准我第一反应都是让他们先去离线测一下。八成情况下离线就不过关跟实时性压根没关系。把这条想明白对排查这类系统的问题有大帮助。

相关新闻

JavaScript mgrs 工具包:WGS84 与 MGRS 坐标转换实战指南

JavaScript mgrs 工具包:WGS84 与 MGRS 坐标转换实战指南

简介:这是一份面向地理信息开发者的 JavaScript 坐标转换工具,用于在 WGS84 经纬度与 MGRS 军用格网参考系统之间互转,适合地图开发、GIS 数据处理及定位相关项目使用。其核心提供三种调用方式:forward 接收经纬度数组与可选精度并…

2026/10/18 8:41:19 阅读更多 →
ogv.js WebAssembly音视频解码实战:从白屏到稳定播放

ogv.js WebAssembly音视频解码实战:从白屏到稳定播放

简介:ogv.js 是一个基于 WebAssembly 和 JavaScript 实现的纯前端媒体播放器,专为在现代浏览器中解码和播放 Ogg/Vorbis/Opus/Theora 及 WebM(VP8/VP9/AV1)格式音视频而设计,适用于前端开发者、音视频技术研究者及 Web…

2026/10/18 8:41:19 阅读更多 →
RRDtool 1.4.7 编译部署避坑指南:glibc兼容性与中文图表渲染

RRDtool 1.4.7 编译部署避坑指南:glibc兼容性与中文图表渲染

简介:RRDTool 1.4.7 是一款成熟稳定的开源时序数据库工具,专为系统与网络性能监控场景设计,广泛支撑 Smokeping、Cacti 和 MRTG 等主流监控平台的数据存储、分析与可视化。面向运维工程师、DevOps 实践者及监控系统开发者,它解决高…

2026/10/18 8:41:19 阅读更多 →

最新新闻

2026课堂笔记录音工具推荐:实测5款热门APP,学生党别再踩坑了|TaoToken统一Key接入AI转写

2026课堂笔记录音工具推荐:实测5款热门APP,学生党别再踩坑了|TaoToken统一Key接入AI转写

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

2026/10/18 9:39:32 阅读更多 →
油井生产动态预测模型选型:五大时序模型横向对比与避坑指南

油井生产动态预测模型选型:五大时序模型横向对比与避坑指南

简介:面向石油工程师与数据科学研究者的深度学习油井预测源码项目,集成了CNN、RNN、LSTM、Self-Attention与Seq2Seq五种主流模型,用于油井产量与压力等时序数据的预测与效果对比,为解决油田高效生产难题提供完整技术方案。项目共包…

2026/10/18 9:39:32 阅读更多 →
系统整体优化思路:架构师如何从救火到体系化治理

系统整体优化思路:架构师如何从救火到体系化治理

做架构师这些年,被问得最多的一句话是:系统卡了,怎么优化?如果回答只有“加缓存、加机器”八个字,那基本还在开发思维里打转。真正意义上的系统整体优化思路,不是针对某个慢接口的救火行动,而是…

2026/10/18 9:39:32 阅读更多 →
LiteLLM 管理员日常运维手册:MASTER_KEY、config.yaml 与 UI 的 TaoToken 统一接入实践

LiteLLM 管理员日常运维手册:MASTER_KEY、config.yaml 与 UI 的 TaoToken 统一接入实践

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

2026/10/18 9:39:32 阅读更多 →
AI驱动宠物App开发:从登录页到生命阶段引擎的范式迁移

AI驱动宠物App开发:从登录页到生命阶段引擎的范式迁移

1. 为什么宠物App不用从“登录页”开始写?——重新定义AI驱动的项目起点很多人一听到“搭建新项目”,脑子里立刻浮现出:创建Git仓库、初始化React/Vue工程、配Webpack、搭ESLint、写第一个Login组件……这套流程像肌肉记忆一样刻在开发者骨子…

2026/10/18 9:39:32 阅读更多 →
数据分析师入门到实战:SQL+Python完整项目链路拆解

数据分析师入门到实战:SQL+Python完整项目链路拆解

如果你最近正在关注“数据分析师”这个方向,大概已经见过很多类似的视频标题:行业发展前景广阔,配套全套资料,带你从入门到精通。刷到这类内容的时候,大多数人第一反应是收藏,然后继续刷下一条。收藏夹里的…

2026/10/18 9:38:32 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →