3DGS中的光栅化渲染过程(结合代码)

3d gaussian splatting介绍整理 3DGS相关概念,知识点整理 阅读详情
AI摘要

博客介绍了3D高斯渲染过程,主要是将3DGS投影到2D图像平面,包括投影均值位置和协方差矩阵。还阐述了快速光栅化方法,通过划分像素块、排序等步骤提高效率。详细说明了协方差矩阵从3D投影到2D的过程,以及渲染流程和相关代码实现。

渲染过程主要是把3DGS投影到2D图像平面上。

3DGS中每个高斯由位置(均值)、协方差矩阵(描述形状和方向)和不透明度(alpha)表示。
投影到2D包括投影均值的位置,和投影协方差矩阵。

另外介绍一下快速光栅化,
为了提高效率,将屏幕划分为16x16像素的块(tiles)。每个3D高斯可能与多个块重叠,因此需要在这些块中实例化。
使用GPU上的Radix排序算法对所有实例化的高斯进行排序,主要依据它们的深度信息。这种排序确保了在后续的混合过程中,能够按照从远到近的顺序处理高斯,从而减少所需的混合操作数量。

具体为如下步骤:
1.投影转换:首先,每个3D高斯从世界空间或相机空间转换到屏幕空间。这涉及到计算高斯的均值(中心点)在屏幕空间的位置,以及将高斯的协方差矩阵从3D空间转换到2D屏幕空间。

2.重叠检测:对于屏幕空间中的每个像素块(tile),需要确定哪些3D高斯与该块重叠。这通常通过计算高斯的边界(例如,使用高斯的协方差矩阵来定义一个边界框)并检查这个边界框是否与像素块相交来完成。

3.实例化:如果一个3D高斯与某个像素块重叠,那么这个高斯就会在该块中被“实例化”。这意味着在渲染算法中,会为这个块创建一个或多个对应的2D高斯表示,用于后续的光栅化和混合过程。

4.分配键值:为了在后续的排序和混合过程中有效地处理这些实例化的高斯,每个实例都会被分配一个键值(key),这个键值通常包含了高斯的深度信息和它所属的像素块的索引。这样,可以对所有实例化的高斯进行全局排序,以确保在混合过程中按照正确的顺序处理它们。

5.光栅化:排序后的高斯会被用来光栅化每个像素块,这个过程涉及到计算每个高斯对块内每个像素颜色的贡献,并根据高斯的不透明度进行混合。

其中,协方差矩阵由3D投影到2D的过程如下:
3D高斯的协方差矩阵 Σ 是一个3x3的对称矩阵,描述了高斯分布在3D空间中的扩散程度和方向。它包含了高斯在三个正交轴上的方差以及这些轴之间的协方差。
世界坐标系到相机坐标系:
首先,需要将3D高斯从世界空间转换到相机空间。这通常通过乘以一个视图矩阵 V 来实现。
Σ′=VΣVT\Sigma ^{'} = V \Sigma V^{T}Σ′=VΣVT,其中 VTV^{T}VT 是视图矩阵的转置。

相机坐标系到像素坐标系:

深度剔除:首先,需要剔除高斯在相机空间中的深度信息,以获得其在屏幕空间的2D表示。这可以通过忽略协方差矩阵的第三行和第三列来实现,因为这些行和列包含了深度方向的信息。
映射:然后,应用一个相机内参将2D点从相机空间映射到屏幕空间。这个变换可以通过投影矩阵 P 实现,该矩阵将相机空间中的点转换为屏幕空间中的点。对于协方差矩阵,我们只关心其在屏幕平面上的投影,因此可以使用投影矩阵的2x2子矩阵 P2DP_{2D}P2D​来实现这一转换。
最终,2D屏幕空间中的协方差矩阵
Σ′′=P2DΣ′P2DT\Sigma^{''} = P_{2D} \Sigma^{'} P_{2D}^{T}Σ′′=P2D​Σ′P2DT​,
这里面,Σ′\Sigma ^{'}Σ′是映射到相机坐标系的协方差矩阵,P2DP_{2D}P2D​是根据相机内参组成的一个变换矩阵。

协方差矩阵这部分的映射代码见diff-gaussian-rasterization/cuda_rasterizer/forward.cu

__device__ float3 computeCov2D(const float3& mean, float focal_x, float focal_y, float tan_fovx, float tan_fovy, const float* cov3D, const float* viewmatrix)
{
	// The following models the steps outlined by equations 29
	// and 31 in "EWA Splatting" (Zwicker et al., 2002). 
	// Additionally considers aspect / scaling of viewport.
	// Transposes used to account for row-/column-major conventions.
	//使用视图矩阵将3D均值点变换为视图空间中的点 t
	float3 t = transformPoint4x3(mean, viewmatrix);
	//根据视野范围限制变换后的 x 和 y 坐标,以防止在视口边缘出现失真。
	const float limx = 1.3f * tan_fovx;
	const float limy = 1.3f * tan_fovy;
	const float txtz = t.x / t.z;
	const float tytz = t.y / t.z;
	t.x = min(limx, max(-limx, txtz)) * t.z;
	t.y = min(limy, max(-limy, tytz)) * t.z;
	
	//计算雅可比矩阵 J,它根据焦距和变换后的坐标,将3D空间的变化关系到2D空间的变化。
	glm::mat3 J = glm::mat3(
		focal_x / t.z, 0.0f, -(focal_x * t.x) / (t.z * t.z),
		0.0f, focal_y / t.z, -(focal_y * t.y) / (t.z * t.z),
		0, 0, 0);
	//从视图矩阵构造3x3矩阵 W,用于进一步的变换,paper中的公式(5)
	glm::mat3 W = glm::mat3(
		viewmatrix[0], viewmatrix[4], viewmatrix[8],
		viewmatrix[1], viewmatrix[5], viewmatrix[9],
		viewmatrix[2], viewmatrix[6], viewmatrix[10]);
	//计算矩阵 T,结合视图矩阵和雅可比矩阵,用于将协方差从3D变换到2D
	glm::mat3 T = W * J;
	
	//从输入的 cov3D 数组构建3D协方差矩阵 Vrk
	glm::mat3 Vrk = glm::mat3(
		cov3D[0], cov3D[1], cov3D[2],
		cov3D[1], cov3D[3], cov3D[4],
		cov3D[2], cov3D[4], cov3D[5]);
	//使用 T 变换3D协方差矩阵,得到2D协方差矩阵 cov
	glm::mat3 cov = glm::transpose(T) * glm::transpose(Vrk) * T;

	// Apply low-pass filter: every Gaussian should be at least
	// one pixel wide/high. Discard 3rd row and column.
	//确保结果的高斯分布至少有一个像素的宽度和高度,向协方差矩阵的对角线元素添加小值。
	cov[0][0] += 0.3f;
	cov[1][1] += 0.3f;
	//返回包含2D协方差矩阵相关分量
	return { float(cov[0][0]), float(cov[0][1]), float(cov[1][1]) };
}

preprocess中完成了筛选在相机视锥体内的点,3D投影2D,
2D椭圆的计算(通过求逆2D协方差矩阵得到),确定高斯点影响的tiles范围,颜色计算。
存储:
深度值,屏幕空间半径,2D投影坐标,2D椭圆参数和不透明度,影响的瓦片(tiles)数量

    float3 p_view;
    //检查点是否在相机视锥体内
	if (!in_frustum(idx, orig_points, viewmatrix, projmatrix, prefiltered, p_view))
		return;

	// Transform point by projecting
	float3 p_orig = { orig_points[3 * idx], orig_points[3 * idx + 1], orig_points[3 * idx + 2] };
	float4 p_hom = transformPoint4x4(p_orig, projmatrix);
	float p_w = 1.0f / (p_hom.w + 0.0000001f);
	float3 p_proj = { p_hom.x * p_w, p_hom.y * p_w, p_hom.z * p_w };

	// If 3D covariance matrix is precomputed, use it, otherwise compute
	// from scaling and rotation parameters. 
	const float* cov3D;
	//如果预计算了3D协方差矩阵,直接使用
	if (cov3D_precomp != nullptr)
	{
		cov3D = cov3D_precomp + idx * 6;
	}
	else
	{
	    //否则,根据缩放和旋转参数计算3D协方差矩阵
		computeCov3D(scales[idx], scale_modifier, rotations[idx], cov3Ds + idx * 6);
		cov3D = cov3Ds + idx * 6;
	}

	// Compute 2D screen-space covariance matrix
	//2D协方差计算:将3D协方差矩阵转换为2D屏幕空间协方差矩阵
	float3 cov = computeCov2D(p_orig, focal_x, focal_y, tan_fovx, tan_fovy, cov3D, viewmatrix);

	// Invert covariance (EWA algorithm)
	//计算2D椭圆(conic):通过求逆2D协方差矩阵得到
	float det = (cov.x * cov.z - cov.y * cov.y);
	if (det == 0.0f)
		return;
	float det_inv = 1.f / det;
	float3 conic = { cov.z * det_inv, -cov.y * det_inv, cov.x * det_inv };

	// Compute extent in screen space (by finding eigenvalues of
	// 2D covariance matrix). Use extent to compute a bounding rectangle
	// of screen-space tiles that this Gaussian overlaps with. Quit if
	// rectangle covers 0 tiles.
	//确定屏幕空间范围
	//计算高斯点在屏幕上的半径 
	//确定高斯点影响的图像瓦片(tiles)范围
	float mid = 0.5f * (cov.x + cov.z);
	float lambda1 = mid + sqrt(max(0.1f, mid * mid - det));
	float lambda2 = mid - sqrt(max(0.1f, mid * mid - det));
	float my_radius = ceil(3.f * sqrt(max(lambda1, lambda2)));
	float2 point_image = { ndc2Pix(p_proj.x, W), ndc2Pix(p_proj.y, H) };
	uint2 rect_min, rect_max;
	getRect(point_image, my_radius, rect_min, rect_max, grid);
	if ((rect_max.x - rect_min.x) * (rect_max.y - rect_min.y) == 0)
		return;

	// If colors have been precomputed, use them, otherwise convert
	// spherical harmonics coefficients to RGB color.
	//如果颜色预计算过,直接使用
	//否则,从球谐函数(spherical harmonics)系数计算RGB颜色
	if (colors_precomp == nullptr)
	{
		glm::vec3 result = computeColorFromSH(idx, D, M, (glm::vec3*)orig_points, *cam_pos, shs, clamped);
		rgb[idx * C + 0] = result.x;
		rgb[idx * C + 1] = result.y;
		rgb[idx * C + 2] = result.z;
	}

	// Store some useful helper data for the next steps.
	depths[idx] = p_view.z;
	radii[idx] = my_radius;
	points_xy_image[idx] = point_image;
	// Inverse 2D covariance and opacity neatly pack into one float4
	//2D椭圆参数和不透明度
	conic_opacity[idx] = { conic.x, conic.y, conic.z, opacities[idx] };
	//影响的瓦片数量
	tiles_touched[idx] = (rect_max.y - rect_min.y) * (rect_max.x - rect_min.x);

全部的渲染流程在rasterizer_impl.cu的forward函数中
大致如下:

CHECK_CUDA(FORWARD::preprocess
// Compute prefix sum over full list of touched tile counts by Gaussians
// E.g., [2, 3, 0, 2, 1] -> [2, 5, 5, 7, 8]
CHECK_CUDA(cub::DeviceScan::InclusiveSum
// Sort complete list of (duplicated) Gaussian indices by keys
CHECK_CUDA(cub::DeviceRadixSort::SortPairs(
CHECK_CUDA(FORWARD::render(

渲染函数render中,涉及paper中的公式(1) ~ (3)

// Iterate over current batch
for (int j = 0; !done && j < min(BLOCK_SIZE, toDo); j++)
{
	// Keep track of current position in range
	contributor++;

	// Resample using conic matrix (cf. "Surface 
	// Splatting" by Zwicker et al., 2001)
	float2 xy = collected_xy[j];
	float2 d = { xy.x - pixf.x, xy.y - pixf.y };
	float4 con_o = collected_conic_opacity[j];
	float power = -0.5f * (con_o.x * d.x * d.x + con_o.z * d.y * d.y) - con_o.y * d.x * d.y;
	if (power > 0.0f)
		continue;

	// Eq. (2) from 3D Gaussian splatting paper.
	// Obtain alpha by multiplying with Gaussian opacity
	// and its exponential falloff from mean.
	// Avoid numerical instabilities (see paper appendix). 
	//通过这一步限制了透明度alpha的取值在[0,1]
	float alpha = min(0.99f, con_o.w * exp(power));
	if (alpha < 1.0f / 255.0f)
		continue;
	float test_T = T * (1 - alpha);
	if (test_T < 0.0001f)
	{
		done = true;
		continue;
	}

	// Eq. (3) from 3D Gaussian splatting paper.
	for (int ch = 0; ch < CHANNELS; ch++)
		C[ch] += features[collected_id[j] * CHANNELS + ch] * alpha * T;

	T = test_T;

	// Keep track of last range entry to update this
	// pixel.
	last_contributor = contributor;
}
3D Gaussian Splatting 渲染过程 给定一组三维高斯点,渲染步骤大致为:1.world space转成ray space 2.对像平面分块排序 3.正投影发出射线进行α-blending。 阅读详情

相关推荐

3D高斯飞溅(3DGS)实战:从单张图片到完整3D场景的5步流程(附CVPR2024最新开源工具)

本文详细介绍了3D高斯飞溅(3DGS)技术从单张图片到完整3D场景的5步实战流程,包括环境准备、多视角生成、深度估计、3D高斯优化及渲染后处理。结合CVPR 2024最新开源工具Wonder3D和VastGaussian,3DGS在渲染效率、内存占用和边缘清晰度上显著优于传统NeRF方案,适用于三维重建和深度补全等应用场景。

hh234的博客 1151

3DGS学习(四)—— 快速高斯光栅化

该过程将3D空间内的3D椭球投影到2D空间中进行渲染,该过程主要对表示椭球的协方差矩阵乘上变换矩阵加以实现。类比到现实生活中,就好像将雪球用力掷向墙壁,啪的一声绽开,在墙上留下了一个中心密集,向四周逐渐变浅变稀疏的雪块。的像素点,我们可以通过视图变化计算出所有在该位置重叠的高斯的深度并排序,最后对排列好的高斯进行alpha融合,返回该像素点最后的颜色值。对于覆盖多个块的高斯,作者复制高斯并为他们分配标识符。确定相机位姿进一步确定视锥体,有利于剔除视锥体以外的部分,防止出现浪费的计算。图片摘自知乎@目难忘。

m0_63843473的博客 7152

Gaussian Splatting SLAM 学习笔记——初识3DGS和代码review

3D Gaussian Splatting作为一种栅格化技术,可用于实时且逼真地渲采从一组图像中学到的场景,其引入了三个关键元素用以改善NeRF神经辐射场方法训练速度和渲染质量的瓶颈问题,在保持有竞争力的训练时间的同时实现最先进的视觉质量,允许在1080p分辨率下实现高质量的实时(≥30fps)的新视图合成。1. 三个关键技术多个高斯模型共同构成了整个场景的连续体积表示,这些3D高斯从最初产生的稀疏点(由SFM得到)开始初始化。

2201_75451272的博客 3182

3DGS之光栅化

光栅化(Rasterization)是计算机图形学中将连续的几何图形(如三角形、直线等)转换为离散像素的过程,最终在屏幕上形成图像。

whuzhang16的博客 903

3DGS实战:如何用PyTorch搭建3D高斯渲染器(含完整代码解析)

本文详细介绍了如何使用PyTorch构建3D高斯渲染器(3DGS),包含完整的代码解析和实战指南。从3D高斯渲染技术基础到核心数据结构实现,再到渲染管线与性能优化,逐步讲解如何实现高质量的实时渲染效果。文章特别提供了环境配置建议、关键代码片段和训练优化技巧,适合计算机视觉开发者学习3DGS技术。

pepsi的博客 997

ClickHouse分布式表原理:大数据分片存储与查询

我是一名资深大数据工程师,专注于ClickHouse优化和分布式架构设计。拥有5年以上大数据开发经验,曾为多家电商、金融公司提供ClickHouse解决方案。欢迎关注我的博客(),一起探讨大数据技术!留言互动:你在使用ClickHouse分布式表时遇到过什么问题?欢迎在评论区分享,我会一一解答!

AI大模型应用之禅 958

3dgs的实现细节梳理

最近从头开始学习3dgs技术,看完3dgs文章后梳理了一下,整个梳理和理解都是以实现为目的进行的,目前还没看作者的代码细节,只通过文章叙述来理解了一下整个算法的思路。

u012484514的博客 4624

AXI Memory Mapped To PCI Express IP 核设计实例

本文详细描述了AXI Memory Mapped To PCI Express(2.9) IP核的应用实例

u011565038的博客 2796

【3DGS】从新视角合成到3D_Gaussian_Splatting

【3DGS】从新视角合成到3D_Gaussian_Splatting

在这里你甚至能学算卦,快进来看看 9374

Dynamics 365 F&O 开发入门(一)-- 从零开始建表

从零开始一步一步教你在Dynamics 365 F&O中创建一个表

qq_48843110的博客 941

AUTOSAR RTE配置实战:从ECU分区到Task映射的完整指南

本文提供了一份AUTOSAR RTE配置的完整实战指南。从创建ECU分区、定义OS任务,到实现Runnable Entity与Task的精确映射,详细解析了每一步的操作要点与常见陷阱。文章结合配置工具界面,旨在帮助开发者高效完成RTE配置,确保系统实时性与数据一致性,是掌握AUTOSAR核心开发流程的实用参考。

weixin_29228203的博客 484

结合代码读3DGS论文(4)——CVPR 2026 3DGS加速&压缩新工作FastGS(两分钟内训练一个高斯模型)论文及代码解读

FastGS是一种创新的3D高斯喷溅(3DGS)加速框架,能在100秒内完成场景训练。该方法通过基于多视角一致性的致密化与剪枝策略,严格控制高斯数量的增减,显著提升训练效率。实验表明,FastGS在Mip-NeRF 360等数据集上实现3-15倍的加速,同时保持渲染质量,并在动态场景重建等多种任务中展现出强泛化性。其核心创新在于利用高斯对多视图重建质量的实际贡献评估重要性,而非依赖传统的高斯自身属性评分,有效避免了冗余计算。相关代码已开源,为3DGS的加速与压缩研究提供了新思路。

做cv的小昊的博客 2887

2022(一等奖)B360基于Arcpy与SVM的滑坡易发性评价

此外,在ArcGIS平台下,“易发性图预测(多进程)”工具的运行时间为2h 48m 3s,“易发性图预测(单进程)”工具的运行时间为5h 19m 27s,运行时间缩短了近2h 31m 24s,运行效率提高了47.39%。在ArcGIS Pro平台下,“易发性图预测(多进程)”工具的运行时间为20m 12s,“易发性图预测(单进程)”工具的运行时间为1h 26m 47s,将运行时间缩短了近1h 6m 35s,运行效率提高了76.72%。滑坡的发生受各种影响因素的影响,目前,影响因素的选择没有一个统一的标准。

2301_77310370的博客 1465

[万字长文]3DGS中forward过程的公式推导及代码分析

这篇文章作为之前的补充,之前只是从原理和流程上进行了解析,没有深入到内部的数学原理中,这篇文章会结合其他几篇经典的3DGS论文,综合来推导数学原理和代码首先。主线还是沿着render kernel的处理流程来梳理。

旭先森 1813

P+F--r2000激光雷达slam技术实现

P+F--r2000激光雷达slam技术实现

majingming123的博客 1667

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

|~~~热爱生活、努力学习的小伙汁~~~| 2106

3DGS 如何理解它?

3DGS即是3D Gaussian Splatting。 出自2023年的一篇名为《3D Gaussian Splatting for Real-Time Radiance Field Rendering》([[3D Gaussian Splatting for Real-Time Radiance Field Rendering.pdf]]),作者是BERNHARD KERBL和GEORGIOS KOPANAS。原文我看了几遍,也在win11环境下跑了一遍([[3dgs复现-从零搭建]])。但是由于自身在

m0_51203082的博客 1587

FM1288回声消除芯片调试方案 - 综述

专栏文章概览

优快云mianfeixiazai001的博客 1713

NeRF和3DGS原理详细

Nvidia提出,NeRF研究工作者集大成之作。将3DGS重建场景投射到不同视角的相机平面,颜色形状均都是不同的。其中形状的各向异性,是由于它本身是一个三维椭球而非正球体;颜色的各向异性则是通过球谐函数实现。可实现快速的抛雪球渲染与反向传播。抛雪球计算机图形学中经典概念,把三维点视作雪球朝相机平面进行泼洒,雪球在平面扩散开,当有很多大大小小不同形状、颜色各异的雪球进行泼洒和叠加时便形成期望渲染的图像。这种方法无需像NeRF一样进行光线采样。这是3DGS比NeRF更快的主要原因之一。

qq_37346140的博客 1896

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

结合代码读3DGS论文(5)——CVPR 20253DGS加速&压缩新工作DashGaussian论文及代码解读

本文介绍了CVPR 2025的新工作DashGaussian,一种优化3D高斯泼溅(3DGS)的方法,可将百万级基元的3DGS模型优化时间缩短至200秒。该方法通过动态调度渲染分辨率和基元数量来加速优化:1)提出频率引导的分辨率调度器,根据图像频率成分自适应调整分辨率;2)设计分辨率引导的基元调度器,使基元数量与分辨率同步增长。实验表明DashGaussian在不损失渲染质量的情况下,平均加速多种3DGS主干45.7%。该工作由哈尔滨工业大学和华为诺亚方舟实验室合作完成,为3DGS的高效优化提供了新思路。

做cv的小昊的博客 1442

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

3DGRUT与传统3DGS对比:为什么混合渲染是未来趋势?

3DGRUT(3D Gaussian Ray Tracing and Unscented Transform)是一项突破性的混合渲染技术,它巧妙融合了光线追踪与光栅化的优势,彻底改变了传统3DGS(3D Gaussian Splatting)在复杂场景渲染中的局限。本文将深入剖析3DGRUT如何通过创新架构解决3DGS的性能瓶颈,以及为什么混合渲染正成为下一代实时图形技术的主流方向。 ## 传统

gitblog_00334的博客 900

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

slam系列4:nerf和3dgs

常用的3维表示法:NeRF属于是density的模型,模型的参数如下:传统的 3D 模型表示方法,如 离散的Mesh 和点云,以及连续的 Nerf,通常面临着一个主要问题:随机采样过程中产生的噪声,这直接影响了渲染质量。3DGS 是在离散和连续间的一个平衡:在高斯球内部是连续的、可微的;在整个空间中,每个高斯球又是离散的。

kittyzc的博客 2507

论文Review 3DGS 2DGS | SIGGRAPH 2024 上科大 图宾根大学 | 目前用的最多的3DGS之一竟然是2DGS

本文提出2D高斯溅射(2DGS)方法,用于从多视角图像中精确重建几何辐射场。针对3D高斯溅射(3DGS)在表面重建中的多视图不一致性问题,2DGS将3D体坍缩为2D定向平面高斯圆盘,实现视图一致的几何表示。通过射线-面片相交和光栅化的精确溅射过程,结合深度扭曲和法线一致性正则化,2DGS能恢复薄表面并保持稳定优化。实验表明,2DGS在DTU和Tanks&Temples数据集上实现了最先进的几何重建质量,训练速度比隐式方法快100倍,同时保持实时渲染能力。该方法为高质量新视角合成和精确几何重建提供了高

weixin_42148238的博客 1777

3DGS之COLMAP

COLMAP在3D高斯泼溅(3DGS)中作为关键预处理工具,通过特征提取与匹配实现稀疏重建,继而完成稠密点云生成和相机参数提取。其处理流程包括:SIFT特征提取、穷举匹配、SfM稀疏重建及图像去畸变,最终输出相机参数文件和三维点云数据。这些结果为3DGS的高斯分布建模提供初始几何信息,包括相机位姿和场景结构,为后续实时渲染奠定基础。COLMAP的精度直接影响3DGS模型质量,其全局优化参数可控制重建精度与效率的平衡。

whuzhang16的博客 2017

3DGS压缩-Knowledge Distillation for 3DGS

如何轻量化一个复杂并且冗余的神经网络,答案是做蒸馏与dropout,同样的问题也出现在了3DGS上,这里的一个trade-off在于:高效压缩与质量不下降,之前一些压缩工作在这两个方向之间来回摇摆。时值3DGS发布两年,The University of Manchester的学者给出了一个均衡的方案,尽管GS时离散且显式的表达方式,但是作者仍以一种巧妙的方式套用传统的神经网络轻量化的思路。

m9_743106469350的博客 1782

3DGS核心原理深度解析:为什么它能实现实时高质量渲染?

3D Gaussian Splatting(3DGS)作为近年来3D场景重建与渲染领域的革命性技术,以其**实时渲染速度**与**电影级画质**的完美平衡,迅速成为计算机视觉与图形学的研究热点。本文将从核心原理、技术优势、应用场景三个维度,揭示3DGS如何突破传统渲染技术瓶颈,为元宇宙、AR/VR、自动驾驶等领域提供全新可能。 ### 一、从点云到高斯:3DGS的核心创新 传统3D重建技术如Ne

gitblog_00732的博客 624
上一篇: gaussian grouping训练自定义数据集
下一篇: python脚本pull docker image
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值