PointCloudLibrary / PointCloudLibrary/pcl

Texture mapping: occlusion logic of faces when projected to camera

Open
#1,740 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status: stale
Dominant language
C++
Stars
11.1k
Forks
4.7k
Avg merge
4d 10h
Merged PRs (30d)
6

Description

  • PCL Version: commit dd532fe

I think there is a logic problem in texture_mapping.hpp.
code_link

if (idx_pcam == current_cam && !visibility[idx_face])
{
         // we are now checking for self occlusions within the current faces
         // the current face was already declared as occluded.
         // therefore, it cannot occlude another face anymore => we skip it
         continue;
}

We want to project all faces to a camera plane and determine which face is occluded and which one is visible.

If face A occlude face B, face B occlude face C.
Imaging we check face A first, find out that B is occluded by A, B is marked non-visible.
And then we check B, since B is non-visible, we skip.
At the end, We conclude that no faces occlude C, so C is visible, which is not true.

I don't know if i had missed something or maybe I just didn't fully understand the code.
Can someone figure it out for me? Thx.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in surface/include/pcl/surface/impl/texture_mapping.hpp around line 851 and trace how projected faces update visibility during self-occlusion checks. Reproduce the reported A→B→C chain, then verify that the occlusion logic does not skip a face in a way that incorrectly leaves C visible.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.