# Egg inspection on the conveyor, in real time and without a black box

> Vigiovo is visual inspection software that grades eggs on a conveyor as clean, dirty, cracked or unverified. It uses classical computer vision, with no neural networks and no training: the same image always gives the same result, and every decision comes with the measurements behind it. It runs at about 90 frames per second on an ordinary CPU.

Updated: 2026-10-09 · URL: https://vigiovo.com/en · Português: https://vigiovo.com/index.md

## Conveyor demo

Each egg is outlined in its class colour and measured 3 times as it crosses the frame, like the 1/3, 2/3 and 3/3 checks on a quality-control panel. The panel in the corner totals the eggs already graded.

![Brown and cream eggs on a roller conveyor, each outlined: green for clean, red for dirty with a visible stain, orange for cracked with the crack line highlighted.](https://vigiovo.com/media/inspecao-anotada.webp)

Synthetic conveyor with known ground truth: green = clean, red = dirty, orange = cracked. Running at ~90 frames/s on one CPU core. Video: https://vigiovo.com/media/esteira-demo.mp4

## What Vigiovo grades

Every visible egg gets exactly one of four classes. Eggs that can't be seen whole are never guessed at.

- **Clean**: Intact shell, with no stains or cracks above the limits. Goes on to packing.
- **Dirty**: Faeces, blood, soil or yolk stains covering 3% or more of the visible shell, measured against that egg's own shading.
- **Cracked**: A thin, elongated line (at least 5 times longer than wide) that runs into the shell and measures 0.8 egg radii or more.
- **Unverified**: Egg cut off by the frame edge, overlapping another or oddly shaped. Sent to manual review instead of getting a made-up grade.

## How it works, in six steps

No step learns from data. Each one is a classical image operation with fixed, readable limits.

1. **Colour mask**: Separates shell (warm and bright) from rollers (grey and dark) with hue, saturation and brightness limits.
2. **Camera-independent scale**: Downscales until each egg is ~12 px in radius. Every limit is a multiple of that radius.
3. **Splitting touching eggs**: Distance transform, h-maxima seeds and watershed, only on blobs that hold more than one egg.
4. **Dirt**: Fits a quadratic surface to each egg's shading and measures what departs from it, plus colour deviation in Lab space.
5. **Cracks**: Black-hat and top-hat filters find lines; only long, thin lines that run into the shell count.
6. **Decision and voting**: Fixed thresholds decide each measurement; on video an egg is rejected only if the defect shows up in 2 of 3 checks.

Read the full technical explanation: https://vigiovo.com/en/how-it-works.md

## Measured speed and accuracy

Measured with the project's own benchmark commands on a single Apple Silicon CPU core, no GPU.

| Metric | Result | Conditions |
| --- | --- | --- |
| Latency per frame (video) | ~11 ms mean, ~15 ms p95 | 960×540, ~45 eggs on screen |
| Frame rate | ~90 frames/s | Same video, one CPU core |
| Single image, every egg measured | ~41 ms | 1228×691, 54 eggs |
| Per-egg accuracy, tracked video | 98.7% (376 of 381) | Synthetic scenes with ground truth |
| Per-egg accuracy, single frame | ~95% | Synthetic scenes with ground truth |
| Clean eggs rejected | 0 | All synthetic tests |

Accuracy figures come from synthetic scenes with ground truth, not from a production line. In a pilot, the system is calibrated and measured on images from your own conveyor.

## Deterministic vision or AI?

Neural networks are the usual choice for visual inspection. For a well-defined task like sorting clean, dirty and cracked eggs, measured rules have practical advantages, and one clear limit.

| Criterion | Vigiovo (deterministic) | AI classifier |
| --- | --- | --- |
| Same image, same result | Always | Depends on model version and hardware |
| Explains each decision | Yes: stain area, crack length, shape | Usually just a score |
| Data to get started | A few hundred labelled eggs, to calibrate | Thousands of labelled images, to train |
| Hardware | Ordinary CPU, no GPU | Usually a GPU or accelerator |
| Fine-tuning | Readable thresholds in a config file | Retraining the model |
| Rare, highly varied defects | Limited to what the rules describe | Learns patterns, given enough data |

## Limitations

What Vigiovo doesn't do, so you can decide with the full picture:

- Hairline cracks that are invisible under normal light don't show up for any ordinary camera. The standard for those is candling (light behind the egg) or acoustic testing.
- The default colour limits target brown and cream shells. White or bluish shells need different limits, set during calibration.
- Diffuse, even lighting matters more than any parameter. Strong glare is the main source of false "dirty" grades.
- Published accuracy figures are from synthetic data. Accuracy on your line is only known after calibrating with real images.

## Pilot programme

Vigiovo is opening pilots with egg farms and grading stations in Brazil. A pilot needs:

- a fixed camera above the conveyor (a basic industrial camera, or even a phone, is enough to start);
- diffuse lighting, without strong glare on the shells;
- a few hundred eggs photographed and labelled by your team;
- an ordinary computer near the line, no GPU.

The outcome is an accuracy report measured on your line and a configuration calibrated for it.

## Frequently asked questions

### What is Vigiovo?

Vigiovo is visual inspection software that grades eggs on a conveyor as clean, dirty, cracked or unverified from camera images. It uses classical, deterministic computer vision, runs on an ordinary CPU at about 90 frames per second, and explains every decision with the measurements that produced it.

### Does Vigiovo use artificial intelligence?

No. There are no neural networks, trained models or randomness. Vigiovo uses classical image-processing operations (colour thresholds, distance transform, watershed, mathematical morphology and least-squares fitting) with fixed, readable limits. The same image with the same configuration always produces the same result.

### Which egg defects does it detect?

Shell dirt (faeces, blood, soil, yolk) covering 3% or more of the visible area, and visible cracks: thin, elongated lines that run into the shell. Eggs cut off by the frame edge, overlapping or abnormally shaped are marked unverified and sent to manual review.

### How fast is the grading?

About 11 ms per frame on 960×540 video with ~45 eggs on screen, or ~90 frames per second on a single CPU core. A single image with 54 eggs, all measured, takes ~41 ms. On video, each egg is measured 3 times as it passes and is only tracked the rest of the time.

### Does it need a GPU or a special camera?

No. Vigiovo runs on an ordinary CPU and works with any fixed camera above the conveyor, as long as the lighting is diffuse. High resolution isn't needed: for segmentation the image is downscaled until each egg is about 12 pixels in radius.

### Does Vigiovo detect hairline cracks?

Only cracks that are visible in the image. Hairline cracks that don't show under normal light need candling (light behind the egg) or acoustic testing. Vigiovo complements those methods by removing dirty and visibly cracked eggs before them.

### Does it work with white eggs?

The default colour limits target brown and cream shells. White or bluish eggs work by adjusting the hue and saturation limits in the configuration, which is part of pilot calibration.

### How is the system calibrated for my line?

With a few hundred images of eggs from your conveyor, labelled by your team. The dirt, crack and colour thresholds are adjusted until the results match the labels. Every decision records how close the egg was to the limit, which makes tuning straightforward.
