当前位置: 首页 > article >正文

【图像处理基石】立体匹配的经典算法有哪些?

在这里插入图片描述

1. 立体匹配的经典算法有哪些?

立体匹配是计算机视觉中从双目图像中获取深度信息的关键技术,其经典算法按技术路线可分为以下几类,每类包含若干代表性方法:

1.1 基于区域的匹配算法(Local Methods)

通过比较图像块的相似性确定对应点,计算简单但易受纹理、光照影响。

  1. 块匹配(Block Matching)
    • 原理:以某像素为中心取固定大小的窗口(如5×5),在另一图像的极线范围内搜索相似窗口,窗口相似度决定匹配代价。
    • 变种
      • SAD(Sum of Absolute Differences):计算两窗口像素灰度差的绝对值之和,计算高效但对噪声敏感。
      • SSD(Sum of Squared Differences):计算灰度差的平方和,放大噪声影响但适合高斯噪声场景。
      • NCC(Normalized Cross-Correlation):归一化互相关,通过标准化处理消除光照影响,鲁棒性更强。
  2. ** Census 变换**
    • 原理:将中心像素周围的灰度值转化为二进制编码(如大于中心像素记为1,否则为0),通过汉明距离衡量编码相似度,对光照变化不敏感。

1.2 基于特征的匹配算法(Feature-Based Methods)

先提取图像中的显著特征(如角点、边缘),再对特征点进行匹配,减少计算量但依赖特征质量。

  1. 角点匹配(如Harris角点)
    • 步骤:用Harris等角点检测器提取特征点,再通过特征点邻域灰度或梯度信息(如描述子)进行匹配。
  2. SIFT(尺度不变特征变换)与SURF
    • 原理:提取尺度、旋转不变的特征点,生成局部梯度方向直方图作为描述子,通过最近邻匹配(NN)或双向匹配(NNDR)确定对应点。
    • 特点:对尺度、旋转、光照变化鲁棒,但计算复杂度高,常用于非实时场景。

1.3 基于相位的匹配算法(Phase-Based Methods)

利用图像的相位信息(而非幅值)进行匹配,对噪声和光照不敏感,但需多尺度分析。

  • Gabor滤波器匹配
    • 原理:通过Gabor滤波器组提取多尺度、多方向的相位信息,利用相位一致性(Phase Congruency)确定匹配点,抗噪性强但计算复杂。

1.4 全局优化算法(Global Optimization Methods)

通过构建能量函数并全局优化(如最小化视差不连续代价),获取更平滑的视差图。

  1. 动态规划(Dynamic Programming, DP)
    • 原理:将一维极线匹配问题转化为路径优化问题,通过动态规划寻找最小代价路径,但二维场景中存在“跨扫描线不连续”问题。
  2. 图割(Graph Cut)与置信传播(Belief Propagation, BP)
    • 图割:将立体匹配建模为马尔可夫随机场(MRF),通过最小化能量函数(数据项+平滑项)求解视差,利用最大流最小割算法高效优化。
    • 置信传播:通过迭代传递节点间的置信度信息,逐步收敛到全局最优视差,适合复杂场景但计算量较大。
  3. 半全局匹配(Semi-Global Matching, SGM)
    • 原理:结合局部匹配与全局优化,通过多方向路径(如8邻域)的代价聚合近似全局优化,平衡精度与效率,是经典实时算法(如KITTI数据集常用基线方法)。

1.5 早期经典理论与其他方法

  1. Marr-Poggio算法
    • 历史地位:计算机视觉早期理论,基于零交叉点(边缘)匹配,提出“唯一性约束”“连续性约束”等立体匹配基本假设。
  2. 基于边缘的匹配(Edge-Based Matching)
    • 原理:先提取图像边缘,再通过边缘的几何结构(如长度、角度)进行匹配,适用于低纹理场景。

1.6 总结:经典算法对比

算法类型代表方法优点缺点适用场景
区域匹配SAD/NCC计算快、实现简单弱纹理区域易误匹配实时性要求高的场景
特征匹配SIFT鲁棒性强、适合大视角变化计算慢、需预处理非实时、复杂场景
全局优化图割/SGM视差平滑、精度高计算复杂度高(图割)/参数敏感(SGM)高精度三维重建
相位匹配Gabor滤波器抗噪性强多尺度计算复杂噪声敏感场景

这些算法奠定了立体匹配的理论基础,后续深度学习方法(如GC-Net、PSMNet)多基于经典算法的约束条件(如视差连续性)进行改进。理解经典算法有助于深入掌握立体视觉的核心问题与优化思路。

2. 用python实现基于特征的立体匹配算法

下面是一个基于OpenCV的Python实现,展示了如何使用SIFT特征和RANSAC算法进行立体匹配并计算视差图。

import cv2
import numpy as np
import matplotlib.pyplot as pltdef feature_based_stereo_matching(img_left_path, img_right_path, min_matches=10):# 读取图像img_left = cv2.imread(img_left_path, cv2.IMREAD_GRAYSCALE)img_right = cv2.imread(img_right_path, cv2.IMREAD_GRAYSCALE)if img_left is None or img_right is None:print("Error: Could not load images.")return None, None, None# 初始化SIFT检测器sift = cv2.SIFT_create()# 检测关键点和计算描述符kp1, des1 = sift.detectAndCompute(img_left, None)kp2, des2 = sift.detectAndCompute(img_right, None)# 使用FLANN匹配器FLANN_INDEX_KDTREE = 1index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)search_params = dict(checks=50)flann = cv2.FlannBasedMatcher(index_params, search_params)matches = flann.knnMatch(des1, des2, k=2)# 应用比率测试以筛选良好匹配点good_matches = []for m, n in matches:if m.distance < 0.7 * n.distance:good_matches.append(m)if len(good_matches) < min_matches:print(f"Error: Not enough matches are found - {len(good_matches)}/{min_matches}")return None, None, None# 提取匹配点的坐标src_pts = np.float32([kp1[m.queryIdx].pt for m in good_matches]).reshape(-1, 1, 2)dst_pts = np.float32([kp2[m.trainIdx].pt for m in good_matches]).reshape(-1, 1, 2)# 使用RANSAC算法估计基础矩阵F, mask = cv2.findFundamentalMat(src_pts, dst_pts, cv2.FM_RANSAC, 3, 0.99)# 只保留内点src_pts = src_pts[mask.ravel() == 1]dst_pts = dst_pts[mask.ravel() == 1]# 计算单应性矩阵进行图像校正(简化版)h1, w1 = img_left.shapeh2, w2 = img_right.shape_, H1, H2 = cv2.stereoRectifyUncalibrated(src_pts, dst_pts, F, imgSize=(w1, h1))# 校正图像img_left_rectified = cv2.warpPerspective(img_left, H1, (w1, h1))img_right_rectified = cv2.warpPerspective(img_right, H2, (w2, h2))# 使用BM算法计算视差图stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)disparity = stereo.compute(img_left_rectified, img_right_rectified)# 归一化视差图以便显示disparity_normalized = cv2.normalize(disparity, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)return img_left_rectified, img_right_rectified, disparity_normalized# 示例用法
if __name__ == "__main__":# 请替换为你的图像路径img_left_path = "left_image.jpg"img_right_path = "right_image.jpg"img_left_rectified, img_right_rectified, disparity = feature_based_stereo_matching(img_left_path, img_right_path)if img_left_rectified is not None:# 显示结果plt.figure(figsize=(15, 10))plt.subplot(221)plt.imshow(cv2.cvtColor(cv2.imread(img_left_path), cv2.COLOR_BGR2RGB))plt.title('原始左图')plt.axis('off')plt.subplot(222)plt.imshow(cv2.cvtColor(cv2.imread(img_right_path), cv2.COLOR_BGR2RGB))plt.title('原始右图')plt.axis('off')plt.subplot(223)plt.imshow(img_left_rectified, cmap='gray')plt.title('校正后左图')plt.axis('off')plt.subplot(224)plt.imshow(disparity, cmap='jet')plt.title('视差图')plt.axis('off')plt.tight_layout()plt.show()

这个实现包含以下主要步骤:

  1. 特征提取:使用SIFT算法检测关键点并计算描述符
  2. 特征匹配:使用FLANN匹配器和比率测试筛选可靠匹配点
  3. 几何验证:使用RANSAC算法估计基础矩阵并过滤外点
  4. 图像校正:计算单应性矩阵并校正图像,使对应点位于同一水平线上
  5. 视差计算:使用块匹配算法(BM)计算校正后图像的视差图
  6. 结果可视化:显示原始图像、校正图像和视差图

你可以通过调整参数来优化匹配效果,例如:

  • 调整SIFT的关键点检测参数
  • 修改FLANN匹配器的搜索参数
  • 调整BM算法的numDisparities和blockSize参数
  • 尝试不同的视差计算算法如SGBM

使用时请确保已安装OpenCV和matplotlib库,并准备好一对立体图像。

3. 常用的立体匹配数据集有哪些?

以下是一些广泛用于测试立体匹配算法的公开数据集,涵盖不同场景、分辨率和复杂度,适合学术研究和工业应用:

3.1 通用场景经典数据集

1. KITTI(自动驾驶场景)
  • 特点
    • 真实街景数据,包含车载双目摄像头采集的图像对,同步激光雷达点云作为高精度地面真值。
    • 场景覆盖城市、乡村、高速公路,包含动态车辆、行人及复杂光照条件,适合评估算法在真实环境中的鲁棒性。
    • 2020年后更新的KITTI-360新增360度激光扫描和更多传感器数据,支持更复杂的三维重建任务。
  • 数据规模
    • 2012版:194对训练图像,195对测试图像,分辨率1242×375。
    • 2015版:200对训练图像,200对测试图像,分辨率1242×375。
  • 评估工具
    • 官方在线评估平台(cvlibs.net),支持视差误差(D1-all)、遮挡区域误差等指标。
  • 适用场景:自动驾驶、实时立体匹配算法验证。
2. Middlebury(高精度学术基准)
  • 特点
    • 由结构光扫描生成高精度视差真值,包含低纹理、遮挡、深度不连续等挑战性场景。
    • 数据集分为不同难度等级(如Teddy、Cones),并提供无纹理区域、遮挡区域的掩码,便于细粒度评估。
    • 2024年更新后新增高分辨率图像和多视角数据,支持深度学习算法测试。
  • 数据规模
    • 2001版:6组平面场景。
    • 2014版:12组复杂场景,分辨率最高1600×1200。
  • 评估工具
    • 在线评估系统(vision.middlebury.edu/stereo),支持均方根误差(RMSE)、错误像素比例(D1)等指标。
  • 适用场景:算法精度对比、学术论文基线测试。
3. ETH3D(多视角高分辨率)
  • 特点
    • 包含室内外复杂场景(如建筑物、自然景观)的多视角图像,由DSLR相机和移动设备采集,分辨率高达300万像素。
    • 地面真值通过激光扫描仪生成,支持密集点云和深度图评估。
  • 数据规模
    • 47个灰度图场景(27训练,20测试),平均分辨率3×10⁵像素。
  • 评估工具
    • 官方提供的脚本可计算视差误差和三维重建精度。
  • 适用场景:多视图立体匹配、高分辨率场景分析。

3.2 合成与大规模训练数据集

1. SceneFlow(合成场景流)
  • 特点
    • 由合成图像生成,包含3万多对训练图像,提供场景流(动态物体运动)的地面真值,适合深度学习模型预训练。
    • 场景覆盖交通、室内、自然等,可模拟不同光照和动态物体运动。
  • 数据规模
    • 35,454对训练图像,分辨率1242×375。
  • 评估工具
    • 官方提供的Python工具包支持视差和场景流误差计算。
  • 适用场景:深度立体匹配网络训练、动态场景算法开发。
2. BlendedMVS(多视图合成)
  • 特点
    • 包含113个真实场景的合成多视图图像,覆盖建筑、雕塑等,提供稠密点云和纹理网格。
    • 支持多分辨率数据(低分辨率768×576,高分辨率2048×1536),适合训练多视图立体匹配模型。
  • 数据规模
    • 17k训练样本,高分辨率数据量达156GB。
  • 评估工具
    • 官方提供MVSNet格式数据和评估脚本。
  • 适用场景:多视图立体匹配、三维重建算法研究。

3.3 特殊场景与挑战数据集

1. Tanks and Temples(复杂户外场景)
  • 特点
    • 包含14个高分辨率室外场景(如雕塑、大型建筑),测试集分为中级和高级难度,覆盖复杂几何结构和光照条件。
    • 提供激光扫描点云作为真值,适合评估算法在极端场景下的性能。
  • 数据规模
    • 训练集7个场景,测试集14个场景,分辨率最高4096×3072。
  • 评估工具
    • 官方提供的3D重建评估工具(如COLMAP)可计算点云完整性和准确性。
  • 适用场景:大规模三维重建、复杂场景立体匹配。
2. UAVStereo(无人机低空场景)
  • 特点
    • 首个无人机低空场景立体匹配数据集,包含3.4万对图像,覆盖城市、乡村、森林等场景,提供多分辨率数据(0.5m至20m地面采样距离)。
    • 适合测试算法在大视差、低纹理区域的表现。
  • 数据规模
    • 34,000+立体图像对,分辨率最高4096×3072。
  • 评估工具
    • 官方提供视差图和点云真值,支持误差计算。
  • 适用场景:无人机导航、遥感图像分析。
3. UWStereo(水下场景)
  • 特点
    • 合成水下立体数据集,包含珊瑚、沉船、工业机器人等场景,模拟水下低可见度、散射等复杂环境。
    • 提供密集视差注释,适合研究水下机器人视觉算法。
  • 数据规模
    • 29,568对立体图像,分辨率1920×1080。
  • 评估工具
    • 官方提供的评估脚本可计算水下场景的匹配误差。
  • 适用场景:水下机器人、海洋勘探。

3.4 其他特色数据集

1. DTU(室内多视图)
  • 特点
    • 室内物体多视图数据集,包含128个场景,每个场景49视角,提供激光扫描点云作为真值,适合多视图立体匹配研究。
  • 数据规模
    • 128个场景,分辨率1600×1200。
  • 评估工具
    • 官方提供的MVS评估工具支持点云精度计算。
  • 适用场景:多视图几何、三维重建。
2. ISPRS(遥感图像)
  • 特点
    • 基于航空影像的立体匹配数据集,包含核线校正图像和LiDAR点云,适合遥感测绘应用。
  • 数据规模
    • 20幅图像,分辨率11位深度,地面采样距离8厘米。
  • 评估工具
    • 官方提供的LiDAR点云可用于验证视差精度。
  • 适用场景:遥感测绘、地理信息系统。

3.5 数据集对比与选择建议

数据集场景类型分辨率地面真值精度动态物体适用算法类型
KITTI自动驾驶街景1242×375激光雷达点云实时算法、深度学习
Middlebury高精度学术场景最高1600×1200结构光扫描传统算法、精度对比
ETH3D多视角复杂场景3×10⁵像素激光扫描多视图匹配、高分辨率分析
SceneFlow合成动态场景1242×375合成标注深度学习预训练、场景流
Tanks and Temples大型户外4096×3072激光扫描复杂场景三维重建
UAVStereo无人机低空4096×3072多传感器融合遥感、低空导航
UWStereo水下环境1920×1080合成标注水下机器人、海洋探测

下载与使用资源

  • KITTI:cvlibs.net/datasets/kitti
  • Middlebury:vision.middlebury.edu/stereo
  • ETH3D:eth3d.net
  • SceneFlow:lmb.informatik.uni-freiburg.de/resources/datasets/SceneFlow
  • BlendedMVS:github.com/YoYo000/blendedmvs
  • Tanks and Temples:tanksandtemples.org
  • UAVStereo:github.com/HIT-SC-Lab/UAVStereo
  • UWStereo:selectdataset.com/dataset/9401eadce5b9558d956bb568def9449a

根据算法需求选择合适的数据集:

  • 实时性优先:KITTI、UAVStereo。
  • 高精度对比:Middlebury、ETH3D。
  • 深度学习训练:SceneFlow、BlendedMVS。
  • 复杂场景挑战:Tanks and Temples、UWStereo。

相关文章:

【图像处理基石】立体匹配的经典算法有哪些?

1. 立体匹配的经典算法有哪些&#xff1f; 立体匹配是计算机视觉中从双目图像中获取深度信息的关键技术&#xff0c;其经典算法按技术路线可分为以下几类&#xff0c;每类包含若干代表性方法&#xff1a; 1.1 基于区域的匹配算法&#xff08;Local Methods&#xff09; 通过…...

day12 leetcode-hot100-19(矩阵2)

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 1.模拟路径 思路&#xff1a;模拟旋转的路径 &#xff08;1&#xff09;设计上下左右方向控制器以及边界。比如zy1向右&#xff0c;zy-1向左&#xff1b;sx1向上&#xff0c;sx-1向下。上边界0&#xff0c;下边界hang-1&a…...

将Java应用集成到CI/CD管道:从理论到生产实践

在2025年的软件开发领域&#xff0c;持续集成与持续部署&#xff08;CI/CD&#xff09;已成为敏捷开发和DevOps的核心实践。根据2024年DevOps报告&#xff0c;85%的企业通过CI/CD管道实现了交付周期缩短50%以上&#xff0c;特别是在金融、电商和SaaS行业。Java&#xff0c;作为…...

密钥管理系统在存储加密场景中的深度实践:以TDE透明加密守护文件服务器安全

引言&#xff1a;数据泄露阴影下的存储加密革命 在数字化转型的深水区&#xff0c;企业数据资产正面临前所未有的安全挑战。据IBM《2025年数据泄露成本报告》显示&#xff0c;全球单次数据泄露事件平均成本已达465万美元&#xff0c;其中存储介质丢失或被盗导致的损失占比高达…...

webpack打包基本配置

需要的文件 具体代码 webpack.config.js const path require(path);const HTMLWebpackPlugin require(html-webpack-plugin);const {CleanWebpackPlugin} require(clean-webpack-plugin); module.exports {mode: production,entry: "./src/index.ts",output: {…...

酷派Cool20/20S/30/40手机安装Play商店-谷歌三件套-GMS方法

酷派Cool系列主打低端市场&#xff0c;系统无任何GMS程序&#xff0c;也不支持直接开启或者安装谷歌服务等功能&#xff0c;对于国内部分经常使用谷歌服务商店的小伙伴非常不友好。涉及机型有酷派Cool20/Cool20S /30/40/50/60等旗下多个设备。好在这些机型运行的系统都是安卓11…...

LabVIEW旋转机械智能监测诊断系统

采用 LabVIEW 开发旋转机械智能监测与故障诊断系统&#xff0c;通过集品牌硬件与先进信号处理技术&#xff0c;实现旋转机械振动信号的实时采集、分析及故障预警。系统突破传统监测手段的局限性&#xff0c;解决了复杂工业环境下信号干扰强、故障特征提取难等问题&#xff0c;为…...

数据结构 -- 判断正误

1、栈只能顺序存储。 答案&#xff1a; 错误 原因 栈是一种 逻辑结构&#xff0c;表示“后进先出”&#xff08;LIFO&#xff09;的操作规则。栈的实现方式不限于顺序存储&#xff0c;还可以使用链式存储。 顺序存储&#xff1a;使用数组实现栈&#xff0c;称为顺序栈。链式…...

vue3前端实现一键复制,wangeditor富文本复制

首先需要拿到要复制的内容&#xff0c;然后调用https的navigator.clipboard方法进行复制&#xff0c;但是这个因为浏览器策略只能在本地localhost和https环境下才能生效&#xff0c;http环境访问不到这个方法&#xff0c;在http环境在可以使用传统方式创建 textarea 进行复制 …...

小白畅通Linux之旅-----Linux进程管理

目录 一、进程查看命令 1、pstree 2、ps 3、pgrep 4、top、htop 二、进程管理命令 1、kill 2、pkill 和 killall 三、进程类型 1、前台进程 2、后台进程 一、进程查看命令 1、pstree 用于查看进程树之间的关系&#xff0c;谁是父进程&#xff0c;谁是子进程&#…...

【芯片设计中的跨时钟域信号处理:攻克亚稳态的终极指南】

在当今芯片设计中&#xff0c;多时钟域已成为常态。从手机SoC到航天级FPGA&#xff0c;不同功能模块运行在各自的时钟频率下&#xff0c;时钟域间的信号交互如同“语言不通”的对话&#xff0c;稍有不慎就会引发亚稳态、数据丢失等问题。这些隐患轻则导致功能异常&#xff0c;重…...

接地气的方式认识JVM(一)

最近在学jvm&#xff0c;浮于表面的学了之后&#xff0c;发现jvm并没有我想象中的那么神秘&#xff0c;这篇文章将会用接地气的方式来说一说这些jvm的相关概念以及名词解释。 带着下面两个问题来阅读 认识了解JVM大致有什么在代码运行时的都在背后做了什么 JVM是个啥&#xf…...

教师申报书课题——项目名称: 基于DeepSeek-R1与飞书妙记的课堂话语智能分析实践计划

明白了!针对教师个人能力范围(无需编程、无需服务器、零预算),我设计一个纯手工+免费工具组合的极简技术方案,用飞书基础功能和DeepSeek网页版就能实现核心分析。申报书重点突出 “轻量、易用、快速启动”。 项目申报书(极简个人实践版) 项目名称: 基于DeepSeek-R1与飞…...

JAVA:Kafka 消息可靠性详解与实践样例

🧱 1、简述 Apache Kafka 是高吞吐、可扩展的流处理平台,在分布式架构中广泛应用于日志采集、事件驱动和微服务解耦场景。但在使用过程中,消息是否会丢?何时丢?如何防止丢? 是很多开发者关心的问题。 Kafka 提供了一套完整的机制来保障消息从生产者 ➜ Broker ➜ 消费…...

【前端】Twemoji(Twitter Emoji)

目录 注意使用Vue / React 项目 验证 Twemoji 的作用&#xff1a; Twemoji 会把你网页/应用中的 Emoji 字符&#xff08;如 &#x1f604;&#xff09;自动替换为 Twitter 风格的图片&#xff08;SVG/PNG&#xff09;&#xff1b; 它不依赖系统字体&#xff0c;因此在 Android、…...

Electron 桌面程序读取dll动态库

序幕&#xff1a;被GFW狙击的第一次构建 当我在工位上输入npm install electron时&#xff0c;控制台跳出的红色警报如同数字柏林墙上的一道弹痕&#xff1a; Error: connect ETIMEDOUT 104.20.22.46:443 网络问题不用愁&#xff0c;请移步我的另外文章进行配置&#xff1a;…...

实时技术对比:SSE vs WebSocket vs Long Polling

早期网站仅展示静态内容&#xff0c;而如今我们更期望&#xff1a;实时更新、即时聊天、通知推送和动态仪表盘。 那么要如何实现实时的用户体验呢&#xff1f;三大经典技术各显神通&#xff1a; • SSE&#xff08;Server-Sent Events&#xff09;&#xff1a;轻量级单向数据…...

js 手写promise

const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {#status PENDING;#result undefined;#handler undefined;constructor(executor) {// 不能写在外面&#xff0c;因为this指向会出问题const resolve (data) > {this.#ch…...

HTTP 与 HTTPS 深度解析:原理、实践与大型项目应用

1. HTTP 与 HTTPS 基础概念 1.1 HTTP&#xff08;超文本传输协议&#xff09; 定义&#xff1a;应用层协议&#xff0c;基于 TCP/IP 通信&#xff0c;默认端口 80 特点&#xff1a; 无状态协议&#xff08;需 Cookie/Session 维护状态&#xff09; 明文传输&#xff08;易被…...

QT6.9中opencv引用路径的其中一种设置

RC_ICONSappimage.ico unix|win32: LIBS -L$$PWD/opencv455/vc15/lib/ -lopencv_world455 INCLUDEPATH $$PWD/opencv455/include DEPENDPATH $$PWD/opencv455/include RC_ICONS为指定图标文件&#xff0c;只写图标名appimage.ico&#xff0c;那么一般和pro文件在同一目录…...

k8s pod启动失败问题排查

1. 查看日志 kubectl describe pod xxx -n xxx kubectl logs podname -n xxx --tail200 2. 镜像 到pod所在主机检查pod所需的镜像是否能成功拉取&#xff08;docker images&#xff09; 3.硬件资源 检查pod所在服务器的磁盘空间是否被占满&#xff08;df -h 和 du -sh /&a…...

Java类中各部分内容的加载执行顺序

目录 1. 静态初始化&#xff08;类加载阶段&#xff09; 示例代码 输出 2. 实例初始化&#xff08;对象创建阶段&#xff09; 详细顺序 示例代码 输出 3. 关键规则总结 4. 注意事项 5. 完整流程图 在Java中&#xff0c;类的实例化过程&#xff08;对象创建&#xff0…...

git提交信息错误,如何修改远程git提交的备注信息

有时候我们在git提交时没有按照规范提交。此时就需要修改远程git提交的备注信息。 一、修改最近几次提交 首先确保当前分支没有未提交的更改 git status使用交互式rebase修改历史记录&#xff08;假设要修改最近3次提交&#xff09; git rebase -i HEAD~3在打开的编辑器中&…...

API Gateway CLI 实操入门笔记(基于 LocalStack)

API Gateway CLI 实操入门笔记&#xff08;基于 LocalStack&#xff09; Categories: Cloud Google Rank Proof: No Last edited time: May 26, 2025 4:18 AM Status: Early draft Tags: aws 主要先简单的走一下流程&#xff0c;熟悉一下在 terminal 操作 API Gateway local…...

基于MATLAB实现SFA(Slow Feature Analysis,慢特征分析)算法

基于MATLAB实现SFA&#xff08;Slow Feature Analysis&#xff0c;慢特征分析&#xff09;算法的代码示例&#xff1a; % SFA慢特征分析 % 需要signal处理工具箱% 生成示例信号 t linspace(0,1,1000); x sin(2*pi*10*t) sin(2*pi*20*t) randn(size(t));% 定义滤波器 b fi…...

数据分析案例-基于红米和华为手机的用户评论分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

leetcode617.合并二叉树:递归思想下的树结构融合艺术

一、题目深度解析与核心规则 题目描述 合并两棵二叉树是一个经典的树结构操作问题&#xff0c;题目要求我们将两棵二叉树合并成一棵新二叉树。合并规则如下&#xff1a; 若两棵树的对应节点都存在&#xff0c;则将两个节点的值相加作为新节点的值若其中一棵树的节点存在&…...

深度学习入门:从零搭建你的第一个神经网络

深度学习入门&#xff1a;从零搭建你的第一个神经网络 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 深度学习入门&#xff1a;从零搭建你的第一个神经网络摘要引言第一章&#xff1a;神经网络基础原理1.1 神经元…...

【HTML-13】HTML表格合并技术详解:打造专业数据展示

表格是HTML中展示结构化数据的重要元素&#xff0c;而表格合并则是提升表格表现力的关键技术。本文将全面介绍HTML中的表格合并方法&#xff0c;帮助您创建更专业、更灵活的数据展示界面。 1. 表格合并基础概念 在HTML中&#xff0c;表格合并主要通过两个属性实现&#xff1a…...

鸿蒙OSUniApp 制作自定义的进度条组件#三方框架 #Uniapp

使用 UniApp 制作自定义的进度条组件 在移动应用开发中&#xff0c;进度条是非常常见的 UI 组件&#xff0c;无论是文件上传、下载、任务进度还是表单填写反馈&#xff0c;进度条都能为用户提供直观的进度提示。虽然 UniApp 提供了一些基础的进度条能力&#xff0c;但在实际项…...