next up previous
Next: Detecting External Occlusion Up: Feature Visibility Analysis Previous: Deducing Back-Facing SURFACEs

Deducing Self-Obscured SURFACEs

Given the deductions of the previous subsection, all remaining SURFACEs must be at least partially front-facing, but some may be partially or wholly self-obscured by other closer SURFACEs from the same object.

Self-occlusion analysis uses the object model and position estimates to predict an image of the object, which is then analyzed for visibility. The process occurs in three stages:

  1. prediction of visible SURFACEs,
  2. deduction of missing SURFACEs and
  3. deduction of partially self-obscured SURFACEs.

The first step is implemented using a raycasting depth image generator. Here, a ray from the viewer is intersected with the model SURFACEs placed according to the object's estimated position. The raycaster produces an array of pixels valued with the depth and identity of the closest (i.e. visible) SURFACE.

The detection of completely obscured structure is now trivial and consists of finding those front-facing SURFACEs (from the analysis of the preceding subsection) not visible in the predicted image.

The detection of partially obscured SURFACEs is also simple. During image generation, whenever a predicted visible surface pixel was replaced or not included because of a closer pixel, then self-occlusion occurred. The identities of all SURFACEs that suffered this are recorded during the generation of the synthetic image. Any such SURFACE not completely self-obscured is then partially self-obscured.

Parameter estimation errors may cause nearly obscured SURFACEs to disappear and barely obscured SURFACEs to reappear. A similar effect occurs with unobscured SURFACEs becoming partially obscured (i.e. because a closer SURFACE moves slightly in front of it) and vice versa. So, the following algorithm was implemented to decide the visibility classes:

  $v$ = number of visible pixels (predicted by raycasting)
  $n$ = number of obscured pixels (predicted by raycasting)
  $p = v / (v + n)$ (percentage of visible pixels)
  if $p > \tau_1$, then the SURFACE is fully visible ($\tau_1 = 0.9$)
  if $\tau_1 \geq p > \tau_2$, then the SURFACE is partially obscured ($\tau_2 = 0.05$)
  Otherwise, the SURFACE is fully obscured

Table 9.12 records the predicted occlusion status for all front-facing SURFACEs of all primitive ASSEMBLYs in the test image. This corresponds exactly to the observed visibility of all SURFACEs (disregarding external occlusion, which is discussed below). For structured ASSEMBLYs, the process is similar, only some previous cases of external occlusion now become self-occlusion as components are connected together.

Figure 9.17: Boundaries Surround Completely Obscured Surface
\begin{figure}\epsfysize =2.8in

Table 9.12: Predicted Self-Occlusions
Object Occlusion Status
robbody fully-visible = {robbodyside(1)}
robshldbd fully-visible = {robshldend,robshould2}
robshldsobj fully-visible = {robshoulds(1)}
upperarm fully-visible = {uside(2),uends}
lowerarm fully-visible = {lsideb,ledgea}
partially-self-obscured = {lendb}
trashcan fully-visible = {tcanoutf(1)}
partially-self-obscured = {tcaninf(1)}
fully-self-obscured = {tcanbot(1)}

next up previous
Next: Detecting External Occlusion Up: Feature Visibility Analysis Previous: Deducing Back-Facing SURFACEs
Bob Fisher 2004-02-26