Fix boxes3d for points with negative depth #291
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes issue #225, encountered when some points of boxes3d have negative depth (part of the object is behind the camera).
Points with negative depth are re-projected to positive depth by negating them. The line is then extend to outside the image to keep it coherent.
To extend the line, I compute the normalized vector from the linked point inside the frame to the point with negated depth (in image space). I then rescale the vector and add it to the negated point to extend outside the visible frame.
To find the right linked point, I take the furthest away from the point of negative depth. There is only 2 possible points since the third also has negative depth and thus there is no visible line that can can be seen from it.
The only limitation of this technique is if a point has negative depth and linked to two points in the visible image then one of the line will be distorted.
I also fix NaN when depth = 0.
Code to replicate results: