PlaneFill is a algorithm to detect multiple planes from depth image
We inspired by this page.
First, compute
Then we can get these results.
Depth Image | Normal Map |
---|---|
But, we can't find plane from this normal map due to normal vectors appear in different values depending on the depth even though they are on the same plane. This is because we calculate normal vector on the normalized camera coordinate. Thus, these vectors do not reflect the actual characteristics of the plane and instead represent distorted values.
We predicted that this phenomenon would worsen as the distance increased, so we thought that we could interpolate using these values. (This is an abstract approach, and we are currently conducting research for a more mathematical interpretation.)
Thus, we modified
Then, we can acquire filtered-normal map
Then we can get these results.
Common Approach ( |
Proposed Approach |
---|---|
Next, we proceeded with plane labeling using the previously obtained normal map. For labeling, we utilized the flood-fill algorithm from OpenCV to perform pixel growing on the plane.
While using flood-fill, we found that the pixel growing method occasionally results in the merging of different planes. Therefore, we employed a method that utilizes not only the comparison with surrounding pixel values but also incorporates the absolute difference values from the seed point.
(For now, we select seed points uniformly, but we are conducting research to determine a more efficient number and location of seed points.)