Comments (6)
In test, the module name can be TestImage
Also, since they are in Core now, please add python bindings to these functions. I suggest we split it into two pull requests: first is just the change to the cpp files; second is the python binding (and tests in python).
If OpenCV is available, CMake tool-chain will link it for utilizing higher level functions such as ORB.
This is lower priority, we don't need to fix it in near future (i.e., before the first launch).
from open3d.
Questions.
- I guess we need a function that transforms FloatImage to uint_8 or uint_16 image. WriteImage does not have this functionality.
- I am bit confused with CreateImageFromFile and ReadImage. CreateImageFromFile is only used in TestTriangleMesh.cpp. What is recommended way to read an image? Do we need both function?
- All the image processing functions assumes the image is float type. How about constrain input arguments of downsampling, filtering, creating pyramid image functions to be FloatImage?
from open3d.
I guess we need a function that transforms FloatImage to uint_8 or uint_16 image. WriteImage does not have this functionality.
Good point. Play with it. I did not thoroughly design the Image module. Also, I have been considering removing the FloatImage class for a long time. It only has an sub-pixel functionality and used in one app. Maybe we just remove it and use Image with 4-bit channel instead.
I am bit confused with CreateImageFromFile and ReadImage. CreateImageFromFile is only used in TestTriangleMesh.cpp. What is recommended way to read an image? Do we need both function?
ReadImage is in IO. It is actually bad design (due to some history reasons). My current plan is to wrap these IO functions into good design, like the factory functions. An analog is in dealing with PointCloud. I use ReadPointCloud
in the IO module only internally in Open3D, and expose CreatePointCloudFromFile
as external interface (e.g., in python binding).
All the image processing functions assumes the image is float type. How about constrain input arguments of downsampling, filtering, creating pyramid image functions to be FloatImage?
I am actually thinking of removing FloatImage
class. I don't know, maybe it makes sense to keep it? And use it as the type of parameters used in the image processing functions? In this way I would vote for keeping it, since now it has a clear meaning: Image
is for conventional images; FloatImage
is for images used for image processing in Open3D; it is recommended to use Image
just for IO and related stuff, and always convert it to FloatImage
before any processing.
from open3d.
I actually agree with your original idea: removing FloatImage
because
- It might be confusing and not consistent with other data structures: we don't have
FloatPointCloud
, or we don't want to haveDoubleImage
. I had this confusion when I tried to use Image class in Open3D for the first time. - In many cases, we can write an app only using
FloatImage
, which meansImage
can be isolated.
I think we may unite FloatImage
and Image
, and simply the image processing functions are only activated if its data type is 32bit float. I originally thought we make FloatImage
is only for internal usage and not unveiled to users, but existence of FloatImage
still would give confusion.
How do you think?
from open3d.
Good to me. Remove FloatImage
.
Can you make a small pull request first, just doing this.
Then make another pull request to address the other changes we discussed for Image.
from open3d.
The module is implemented and merged. Closing.
from open3d.
Related Issues (20)
- cpp: Empty mesh create from `open3d::geometry::TriangleMesh::CreateSphere();`
- PointCloud.detect_planar_patches() Crushes When the PointCloud has 10 or more Points with the Same Coordinates
- Request to add bilater filtering for PointCloud
- libopen3d-dev not available on Ubuntu 24.04 (Noble) HOT 5
- For the o3d.visualization.O3DVisualizer class, how to add another panel or window with image widgets and other info? HOT 1
- 【open3d::visualization::Visualizer::AddGeometry】Too much point cloud data cannot be visualized
- How to perform surface reconstruction of ICP-registered human point clouds
- get an orthogonal view
- How to make the export image background become transparency.
- fstring error in summary.py
- The open3d library is linked with the system GLIB_C, which causes several issues with installation. I understand the choice is made for a particular reason, however, this makes the library highly system version dependent.
- `stdgpu` target fails the CMake configure step with CUDA 12.4 due to changes in Thrust version header
- GUI/WebRTC/`ext_civetweb` error on latest MSVC (2022): `invalid numeric argument '/Wextra'`
- Is it possible to access additional vertex properties from ply file?
- v0.18.0 Build failure: fatal errors: multiple defined symbols in 'zlib.dll' & Cannot open include file: 'unzip.h' HOT 1
- How to use Open3D in QT Widget
- Cannot import Open3D0.18 on Windows 11 64 HOT 2
- 'double free or corruption (!prev)' when using .extract_voxel_grid() HOT 1
- Multiple errors related to **tgeometry_kernel** when compiling with CUDA 12.4 HOT 1
- Connected Component Clustering with Octree
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from open3d.