Back to portfolio

Image Sensor Calibration

1 / 4

The project

What problem did your project aim to solve?

Our project aimed to correct lens distortion in a 52-camera array for EarlyWarningScan. They are developing a radiation-free 3D breast cancer screening prototype, but natural barrel and pincushion distortion in the cameras can create false positives or negatives in the resulting 3D models.

How does your product work?

We eliminated image distortion by automating a Cobot arm to precisely display a checkerboard pattern to all 52 cameras of the prototype. The arm successfully moves to 10-20 predefined positions for all 52 cameras. Our software seamlessly interfaces with the GStreamer HTTP web page using OpenCV video capture, processes fused composite frames using an engineered 7x8 grid splitting method, automatically detects the checkerboard corners, and sorts valid outputs into a smart 52-camera folder structure.

What impact does your solution have for the client or users?

We delivered a standalone calibration pipeline that achieves an exceptional corner error of < 0.5 pixels on real prototype images. By computing exact calibration parameters using OpenCV, we ensure highly accurate, distortion-free inputs for EarlyWarningScan’s anomaly detection algorithms and reliable 3D reconstruction.

Calibrating a single camera is a standard process; building an automated, sub-pixel accurate pipeline for an entire 52-camera prototype requires a completely different scale of problem-solving.

The customer

Who was your client (name, organization, affiliation)?

Our client was Tom Sander, CEO of EarlyWarningScan

What was the communication like with the client?

We had biweekly client meetings and organized hands-on testing sessions with the physical prototype in Eindhoven. Tom is very dedicated to his startup, and the regular communication allowed us to quickly pivot our technical goals when we encountered unexpected hardware constraints.

Transitioning from theoretical development to testing on the physical prototype completely changed our perspective on the project.

The team

What roles did you have internally (e.g., Scrum master, product owner)? Joudia acted as our Scrum Master and Sam was our Product Owner, but overall we kept roles fluid and focused on our technical strengths rather than strict management titles.

How did you divide work, and how did you collaborate? We split into two main sub-teams: one focused on the Cobot arm routines (building through direct steering, feedback loops, and hardcoded movement approaches) and the other on OpenCV video capture and grid splitting.

What challenges did your team overcome during the project? We faced major late-stage hardware discoveries. For example, we had to engineer our 7x8 grid splitting method on the fly to process fused GStreamer composite frames, and our arm routines had to evolve through multiple approaches before settling on hardcoded movements.

What are you most proud of as a team? We are most proud of successfully integrating hardware and software to deliver a highly accurate pipeline despite the technical curveballs.

Splitting our focus into hardware and software streams allowed us to move fast, but bringing it all together into one seamless pipeline was the real achievement.

The technologies

Languages:

  • Python: Core logic for image processing and the final system architecture.

Important frameworks and libraries:

  • OpenCV: Used for video capture, detecting checkerboard corners, and computing exact calibration parameters.

Tooling & Infrastructure:

  • myBlockly: Used for visual programming and prototyping the direct steering and movement routines for the Cobot arm.
  • GStreamer: Handled the HTTP web page stream for the fused composite camera feeds.
  • Docker: Containerization for the final system architecture.
  • Ruff: Static analysis for our fully automated CI/CD pipeline.
  • pytest: Automated testing integrated into our CI/CD pipeline.

Hardware:

  • Cobot arm & 52-camera prototype.