diff --git a/Advanced/2d_splats.png b/Advanced/2d_splats.png new file mode 100644 index 0000000..f03f7b4 Binary files /dev/null and b/Advanced/2d_splats.png differ diff --git a/Advanced/gaussian_splatting.html b/Advanced/gaussian_splatting.html index e789c01..6eab14f 100644 --- a/Advanced/gaussian_splatting.html +++ b/Advanced/gaussian_splatting.html @@ -231,7 +231,7 @@
5_08_gaussian_splatting_1/index.html:35-60 Visualizing the Point Cloud
And here is the rendering result:
To understand how to render a Gaussian splat, we need to be familiar with the geometric interpretation of a 3D Gaussian function. For that, I recommend this document. I will skip the details and summarize what's useful for our implementation.
A 3D Gaussian is defined by two parameters: a centroid and a 3x3 covariance matrix. Intuitively, the centroid is the position of a Gaussian, and the covariance matrix defines the shape of the Gaussian (an ellipsoid).
\mathcal{N}(\mu, \sigma^2)
If we consider 1D Gaussians, they are defined by a mean \mu
and a variance \sigma^2
. In this context, the mean \mu
dictates the center of the Gaussian on the x-axis, while \sigma^2
determines its spread or shape.
The same principle extends to 2D and 3D Gaussians, where they are defined by a mean \mu
(or centroid) and a covariance matrix \Sigma
. In 2D, the covariance \Sigma
is a 2x2 matrix, and in 3D, it is a 3x3 matrix. The covariance matrix holds geometric significance, defining the ellipsoidal shape of the Gaussian.
\mathcal{N}(\mu, \Sigma)
Below is an illustration showing various 2D Gaussian shapes and their corresponding covariances.
We can shift the centroid to adjust a Gaussian's position, and we can also rotate and scale the covariance matrix to modify its shape. This process is akin to applying a model-view matrix to vertices during rendering, although the mathematical operations involved are not identical.
The fundamental insight from the geometric interpretation outlined in the document is that the covariance matrix \Sigma
specifies a rotation and scaling transformation that morphs a standard Gaussian with the identity matrix \mathbf I
as its covariance into an ellipsoidal shape. Let this transformation be represented by a 3x3 matrix \textit{T}
; it can be factored into a product of a 3x3 rotation matrix \textit{R}
and a scaling matrix \textit{S}
. Thus:
\begin{aligned}
+
And here is the rendering result:
To understand how to render a Gaussian splat, we need to be familiar with the geometric interpretation of a 3D Gaussian function. For that, I recommend this document. I will skip the details and summarize what's useful for our implementation.
A 3D Gaussian is defined by two parameters: a centroid and a 3x3 covariance matrix. Intuitively, the centroid is the position of a Gaussian, and the covariance matrix defines the shape of the Gaussian (an ellipsoid).
\mathcal{N}(\mu, \sigma^2)
If we consider 1D Gaussians, they are defined by a mean \mu
and a variance \sigma^2
. In this context, the mean \mu
dictates the center of the Gaussian on the x-axis, while \sigma^2
determines its spread or shape.
The same principle extends to 2D and 3D Gaussians, where they are defined by a mean \mu
(or centroid) and a covariance matrix \Sigma
. In 2D, the covariance \Sigma
is a 2x2 matrix, and in 3D, it is a 3x3 matrix. The covariance matrix holds geometric significance, defining the ellipsoidal shape of the Gaussian.
\mathcal{N}(\mu, \Sigma)
Below is an illustration showing various 2D Gaussian shapes and their corresponding covariances.
We can shift the centroid to adjust a Gaussian's position, and we can also rotate and scale the covariance matrix to modify its shape. This process is akin to applying a model-view matrix to vertices during rendering, although the mathematical operations involved are not identical.
The fundamental insight from the geometric interpretation outlined in the document is that the covariance matrix \Sigma
specifies a rotation and scaling transformation that morphs a standard Gaussian with the identity matrix \mathbf I
as its covariance into an ellipsoidal shape. Let this transformation be represented by a 3x3 matrix \textit{T}
; it can be factored into a product of a 3x3 rotation matrix \textit{R}
and a scaling matrix \textit{S}
. Thus:
\begin{aligned}
\Sigma &= \textit{T} \textit{I} \textit{T}^\top \\
\Sigma &= \textit{R} \textit{S} (\textit{R} \textit{S})^\top \\
\Sigma &= \textit{R} \textit{S} \textit{S}^\top \textit{R}^\top \\
diff --git a/Advanced/normal_distribution.png b/Advanced/normal_distribution.png
new file mode 100644
index 0000000..c6122cd
Binary files /dev/null and b/Advanced/normal_distribution.png differ
diff --git a/Advanced/placeholder.jpg b/Advanced/placeholder.jpg
deleted file mode 100644
index e70b438..0000000
Binary files a/Advanced/placeholder.jpg and /dev/null differ
diff --git a/Advanced/thumb_2d_splats.png b/Advanced/thumb_2d_splats.png
new file mode 100644
index 0000000..d22c360
Binary files /dev/null and b/Advanced/thumb_2d_splats.png differ
diff --git a/Advanced/thumb_normal_distribution.png b/Advanced/thumb_normal_distribution.png
new file mode 100644
index 0000000..5e577ec
Binary files /dev/null and b/Advanced/thumb_normal_distribution.png differ