3.1.1. Density-Aware Voxel Grid Extraction
Our method leverages point cloud density to evaluate occlusion levels within a 3D scene. The surfaces of objects in a 3D environment are represented by point clouds, consisting of collections of points
, each of which represents a spatial location. These points are typically generated by sensors such as LiDAR or depth cameras like the ZED 2, Intel RealSense L515, OAK-D by OpenCV, or Velodyne VLP-16 [
47]. To effectively manage and analyze the raw point cloud data, we discretize the 3D space into smaller units known as voxels.
The process of dividing a 3D space into regular 3D cells, or voxels, where each voxel is a tiny space volume, is known as voxelization. We can determine areas with possible occlusion by calculating the point density, which is obtained by counting the number of points within each voxel. Higher point densities are linked to occluded areas, which occur when many objects cross the sensor’s field of view. Furthermore, the local point density can be further increased when points from many objects align in the same plane (for example, when objects are stacked at a similar height). Lower densities, on the other hand, represent areas with little to no occlusion (
Figure 3).
For
, 3D points are represented as
, where the attribute
N denotes the total number of points in the cloud. By splitting the area into tiny, uniformly sized voxels, each denoted by its center coordinates
, the voxel grid is created. Each voxel’s size is denoted as
voxel_size, which is fixed across the grid. We calculate the voxel indices
for each point
to determine which voxel it belongs to. The voxel index for a point is determined by the following equation:
where
are the minimum coordinates of the voxel grid. Through normalization of the point’s location with respect to the minimum grid coordinates and division by the voxel size, these equations translate the 3D coordinates of a point into its corresponding voxel. Every point is attributed to a unique voxel due to the floor function.
We determine the density for each voxel by counting the number of points that fall inside its limits after assigning each point to its corresponding voxel. For a voxel centered at
, the density
is computed as follows:
where
is an indicator function defined as
And similar calculations are used for
.
This function returns 1 if point is inside the voxel bounds, and if not, it returns 0. We obtain the voxel’s point density , which provides insight into the number of objects (or parts of objects) in that region, by adding up all the points within a voxel.
This analysis allows us to detect regions of the scene where occlusion occurs, specifically in areas where the points from multiple objects overlap or align along the same 3D plane, contributing to a high-density region. Regions with low density typically correspond to empty or non-occluded space.
3.1.2. Neighbor Density Calculation
The initial density analysis’s spatial distribution enables a neighbor density calculation, which evaluates surrounding areas to distinguish between continuous, concentrated regions, caused by proximity to the sensor, and dense patches with gaps, which indicate potential occlusions (
Figure 4). In our earlier implementation of the method [
48], neighboring points around each voxel were estimated using a KDTree structure [
49]. While effective for uniform distributions, KDTree relies on fixed-radius searches, which makes it unsuitable for scenes with irregular object spacing, resulting in inaccurate occlusion estimation when dense and sparse regions coexist.
To overcome these drawbacks, we adopted the Standard Voronoi Diagram [
50], which partitions the space into regions closest to specific center points. Unlike voxel-based methods, Voronoi diagrams dynamically adapt to the spatial distribution of points, enabling robust occlusion handling.
For each point
, its Voronoi cell is defined as the region of space, where
This allows us to naturally adapt to the spatial distribution of points and overcome the limitations of fixed-radius neighbor searches.
The voxel density is computed as the number of points falling within a voxel. For a voxel centered at
, the voxel density
is given by
This metric helps identify regions with potential occlusions, characterized by a large number of points within a voxel. However, alone does not account for the local distribution of points outside the voxel.
For voxels exceeding the density threshold (
), the Voronoi Density (
) is computed as the inverse of the volume of the Voronoi cell around each point:
where
is the volume of the Voronoi cell associated with point
. Smaller Voronoi cells indicate a higher density of points, often associated with occlusions, while larger cells suggest open spaces or less occluded regions.
The neighbor density, given the Voronoi diagram (
), is used to estimate the density of neighboring points by computing the volumes of the Voronoi cells around high-density voxels. Unlike the KDTree method, which uses a fixed-radius neighborhood, Voronoi diagrams allow for varying the size and shape of surrounding cells to provide a more accurate estimation of local density:
where
represents the volumes of the Voronoi cells for neighboring points. Smaller average volumes indicate a denser neighborhood, highlighting potential occlusion zones.
By comparing
(Equation (
7)) with
(Equation (
5)), insights into the spatial distribution around the voxel are gained. If
is significantly lower than
, it indicates dispersed points, suggesting gaps between objects and potential occlusions:
Alternatively, if
is approximately equal to
, it implies that the points are tightly clustered, suggesting no occlusion:
This method, leveraging the Standard Voronoi Diagram, enhances the model’s ability to handle spatial features effectively, particularly in scenarios with irregular point distributions. This specific modeling showed its potential for improving occlusion handling, as demonstrated in the experiments.
Unlike classical density estimation, this analysis is directly linked to object detection performance: regions with mismatched voxel and Voronoi densities correspond to objects hidden behind occluders, which are precisely the cases where RGB-only detection fails. Identifying such regions enables the network to selectively activate 3D features when the visual modality becomes unreliable, instead of performing fusion uniformly across the whole scene.
In practice, voxel density and Voronoi-based neighbor density play complementary roles in our OR computation. The voxel density highlights cells where many points accumulate within a fixed spatial volume, which often corresponds to occluders or overlapping object surfaces. The Voronoi-based neighbor density , in turn, examines how these points are distributed in the local neighborhood: compact Voronoi cells indicate genuinely dense structures, whereas larger neighboring cells reveal gaps that are typical of occlusion boundaries. The multi-scale OR metric aggregates these statistics across different voxel sizes so that both small, distant objects and larger, nearby objects contribute to a single scalar measure of occlusion severity per frame.
3.1.3. Occlusion Rate Determination and Model Selection
Our method uses a multi-scale density-based metric to determine whether the occlusion-handling network should be activated or whether a standard object detector is sufficient. This adaptive strategy extends the previous FuDensityNet version [
48].
- —
Multi-Scale Density Calculation
A more realistic assessment of obstruction of both small and large objects can thus be made possible by estimating the voxel densities at different levels. In this technique, the densities for small-, medium-, and large-volume elements are calculated, with each scale defined by the voxel size in relation to the dimensions of the objects in the scene. Specifically:
Small-scale voxel density (): Captures finer details of small or distant objects, such as pedestrians or cyclists.
Medium-scale voxel density (): Balances small and large object detection, providing a middle ground for most objects.
Large-scale voxel density (): Focuses on larger objects, such as vehicles, to ensure robust detection for less detailed elements.
The densities assigned to each image at an OR value are determined as a weighted sum, where
where
,
, and
are the weights associated with the small, medium, and large voxel scales, respectively.
The weights , , and are normalized such that . They control the relative contribution of each voxel scale to the final OR score. In this work, a higher weight is assigned to the small-scale density term because small and distant objects are more sensitive to partial visibility loss, sparse LiDAR sampling, and local geometric discontinuities. The medium-scale term provides local contextual information, while the large-scale term captures broader object structures, such as vehicles. In all experiments, the weights are set to , , and , respectively. This choice gives priority to fine-scale density variations while still preserving contextual and global geometric information.
Each density term (
) is derived from the density calculation formula in Equation (
2).
For clarity, consider an object region with multi-scale density values
,
, and
. Using
,
, and
, the OR score is computed as follows:
This example illustrates how density information from different voxel scales is combined into a single scalar score. The resulting OR value is then used by the pathway-selection rule described below.
It is important to emphasize that the OR score is not a direct physical percentage of object occlusion. Instead, it is a density-derived indicator that captures spatial congestion and local point cloud organization. A high voxel density alone does not necessarily imply occlusion, since dense regions may also result from nearby non-occluded objects or LiDAR sampling geometry. Therefore, the OR module combines multi-scale voxel density with neighborhood density analysis to reduce this ambiguity. The voxel density identifies regions with concentrated point structures, while the Voronoi-based neighbor density helps distinguish compact nearby structures from irregular spatial distributions that are more likely to correspond to occlusion boundaries or overlapping objects.
Consequently, the OR score should be interpreted together with the Voronoi-based neighborhood analysis described in
Section 3.1.2. While voxel density provides a scale-dependent measure of local point concentration, the Voronoi component captures how neighboring points are spatially distributed around dense regions. This reduces the risk of confusing uniformly dense nearby objects with true occlusion-related discontinuities.
The resulting OR score should not be interpreted as a direct percentage of the object area that is visually hidden. Instead, it represents a density-derived occlusion indicator that reflects the spatial organization of LiDAR points at multiple scales. High OR values indicate regions where point density, local spatial congestion, and object overlap are more likely to occur, which are typical characteristics of partially or largely occluded scenes. Conversely, low OR values generally correspond to more isolated or clearly visible objects, where the 2D appearance information remains sufficiently reliable.
The use of multiple voxel scales is important because occlusion affects objects differently depending on their size, distance from the sensor, and local point density. Small-scale density captures fine spatial variations around small or distant objects, medium-scale density provides a balanced representation of local neighborhoods, and large-scale density captures the broader spatial structure of larger objects such as vehicles. By combining these three terms, the OR score provides a compact indicator of the likelihood that the 2D detector may require complementary 3D information.
The effectiveness of this method is demonstrated in
Figure 5. It can be noted that the multi-scale density calculation of the OR improves model selection, which further enhances overall detection performance in all aspects.
- —
Threshold Comparison and Model Selection
After being calculated, the OR score is compared to a decision threshold in order to select the most appropriate detection pathway. This threshold is used to distinguish low-occlusion cases, where a 2D detector is sufficient, from moderate-to-high-occlusion cases, where multimodal RGB-LiDAR fusion is expected to provide additional geometric support.
In the revised formulation, the threshold is not treated as an arbitrary empirical value. Instead, it is calibrated using the object-level occlusion annotations provided in the KITTI training set. KITTI assigns each annotated object an occlusion flag, where 0 denotes a fully visible object, 1 denotes a partly occluded object, 2 denotes a largely occluded object, and 3 denotes an unknown occlusion state. Since the label 3 does not correspond to a reliable supervised occlusion category, it is excluded from the threshold calibration.
The calibration is performed at the object level, because the KITTI occlusion flag is associated with individual objects rather than entire frames. For each annotated object, the OR score is computed using the multi-scale density formulation defined in Equation (
10). Objects with occlusion label 0 are assigned to the low-occlusion group, while objects with occlusion labels 1 and 2 are assigned to the occluded group. For a candidate threshold
t, the predicted occlusion state is defined as
where
denotes the OR score computed for the
i-th annotated object. The value
means that the object is considered sufficiently occluded to activate the multimodal branch, while
means that the 2D-only pathway is retained.
To select the threshold, candidate values are evaluated by comparing the predicted occlusion state
with the KITTI occlusion labels. The true-positive rate
measures the proportion of partly or largely occluded objects correctly identified as occluded by the OR threshold. The false-positive rate
measures the proportion of fully visible objects incorrectly routed to the multimodal branch. The optimal operating point is selected using Youden’s index [
51]:
where
denotes the threshold that provides the best separation between fully visible objects and partly/largely occluded objects.
It should be noted that the KITTI difficulty levels Easy, Moderate, and Hard are defined using multiple criteria, including object height, truncation, and occlusion. Therefore, the threshold calibration is performed using the raw object-level occlusion flag rather than the difficulty level itself. The difficulty levels are used later only for reporting detection performance under increasingly challenging evaluation conditions.
The resulting threshold calibration and its relationship with the KITTI occlusion categories are reported in
Section 4.2.
After calibration, the threshold is used as a pathway-selection rule during inference. When the OR value exceeds the calibrated threshold, the scene is considered sufficiently occluded to justify the additional cost of multimodal processing. The calibrated threshold is then used as the inference-time routing rule:
If OR : Our multimodal occlusion-aware network is activated to ensure more reliable perception under moderate-to-high occlusion.
If OR : The standard 2D detector is used to prioritize speed in low-occlusion scenes.