BodyScan Analysis: Kalman Filtering

Using Kalman Filtering to reduce variability and improve accuracy through multi-capture calibration.

Project Information

Although this project was conducted for Body Analysis, it would later be part of updates to Cardiovascular Health Scan (Section: CHS-Research: Continuous and Split Capture) because it needed the same triple scan for robust clinical-like results.


Advanced Health Intelligence

Kalman Filtering (KF) is a widely adopted technique for reducing signal noise, with applications spanning various fields, including self-driving cars. It offers numerous advantages, though, within our specific application, KF functions as a 'black box'. The quality of the results it produces depends heavily on the quality of the input data.

KF is also valued for its predictive capabilities, which can be leveraged to forecast trends and track progress. While specifics are beyond the scope of this project, it's worth mentioning as it was part of projects focused on health risk prediction models.

In collaboration with the MLCV team, I undertook a detailed analysis of the requirements and limitations associated with the use of KF in our capture process.

Part of our assessment included the physiological limits of human beings. We considered factors such as the maximum vs safe weight loss or gain over a certain period, based on an individual's initial weight, and the expected ratio of fat to muscle.

My approach to applying KF was pragmatic, particularly in the context of the scanning process. For example, scanning someone who is 175 cm tall and weighs 170 kg to assess obesity risk would be superfluous. In such clear-cut cases, common sense would prevail, and there would be no need for a scan.

The Problem

When Body Fat Percentage (BF%) shows variability across multiple scans under identical conditions, it raises concerns about accuracy—akin to the distrust we'd have for a household scale that gave inconsistent readings.

In the realm of healthcare biometrics, accuracy matters, especially when benchmarking against gold-standard technologies like DEXA scanners. My role focused on enhancing the user's likelihood of successful scans through improved guides and UX/UI enhancements, as well as investigating alternative data approaches, including multiple capture iterations and applying Kalman Filtering (KF).

Engineering and ML enhancements can often span several months and might yield an improvement of accuracy of 0.5%. However, there are "quick win" enhancements, potentially achievable within weeks, that could also impact accuracy significantly.

Alternative methods to refine scan outcomes include features like animated guides and confidence scores. Increasing the number of scans per session could theoretically yield a more accurate prediction. For instance, if three scans are performed and one is an outlier, discarding it in favor of the two consistent results could improve the overall accuracy—a process we could refer to as a "calibration" phase.

However, this approach is not without its drawbacks.

Bad data in = Bad data out

Three poor scans can also produce an inaccurate result. Our model is susceptible to bias – if two scans are inadequate but one is good, the accurate capture may be discarded as an outlier. We would first need to develop a confidence scoring system to rate each scan based on factors like lighting, pose, clothing, background, etc. This would help mitigate the bias risk.

We also ask users to perform three consecutive scans. Since this utilized the v1.x capture method of 10-second pauses between front and side photos, repeating three times extends the process. If a scan fails the positioning checks, requiring another attempt, it adds even more time.

There are also considerations around the capture approach itself. Is it better to do back-to-back scans in one session? Or space them across a day so users can take breaks? Given the need to change clothes, one session makes more sense.

Varying the setup each time could improve alignment diversity, but also risks distraction. If the first scan is difficult, it may negatively impact the experience and subsequent results. However, completing it once means they know what to do, likely improving each round.

In summary, we must weigh factors of bias mitigation, time to complete, user experience, and alignment variability. Confidence scoring and streamlining the process appear to be priorities for improvement. Further testing would reveal optimal timing and setup iteration.


The approach was fairly straight-forward, except I always take on a 'green fields' attitude when problem solving. That is, I would prefer to milestones that cover the short term then several updates, and even some future proof of concepts, or how it might effect other work outside of just what we're trying to solve.

The Importance of Time

The book Designing and Engineering Time by Dr. Steven C. Seow has greatly influenced my work, as time and the perception of time are significant factors for users conducting any health scans.

Timers and countdowns are utilized extensively in each of the technologies we employ. It is crucial to record baseline values of users' experiences under different contexts, as adding extra steps to these processes can have a substantial impact on how users perceive the product.

The tasks involved in this project include:

⁍ Creating high-fidelity layouts of the capture process for each variation

Establishing baseline capture timings and comparing them across different variations.

Ideas Explored

Sample: Automated capture

Automated – The Baseline

This is an automated calibration method, as the whole process is continuous and uninterrupted once started. It also represents the least amount of work required to implement the Kalman Filter (KF).

You can view a simple walkthrough of the screens via Figma.


⁍ First time success: 3m 21s

⁍ First time failure (1 minor error, countdown) +20: 3m 41s

⁍ First time failure (1 major error) +25: 3m 46s

⁍ Second time success -60: 2m 9s

Automated – Improved

Friction Points

During the initial scan, users may become confused about the sequence of front and side pictures they are taking.

Unnecessary confirmation screens are presented for essentially identical sets of images.

Cloud processing for three sets of images occurs at the end.

There is a lack of reward states to encourage user engagement.

Repeated critical errors will result in a permanent failure state.


Combining a reward state with three checked items as a scan indicator, removing unnecessary confirmation screens, and using a background process to upload each set of images to the cloud will reduce the processing payload and TTR (Time to Results).


⁍ First time success: 2m 48s (↓36s)

⁍ First time failure (1 minor error, countdown) +20: 3m 5s (↓36s)

⁍ First time failure (1 major error) +25: 3m 10s (↓36s)

⁍ Second time success -60: 1m 48s (↓21s)

First pass of improved calibration with minimal overhead.


KF performance deteriorates when a significant amount of time has passed without a measurement. The prediction will be less accurate and will attempt to normalize from the last recorded value, which could be several weeks or months prior. During this interval, substantial physiological changes, such as variations in weight by several kilos and body fat percentage, may occur, potentially shifting individuals into different health risk categories.

Recalibration is a trigger event that essentially requires users to complete additional scans. The requirement is time-dependent: if more than 4 weeks have elapsed between scans, a full recalibration is necessary. If the interval is greater than 2 weeks, only 2 consecutive scans in a single session may be required. Thus, it is possible to skip a week of scanning, and then resume the usual schedule—be it weekly or monthly—depending on the prescribed cadence.

KF: Project Outcomes

A smoothing formula was applied to the data, but a multi-session body scan incorporating multiple captures was not created. This project has been referenced several times and now serves as the foundation for another project centered on performing three cardiovascular health scans.

With the completion of Body Analysis R2.0, which streamlines the scan collection process and enhances results through improved user experience, this project will likely regain focus.