Fetching the latest programs, projects, and workspace data.
Standalone, large scale, open project for 2D/3D image and point cloud processing
Showing 5 of 5 projects. Click any project card for scope, mentors, and proposal studio.
Mentors: Student: Tin Chon Chan
<p>In PCL, there are a variety of filters, many of which contain similar filtering logic in at least part of their code. In the early years, the filters were created by different developers, a unified code design did not emerge organically. As a result, there are many boilerplate snippets throughout the filter module. Further enhancements to the filters, such as parallelizing loops, are challenging due to the necessary boilerplate code requiring changes to all the equivalent code across multiple classes without breaking them.</p> <p>We found some instances of the boilerplate codes in the voxel filters: <code>ApproximateVoxelGrid</code>, <code>VoxelGrid</code>, <code>GridMinimum</code>, <code>VoxelGridLabel</code>, <code>UniformSampling</code> (and also in the binary removal filters)</p> <p>Our goal was to investigate a unified code design that eliminates redundancy by refactoring similar code pieces across multiple filters without breaking the present API, while simultaneously attempting to simplify implementation and increase runtime speed.</p>
Mentors: Student: Divyanshu Madan
<p>Enhancing Point Cloud Library’s clang-bind project to fix and extend its existing capabilities. Currently, the project is lacking in its scope to bind a complete module of PCL to python, and this project would like to build upon that. The aim is to fix existing issues and increase the coverage of the existing scope to develop python bindings of PCL.</p>
Mentors: Student: Hang Yan
<p>The increasing parallelism brought by CUDA and GPU libraries benefits PCL as well as other open-source communities greatly. However, the test for these GPU-accelerated code is a bit awkward on those common CI without free GPU. Therefore, building a generic tool to allow CPU to run CUDA without a GPU is inspiring and valuable. And integrating this tool into the CI of PCL will bring more convenience and confidence to CI build.</p> <p>The toolkits used in this project will also provide an option for AMD users to build and run CUDA codes in AMD GPUs.</p> <p>This proposal aims to build a generic tool to allow CPU to run CUDA code, and introduce this feature to PCL as necessary.</p>
Mentors: Student: Shrijit Singh
<h3>Motivation</h3> <p>With the current trend of increasing parallelism, there is a need for a uniform way of making these parallel implementations available along with the default serial ones. Currently in PCL, this has been done by providing separate classes/functions having independent APIs.</p> <p>With the integration of execution policies and executors (part of C++23 hopefully) libraries like PCL will be able to provide a unified API to switch between different implementations. To ensure there is no sudden breakage in the existing API, a transition phase is needed to slowly phase out the old API in favour of a unified API.</p> <h3>Implementation</h3> <p>This project aims to transition the existing API to forward-compatible unified API. The basic details are: Using tag dispatching to enable function overloading, allowing user to select between different available implementations. Lack of tags allows PCL to choose best possible implementations, this allows to maintain backward compatibility with current API. Missing implementation for a tag raises compile-time errors Providing SIMD/OpenMP/CUDA implementations of existing algorithms using the proposed unified API.</p>
Mentors: Student: Haritha Jayasinghe
<p>Despite being the go-to library for point cloud based computation, PCL can cause some friction to users due to its old-fashioned and sometimes inconsistent API and the lack of certain features. This proposal aims to introduce the following new features to the PCL library;</p> <ul> <li>GPU implementation of Iterative Closest Point (ICP) algorithm</li> <li>Implementation of Fast Resampling of 3D Point Clouds via Graphs</li> </ul> <p>As well as to refactor and modernize the library by means of;</p> <ul> <li>Introducing better type for point indices, thereby providing support for larger point clouds</li> <li>Introducing a fluent API for algorithms</li> <li>Modernising the GPU Octree module to align with the it’s CPU counterpart</li> </ul>