Point cloud visualization is sparse
AlexPasqua opened this issue · comments
My point clouds are visualized as they have far less points than they actually have.
I attach 2 pictures: the first shows the visualization I get, while the second shows the correct one.
As a further note, the exemplary pointcloud provided by you is visualized correctly.
I'm running on Ubuntu 20.04.3 LTS and python 3.8.10.
This error happens both when installing labelCloud via pip and when performing a manual installation downloading the github repo.
Hi @AlexPasqua,
so how did you get the point cloud in the second picture to load correctly?
Which format are you using and can you provide an example point cloud?
Best,
@ch-sa
Thanks for the reply @ch-sa ,
so how did you get the point cloud in the second picture to load correctly?
I didn't manage to load the point cloud correctly, but a colleague of mine did, and I took that screenshot while on a video call with him.
Our setups seem identical, same Ubuntu version (20.04.3 LTS), same python version (3.8.10), same versions of the packages in requirements.txt etc.
Which format are you using and can you provide an example point cloud?
My point clouds are in .pcd
format.
HERE I provide the point cloud depicted in the screenshots in my first comment.
Hope to receive some news soon,
Best
I loaded your point cloud and it looks like this:
Is that what you expected? I checked the file and it is a colorless point cloud with 78011 points, which were all loaded by labelCloud:
========================== Loading pointcloud_116.pcd ==========================
Generating colors for colorless point cloud!
Number of Points: 78.011
Point Cloud Center: [-2.76 0.35 0.35]
Point Cloud Minimums: [-96. -18. 0.]
Point Cloud Maximums: [ 57. 195. 25.]
Initial Translation: [ 2.76 -0.35 -263.79]
Successfully loaded point cloud from pointclouds/pointcloud_116.pcd!
================================================================================
If this is what you expected and it is not working like that on your system, it looks like a setup issue. Then please provide the following to help debugging:
- Output of
pip list
orconda list
config.ini
from your project folder.labelCloud.log
or copy the content of your terminal when trying to load the point cloud
Is that what you expected?
It's difficult to tell from that point of view, try to load this label (in KITTI format) and zoom to one of the bounding boxes, it the boxes are empty, than it's my same problem. There should be points (specifically in the shape of a cone) within the boxes.
Also, I tried to use a tool called Supervisely, and here the same pointcloud is loaded correctly
Then please provide the following to help debugging:
- Output of
pip list
orconda list
config.ini
from your project folder.labelCloud.log
or copy the content of your terminal when trying to load the point cloud
- Output of
pip list
:
Package Version
----------------------- --------------------
addict 2.4.0
anyio 3.5.0
apturl 0.5.2
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
asttokens 2.0.5
attrs 21.4.0
Babel 2.9.1
backcall 0.2.0
beautifulsoup4 4.10.0
bleach 4.1.0
blinker 1.4
Brlapi 0.7.0
certifi 2019.11.28
cffi 1.15.0
chardet 3.0.4
cheroot 8.6.0
CherryPy 18.6.1
Click 7.0
colorama 0.4.3
command-not-found 0.3
cryptography 2.8
cupshelpers 1.0
cycler 0.11.0
dbus-python 1.2.16
debugpy 1.5.1
decorator 5.1.1
defer 1.0.6
defusedxml 0.7.1
deprecation 2.1.0
distro 1.4.0
distro-info 0.23ubuntu1
entrypoints 0.3
executing 0.8.3
fonttools 4.30.0
httplib2 0.14.0
idna 2.8
importlib-resources 5.4.0
ipykernel 6.9.2
ipython 8.1.1
ipython-genutils 0.2.0
ipywidgets 7.7.0
jaraco.classes 3.2.1
jaraco.collections 3.5.1
jaraco.context 4.1.1
jaraco.functools 3.5.0
jaraco.text 3.7.0
jedi 0.18.1
Jinja2 3.0.3
joblib 1.1.0
json5 0.9.6
jsonschema 4.4.0
jupyter-client 7.1.2
jupyter-core 4.9.2
jupyter-packaging 0.11.1
jupyter-server 1.15.6
jupyterlab 3.3.2
jupyterlab-pygments 0.1.2
jupyterlab-server 2.11.2
jupyterlab-widgets 1.1.0
keyring 18.0.1
kiwisolver 1.4.0
language-selector 0.1
launchpadlib 1.10.13
lazr.restfulclient 0.14.2
lazr.uri 1.0.3
louis 3.12.0
macaroonbakery 1.3.1
MarkupSafe 2.1.1
matplotlib 3.5.1
matplotlib-inline 0.1.3
mistune 0.8.4
more-itertools 8.12.0
nbclassic 0.3.7
nbclient 0.5.13
nbconvert 6.4.4
nbformat 5.2.0
nest-asyncio 1.5.4
netifaces 0.10.4
notebook 6.4.10
notebook-shim 0.1.0
numpy 1.21.5
oauthlib 3.1.0
olefile 0.46
open3d 0.14.1
packaging 21.3
pandas 1.4.1
pandocfilters 1.5.0
parso 0.8.3
pexpect 4.6.0
pickleshare 0.7.5
Pillow 9.0.1
pip 22.0.4
portend 3.1.0
prometheus-client 0.13.1
prompt-toolkit 3.0.28
protobuf 3.6.1
psutil 5.9.0
ptyprocess 0.7.0
pure-eval 0.2.2
pycairo 1.16.2
pycparser 2.21
pycups 1.9.73
Pygments 2.11.2
PyGObject 3.36.0
PyJWT 1.7.1
pymacaroons 0.13.0
PyNaCl 1.3.0
PyOpenGL 3.1.6
pyparsing 3.0.7
PyQt5 5.14.2
PyQt5-Qt5 5.15.2
PyQt5-sip 12.9.1
pyRFC3339 1.1
pyrsistent 0.18.1
python-apt 2.0.0+ubuntu0.20.4.5
python-dateutil 2.8.2
python-debian 0.1.36ubuntu1
pytz 2021.3
pyxdg 0.26
PyYAML 6.0
pyzmq 22.3.0
reportlab 3.5.34
requests 2.22.0
requests-unixsocket 0.2.0
scikit-learn 1.0.2
scipy 1.8.0
screen-resolution-extra 0.0.0
SecretStorage 2.3.1
Send2Trash 1.8.0
setuptools 60.10.0
simplejson 3.16.0
six 1.14.0
sniffio 1.2.0
soupsieve 2.3.1
stack-data 0.2.0
systemd-python 234
tempora 5.0.1
terminado 0.13.3
testpath 0.6.0
threadpoolctl 3.1.0
tomlkit 0.10.0
tornado 6.1
tqdm 4.63.0
traitlets 5.1.1
ubuntu-advantage-tools 27.2
ubuntu-drivers-common 0.0.0
ufw 0.36
unattended-upgrades 0.1
urllib3 1.25.8
wadllib 1.3.3
wcwidth 0.2.5
webencodings 0.5.1
websocket-client 1.3.1
wheel 0.37.1
widgetsnbextension 3.6.0
xkit 0.0.0
zc.lockfile 2.0
zipp 3.7.0
-
The file
config.ini
from my lableCloud folder: download here -
The file
.lableCloud.log
from my labelCloud folder: download here
@ch-sa
As my colleague @francescofact made me notice, on Windows it works, but only after removing the version of PyQt5 from requirements.txt
Hey @AlexPasqua,
so is the same point cloud looking differently on windows than my screenshot posted above?
(There were some issues with PyQt5 gut Windows, which is why I previously limited the PyQt versions to am older version. But this seems to have been fixed, so I dropped this limitation in the newest release of labelCloud.)
Hello @ch-sa
On Windows the point cloud is rendered correctly, while on three different linux machines the same point cloud is rendered as sparse points.
Hey @francescofact,
thanks for the screenshots. That's really odd. Seems like an issue with OpenGl, cause there is no difference in the logic between the operating systems.
Will try to have a look on it tomorrow.
Ciao @AlexPasqua and @francescofact,
after quite some debugging I rooted the problem in the loading of the *.pcd
file via Open3D. As you probably noticed the points are located in a grid and this is cause the floats seem to be ignored (rounded) on loading:
Loading point cloud from pointclouds/pointcloud_116.pcd using Open3DHandler.
First point cloud points:
0. [-0. 11. 0.]
- [-0. 8. 0.]
- [0. 7. 0.]
- [-0. 8. 0.]
- [-0. 7. 0.]
(In reality the first point is located at -0.20108423 11.055668 0.56653374!)
So what I did was converting your *.pcd
point cloud into a *.ply
file:
import open3d as o3d
pcd = o3d.io.read_point_cloud("pointclouds/pointcloud_116.pcd")
o3d.io.write_point_cloud("pointclouds/pointcloud_116.ply", pcd)
... and this could be loaded and displayed correctly inside labelCloud:
Loading point cloud from pointclouds/pointcloud_116.pcd using Open3DHandler.
First point cloud points:
0. [-0. 11. 0.]
- [-0. 8. 0.]
- [0. 7. 0.]
- [-0. 8. 0.]
- [-0. 7. 0.]
============================================= Loading pointcloud_116.pcd =============================================
Successfully loaded point cloud from pointclouds/pointcloud_116.pcd!
Number of Points: 78011
Number of Colors: None
Point Cloud Center: [-2.76 0.35 0.35]
Point Cloud Minimums: [-96. -18. 0.]
Point Cloud Maximums: [ 57. 195. 25.]
Initial Translation: [ 2.76 -0.35 -263.79]
======================================================================================================================
There is currently no active bounding box to manipulate.
There is currently no active bounding box to manipulate.
Alignmode was changed to False!
Imported 0 labels from labels/pointcloud_116.json.
Loaded 0 bboxes!
There is currently no active bounding box to manipulate.
Intialized widget.
Resized widget.
Showing GUI...
File labels/pointcloud_116.json already exists, replacing file ...
Exported 0 labels to labels/pointcloud_116.json in CentroidFormat formatting!
Loading next point cloud...
Loading point cloud from pointclouds/pointcloud_116.ply using Open3DHandler.
First point cloud points:- [-0.20108423 11.055668 0.56653374]
- [-0.14641869 8.0501413 0.27004918]
- [0.42134565 7.7175632 0.21332707]
- [-0.76665801 8.4111414 0.18340768]
- [-0.14466441 7.9536901 0.12580046]
============================================= Loading pointcloud_116.ply =============================================
Successfully loaded point cloud from pointclouds/pointcloud_116.ply!
Number of Points: 78011
Number of Colors: None
Point Cloud Center: [-3.03 0.33 0.35]
Point Cloud Minimums: [-96.05 -18.34 -0.34]
Point Cloud Maximums: [ 57.49 195.42 25.65]
Initial Translation: [ 3.03 -0.33 -264.82]
I would say this is a bug of Open3D but when running in interactive Python the same code as in labelCloud it suddenly works:
>>> import open3d as o3d
>>> o3d.__version__
'0.15.2'
>>> pcd = o3d.io.read_point_cloud("pointclouds/pointcloud_116.pcd")
>>> pcd.points[0]
array([-0.20108423, 11.055668 , 0.56653374])
You can bypass this problem in shorthand by converting your point clouds into a different file format (like shown above). I will look into the issue with *.pcd
files but am a bit clueless atm. due the same code producing different results depending if is used inside labelCloud or ipython.
FYI: @francescofact , @AlexPasqua
This issue seems only to happen after initializing a QApplication
:
import sys
from PyQt5.QtWidgets import QApplication
import open3d as o3d
QApplication(sys.argv)
pcd = o3d.io.read_point_cloud("pointcloud_116.pcd")
print(f"First point: {pcd.points[0]}") # prints "First point: [-0. 11. 0.]"
I opened a bug ticket in Open3D for this:
isl-org/Open3D#4969
You can follow the progress there and until then maybe use a different format.
Thanks for the support @ch-sa 😃