---
title: "How To: Measure Part Area from a Camera Image"
product: "LumiScan Area Detector"
component: "lumiscan-area-detector"
version: "1.2.0"
display_version: "1.2.0.6"
latest_version: true
language: "en"
url: "https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/how-tos/measure-part-area-from-a-camera-image.html"
---

# How To: Measure Part Area from a Camera Image – LumiScan Area Detector

Start to finish: get a real area measurement out of a live camera, and make it survive a restart.

## Before you start

- LumiScan Cam Driver is installed and publishing an image, for example at `hdvisionsystems/lumiscan-cam-driver/camera1/output/image`.
- LumiScan Area Detector is installed, and `system/modules` lists `module-1`. On ctrlX OS it is also licensed, see [Requirements](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/lumiscan-area-detector/requirements.html).
- The parts are in front of the camera, in the lighting the installation will actually use.

## Step 1: see what is found with the defaults

```
module-1/detect-area/input/input-image-address = hdvisionsystems/lumiscan-cam-driver/camera1/output/image
write module-1/detect-area/execute
```

Check `output/status-code` is `1`, then read `output/result`. Look at `blob_count`: too many means noise is being counted, zero means nothing matched.

The areas are already real pixel counts. What the next step changes is how the regions are found.

## Step 2: commission the level

The one setting that decides whether this works is the brightness a pixel must exceed. Do not guess it - measure the picture:

```
system/analyse-scene/input/input-image-address = "hdvisionsystems/lumiscan-cam-driver/camera1/output/image"
write system/analyse-scene/execute
read  system/analyse-scene/output/recommended-settings
read  system/analyse-scene/output/histogram
```

`recommended-settings` gives you a level, which end is the part, and whether to fill holes. `histogram` is how you check it: the level wants to sit in the valley between the part’s hump and the background’s. Two humps with a gap means the picture separates cleanly; one hump means no level will save it and the lighting needs fixing instead.

Then set it on the module:

```
module-1/detect-area/input/method-specific/fixed/level = 128
write module-1/detect-area/execute
```

If the parts are darker than the background, add:

```
module-1/detect-area/input/detect-dark = true
```

## Step 3: stop counting noise

Look at the smallest entries in `blobs`. The app reports every region it separated - there is no area window to raise - so noise and dust are dealt with in one of two places:

- **At the level.** Raising `method-specific/fixed/level` until noise stops crossing the threshold is the better fix, because those regions then cost nothing to find.
- **In your control program.** Ignore any `blobs[]` entry whose `area` is below what a part can be. A quarter of the area of the smallest part you care about is a good starting point. That decision belongs to you: only you know what a part is.

## Step 4: check the number against something you know

Measure a part whose real area you know - or count its pixels once in an image viewer - and compare it against `blobs[0].area`. They should agree closely. If the measurement is consistently low, the threshold is cutting into the part: lower `method-specific/fixed/level`, and try `detect-dark` if the part is the darker of the two.

## Step 5: make it permanent

```
system/save-module-inputs/input/module-id = module-1
write system/save-module-inputs/execute
write system/save-current-modules/execute
```

Both should report `1`. The module and its settings now survive a restart.

## Step 6: run it from a control program

Per cycle:

1. Write to `module-1/detect-area/execute`.
2. Read `module-1/detect-area/output/status-code`.
3. If negative, the run failed - read `output/status-text` and do not use the result.
4. If `1`, read `output/result` and act on `total_area`, or on `blob_count` for a presence check.

Read the outputs **before** triggering the next `execute`: a run empties them as it starts.

## If the numbers look wrong

Problems are described step by step in [Troubleshooting](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/troubleshooting.html):

- [The measured area is larger or smaller than the part](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/troubleshooting.html#faq-area-wrong) - much larger, consistently short, or a part with a hole
- [Many tiny regions are reported](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/troubleshooting.html#faq-tiny-regions)
- [One part is reported as several regions](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/troubleshooting.html#faq-part-split)
- [Nothing is found, or the result is empty](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/troubleshooting.html#faq-nothing-found)
- [The reading drifts with the lighting, or no level works](https://docs.hdvisionsystems.com/en/lumiscan-area-detector/1.2.0/troubleshooting.html#faq-reading-drifts)
