Horus is a multi-platform software designed to control open source 3D scanners. It has a graphical interface for managing communications, capture and syncing of data,  image processing,  the calibration processes and generation and visualisation of point clouds.

It has been developed and optimised for GNU/Linux1 Ubuntu2. It has also been tested on Windows and Mac will also be supported. The software has been coded in Python3. It uses wxPython4, NumPy5, SciPy6, Matplotlib7, OpenGL8 and an optimised OpenCV9 version for Linux.

Horus is open source software. The source code has been published on GitHub and released under the GPL v2 licence10. This licence guarantees  the fundamental freedoms associated with the use of open source software. Any code released under this licence automatically becomes part of the Technological Heritage of Humanity.


Horus can be installed on Ubuntu, Windows  and Mac.

Please follow these instructions on how to install the application: Installation.

First steps with Horus

Welcome window

The first time you start Horus, a welcome message appears.


This window provides shortcuts to the main functions such as launching the wizard, scanning or accessing the advanced configuration panel. It also includes a quick access to recently used models (point clouds or meshes).

Main window

The main window has a menu bar, a tool bar and a dropdown menu to switch between workbenches.


The software includes the option to load and save profiles, as well as to reset the default parameters. It also provides access to the preferences where the user can adjust the connection parameters, load the firmware onto the board or select the application language.

The scanning section enables the options for loading, saving and deleting the model. A model is a 3D object, which could be a point cloud PLY11 or a mesh STL12.

Launching the wizard

The wizard guides the user through a simplified version of the processes of connecting, calibrating and tuning the scanning parameters.


Advanced configuration

This section describes the control and calibration workbenches.

Advanced control

This workbench permits the free control of all the scanner components independently: the camera, the lasers and the stepper motor. It also allows the reading of the LDR sensors, a feature added to implement in the future an intelligent adjustment of the camera settings.


The camera control section allows to change the following parameters:

  • Brightness: image luminosity
  • Contrast: relative difference of the image’s intensity
  • Saturation: colour intensity of the image
  • Exposure: opening time of the camera lens in milliseconds
  • Frame rate: number of images captured per second
  • Resolution: size of the image, always in a 4:3 relation
  • Distortion: permits the correction of the lens distortion – these values are calculated during the camera calibration

The left and right lasers can be switch on or off via this workbench. The value of the LDR sensors can also be obtained. This value ranges from 0 to 1023, depending on the amount of light detected by each sensor.

In this section the motor can be  enabled or disabled. The angle of rotation and the angular speed and acceleration can also be configured.

NOTE: The enabled motor consumes almost the same amount of current as the moving motor. If the motor is left enabled for a long time, both the motor and the control driver will overheat.

The last menu is a G-code commands terminal whch enables communication with the processor. Further information on the firmware commands is available on the Horus Firmware post.

Advanced calibration

The calibration workbench enables adjustment of the camera parameters in order to obtain an optimum calibration. It also enables the three fundamental calibrations to be carried out which determine the scanner parameters: camera sensor and lens calibration, calibration of the lasers in relation to the camera and calibration of the rotating platform in relation to the camera.It is also possible to change the calibration pattern values in order to use different patterns.

Camera calibration

In this calibration, the internal parameters of the camera are obtained. These are:

  • Focal distances (horizontal and vertical)
  • Optical centre (horizontal and vertical)
  • Lens distortion

This calibration is optional, as most cameras are identical and the experimental values are close to the theoretical ones. Nevertheless, the option to calibrate these parameters is available for advanced users.

In order to perform this calibration, different captures of the pattern are taken in different positions. This data is then used to determine the intrinsic parameters.


Laser calibration

In this calibration, the laser planes equations are determined, described by the normal to the plane and the distance to the origin. The position and orientation of the laser is not important. This calibration determines their planes with millimetric precision, regardless of their location.

The laser calibration is key to determining the point cloud in relation to the camera system. It is an automated process that takes a few seconds.


Disc calibration

In the extrinsic calibration, a homogeneous transformation matrix in relation to the camera is obtained. In other words, this means the position and rotation of the disc’s system in relation to the camera system.

As with the previous calibration, the process is fast and automated. This calibration process is essential for rotating scanners.


Starting to scan

The scanning workbench is composed mainly of a toolbar, a video viewer and an interactive 3D viewer.

The point cloud of the object can be viewed in real time during the scanning.


The video viewer enables visualisation of the different phases of the image processing.



The scanning process has its own parameters for the camera, the lasers, the motor, the image processing algorithms and the point cloud.

The toolbar allows you to select the scanning algorithm (only geometry or geometry and texture), the number of lasers being used (left, right or both lasers), steps per turn, etc.


Mesh reconstruction

Once we have the point cloud from Horus in PLY format, you can use Meshlab13 or Blender14 to post-process and reconstruct it.

Meshlab is an open source software for processing 3D meshes. It can be used to remove noise, calculate the normals of the points, align different point clouds, reconstruct a mesh and apply textures, etc.



Future work

We have many objectives regarding the features of this application. The main working lines are:

  • Incorporating a comprehensive point cloud post-processing system
  • Developing a 3D reconstruction and meshing interface
  • Creating installers for even more operating systems
  • Implementing a plug-in system to simplify the integration of new features
  • Many more new and interesting ideas!

We strongly encourage you to send us your ideas and suggestions, and to contribute to this project.

May the scanner be with you!


  1. GNU/Linux operating system
  2. UbuntuUbuntu GNOME,  Kubuntu operating system
  3. Python programming language
  4. wxPython graphics library
  5. NumPy calculus library
  6. SciPy scientific calculus library
  7. Matplotlib graphics generation library
  8. OpenGL 3D graphics library
  9. OpenCV computer vision library
  10. GPLv2 open source licence
  11. PLY mesh format
  12. STL mesh format
  13. MeshLab advanced mesh processor
  14. Blender 3D graphics software

37 thoughts

  1. Hi,
    Very good job. I fork the project to purpose to you the French translation. Should be OK under a week.

    Continue as well !!!

  2. Gorgeous and useful project, I’m trying Horus to Windows 7. Many settings in the HORUS is excellent. Everything works, but I have not seen when scanning the object scan in the left window, and when you save the file has zero size. Why so?
    What am I doing wrong?
    Have you forum for Horus?

  3. ALL OK! I was wrong, it works with 2 lasers, it is divine .. now calibrate and forth.

    1. Jesús Arroyo

      Great! 😀

      Btw, we will release soon a User’s Manual and more info on GitHub Wiki and also a Google Group List to discuss about the project and its development.

      We will keep you informed.


  4. First thank you thank you i am printing away on this project right now the only problem i have is that i cannot get the software to open i click the icon a cmd widow opens and then something happens very fast and it all closes with no scanning software do you have any clue to what it could be

      1. Thank you very much just finished printing and putting all the rods in that was more work than i was expecting but it looks great

      2. Hi
        I get my ciclop today. Verry nice work :-) But i have the same problem with Horus in W8 .
        Is it a solution for this now?
        Regard Jörgen

  5. Hi, really a good job! I can’t understand if the system recognize also the colours of the scanned object to allow the user to print a full colour object.

    1. Jesús Arroyo

      Yes! Horus includes Texture Scan algorithm that captures not only the geometry but also texture (colours) in RGB format.

  6. Hi!
    i have a ciclop bq scanner, but in the scanning process with Horus on the platform of program i see 2 image of scanning process.
    I have calibrate all and i’m sure of the correct connection of the laser!
    Can i do to scan with 2 laser very well?
    Whit one of two laser i have non problem in the scanning process!
    Thanks a lot

  7. I got my Ciclop kit last week and did my first scans with it, but unfortunately most of the stuff I plan to scan are rather dark/black parts. The results with such parts are not really good. Is there a way to get better results with dark or black matt parts? Special lighting, a (removable) coating with something?

    1. Jesús Arroyo

      Hi! Dark/black parts are difficult to scan with a laser. You can modify camera exposure and threshold in order to capture more information. You can use also white temperate paint to prepare your object before scan and improve the results.

  8. Hello

    I want to run cyclop under raspberry pi to make a transportable scanner but it don’t work. It start (spash screen) but after I have lot of error.
    I don’t know python language.
    I don’t understand why it don’t work. I use raspbian witch is bse on debian.

    thanks for help.

  9. Still hope for a update , so i can use Horus on my W8.
    Have a new ciclop just waiting to ude :-)

  10. Installing Horus 0.1.1. But it is not working on W8 :-(

  11. Hi
    Sorry it is the same like before.
    I uninstall the old Horus and install the new one, but it is just opend a comand window for 1 sec and then nothing

  12. The cost of employee benefits and compensation is
    a cost of doing business, and as other prices of doing business increase, so does the accompanying cost
    of offering such programs. What he tpld me
    was all the really easy way around the tricks of the Tobacco Companies and how, once you know your
    enemy, how rdally easy it is to stop smoking, without drugs, patches, hypnotism or anyy other aids.

    The next step would be finding an easy way to quuit smoking.

  13. Hi Jesus,

    I tried to installed Horus on a notebook Asus with Linux 15.04 vivid operating system.
    I had trouble due to the fact that, following your instruction, the system doesn’t find some files.
    I checked in the Github directories and I saw that in on of them the item concerning Linux 15.04 is missing.
    Please may you help me in solving this matter?

  14. Great machine!
    I built the machine but use another camera. Everything seem good but i put the camera in normal orentiation, so image show on Horus rotated 90 degree.
    If i change the orentiation of the camera same as HD Webcam C270 i have redesign and reprint.
    I wonder if The Horus have a “Rotate camera” function?
    Thanks you :)

    1. Jesús Arroyo

      Hi Le Hoang Long,

      There is no “Rotating camera” option yet. We will study its implementation in future versions.


  15. Hi,

    I recentely installed the Horus software but iT is rather slow on my laptop. I need to buy a new one anyway so i was wondering what would be the min specs the new one should have in order to use the program and the ciclop to its fullest.

    Thank you in advance and keep up the good work!

  16. Hi dear
    I am writing to explained that I have problem with your Horus software.
    My problem is that when scan part I can see in the right hand image shape
    And software can’t make file for export to another software .
    Please help me for solve this issue
    In addition please send for me your email that I can send for you a photo from my laptop for better understanding.
    Best regards

    1. SGracia

      Hi, Pooria:

      Can you tell us if, when you try to save the scanned model, you receive any kind of error message?

      Moreover, you can follow this link to contact with our Support department: http://www.bq.com/uk/support

  17. Then starting auto calibration or laser triangulation the lasers didn`t power ON

  18. That is really fascinating, You’re an overly skilled blogger.

    I’ve joined your rss feed and sit up for in quest
    of more of your fantastic post. Also, I have shared your web site in my social networks

Comments are closed.