经典文献阅读之--MGS-SLAM(单目稀疏跟踪和高斯映射与深度平滑正则化)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。通过链接注册并联系客服,可以获得20元代金券(相当于6-7H的免费GPU资源)。欢迎大家体验一下~

0. 简介

本文介绍了一种基于高斯喷洒的密集视觉同时定位与地图构建(VSLAM)新框架。最近基于高斯喷洒的SLAM取得了有希望的结果,但依赖于RGB-D输入且在跟踪方面较弱。为了解决这些局限性,《MGS-SLAM: Monocular Sparse Tracking and Gaussian Mapping with Depth Smooth Regularization》首次独特地将先进的稀疏视觉里程计与密集高斯喷洒场景表示相结合,从而消除了基于高斯喷洒的SLAM系统对深度图的依赖并增强了跟踪的鲁棒性。在这里,稀疏视觉里程计在RGB流中跟踪相机姿态,而高斯喷洒负责地图重建。这些组件通过多视图立体(MVS)深度估计网络相互连接。我们提出了一种深度平滑损失,以减少估计深度图的负面影响。此外,稀疏视觉里程计和密集高斯地图之间的尺度一致性通过稀疏-密集调整环(SDAR)得以保持。相关代码已经在Github开源了


1. 主要贡献

所提出系统的关键贡献总结如下:

  • 首次引入结合稀疏视觉里程计和三维高斯喷洒的SLAM系统,实现仅使用RGB图像作为输入构建密集高斯地图。
  • 开发了一种预训练的多视图立体(MVS)深度估计网络,该网络利用稀疏里程计关键帧及其姿态来估计先验深度图,从而为高斯地图重建提供关键的几何约束。
  • 提出了一种几何深度平滑损失方法,以最小化估计的先验深度图不准确性对高斯地图的不利影响,并指导其对准到正确的几何位置。
  • 提出了一种稀疏-密集调整环(SDAR)策略,以统一稀疏视觉里程计和密集高斯地图的尺度一致性。

2. 方法

我们的方法使用RGB图像作为输入,并行执行相机姿态估计和逼真的密集地图构建。正如图2所示,该方法的核心思想是使用预训练的多视图立体(MVS)网络将单目稀疏视觉里程计与密集高斯喷洒地图相结合,并通过稀疏-密集调整环(SDAR)保持稀疏点云地图与密集高斯地图之间的尺度一致性。

在这里插入图片描述

图2. 系统流程。系统以RGB视频流作为输入,并行运行前端和后端处理。在前端,稀疏视觉里程计从图像中提取特征块以估计姿态。这些估计的姿态和图像作为输入被传递到预训练的多视图立体(MVS)网络,该网络估计先验深度图。在后端,估计的先验深度图和图像结合前端提供的姿态被用作监督信息来构建高斯地图。前端和后端通过稀疏-密集调整环(SDAR)策略保持尺度一致性。

具体来说,在前端部分,通过跟踪RGB图像为后端提供粗略的相机姿态和先验深度图(参见III-A节)。在后端部分,使用高斯表示密集地图,并联合优化地图和前端提供的粗略姿态(参见III-B节)。在系统组件部分,报告系统初始化、系统关键帧选择以及通过SDAR策略校正稀疏点云地图与密集高斯地图之间的尺度(参见III-C节)。

3. 稀疏视觉里程计前端

为了实现更精确的相机姿态跟踪并在后端映射之前提供密集深度几何信息,我们的框架前端基于深度特征块视觉里程计(Deep Patch Visual Odometry, DPVO)算法【25】构建。DPVO是一种基于学习的稀疏单目视觉里程计方法,通过在特征块图上构建和优化误差来估计相机姿态并构建稀疏点云地图

给定输入的RGB视频流,场景表示为一组相机姿态 T ∈ S E ( 3 ) N T \in SE(3)^N TSE(3)N 和一系列从图像中提取的方形图像特征块 P P P,并将它们添加到双向特征块图中,该图将特征块与帧连接起来。方形特征块 k k k 从帧 i i i 在帧 j j j 中的重投影可以表示为:

p j = K T i j p i \mathbf{p}_j = \mathbf{K} \mathbf{T}_{ij} \mathbf{p}_i pj=KTijpi

其中, K \mathbf{K} K 是相机内参矩阵, T i j \mathbf{T}_{ij} Tij 是从帧 i i i 到帧 j j j 的变换矩阵, p i \mathbf{p}_i pi p j \mathbf{p}_j pj 分别是特征块在帧 i i i 和帧 j j j 中的坐标。

通过这种方式,DPVO 在特征块图上优化重投影误差,从而精确估计相机的姿态,并为后端的密集映射提供稀疏的几何深度信息。

P k i j ∼ K T j T i − 1 K − 1 P k i \begin{equation} \mathbf{P}_k^{ij} \sim \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k^i \end{equation} PkijKTjTi1K1Pki

其中, K \mathbf{K} K 是相机内参矩阵, P k i = [ u , v , 1 , d ] T \mathbf{P}^i_k = [u, v, 1, d]^T Pki=[u,v,1,d]T 表示帧 i i i 中的特征块 k k k,[u, v] 表示图像中的像素坐标,(d) 表示逆深度。

DPVO 的核心是一个更新算子,用于计算每条边 ( k , i , j ) ∈ ϵ (k, i, j) \in \epsilon (k,i,j)ϵ 的隐藏状态。它通过优化特征块图上的重投影误差来预测一个二维校正向量 δ i j k ∈ R 2 \delta_{ij}^k \in \mathbb{R}^2 δijkR2 和置信权重 ψ i j k ∈ R 2 \psi_{ij}^k \in \mathbb{R}^2 ψijkR2。通过光流校正作为约束执行捆绑调整(Bundle Adjustment,BA),使用非线性最小二乘法进行迭代更新和相机姿态以及特征块深度的细化。捆绑调整的代价函数如下:

∑ ( k , i , j ) ∈ ϵ ∥ K T j T i − 1 K − 1 P k i − [ P ˉ k i j + δ k i j ] ∥ ψ k i j 2 \begin{equation} \sum_{(k,i,j) \in \epsilon} \left\| \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k^i - \left[ \mathbf{\bar{P}}_k^{ij} + \delta_k^{ij} \right] \right\|^2_{\psi_k^{ij}} \end{equation} (k,i,j)ϵ KTjTi1K1Pki[Pˉkij+δkij] ψkij2

其中, ∥ ⋅ ∥ ψ \| \cdot \|_{\psi} ψ 表示马氏距离, P ˉ \mathbf{\bar{P}} Pˉ 表示特征块的中心。

3.1 多视图先验深度估计

后端的密集高斯映射需要几何深度图的监督。不同于之前的方法【26】,我们使用预训练的多视图立体(MVS)网络在DPVO的关键帧窗口上估计先验深度图,如图3所示。受单目深度估计方法【27】的启发,我们的MVS网络完全由二维卷积组成,采用由粗到细的结构逐步细化估计的先验深度图,以减少MVS网络的运行时间。

在这里插入图片描述

图3. 先验深度估计网络。网络的输入是来自稀疏视觉里程计的图像及其相机姿态。通过特征金字塔网络(Feature Pyramid Network, FPN)提取图像特征,并通过变形操作转换为二维代价体积。最后,采用由粗到细的策略对特征进行编码和解码,生成深度图。

具体来说,当前由稀疏视觉里程计跟踪的帧被用作参考图像 I 0 I^0 I0。此外,我们使用之前的 N N N 个关键帧作为一系列原始图像 I n ∈ 1 , … , N I^{n \in 1, \ldots, N} In1,,N。这些图像及其相应的相机姿态作为MVS网络的输入。利用特征金字塔网络(FPN)模块,我们为每个图像提取三层图像特征 F i s F^s_i Fis,其中 s s s 表示层索引, i i i 表示图像索引。每一层包含的图像特征是上一层长度和宽度的两倍。在每一层中,原始图像的图像特征通过可微分的变形操作与参考图像的图像特征点对点相乘,得到维度为 D × H s × W s D \times H^s \times W^s D×Hs×Ws 的代价体积,并通过二维卷积编码和解码获得每一层的先验深度图。上一层估计的深度图被上采样作为下一层的参考深度图,以减少下一层的深度样本数量。每一层都进行类似的编码和解码操作,最终深度图在三层之后估计完成,以实现由粗到细的效果。我们的MVS深度估计网络在ScanNet数据集【28】上进行训练,采用尺度不变的损失函数以适应稀疏视觉里程计的相对姿态:

L s i s = 1 H s W s ∑ i , j ( g i , j s ) 2 − λ ( H s W s ) 2 ( ∑ i , j g i , j s ) 2 \begin{equation} \mathcal{L}^{s}_{si} = \sqrt{\frac{1}{H^s W^s} \sum_{i,j} \left(g^{s}_{i,j}\right)^2 - \frac{\lambda}{\left(H^s W^s\right)^2} \left(\sum_{i,j} g^{s}_{i,j}\right)^2} \end{equation} Lsis=HsWs1i,j(gi,js)2(HsWs)2λ(i,jgi,js)2

其中,$g^s_{i,j} = \uparrow_{\text{gt}}(\log \hat{D}^s_{i,j} - \log D^{\text{gt}}{i,j}) 。 。 D^{\text{gt}}{i,j}$ 表示一个真实的深度图,通过上采样操作 ↑ gt \uparrow_{\text{gt}} gt 对齐到预测深度 D ^ i , j s \hat{D}^s_{i,j} D^i,js 的大小。常数 λ \lambda λ 为 0.85。

此外,损失函数中还添加了多视图损失和法线损失,以保持深度估计的几何一致性:

L m v s = 1 N H s W s ∑ n , i , j ∣ ↑ g t log ⁡ T 0 n ( D ^ i , j s ) − log ⁡ D n , i , j g t ∣ (4) L n o r m a l s = 1 2 H s W s ∑ i , j ( 1 − N ^ i , j s ⋅ N i , j s ) (5) \mathcal{L}_{mv}^{s}=\frac{1}{NH^{s}W^{s}}\sum_{n,i,j}\left|\uparrow_{gt}\log\mathbf{T}_{0n}(\hat{D}_{i,j}^{s})-\log D_{n,i,j}^{gt}\right|\text{(4)}\\\mathcal{L}_{normal}^{s}=\frac{1}{2H^{s}W^{s}}\sum_{i,j}(1-\hat{N}_{i,j}^{s}\cdot N_{i,j}^{s})\text{(5)} Lmvs=NHsWs1n,i,j gtlogT0n(D^i,js)logDn,i,jgt (4)Lnormals=2HsWs1i,j(1N^i,jsNi,js)(5)

其中, T 0 n T_{0n} T0n 表示从参考图像到原始图像 n n n 的变换矩阵。 N ^ i , j s \hat{N}^s_{i,j} N^i,js N i , j s N^s_{i,j} Ni,js 分别表示预测的法向量和真实的法向量。最终的多视图立体(MVS)深度估计网络损失函数如下:

L = ∑ s = 0 l 1 2 s ( λ s i L s i s + λ m v L m v s + λ n o r m a l L n o r m a l s ) ( 6 ) \mathcal{L}=\sum_{s=0}^l\frac1{2^s}(\lambda_{si}\mathcal{L}_{si}^s+\lambda_{mv}\mathcal{L}_{mv}^s+\lambda_{normal}\mathcal{L}_{normal}^s)\quad(6) L=s=0l2s1(λsiLsis+λmvLmvs+λnormalLnormals)(6)

其中 l l l 为2,我们将损失权重 λ s i \lambda_{si} λsi λ m v \lambda_{mv} λmv λ n o r m a l \lambda_{normal} λnormal 分别设置为1.0、0.2和1.0。

4. 三维高斯喷洒映射后端(核心)

后端的主要职责是进一步优化前端提供的粗略姿态并映射高斯场景。这个部分的关键在于可微渲染和深度平滑正则化损失,通过计算渲染结果与真实值之间的损失,并通过反向梯度传播调整粗略姿态和高斯地图。

4.1 可微高斯地图表示

我们使用三维高斯喷洒作为场景的密集表示。三维高斯喷洒是一种高效的三维空间表示方法,它以类似点云的方式映射场景,避免了像NeRF那样在空间的空白区域进行采样,并且能够实时渲染。单个三维高斯 p i ∈ R 3 p_i \in \mathbb{R}^3 piR3 在三维场景中的影响如下:

f ( p i ) = σ ( o i ) ⋅ exp ⁡ ( − 1 2 ( p i − μ i ) T Σ − 1 ( p i − μ i ) ) ( 7 ) f(p_i)=\sigma(o_i)\cdot\exp(-\frac{1}{2}(p_i-\mu_i)^T\Sigma^{-1}(p_i-\mu_i))\quad(7) f(pi)=σ(oi)exp(21(piμi)TΣ1(piμi))(7)

其中, o i ∈ R o_i \in \mathbb{R} oiR 表示高斯分布的透明度, μ i ∈ R 3 \mu_i \in \mathbb{R}^3 μiR3 是高斯分布的中心, Σ = R S S T T T ∈ R 3 , 3 \Sigma = RSS^TT^T \in \mathbb{R}^{3,3} Σ=RSSTTTR3,3 是协方差矩阵,由 S ∈ R 3 S \in \mathbb{R}^3 SR3 缩放分量和 R ∈ R 3 , 3 R \in \mathbb{R}^{3,3} RR3,3 旋转分量计算得出。三维高斯分布投影到图像平面的表达式如下:

μ I = π ( T C W ⋅ μ W ) Σ I = J W Σ W W T J T \begin{align} \mu_I &= \pi (\mathbf{T}_{CW} \cdot \mu_W) \tag{8} \\ \Sigma_I &= J W \Sigma_W W^T J^T \tag{9} \end{align} μIΣI=π(TCWμW)=JWΣWWTJT(8)(9)

其中, π ( ⋅ ) \pi(\cdot) π() 表示三维高斯中心的投影, T C W ∈ S E ( 3 ) T_{CW} \in SE(3) TCWSE(3) 是从世界坐标到相机坐标的三维空间变换矩阵, J J J 是投影变换的雅可比矩阵的线性近似, W W W T C W T_{CW} TCW 的旋转分量。方程 (8) 和 (9) 是可微分的,这确保了高斯地图可以使用一阶梯度下降来连续优化地图的几何和光度,使地图能够渲染为逼真的图像。一个像素颜色 C p C_p Cp 是通过喷洒和混合来自 N N N 个高斯的结果:

C p = ∑ i ∈ N c i o i ∏ j = 1 i − 1 ( 1 − o j ) \begin{equation} C_p = \sum_{i \in N} c_i o_i \prod_{j=1}^{i-1} (1 - o_j) \tag{10} \end{equation} Cp=iNcioij=1i1(1oj)(10)

其中, c i c_i ci 是高斯 i i i 的颜色, o i o_i oi 是高斯 i i i 的透明度。

4.2 映射优化损失

我们修改了原始三维高斯喷洒的损失函数,并添加了更多几何约束,使其更适合像 SLAM 这样的在线映射系统。具体来说,我们的损失函数由四个部分组成:光度损失、深度几何损失、深度平滑正则化损失和各向同性损失。

在光度损失中,计算当前相机姿态 T C W T_{CW} TCW 下渲染的彩色图像与真实彩色图像之间的 L1 损失:

L p h o = ∥ I ( G , T C W ) − I g t ∥ 1 \begin{equation} \mathcal{L}_{pho} = \left\| I(\mathcal{G}, \mathbf{T}_{CW}) - I^{gt} \right\|_1 \tag{11} \end{equation} Lpho= I(G,TCW)Igt 1(11)

其中, I ( G , T C W ) I(\mathcal{G}, T_{CW}) I(G,TCW)是从高斯分布 G \mathcal{G} G 渲染的彩色图像, I g t I_{gt} Igt 是真实的彩色图像。

D p = ∑ i ∈ N z i o i ∏ j = 1 i − 1 ( 1 − o j ) \begin{equation} D_p = \sum_{i \in N} z_i o_i \prod_{j=1}^{i-1} (1 - o_j) \tag{12} \end{equation} Dp=iNzioij=1i1(1oj)(12)

为了提高高斯地图的几何精度,我们同样渲染了深度图,类似于方程 (10):

L g e o = ∥ D ( G , T C W ) − D ˉ d ∥ 1 \begin{equation} \mathcal{L}_{geo} = \left\| D(\mathcal{G}, \mathbf{T}_{CW}) - \bar{D}_d \right\|_1 \tag{13} \end{equation} Lgeo= D(G,TCW)Dˉd 1(13)

其中, D ( G , T C W ) D(G, T_{CW}) D(G,TCW) 是从高斯分布 G \mathcal{G} G 渲染的深度图, D ‾ d \overline{D}_d Dd 是通过 SDAR 策略优化的先验深度图。优化过程见第 III-C 节。

从 MVS 网络获得的先验深度图可能并不完全准确。如图 4 所示,直接使用这些深度图会在高斯地图的几何重建中导致错误的引导。因此,我们引入了深度平滑正则化损失:

L s m o o t h = ∥ d i , j − 1 − d i , j ∥ 2 + ∥ d i + 1 , j − d i , j ∥ 2 \begin{equation} \mathcal{L}_{smooth} = \left\| d_{i,j-1} - d_{i,j} \right\|_2 + \left\| d_{i+1,j} - d_{i,j} \right\|_2 \tag{14} \end{equation} Lsmooth=di,j1di,j2+di+1,jdi,j2(14)

其中, d i , j d_{i,j} di,j 表示渲染深度图中像素坐标 ( i , j ) (i, j) (i,j) 的深度值。通过对渲染深度图中相邻像素进行正则化,它减少了先验深度图误差的影响。

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/24081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CiteScore 2023发布,AI Open斩获45分,位列全球计算机领域前1%

与影响因子(IF)一样,引用分数(CiteScore)同样是衡量学术期刊影响力的重要指标之一,且大有赶超前者的势头。 6 月 6 日,CiteScore 2023 正式发布,人工智能领域可自由访问的期刊平台 …

Java 8 中的 Stream API,用于处理集合数据

Java 8 引入了 Stream API,使得处理集合数据变得更加简洁和高效。Stream API 允许开发者以声明式编程风格操作数据集合,而不是使用传统的迭代和条件语句。 一、基本概念 1.1 什么是 Stream Stream 是 Java 8 中的一个新抽象,它允许对集合数…

工厂生产计划难以执行的真正原因及对策

在制造业中,生产计划的执行对于企业的运营至关重要。然而,许多工厂在生产计划执行过程中面临着诸多挑战,尤其是物料齐套率低的问题。本文将探讨工厂生产计划难以执行的真正原因,并提出相应的解决对策。 一、生产计划难以执行的真…

mysql optimizer_switch : 查询优化器优化策略深入解析

码到三十五 : 个人主页 在 MySQL 数据库中,查询优化器是一个至关重要的组件,它负责确定执行 SQL 查询的最有效方法。为了提供DBA和开发者更多的灵活性和控制权,MySQL 引入了 optimizer_switch 系统变量。这个强大的工具允许用户开…

nginx配置WebSocket参数wss连接

目录 一、原文连接 二、 配置参数 三、实践 四、重启nginx 五、连接websocket 一、原文连接 nginx配置websocket支持wss-腾讯云开发者社区-腾讯云 二、 配置参数 map $http_upgrade $connection_upgrade { default upgrade; close; } upstream websocket { se…

【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)

目录 一、 进程1.1 PID(进程标识符)1.2 内存指针1.3 文件描述符表1.4 状态1.5 优先级1.6 记账信息1.7 上下文 二、线程三、总结:进程和线程之间的区别(非常非常非常重要,面试必考题) 一、 进程 简单来介绍一下什么是进程&#xf…

写入文件内容

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在实例01中,虽然创建并打开一个文件,但是该文件中并没有任何内容,它的大小是0KB。Python的文件对象提供了write()…

【电路笔记】-分贝

分贝 分贝是以 10 为底的对数比,用于表示电路中功率、电压或电流的增加或减少。 1、概述 一般来说,分贝是响度的度量。 在设计或使用放大器和滤波器电路时,计算中使用的一些数字可能非常大或非常小。 例如,如果我们将两个放大器级级联在一起,功率或电压增益分别为 20 和…

os和os.path模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 目录也称文件夹,用于分层保存文件。通过目录可以分门别类地存放文件。我们也可以通过目录快速找到想要的文件。在Python中,并…

033.搜索旋转排序数组

题意 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给方法之前&#xff0c;nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了旋转&#xff0c;使数组变为 [nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]&…

古字画3d立体在线数字展览馆更高效便捷

在数字时代的浪潮中&#xff0c;大连图书馆以崭新的面貌跃然屏幕之上——3D全景图书馆。这座承载着城市文化精髓与丰富知识资源的数字图书馆&#xff0c;利用前沿的三维建模技术&#xff0c;为我们呈现了一个全新的知识世界。 随时随地&#xff0c;无论您身处何地&#xff0c;只…

信息学奥赛初赛天天练-22-C++基础关键字、进制转换、结构体与联合体的实用技巧大揭秘

PDF文档公众号回复关键字:20240607 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 1 在C中&#xff0c;下面哪个关键字用于声明一个变量&#xff0c;其值不能被修改&#xff1f;&#xff08; &#…

【Java】解决Java报错:StackOverflowError

文章目录 引言1. 错误详解2. 常见的出错场景2.1 无限递归2.2 递归深度过大2.3 方法调用层次过深 3. 解决方案3.1 优化递归算法3.2 尾递归优化3.3 增加调用栈大小3.4 检查递归终止条件 4. 预防措施4.1 使用迭代替代递归4.2 尾递归优化4.3 合理设计递归算法4.4 调整JVM参数4.5 定…

b端系统类管理平台设计前端开发案例

b端系统类管理平台设计前端开发案例

二叉树-堆的详解

一&#xff0c;树的概念 1&#xff0c;树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有…

vue3 + echarts 二次开发百分比饼图

效果图&#xff1a; 安装 pnpm i echarts 公共模块组件 <divclass"pie"ref"percent"style"width: 100%; height: calc(100% - 48px)"></div> import { ref, onMounted } from vue import * as echarts from echarts const prop…

【乐吾乐3D可视化组态编辑器】状态告警示例

状态告警的设置方法为两种&#xff1a; 1.通过数据点号设置&#xff08;推荐&#xff09;&#xff1a; 适用于绑定单一数据点号&#xff0c;设置逻辑简洁&#xff0c;实现简单逻辑交互 2.通过交互事件监听数据点号设置&#xff1a; 适用于绑定多个数据点号&#xff0c;实现复…

LLM大模型AI应用的三阶技术

第一阶 指令工程&#xff08;Prompt Enginner&#xff09; 设计提示&#xff08;Prompt Design&#xff09; 结果优化&#xff08;Response Optimization&#xff09; 交互设计&#xff08;Interaction Design&#xff09; 模型理解&#xff08;Model Understanding&#…

哈希经典题目(C++)

文章目录 前言一、两数之和1.题目解析2.算法原理3.代码编写 二、判定是否互为字符重排1.题目解析2.算法原理3.代码编写 三、 字⺟异位词分组1.题目解析2.算法原理3.代码编写 总结 前言 哈希表是一个存储数据的容器&#xff0c;我们如果想要快速查找某个元素&#xff0c;就可以…

MMUNet:形态学特征增强网络在结肠癌病理图像分割中的应用

MMUNet: Morphological feature enhancement network for colon cancer segmentation in pathological images. 发表在&#xff1a;Biomedical Signal Processing and Control2024--影响因子&#xff1a;3.137 南华大学的论文 论文地址&#xff1a;main.pdf (sciencedirecta…