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

《Computational principles and challenges in single-cell data integration》

1. 引言:单细胞数据整合的背景与重要性

单细胞基因组学技术(如scRNA-seq、scATAC-seq等)近年来快速发展,能够以单细胞分辨率揭示细胞异质性和分子机制。然而,不同实验、样本和数据模态(如RNA表达、DNA甲基化、蛋白质分布等)之间存在技术变异和生物学差异,这使得数据整合成为单细胞研究的关键挑战。文章可能从以下几个方面探讨单细胞数据整合的计算原理和面临的统计与技术难题:

  • 研究目标:通过整合多源单细胞数据,消除技术噪声,保留生物学信号,从而构建统一的细胞状态图谱,支持跨实验、跨物种和跨模态的分析。
  • 应用场景:包括疾病研究(如癌症、免疫相关疾病)、发育生物学(如胚胎发育跨物种比较)以及个性化医学中的患者分层。

2. 数据整合的主要类型

​​​​​​​

Table 1

根据文档中的表格(Table 1)和描述,文章可能系统性地分类了单细胞数据整合的主要任务,基于“锚点选择”(anchor choice)分为以下几类:

  • 垂直整合(Vertical Integration)

    • 全局垂直整合(Vertical Global):整合同一实验或数据集内不同模态的数据(如RNA表达和表观遗传数据),以揭示多组学层面上的细胞状态。

               全局垂直整合就像把所有照片叠在一起,找到每张照片中对应物体的共同特征(如形状、位置),然后画一张统一的“全景图”,让所有物体的位置和关系都能在同一张图上清晰呈现。

        工作原理
  •  输入数据:通常需要配对的多组学数据(paired multi-omics data),即在同一细胞上测量多种模态的数据。例如,10X Multiome 技术可以同时生成一个细胞的 scRNA-seq(基因表达)和 scATAC-seq(染色质开放性)数据。这些配对数据作为“锚点”(anchors),帮助模型学习模态间的对应关系。
  • 处理流程
    1. 数据预处理:对不同模态数据进行标准化(例如,scRNA-seq 数据进行对数转换,scATAC-seq 数据归一化为基因活性评分),以统一统计特性。

    2. 降维或嵌入:通过算法将高维数据(例如,数千基因或数十万峰值)映射到低维空间(如几十维),使同一细胞在不同模态的表示尽可能接近。

    3. 优化目标:最小化模态间表示的距离,同时保留细胞类型或状态的生物学差异。

  • 常用方法
    • 典型相关分析(CCA):Seurat v3 使用 CCA 找到基因表达和染色质开放性之间的最大相关性,将数据投影到共享子空间。

    • 非负矩阵分解(NMF):Liger 通过分解数据矩阵,提取共享因子(如细胞类型相关的基因模块)。

    • 多组学因子分析(MOFA+):通过潜在因子建模,捕捉多模态数据的共享变异。

    • 深度学习方法:如变分自编码器(VAE)或孪生网络(Siamese Network)。例如,MinNet(Lu et al., 2023)使用孪生网络,通过图基对比损失(graph-based contrastive loss)优化嵌入空间。​​​​​​​​​​​​​​​​​​​​​

  • 局部垂直整合(Vertical Local):聚焦于特定细胞类型或子集的整合(整合多模态数据),可能用于局部特征的分析。

        局部垂直整合就像只关注照片中的某一部分(如人群中的某几个人),将这些人的彩色和黑白照片叠在一起,分析他们的具体特征(如面部表情、衣着),而忽略其他部分。目标是深入研究这部分人的细节,而不是整个场景。

        工作原理
  • 输入数据:与全局整合类似,通常使用配对多组学数据,但只针对预先定义的细胞子集(如通过聚类或标记物基因识别的 T 细胞)。
  • 处理流程
    1. 子集选择:通过聚类算法(如基于 scRNA-seq 的 Louvain 聚类)或生物标记物(如 T 细胞的 CD3 基因),筛选目标细胞子集。
    2. 局部嵌入:对子集数据应用降维或嵌入方法,生成局部的统一表示空间。
    3. 特征分析:在局部嵌入空间中,计算基因表达与调控元件之间的相关性,推断局部调控网络。
  • 常用方法
    • 子集 CCA:在选定子集上应用 CCA,整合多模态数据。
    • 局部 NMF:对子集数据进行矩阵分解,提取局部共享因子。
    • 深度学习:如 MinNet 的子集应用,通过图基对比损失优化局部嵌入空间。
  • 全局垂直整合 VS 局部垂直整合

特性全局垂直整合局部垂直整合
目标整合整个数据集,构建全面细胞状态图谱聚焦特定细胞子集,分析局部生物学特征
数据范围所有细胞的多模态数据选定子集的多模态数据
应用场景细胞图谱构建、疾病机制研究、发育轨迹分析特定细胞类型分析、调控网络推断、疾病研究
计算复杂度高,需处理大规模数据较低,但可能需多次局部整合
主要挑战高维数据、模态异质性、过拟合、计算成本子集选择偏差、数据稀疏性、一致性问题
常用方法CCA、NMF、MOFA+、深度学习子集 CCA、局部 NMF、深度学习
输出全局嵌入空间,适用于广义分析局部嵌入空间,聚焦特定生物学问题
  • 水平整合(Horizontal Integration):主要解决批次效应(batch effect),即去除不同实验或技术平台之间的技术变异,以确保跨数据集的比较一致性。文章提到水平整合常被定义为“批次校正问题”(batch correction problem)。

        目标是把来自不同来源(比如不同实验室、不同患者、不同时间点)的同一种单细胞数据(通常是 scRNA-seq,也可能是 scATAC-seq 或 CITE-seq)整合到一个统一的表示空间(embedding space)。这个空间里,相同类型的细胞(比如 T 细胞)应该聚在一起,不管它们来自哪个实验,而不同类型的细胞(比如 T 细胞和 B 细胞)应该分开。

即将不同来源的同一个类型的东西放在一起。注:处理同一种模态的数据。

工作原理
  1. 输入数据:多组同模态数据(比如几组 scRNA-seq 数据),每组来自不同样本、实验或条件。数据通常是基因表达矩阵(行是基因,列是细胞)。
  2. 预处理
    • 标准化:对每组数据进行归一化(比如对数转换、单位方差归一化),统一数据分布。
    • 特征选择:挑出高变异基因(highly variable genes),减少噪音和计算量。
  3. 整合方法
    • 找到每组数据中的“锚点”(anchors),即可能对应相同细胞类型的细胞对。
    • 将所有数据投影到一个共享的低维空间,确保锚点对齐。
  4. 优化目标:最小化不同数据集间的技术差异(批次效应),最大化生物学差异(比如细胞类型分离)。
  5. 输出:一个统一的低维嵌入空间(比如用 PCA 或 UMAP 降维后的空间),所有细胞都在这个空间里表示为点,相同细胞类型聚在一起。
常用方法
  • Seurat v3:用**典型相关分析(CCA)互近邻(Mutual Nearest Neighbors, MNN)**找锚点,把不同数据集的细胞对齐。
  • Harmony:用一种迭代聚类方法,逐步校正批次效应,生成统一的嵌入空间。
  • Scanorama:基于 MNN 匹配细胞,校正批次差异。
  • Liger:用非负矩阵分解(NMF)提取共享因子,整合不同数据集。
  • scVI:用深度学习的变分自编码器(VAE)建模数据分布,校正批次效应。
​​​​​​​例子讲解:

假设你在研究癌症,想整合三组 scRNA-seq 数据:一组是健康人的 PBMC,一组是肺癌患者的肿瘤微环境细胞,一组是乳腺癌患者的肿瘤细胞。你想比较这些样本里的免疫细胞状态。

Seurat v3 做水平整合的步骤:

  1. 读数据:把三组 scRNA-seq 数据读进来,每个数据集是一个基因表达矩阵。
  2. 预处理:对每组数据做对数转换,选出 2000 个高变异基因。
  3. 找锚点:用 CCA 找每组数据里可能对应的细胞(比如健康和癌症样本里的 T 细胞)。
  4. 整合:把三组数据投影到一个共享的 PCA 空间,校正批次效应。
  5. 可视化:用 UMAP 把嵌入空间画出来,看看 T 细胞、B 细胞等是否聚成相同的簇。
  6. 分析:比较健康和癌症样本里 T 细胞的基因表达差异,找癌症相关的免疫变化。

结果是:你得到一张 UMAP 图,健康和癌症样本的 T 细胞聚在一起,B 细胞聚在一起,但癌症样本的 T 细胞可能表达一些特异基因(比如 PD-1,提示免疫抑制)。

应用场景:
  • 疾病比较:整合健康和疾病样本的数据,研究疾病引起的细胞变化。比如,整合 COVID-19 患者和健康人的 scRNA-seq 数据,找免疫细胞的差异。
  • 跨物种研究:整合人和小鼠的 scRNA-seq 数据,找保守的细胞类型或基因模块。
  • 多实验室协作:把不同实验室用不同设备测的 scRNA-seq 数据整合,生成统一数据集。
  • 时间序列分析:整合不同时间点的 scRNA-seq 数据,研究细胞发育或疾病进展的动态变化。

​​​​​​​

  • 对角整合(Diagonal Integration):可能涉及跨物种或跨时间点的整合(如文档中提到的鼠和人胚胎发育的单细胞基因组学实验)。对角整合的目标是整合多个样本或条件下的多种模态数据(比如 scRNA-seq、scATAC-seq、CITE-seq),生成一个统一的低维嵌入空间(co-embedding space)。在这个空间里:

  • 同一个细胞的多模态数据(比如基因表达和染色质开放性)应该尽可能接近(垂直整合的目标)。
  • 不同样本或条件的相同细胞类型(比如不同患者的 T 细胞)应该聚在一起(水平整合的目标)。

        对角整合是同时整合不同样本或条件的不同模态数据(比如多个患者的 scRNA-seq 和 scATAC-seq 数据),目标是消除批次效应(不同样本的差异)和模态效应(不同数据类型的差异),生成一个统一的表示空间,让相同细胞类型的多组学特征对齐。

工作原理
  1. 输入数据
    • 多组数据,每组包含不同样本或条件的多种模态数据。比如,三个患者的 scRNA-seq 和 scATAC-seq 数据,每个数据集是一个矩阵(行是基因/峰值,列是细胞)。
    • 数据可能是配对的(paired,比如 Multiome 技术测的同一个细胞的两种数据)或非配对的(unpaired,比如 scRNA-seq 和 scATAC-seq 来自不同细胞)。
  2. 预处理
    • 标准化:对每种模态数据进行归一化(比如 scRNA-seq 对数转换,scATAC-seq 转为基因活性评分),统一统计特性。
    • 特征选择:选高变异基因(scRNA-seq)或高变异峰值(scATAC-seq),减少噪音和计算量。
    • 批次标注:给每个样本标记批次标签(比如患者 1、患者 2),用于校正批次效应。
  3. 整合方法
    • 找锚点:在不同样本和模态间找到对应的细胞对(锚点),比如通过互近邻(MNN)或典型相关分析(CCA)匹配可能属于同一细胞类型的细胞。
    • 投影到共享空间:将所有数据(多样本、多模态)映射到一个统一的低维空间,确保同一细胞的多种模态表示接近,同一细胞类型的不同样本表示聚在一起。
    • 校正效应:同时消除批次效应(样本间差异)和模态效应(数据类型差异)。
  4. 优化目标
    • 模态对齐:最小化同一细胞在不同模态间的表示距离(比如用欧几里得距离或 KL 散度)。
    • 批次校正:最小化不同样本间的技术差异,确保相同细胞类型对齐。
    • 生物学信号保留:最大化细胞类型或状态的分离(比如用分类损失确保 T 细胞和 B 细胞分开)。
  5. 输出:一个统一的低维嵌入空间,所有细胞(无论来自哪个样本或模态)都表示为点,同一细胞的多模态表示接近,同一细胞类型的表示聚在一起。
常用方法
  • Seurat v4:扩展了 Seurat v3 的 CCA 和 MNN 方法,支持多模态和多样本整合,通过加权最近邻(Weighted Nearest Neighbor, WNN)生成统一表示。
  • Liger:用整合非负矩阵分解(integrative NMF)同时处理多模态和多样本数据,提取共享因子。
  • MOFA+:多组学因子分析,建模多模态和多样本的共享变异。
  • scVI/scANVI:用深度学习的变分自编码器(VAE),同时校正批次效应和模态差异,适合非配对数据。
  • MinNet(Lu et al., 2023):虽然主要为非配对垂直整合设计,但可以扩展到对角整合,通过孪生网络和图基对比损失处理多样本、多模态数据。
例子讲解:

假设你在研究癌症,想整合两个患者的肿瘤微环境数据,每个患者有 scRNA-seq(基因表达)和 scATAC-seq(染色质开放性)数据。你用 Seurat v4 做对角整合:

  1. 读数据:加载患者 1 和患者 2 的 scRNA-seq 和 scATAC-seq 矩阵。
  2. 预处理:对 scRNA-seq 做对数转换,选 2000 个高变异基因;对 scATAC-seq 转为基因活性评分,选高变异峰值。
  3. 找锚点:用 WNN 算法找患者间和模态间的锚点(比如患者 1 和患者 2 的 T 细胞对应,同一患者的 scRNA-seq 和 scATAC-seq 对应)。
  4. 整合:把所有数据投影到统一 PCA 空间,校正批次效应和模态差异。
  5. 可视化:用 UMAP 画嵌入空间,看到患者 1 和患者 2 的 T 细胞、肿瘤细胞等聚成相同簇。
  6. 分析:比较两患者 T 细胞的基因表达和调控峰值,找癌症特异性调控网络。

结果是:你得到一张 UMAP 图,患者 1 和患者 2 的 T 细胞聚在一起,肿瘤细胞聚在一起,每个细胞的基因表达和染色质开放性表示也对齐了。你可以进一步分析 T 细胞在癌症中的免疫抑制机制。

应用场景
  • 疾病研究:整合多个患者的 scRNA-seq 和 scATAC-seq 数据,研究疾病(如癌症、COVID-19)中细胞类型和调控网络的变化。比如,比较健康和重症患者的免疫细胞多组学特征。
  • 跨物种分析:整合人和小鼠的多组学数据(比如 scRNA-seq 和 scATAC-seq),找保守的细胞类型和调控机制。
  • 多中心协作:整合不同实验室的多模态数据(比如 10X Multiome 数据),生成统一的细胞图谱,服务于大项目如人类细胞图谱(Human Cell Atlas)。
  • 动态过程研究:整合不同时间点或治疗阶段的多组学数据,研究细胞状态的动态变化,比如癌症治疗前后肿瘤微环境的变化。

  • 马赛克整合(Mosaic Integration):如图3所示,马赛克整合涉及在不同子集上测量不同模态的数据(例如,某些细胞测RNA,另一些测蛋白质),需要通过计算方法推断缺失数据或构建统一的表示。

 

马赛克整合(Mosaic Integration)的目标是整合部分重叠的多样本、多模态单细胞数据,生成一个统一的低维嵌入空间(co-embedding space)。在这个空间里:

  • 同一细胞的多模态数据(比如 scRNA-seq 和 scATAC-seq)应该尽可能接近(垂直整合的目标)。
  • 不同样本的相同细胞类型(比如不同患者的 T 细胞)应该聚在一起(水平整合的目标)。
  • 即使某些样本只有单一模态数据,也能通过配对数据的“桥梁”投影到统一空间。

马赛克整合就像拼一幅马赛克画,有些地方有完整的彩色和黑白图案(配对数据),有些地方只有彩色或黑白(单一模态数据)。你用完整的图案作为模板,把所有碎片拼成一幅画,确保图案对齐,颜色协调。

工作原理
  1. 输入数据
    • 多样本、多模态数据,部分样本有配对数据(比如 Multiome 的 scRNA-seq 和 scATAC-seq),部分样本只有单一模态(比如只有 scRNA-seq 或 scATAC-seq)。
    • 数据通常是矩阵形式(行是基因/峰值,列是细胞),但不同样本的模态组合不同。
  2. 预处理
    • 标准化:对每种模态数据归一化(比如 scRNA-seq 对数转换,scATAC-seq 转为基因活性评分),统一统计特性。
    • 特征选择:选高变异基因(scRNA-seq)或高变异峰值(scATAC-seq),减少噪音。
    • 批次标注:给每个样本和模态标记标签(比如患者 1 的 scRNA-seq、患者 2 的 scATAC-seq)。
  3. 整合方法
    • 找锚点:利用配对数据(比如患者 1 的 Multiome 数据)作为“桥梁”,找到模态间和样本间的对应关系。比如,通过互近邻(MNN)或典型相关分析(CCA)匹配患者 1 的 T 细胞 scRNA-seq 和 scATAC-seq,再匹配患者 1 和患者 2 的 T 细胞 scRNA-seq。
    • 投影到共享空间:将所有数据(配对和非配对)映射到一个统一的低维空间,配对数据作为锚点引导非配对数据的投影。
    • 校正效应:同时消除批次效应(样本间差异)和模态效应(数据类型差异)。
  4. 优化目标
    • 模态对齐:最小化配对数据中同一细胞的模态间距离(比如用欧几里得距离或 KL 散度)。
    • 样本对齐:最小化不同样本的相同细胞类型的距离,确保 T 细胞、B 细胞等聚类一致。
    • 非配对数据投影:用配对数据的锚点,推断非配对数据的嵌入位置。
    • 生物学信号保留:最大化细胞类型或状态的分离(比如用分类损失确保细胞类型分开)。
  5. 输出:一个统一的低维嵌入空间,所有细胞(无论来自哪个样本或模态)都表示为点,配对数据的模态表示接近,同一细胞类型的表示聚在一起,非配对数据通过锚点合理定位。
常用方法
  • Seurat v4:用加权最近邻(Weighted Nearest Neighbor, WNN)方法,通过配对数据作为锚点,整合多样本、多模态数据。
  • Liger:用整合非负矩阵分解(integrative NMF),利用配对数据提取共享因子,投影非配对数据。
  • MOFA+:多组学因子分析,建模配对和非配对数据的共享变异。
  • scVI/scANVI:用深度学习的变分自编码器(VAE),通过配对数据学习模态和样本的联合分布,推断非配对数据的表示。
  • GLUE:用图神经网络(GNN)整合多模态数据,适合马赛克整合场景,利用配对数据构建跨模态的图结构。
例子讲解

假设你在研究癌症,收集了三个患者的肿瘤微环境数据:

  • 患者 1:有 scRNA-seq 和 scATAC-seq 数据(配对,Multiome 技术)。
  • 患者 2:只有 scRNA-seq 数据。
  • 患者 3:只有 scATAC-seq 数据。

你用 Seurat v4 做马赛克整合:

  1. 读数据:加载患者 1 的配对数据(scRNA-seq 和 scATAC-seq)、患者 2 的 scRNA-seq、患者 3 的 scATAC-seq。
  2. 预处理:对 scRNA-seq 做对数转换,选 2000 个高变异基因;对 scATAC-seq 转为基因活性评分,选高变异峰值。
  3. 找锚点:用 WNN 算法,先匹配患者 1 的 scRNA-seq 和 scATAC-seq(模态间锚点),再匹配患者 1 和患者 2 的 scRNA-seq(样本间锚点),以及患者 1 和患者 3 的 scATAC-seq。
  4. 整合:把所有数据投影到统一 PCA 空间,用患者 1 的配对数据作为桥梁,校正批次和模态效应。
  5. 可视化:用 UMAP 画嵌入空间,看到患者 1、2、3 的 T 细胞、肿瘤细胞等聚成相同簇,患者 1 的 scRNA-seq 和 scATAC-seq 表示对齐。
  6. 分析:比较三患者 T 细胞的基因表达和调控峰值,找癌症特异性调控网络。

结果是:你得到一张 UMAP 图,三患者的 T 细胞聚在一起,患者 1 的基因表达和染色质开放性对齐,患者 2 和 3 的单一模态数据也合理定位。你可以分析 T 细胞在癌症中的免疫抑制机制。

应用场景
  • 疾病研究:整合多患者的部分多组学数据,研究疾病机制。比如,整合 COVID-19 患者的配对和非配对 scRNA-seq、scATAC-seq 数据,比较免疫细胞的分子特征。
  • 跨物种分析:整合人和小鼠的部分多组学数据(比如有些样本只有 scRNA-seq,有些有 scRNA-seq 和 scATAC-seq),找保守的细胞类型和调控机制。
  • 多中心协作:整合不同实验室的部分多组学数据,生成统一细胞图谱。比如,人类细胞图谱(Human Cell Atlas)可能只有部分样本有配对数据。
  • 动态过程研究:整合不同时间点或治疗阶段的部分多组学数据,研究细胞状态变化,比如癌症治疗前后肿瘤微环境的变化。

3. 数据整合的统计挑战

文档中的Box 1详细列出了单细胞多组学分析的统计挑战,文章可能深入探讨了以下问题:

  • 异质性数据模态:不同实验技术(如scRNA-seq、scNMT-seq、scCOMT-seq)生成的数据具有不同的统计特性。例如,RNA-seq测量mRNA表达,而DNA甲基化数据基于CpG位点,这些数据需要统一的统计框架来整合,但结合不同似然模型(likelihood models)是一项复杂任务。
  • 过拟合(Overfitting):单细胞数据通常涉及高维特征(例如,数百万个CpG位点),而样本量有限(仅几百个细胞),导致过拟合风险。文章提到正则化和降维技术(如PCA或变分自编码器VAE)是应对这一问题的关键。
  • 缺失数据:不同技术对“缺失数据”的定义不同。例如,scNMT-seq不区分基因组特征的“存在”与“缺失”,而scCOMT-seq需要考虑实验设计的缺失信息。文章可能讨论了如何通过统计方法(如线性回归、PCA或VAE)处理缺失数据。
  • 混杂因素:某些模态特有的混杂因素(如全局甲基化水平受组蛋白修饰影响)可能干扰整合结果。文章可能提出通过添加协变量或使用匹配的负对照来解决此类问题。

4. 数据整合的应用

文章可能通过具体案例展示了数据整合的应用,例如:

  • 跨物种比较:如图4所示,通过时间分辨的单细胞基因组学实验,比较鼠和人胚胎发育的细胞状态,揭示物种间的保守性和差异性。降维技术(如t-SNE或UMAP)被用于可视化这些数据。​​​​​​​
  • 疾病研究:如图6和页面12所述,单细胞数据整合可用于构建健康和疾病状态下的人类表型变异图谱。例如,通过分析13种癌症患者的免疫细胞组成,进行患者分层,助力精准医学。
  • 多尺度建模:页面12提到通过模型驱动或专家知识定义特征,用于提取细胞表示并进行患者分层。这类方法在未来可能推动多组学数据与临床表型的关联研究。

5. 数据集与方法评估

文档中的Table 2提到了一些用于基准测试(benchmarking)的数据集,涵盖水平、垂直、对角和马赛克整合任务。这些数据集可能包括:

  • 生物系统:例如,免疫细胞、胚胎发育、癌症组织等。
  • 数据模态:包括RNA表达、表观遗传数据、蛋白质分布等。
  • 技术:如scRNA-seq、scATAC-seq等单细胞技术。
  • 细胞数量:不同数据集的细胞数量差异,用于评估整合方法的扩展性。

6. 整合类型对比

特性马赛克整合对角整合水平整合垂直整合
目标整合部分配对的多样本、多模态数据,消除批次和模态效应整合多样本、多模态数据,消除批次和模态效应整合多样本的同模态数据,消除批次效应整合同样本的多模态数据,统一表示空间
数据类型部分配对、多样本、多模态(比如部分 scRNA-seq + scATAC-seq)多样本、多模态(比如 scRNA-seq + scATAC-seq)同模态(比如全是 scRNA-seq)多模态(比如 scRNA-seq + scATAC-seq)
应用场景不完整数据集整合、跨患者多组学、跨物种分析跨患者多组学比较、跨物种调控分析跨样本/患者比较、跨物种分析多组学细胞图谱、调控网络推断
主要挑战数据不完整、双重异质性、锚点选择、高维数据双重异质性、锚点选择、高维数据、过拟合批次效应、锚点选择、生物学变异保留模态异质性、高维数据、缺失数据
常用方法Seurat v4 (WNN)、Liger、MOFA+、scVI、GLUESeurat v4 (WNN)、Liger、MOFA+、scVISeurat v3 (CCA/MNN)、Harmony、LigerSeurat v3 (CCA)、Liger、MOFA+、MinNet
输出统一嵌入空间,模态和样本对齐,非配对数据投影统一嵌入空间,模态和样本对齐统一嵌入空间,相同细胞类型对齐统一嵌入空间,同一细胞的多模态表示对齐

通俗比喻

  • 马赛克整合:拼一幅马赛克画,有些地方有彩色和黑白图案(配对数据),有些只有彩色或黑白(非配对数据),用完整图案桥接所有碎片。
  • 对角整合:拼不同国家摄影师的彩色和黑白照片,每国都有两种照片。
  • 水平整合:拼不同国家摄影师的彩色照片,确保“山”和“树”对齐。
  • 垂直整合:拼一个国家摄影师的彩色和黑白照片,确保同一个物体重合。

 

http://www.xdnf.cn/news/16543.html

相关文章:

  • Vite 模块动态导入之Glob导入
  • 微算法科技MLGO突破性的监督量子分类器:纠缠辅助训练算法为量子机器学习开辟新天地
  • PCB学习笔记(一)
  • LeetCode 面试经典 150_数组/字符串_轮转数组(6_189_C++_中等)(额外数组;转置)
  • dify + mcp 实现图片 ocr 识别
  • 实例教学FPN原理与PANet,Pytorch逐行精讲实现
  • [leetcode] Z字型变换
  • dify离线插件打包步骤
  • 手撕设计模式——智能家居之外观模式
  • C++线程详解
  • C++11 std::function 详解:通用多态函数包装器
  • 从0开始学习R语言--Day62--RE插补
  • 【ssh】ubuntu服务器+本地windows主机,使用密钥对进行ssh链接
  • Linux常用基础命令
  • 反射核心:invoke与setAccessible方法详解
  • Git 从入门到精通
  • linux命令ps的实际应用
  • SQL注入SQLi-LABS 靶场less26-30详细通关攻略
  • 深入解析Java元注解与运行时处理
  • ​第七篇:Python数据库编程与ORM实践
  • 前缀和-974.和可被k整除的子数组-力扣(LeetCode)
  • [mcp: JSON-RPC 2.0 规范]
  • 机器学习之线性回归——小白教学
  • LRU(Least Recently Used)原理及算法实现
  • 最新优茗导航系统源码/全开源版本/精美UI/带后台/附教程
  • BreachForums 黑客论坛强势回归
  • sqLite 数据库 (2):如何复制一张表,事务,聚合函数,分组加过滤,列约束,多表查询,视图,触发器与日志管理,创建索引
  • JAVA_TWENTY—ONE_单元测试+注解+反射
  • 学习Python中Selenium模块的基本用法(3:下载浏览器驱动续)
  • Seq2Seq学习笔记