It was necessary to have support staff at the self check-in boots to verify what people were checking in. It was possible that someone would try to check in things which could get stuck on the conveyor belts, or which could tumble and fall. Think of objects such as backpacks with straps and buggies. Items which are not filtered out can lead to faults in the system and thus can lead to delays.
The challenge was primarily the development of an algorithm which could analyze low-resolution 3D images in the form of point clouds. The algorithm had to be capable of filtering out all sorts of objects and also to check if the traveler had followed up instructions and placed the object in a tub. The algorithm also had to be able to filter out round and cylindrical objects, as well as upright suitcases or multiple suitcases. Below is an image of an example point cloud file for which my algorithms were developed.
Thanks to my creative use of statistical techniques I was first successful in detecting the tubs in a point-cloud file. This was my first objective. I accomplished this by creating an "average" image of a tub through a series of filtering functions. Subsequently, I used these functions on new scans and through a composite cost function the algorithm decided how well this filtered scan matched the "average" tub. This way I succeeded in detecting 98% of all tubs. Not bad, given that the requirement was to detect 90% of all tubs. The biggest challenge was mainly the fact that some belts would move the object through the scanner tunnel at such speeds that parts of the tub edge would not be scanned by the SIC scanner.
Finally, I was asked to filter out as many of the non-conveyable items as possible. These were primarily defined as upright suitcases, multiple objects (even when they were touching), round or cylinder-shaped objects and also objects with straps like backpacks. These objects with straps had to be placed in a tub, if possible. For straps detection I once again used multiple statistical and numerical techniques to train my algorithm what the difference is between a box and an octopus. I developed a volume distribution function which analyzes the volume distribution in multiple directions and I identified a series of parameters through which a computer can decide that it is dealing with a bag with straps and not with a suitcase. Even suitcases with large labels were correctly distinguished from backpacks with straps. For the round, cylinder-shape and upright objects I wrote fairly simple functions. The "multiple objects detection" was also a bit challenging, especially when the objects touched and were aligned in a "V" shape. Eventually the algorithm also identified these cases correctly through creative use of mathematical and numerical methods.
C++, Python, OpenCV, PCL, Point Cloud Library, Wiskunde, Statistiek, Algoritmes