尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
点云滤波全解析:直通、体素到统计滤波的PCL实操指南
点云处理这个系列写到第二篇终于轮到滤波了。很多刚接触点云的朋友一上来就急着做配准、分割、特征提取结果折腾半天效果都很别扭回头一看问题大半出在滤波这步没做到位。点云滤波不是“有没有用”的问题而是“怎么用对”的问题它决定了下游算法拿到的是干净数据还是垃圾数据。这篇就把滤波讲透从原理到PCL代码从参数调试到CloudCompare实操给你一条能直接落地的路径。适合刚入门点云处理的研究生、做激光雷达感知的工程师以及被噪声点折磨过的每一个开发者。1. 为什么点云处理的第一步往往是滤波1.1 原始点云到底有多“脏”先说个事实传感器采集到的原始点云几乎不可能直接用来做算法。激光雷达在扫描的时候玻璃幕墙会反射、雨雾会产生飘浮点、运动物体会产生拖影深度相机在物体边缘更是容易出现飞点。用Velodyne这类机械式雷达打一帧数据几十万甚至上百万个点里真正“可靠”的往往不是全部总有那么百分之几到百分之十几的点是错的——它们位置随机、密度稀疏、没有物理意义但如果不去处理后面的法线估计、配准、分割都会受影响。我举个例子你就明白了。做地面扫描的时候一辆车从旁边开过去雷达打过去会有一茬点跟着车辆轮廓走但如果这辆车是深色漆面部分光束就吸收了会产生空洞如果车窗是曲面玻璃反射点可能飞到完全离谱的位置有时候能飞到附近楼顶上去。这类离群点如果不滤波做RANSAC平面拟合的时候可能一个平面都拟合不干净因为几个乱飞的点把残差拉高了。1.2 滤波在整个点云处理流水线中的位置点云处理的标准流水线大概是这样的原始点云输入先做预处理然后才是特征提取、配准、分割、识别、建模这些重头戏。预处理阶段干的就是三件事去噪、降采样、提取感兴趣区域。这三件事全部可以归到“滤波”的范畴里。有人把滤波理解成“把噪声去掉”这一件事这个理解太窄了。实际工程里滤波更大的作用是控制数据规模和数据分布。举个例子一个室外扫描场景一帧可能有几千万个点你要直接跑ICP配准每次都算几十万的对应点哪怕算法再牛逼帧率也上不去。这时候体素滤波把点云压到十万、几万级配准速度立马上来精度损失在可控范围内。所以滤波在这条流水线里的位置不是“可选的预处理”而是“决定下游能否正常工作”的基础设施。1.3 滤波的三大目标去噪、降采样、ROI提取我把滤波的目标拆成三块你在做任何项目前先问自己我这步滤波到底想解决哪个问题第一是去噪。传感器本身产生的测量误差、环境干扰造成的离群点、多径效应造成的飞点这些“坏点”需要剔除对应的是统计滤波、半径滤波这类方法。第二是降采样。数据量太大算力扛不住需要用体素滤波、均匀采样这类方法把密度降下来同时尽量保留原始结构。第三是ROI提取也叫感兴趣区域提取。比如自动驾驶场景里我只关心前方50米、左右4米的区域那就先用直通滤波把范围外的点全干掉后面处理量立刻小一个量级。三种目标可能同时存在也可能只要其中一两个。实际项目里最常见的做法是先用直通滤波划定范围再用体素滤波降采样最后用统计滤波剔除残余离群点。这个组合能应对绝大多数场景。2. 常见滤波算法原理与选型逻辑2.1 直通滤波最粗暴也最划算的裁剪工具直通滤波的原理一句话就能说清楚指定一个轴比如Z轴和一个范围比如0到5米在这个范围之外的点点全部删除范围内的保留。就这么简单。它解决的是“背景太多”的问题。我做个室内SLAM天花板和地面之外的东西才是目标那就直接用直通滤波把Z轴范围设在激光雷达高度的上下区间做个道路目标识别直接把Z轴设成地面以上到3米之间把天空、树枝挡掉。这类操作消耗极小处理百万点云也就是几十毫秒的事是工程里最先能上手的滤波。直通滤波还可以选择反向操作就是保留范围之外的部分这在有些场景非常方便。比如我要把地面的点单独抠出来就先直通取出Z小于0.2米的区域剩下的点在做地面分割的时候用。注意这里的“反向”是setFilterLimitsNegative这个参数控制的PCL里默认是false改成true就是取反稍后会讲代码。2.2 体素滤波降采样的主力选手体素滤波的思路是把三维空间切成一个个小立方体每个立方体里所有的点用它们的重心来代替。这样立方体里的点从N个变成1个密度大幅下降而且因为用的是重心而不是任取一个点输出的点云还能保持原来的形状特征。体素滤波里面那个“小立方体”的边长就是leaf size可能是我见过的最重要的滤波参数。leaf太小滤波等于没滤数据量降不下去leaf太大点云就“糊”了细节特征全丢。怎么选后面专门讲。体素滤波的一个隐含好处是它能让点云密度变得均匀。原始点云往往是近处密、远处疏体素滤波不管原始密度多少每个格子最多只保留一个点输出密度自然就均匀了。这对后续法线估计特别重要法线估计依赖邻域搜索如果密度不均固定半径邻域里近处能搜到20个点远处只有2个点法线质量肯定不稳定。2.3 统计滤波去除离群点的经典方案统计滤波的原理也直观对每个点计算它到所有近邻点的平均距离。假设点云整体密度是均匀的那么绝大部分点的邻域平均距离应该落在一个高斯分布里那些离群体很远的点邻域平均距离会远大于均值我们就认为它是离群点把它删掉。这里有两个参数要调一个是近邻点的数量meanK一个是标准差倍数stddevMulThresh。判定公式大致是如果某点的平均距离 全局均值 阈值倍数 × 标准差就判定为离群。这么说可能有点抽象你把它理解成“班里大部分同学考了80分左右有个人考了5分那这个人大概率是来捣乱的”。统计滤波要找的就是这种“考5分”的离群点。统计滤波非常适合用来处理深度相机产生的飞点或者激光雷达打到烟雾、灰尘上的那类稀疏噪点。这类点的特征就是周围空旷、邻居少、距离远统计滤波一查一个准。2.4 半径滤波用密度判断真伪的纠察员半径滤波和统计滤波是邻居但思路略有不同。它在每个点周围画一个固定半径的球统计球内有多少个点如果点的数量少于阈值就把这个点视为孤立点删掉。半径滤波最典型的应用场景是“孤立小簇”的去噪。比如雷达扫描到一个电线杆的时候杆子主体上是密集的点但如果有一个反射点被弹到了离杆子几米远的地方它周围肯定凑不够邻居半径滤波就能精准地把它挑出来。统计滤波和半径滤波经常被放在一起比较。简单说统计滤波适合处理“稀疏的、孤立的”噪点半径滤波更适合处理“成片的、小规模的”异常点。实际项目里两个都跑一遍也不贵很多人就是毛估着各跑一次效果谁好用谁。2.5 其他常用滤波与选型对照除了上面四类PCL里还有条件滤波、双边滤波、地面滤波等一堆选择。条件滤波可以自由组合“在某个范围内”这种布尔条件本质上是一个可编程的直通滤波升级版双边滤波是平滑的同时保边缘常用来处理三维扫描中的粗糙表面但运算量比较大。做个选型对照表你在工程里对着选就行滤波方法核心思路典型用途主要代价耗时量级直通滤波坐标轴范围裁剪划定ROI、去除远处背景只处理规则范围极低体素滤波立方体重心替代降采样、均匀化密度细节损失低统计滤波邻域距离均值标准差剔除稀疏离群点meanK调参不当会误删中半径滤波固定半径内点数判断剔除孤立小簇半径设置靠经验中条件滤波自定义条件组合多条件联合裁剪逻辑繁琐低双边滤波保边缘平滑提升表面质量参数多、计算慢高3. PCL实操最常用滤波的代码逐段拆解3.1 环境准备与PCL版本选择PCLPoint Cloud Library是点云处理绕不开的库C接口编译起来比较折腾但功能确实全。个人建议直接用Ubuntu系统加APT安装效率最高sudo apt install libpcl-dev pcl-tools装完之后pcl_viewer可以直接看点云PCD文件非常方便调试。Windows下也可以装我见过不少人在VS里跑PCL的就是环境配置能折腾一整天不是特别推荐新手折腾。如果你不想折腾C编译PCL也有Python的绑定叫python-pcl但维护和文档都不太跟得上。我的建议是项目如果是练手或者快速验证用Python也行如果是要上线的正式项目还是用C版本性能和稳定性都更可控。下面代码我都按C写配了必要的头文件。你跑的时候把点云文件路径改成自己的就行。3.2 直通滤波的PCL实现直通滤波在PCL里对应的是pcl::PassThrough模板类。它的核心代码长这样#include pcl/filters/pass_through.h pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ); pcl::PointCloudpcl::PointXYZ::Ptr cloud_filtered(new pcl::PointCloudpcl::PointXYZ); // 假设cloud已经读入数据 pcl::PassThroughpcl::PointXYZ pass; pass.setInputCloud(cloud); pass.setFilterFieldName(z); // 沿Z轴裁剪 pass.setFilterLimits(0.1, 5.0); // 保留Z值在0.1到5.0之间的点 pass.filter(*cloud_filtered);setFilterFieldName可以填“x”“y”“z”也可以按强度字段I来剪。setFilterLimits接收两个浮点数单位是米。还有一个容易被忽略的参数是setFilterLimitsNegativepass.setFilterLimitsNegative(true);设为true之后逻辑反过来了保留的是范围之外的点。这个功能在抠地面、抠背景的时候特别方便不用先取出地面再反过来取一次。我的经验是直通滤波的边界别卡得太死。比如你要保留0到5米的点建议设成-0.2到5.2留一点余量。因为你要的是“尽量保留目标区域”边界卡太死容易把边缘的半截点切掉后续配准时会少重叠面。3.3 体素滤波的PCL实现体素滤波的类名是pcl::VoxelGrid核心参数就一个leaf size但用好它需要一点经验。代码是#include pcl/filters/voxel_grid.h pcl::VoxelGridpcl::PointXYZ voxel; voxel.setInputCloud(cloud); voxel.setLeafSize(0.05f, 0.05f, 0.05f); // 50mm的立方体网格 pcl::PointCloudpcl::PointXYZ::Ptr cloud_downsampled(new pcl::PointCloudpcl::PointXYZ); voxel.filter(*cloud_downsampled);leaf size三个值分别对应x、y、z方向上的格子边长一般三个方向设成一样只有在点云各向异性特别明显时才需要分开设。比如做立面扫描的时候Z方向可以设小一点保住层高细节XY方向可以设大一点降数据密度。关于体素滤波有个关键点值得多说一句它计算的是格子里所有点的重心而不是格子中心。重心坐标是原始点的平均位置所以滤波后的点云在几何形态上和原始点云非常接近这比随机选一个点要精确得多。也正因为如此体素滤波不会引入新的“形状错误”只会损失一些高频细节。实际用的时候leaf size的单位是米0.01就是1厘米0.05就是5厘米。我见过不少新手把leaf设成0.5甚至1.0结果点云变成了稀稀拉拉的几个点完全不能用。后面我会给一个选参数的经验公式。3.4 统计滤波的PCL实现统计滤波在PCL里叫pcl::StatisticalOutlierRemoval一般直接就缩写为SOR。核心参数是meanK和stddevMulThresh#include pcl/filters/statistical_outlier_removal.h pcl::StatisticalOutlierRemovalpcl::PointXYZ sor; sor.setInputCloud(cloud); sor.setMeanK(50); // 每个点用最近的50个邻居做统计 sor.setStddevMulThresh(1.0); // 标准差倍数阈值设为1.0 pcl::PointCloudpcl::PointXYZ::Ptr cloud_inliers(new pcl::PointCloudpcl::PointXYZ); pcl::PointCloudpcl::PointXYZ::Ptr cloud_outliers(new pcl::PointCloudpcl::PointXYZ); sor.filter(*cloud_inliers); // 内点 sor.setNegative(true); sor.filter(*cloud_outliers); // 离群点可用于调试filter得到的默认是内点也就是保留下来的正常点。如果想看看被删掉的点长什么样就再调一次setNegative(true)重新filter一下这个操作在调试参数的时候非常有用——你可以把outliers导出来看一眼确认删掉的是不是你想删的那些飞点。meanK这个参数的意思是“统计邻域时要看几个邻居”。设得太小比如5统计就不稳定可能把一个正常点误判成离群点设得太大比如200计算耗时增加而且会把边缘细节点也当离群点删掉。我平时比较常用的区间是20到50。stddevMulThresh设得越小越严格1.0大概会删掉分布尾部的点2.0则温和很多。从1.0开始调如果不满意再往上加。3.5 滤波参数选择的经验法则很多朋友问我滤波参数怎么选说实话没有万能公式但有几条判断路径。体素滤波的leaf size要根据点云最小结构特征来定。比如做机械零件的检测零件上有个5毫米的小孔那leaf就不能超过2毫米不然孔直接被填没了如果是做室内大场景建模对厘米级细节不敏感leaf设成3到5厘米都行。经验上leaf取“最小可接受特征尺寸”的1/2到1/3基本安全。统计滤波的参数我一般这样起手先设meanK30stddevMulThresh1.5跑出来看结果如果感觉有些噪声没去掉就把stddev降到1.0或者0.8如果感觉好点被误删了就把stddev升到2.0以上或者把meanK降低。这套组合拳基本上能应付大多数场景。调试参数最有效率的做法不是闭眼试而是把滤波前后的点云同时打开用不同颜色叠加显示一眼就能看出哪些地方被误删、哪些噪声没滤干净。PCL的pcl_viewer支持多个PCD文件同时显示CloudCompare把这个功能做得更直观接下来就讲它。4. CloudCompare可视化与参数试凑4.1 为什么调参前先在CloudCompare里看数据直接拿程序反复改参数跑PCL效率太低了。我现在的习惯是任何点云数据到手第一时间丢进CloudCompare打开看一遍。CloudCompare是免费开源的跨平台点云可视化工具对点云的支持非常到位。PCD、LAS、PLY、TXT这些格式它基本无缝加载。关键是你可以在里面直接看到点云的长宽高范围、点的数量、法线方向、颜色强度等各种属性还能实时旋转缩放看细节。调参前先摸一遍数据你心里就有数了这帧数据大约分布在哪里噪声是怎样的形态有没有明显的孤立点密度是均匀还是前密后疏。有了这些底子再去调滤波参数就是有的放矢不是瞎蒙。4.2 在CloudCompare里试跑滤波参数的流程CloudCompare的滤波操作分布在几个地方常用的有两个Tools Clean菜单下有一组噪声滤波工具点开之后能看到SOR统计滤波、Radius Outlier Removal半径滤波等算法基本和PCL是对应的Tools Subsample菜单下可以做空间采样对应PCL里的体素滤波思路只是它用的是随机采样和空间划分采样操作界面更直观。SOR在CloudCompare里的界面长这样会让你选邻域点数也就是meanK再给一个标准差倍数。你在界面上滑动参数旁边预览窗口可以实时看到滤波对点云的影响比编译运行PCL要快得多。调出满意的参数之后拿同样的参数回PCL里用结果基本一致因为底层算法是一致的。体素滤波在CloudCompare里没有直接用“体素”这个名称它叫Subsample其中“空间采样”模式会设定一个最小距离点之间靠得太近就会被剔除视觉上接近体素滤波的效果。但我自己的习惯是在CloudCompare里只是“看个大概”最终用的是PCL里的VoxelGrid因为它的重心替代算法对形状保留更友好。4.3 滤波后的保存与可视化联动CloudCompare里的导出功能很关键。滤波调好之后选中点云图层File Save可以保存成PCD、LAS、PLY等格式直接给PCL或者其他工具链用。那有人问hot word里提到的“cloudcompare怎么把点云保存成tif格式”这个我顺便说一下。点云本身是三维散点直接保存成TIF这种二维栅格格式是不行的你必须先把它转换成栅格数据。通常做法是在CloudCompare里先把点云栅格化Tools Projection Rasterize设置好格网大小导出一个带高度的2.5D栅格然后再保存成GeoTIFF或者其他栅格格式。这个流程在做地形扫描、树木高度分析的时候经常会用到本质是把三维点云投影到二维平面上每个格子的值取该格内点云的高度统计量。如果你在做机器人或自动驾驶相关的项目滤波后的点云一般要发到ROS里做可视化。方法是用PCL处理后把点云发布成PointCloud2消息然后用RVIZ里的PointCloud2显示插件订阅。你可以订阅原始点云和滤波后点云两个话题在RVIZ里用不同颜色叠加显示效果和CloudCompare类似但适合验证完整的感知流水线而不只是单独跑滤波算法。4.4 一个完整试参实例地面三维扫描点云拿一个具体例子把整套流程串一遍。假设我有一份地面扫描得到的点云大概500万个点范围是长80米、宽30米、高20米里面有明显的噪点天空方向有一片零散飞点地面附近有一层薄雾状的稀疏点目标区域里有一栋建筑的密集扫描点。我先在CloudCompare里打开这份PCD用框选工具看一眼分布确认噪点区域。然后先跑到PCL里用直通滤波把Z轴限制在0到15米这一步就能把高层飞点干掉一大半点云总数降到300万左右。接着看体素滤波这个场景不关心5厘米以下的细节leaf取0.05米降完到80万个点。最后跑统计滤波meanK30stddevMulThresh1.5把零星的离群点清掉最终剩75万个左右的可干净点云。这套流程下来运算量从500万降到75万配准速度提升一大截而且噪声对法线估计的影响明显小了很多。整个过程在CloudCompare里调试参数花了不到十分钟回PCL里固化成程序之后就一劳永逸了。5. 常见问题与排查技巧实录5.1 滤波后点云结构变形怎么办最典型的投诉是明明只是做了体素滤波结果物体表面出现了一层“颗粒”状的东西边缘轮廓也有锯齿感。这种问题十有八九是leaf size设太大了。体素滤波的本质是“用重心代替一群点”网格越粗代替造成的误差越大。解决办法也很直接算一下你的数据里最关键的那个特征尺寸是多少然后把leaf调成它的三分之一以内。比如你在做室内的家具识别桌腿直径是4厘米那leaf就不能超过2厘米否则两条相邻桌腿会糊成一坨。另外一个常用技巧是分步降采样。与其一步到位设个大leaf不如先设0.02再设0.05分两级降。两级降采样比一级降采样更能保留形状因为高频细节是逐步损失的而不是一次性全抹掉。5.2 统计滤波把正常点也删了统计滤波误删正常点的常见原因有两个。一是meanK设置太小全局统计不够稳定很多正常点的邻域平均距离波动大和离群点混在一起导致判断标准失真。二是点云本身密度差异极大近处密集、远处稀疏统计滤波天然对这种情况不友好因为稀疏区域的正常点平均邻域距离也会很大和离群点区分不开。如果你遇到密度差异很大的场景只用统计滤波是处理不干净的。可以考虑先做体素滤波把密度拉均匀再做统计滤波或者换成半径滤波用固定半径下邻域点数来判断对密度不敏感。再教一个实测有效的调试操作把被删掉的点输出出来和原图叠加看。如果被删的点明显围着目标物体轮廓一圈那就是阈值设太严了把stddevMulThresh放大就行。如果被删的点毫无规律、但确实都在远处稀疏区那说明问题出在原始数据密度上不是滤波本身的毛病。5.3 点云文件太大跑起来卡死点云动不动几千万个点普通PC算起来确实吃力。这里分享几个实用方案。第一步永远是直通滤波先把范围圈出来只保留感兴趣区域这步能减少的数据量往往是最多的。第二步才是体素滤波把密度降下来。这两步做完数据量通常能降到原来的十分之一甚至更低。第三步如果计算还是慢看看你的PCL编译模式。如果是Debug模式速度能慢上十倍以上必须改成Release如果是单线程跑可以试试PCL的TBB并行版本在CMake里开PCL_WITH_TBB选项体素滤波这类操作能明显提速。还有一招是提前对点云建KDTree很多滤波算法内部要用邻域搜索如果每次滤波都重新建树重复代价很大一次建树、多次复用能省不少时间。5.4 配准前滤波的坑最后重点说一下配准前的滤波这是最容易埋雷的地方。有人为了让配准跑得快直通滤波把范围裁得特别小结果两帧点云之间的重叠区域严重不足ICP直接发散。正确的做法是给配准留足重叠度至少保证30%到50%的重叠区域不被裁剪掉。统计滤波误删了特征点也是个坑。配准依赖的特征点往往在边缘、角落、曲率变化大的地方这类位置的邻域距离天然比平面点大统计滤波的判定标准很容易把它们当成离群点删掉。所以配准前的统计滤波阈值要放宽stddevMulThresh建议不低于2.0甚至直接不跑统计滤波只做体素滤波降采样就行。还有个细节我觉得值得记一笔体素滤波之后点云的坐标分布变了之前算过的法线、曲率、关键点描述子全部失效必须重新计算。地形点云配准、图像引导点云这类场景里经常有人拿着滤波前的法线去匹配怎么对都对不上其实就是忘了这茬。滤波之后统一重算法线再进配准这是流程问题不是算法问题。[个人经验结尾收束]做点云这么久我最大的感受是滤波这个环节太容易被低估但它恰恰是决定项目顺利与否的隐形门槛。参数没有万能配方真正有效的工作流是先理解数据再快速试错最后固化成可复用的处理链。一个小建议在项目里养成习惯每次滤波前后都把点云输出成对比可视化保存下来长期积累下来你会形成一套“看到什么噪点形状就知道该用什么滤波”的本能反应。这套能力比背任何参数表都管用。
RELATED

相关推荐

不同阶段读什么?十本经典编程书籍推荐与阅读路线

不同阶段读什么?十本经典编程书籍推荐与阅读路线

如果有人问我"推荐十本编程书籍",我会先反问一句:你现在卡在哪一层?这个问题的答案,决定了同样一本经典,在你手里是安慰剂还是手术刀。我见过太多人抱着《算法导论》啃了三个月,最后连一道业务里…

📅 2026/9/30 3:26:40
mysql之索引的介绍

mysql之索引的介绍

索引是一种数据结构,是用来帮助mysql高速获取数据。索引的优点:提高数据检索的效率,降低数据库的IO成本通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗索引的缺点:索引列也要占用空间索引大大…

📅 2026/9/30 3:26:40
HCIP路由控制基础:OSPF引入静态路由与filter-policy过滤实战

HCIP路由控制基础:OSPF引入静态路由与filter-policy过滤实战

做网络的人多多少少都遇到过这种场面:一套OSPF运行得好好的,突然有人在核心路由器上敲了一条 import-route static,全网路由表瞬间多出几百条明细路由,有些路由器开始折腾CPU,有些甚至把下一跳指向了一个根本不存在的地…

📅 2026/9/30 3:21:40
MORE NEWS

更多资讯

📰

YOLOv13改进策略【卷积层篇】| CVPR2024 UniRepLKNet Block,大核感受野的可重参数化卷积

本文基于 YOLOv13 官方仓库(iMoonLab/yolov13,ultralytics 8.3.63 fork) 实测整理,Windows/CPU 全程可跑。UniRepLKNet(Ding et al., CVPR 2024《UniRepLKNet: A Universal Perception Large-Kernel ConvNet》,官方源码 github.com/AILab-CVC/UniRepLKNet)给"大核卷…

📰

YOLOv13改进策略【卷积层篇】| CVPR2023 DCNv3 可变形卷积,采样点第三次进化

本文基于 YOLOv13 官方仓库(iMoonLab/yolov13,ultralytics 8.3.63 fork) 实测整理,Windows/CPU 全程可跑。DCNv3(Wang et al., CVPR 2023《InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions》,官方源码 github.com/OpenGVLab/…

📰

YOLOv13改进策略【卷积层篇】| 2024 MobileNetV4 UIB 万能倒残差,一块卷积通吃轻量微结构

本文基于 YOLOv13 官方仓库(iMoonLab/yolov13,ultralytics 8.3.63 fork) 实测整理,Windows/CPU 全程可跑。MobileNetV4(Qin et al., CVPR 2024 Workshop,《MobileNetV4: Universal Models for the Mobile Ecosystem》,arXiv 2404.10518;官方实现为 TensorFlow,无官方 …

📰

使用 Rube MCP 自动化 Aero Workflow:awesome-claude-skills 中 aero-workflow-automation Skill 实战指南

AI 技能AI 插件人工智能工作流自动化 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-claude-skills 点击…

📰

DGCharts(Charts 5.x)iOS/tvOS/macOS 图表库完全指南:从安装集成到八大图表实战

数据可视化图表库移动开发 【免费下载链接】Charts Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. 项目地址: https://gitcode.com/gh_mirrors/cha/Charts 点击查看 免费下载 DGCharts 是著名 Android 图表库 MPAndroi…

📰

security-audit-skill HTTP 协议与身份认证安全审计指南:从请求分帧到 mTLS 的系统化狩猎方法

AI 技能应用安全 【免费下载链接】security-audit-skill A coding-agent skill for multi-phase security audits with independently verified, machine-readable findings 项目地址: https://gitcode.com/GitHub_Trending/se/security-audit-skill 点击查看 免费下…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬