Increase Speed FabScanPi
Is it possible to speed up the scanning process and which approaches would be possible to make this possible?
My first approach was to reduce the number of positions in a scan to 200. For my objects to be scanned completely sufficient. I also don't need a color scan. So I could shorten the required time from 8 to approx. 4 1/2 minutes.
Would it be a good idea to provide more than 4 workers for the FabscanPi? And do I see correctly that the required time is used mainly for the ImageProcessor?
I would love to hear about any idea.
There are 4 workers, because the RaspberryPi has four cores. If more workers will improve the speed needs to be tested, feel free to create more workers and share your results here.
Our algorithms are quite linear at the moment, so there is much space for improvement even on the existing hardware. We hope that somebody from our community can optimize the algorithms and the implementation and create a pull request on github. Currently, speed is not our main optimization factor. Instead, we are still aiming for higer quality results since most users are makeres who use the scanner for digitizing a few objects every now and then. Do you need to scan many things in shorter time or what is your exact use case for the device?
you can try do decrease the camera resolution, it might speed up the process but it will also decrease the scan quality. You can try to set more worker processes but i don't think that this will speed up the process. The software is able to use multiple cores for image calculation in parallel, keep in mind that the operating system (raspbian) also needs some resources. Within my testing i came to the conclusion that three or four worker processes are optimal.
Other solutions would be to test it with other boards like the Orange Pi or on a desktop computer. Generally this is not a big deal because the code is written in Python but some parts of the code need to be changed or modified. The most Raspberry Pi bound code is the camera driver. There are also some code snippets for using a webcam but this code is not maintained at the moment.
If you know how to code in python or you want to learn it, you are welcome to resume the work on this code.
Hello Mario and Rene,
As my name suggests, I work in the field of additive manufacturing with a focus on post-processing. Here I need relatively fast results of a 3D scan with low resolution because the post-processing system is relatively rough. I can't realize an outsourcing on a PC, therefore I look for a solution on the Pi. With Python I get along well and will test your ideas and give you a feedback.
Thank you very much for your answers.
Hello, Mario and Rene,
Increasing the number of workers to 6-8 has no effect on the duration of a scan. Reducing the resolution to a quarter saves about 50sec, but the quality of the scan is really too bad. Here I still have to find a resolution that is optimal for my situation. But another factor has the biggest influence. In the hardware controller, in the function "scan at position", a turntable-step command waits 0.7 sec until the next image is taken. Since I use another stepper motor (not via the HAT) and control it with a blocking command, I don't need this time delay.
At the moment I have arrived at approx. 110 sec per scan (without 3D model). Depending on the size of the component to be scanned.
Maybe you have come up with some more ideas where I could have a look. I will carry out further tests. Speed back or forth, it must run still stable.