CSE 4310: Introduction to Computer VisionSummer 2022
Program #4: Overhead Item Scanning
In this assignment, you will implement a simple tabletop 3D object detector using PCL. You
will be given a test PCD file taken from an RGB+D sensor looking down on a tabletop surface
(the same test file provided with the assignment will be used for grading). The surface will
contain up to 3 individual objects, which may be boxes or spheres. There will be at least a 2”
gap between any object (no object will touch another object), but multiple copies of the same
object may be present. Be sure to review the test file carefully when considering a detection
strategy.
The program should take a single command line argument, which will contain the file path for
the input point cloud (assumed to be an XYZRGBA PCD file). The program will output a
single modified point cloud called “output.pcd”.
Once the program is loaded, the file will be processed and a result will be displayed in the
console and display window(s). There will be no runtime user interaction or visualization, the
only output will be the saved file “output.pcd”, which can be viewed with the point cloud
viewer of your choice. A web viewer can be found at:
www.mcmurrough.net/pointcloud_viewer.
The result point cloud in the 3D viewer should be colored to represent what is in the scene. The
table surface points should be colored blue, box objects green, and spherical objects red. Any
other points should have their original color.
In the console window, you will display an inventory of what is detected in the scene. For
example, a scene with 3 boxes and 2 spheres should print the following:
BOX COUNT: 3
SPHERE COUNT: 2
Your program should run on the class development environment using PCL. You must include
a working CMakeLists.txt file with your source code. The program should be able to be
compiled and executed by running the following set of commands in the program directory if
C++ is used:
cmake .
make
./program4
For example…
cmake .
make
./program4 scene.pcd
You may develop your application on your own system / OS, but it must run properly on the
class development environment at the time it is evaluated. Submit your source code and all
other necessary files to blackboard in a single zip file by the deadline. Late submissions will
incur a penalty of 10 points per day after the deadline. Do not submit any point clouds with
your assignment, those will be generated programmatically for grading.
Points will be assigned as follows:
1. Program opens and saves files as specified – 20 points
2. Program colors tabletop successfully – 20 points
3. Program colors boxes successfully – 20 points
4. Program colors spheres successfully – 20 points
5. Program counts successfully – 20 points
Partial credit may be given, at the discretion of the grader, for items which are not fully
functional or contain bugs. You may be asked to demo your program to the grader if errors
occur during the initial run. Write your code as cleanly as possible with proper formatting and
comments in order to bolster your case for partial credit on non-functional features. It is highly
recommended to follow a standard coding style, such as ANSI C++, Google C++, etc. in your
program (HINT: The Code::Blocks IDE provided with the development environment has a
built in formatter under the plugins menu).