Files
AI-on-the-edge-device-docs/Correction Algorithm/index.html
2024-12-02 01:52:01 +00:00

886 lines
34 KiB
HTML

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Correction%20Algorithm/" rel="canonical"/>
<link href="../Learn-models-with-your-own-images/" rel="prev"/>
<link href="../Neural-Network-Types/" rel="next"/>
<link href="../img/favicon.ico" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.47" name="generator"/>
<title>Correction Algorithm - AI on the Edge Device</title>
<link href="../assets/stylesheets/main.6f8fc17f.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="blue" data-md-color-scheme="default" dir="ltr">
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#correction-algorithm">1.
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="AI on the Edge Device" class="md-header__button md-logo" data-md-component="logo" href=".." title="AI on the Edge Device">
<img alt="logo" src="../img/logo.svg"/>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
AI on the Edge Device
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Correction Algorithm
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://github.com/jomjol/AI-on-the-edge-device-docs" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="AI on the Edge Device" class="md-nav__button md-logo" data-md-component="logo" href=".." title="AI on the Edge Device">
<img alt="logo" src="../img/logo.svg"/>
</a>
AI on the Edge Device
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://github.com/jomjol/AI-on-the-edge-device-docs" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
<span class="md-ellipsis">
Getting Started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
Welcome
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Installation/">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../initial-setup/">
<span class="md-ellipsis">
Initial Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Hardware-Compatibility/">
<span class="md-ellipsis">
Hardware Compatibility
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Best-Practice/">
<span class="md-ellipsis">
Best Practice
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../FAQs/">
<span class="md-ellipsis">
Frequently Asked Questions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_2" type="checkbox"/>
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Configuration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_2_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Configuration
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../Reference-Image/">
<span class="md-ellipsis">
Reference Image
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Alignment/">
<span class="md-ellipsis">
Alignment References
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../ROI-Configuration/">
<span class="md-ellipsis">
ROIs (Regions of Interest)
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Configuration/">
<span class="md-ellipsis">
Graphical Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Choosing-the-Model/">
<span class="md-ellipsis">
Model Selection
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../ota/">
<span class="md-ellipsis">
Over-The-Air (OTA) Update
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_3" type="checkbox"/>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Advanced
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_3_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Advanced
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../Parameters/">
<span class="md-ellipsis">
Parameters
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Integration-Home-Assistant/">
<span class="md-ellipsis">
Integration into Home Assistant
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../External-LED/">
<span class="md-ellipsis">
External LED
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../data-logging/">
<span class="md-ellipsis">
Data Logging
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../rolling-installation/">
<span class="md-ellipsis">
Living on the Edge
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Watermeter-specific-analog---digital-transition/">
<span class="md-ellipsis">
Analog/Digital Transition on Water Meters
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../collect-new-images/">
<span class="md-ellipsis">
Collect images to improve the models
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Learn-models-with-your-own-images/">
<span class="md-ellipsis">
Learn a model with your own images
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Correction Algorithm
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
<span class="md-ellipsis">
Correction Algorithm
</span>
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#terms-and-definitions">1.0.1
<span class="md-ellipsis">
Terms and definitions
</span>
</a>
<nav aria-label="Terms and definitions" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#prevalue">1.0.1.0.1
<span class="md-ellipsis">
PreValue
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#digits">1.0.1.0.2
<span class="md-ellipsis">
Digits
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#analogs">1.0.1.0.3
<span class="md-ellipsis">
Analogs
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#checkdigitincreaseconsistency">1.0.1.0.4
<span class="md-ellipsis">
CheckDigitIncreaseConsistency
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#allownegativerates">1.0.1.0.5
<span class="md-ellipsis">
AllowNegativeRates
</span>
</a>
<nav aria-label="AllowNegativeRates" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#decimalshift">1.0.1.0.5.1
<span class="md-ellipsis">
DecimalShift
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#analogdigitaltransitionstart">1.0.1.0.5.2
<span class="md-ellipsis">
AnalogDigitalTransitionStart
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#maxratevalue-and-maxratetype">1.0.1.0.5.3
<span class="md-ellipsis">
MaxRateValue and MaxRateType
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#extendedresolution">1.0.1.0.5.4
<span class="md-ellipsis">
ExtendedResolution
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#ignoreleadingnan">1.0.1.0.5.5
<span class="md-ellipsis">
IgnoreLeadingNaN
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#flow-chart">1.0.1.1
<span class="md-ellipsis">
Flow Chart
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#checkdigitincreaseconsistency-algorithm">1.1
<span class="md-ellipsis">
CheckDigitIncreaseConsistency Algorithm
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Neural-Network-Types/">
<span class="md-ellipsis">
Neural Network Types
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Additional-Information/">
<span class="md-ellipsis">
Additional Information
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../New-Releases-Notification/">
<span class="md-ellipsis">
Notification about new Releases
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../prometheus-openmetrics/">
<span class="md-ellipsis">
Prometheus/OpenMetrics
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_4" type="checkbox"/>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Troubleshooting
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_4_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Troubleshooting
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../Error-Codes/">
<span class="md-ellipsis">
Reduced webinterface (error codes)
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../StatusLED-BlinkCodes/">
<span class="md-ellipsis">
Board status LED (blink codes)
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../WLAN-disconnect-reason/">
<span class="md-ellipsis">
WLAN disconnect reasons
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Error-Debugging/">
<span class="md-ellipsis">
Often observed issues
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Frequent-Reboots/">
<span class="md-ellipsis">
Basic hardware/config issues
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Demo-Mode/">
<span class="md-ellipsis">
Demo mode
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_5" type="checkbox"/>
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Quick Links
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_5_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Quick Links
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="https://github.com/jomjol/AI-on-the-edge-device/releases">
<span class="md-ellipsis">
Releases
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="https://jomjol.github.io/AI-on-the-edge-device/index.html">
<span class="md-ellipsis">
Web Installer/Console
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="https://github.com/jomjol/AI-on-the-edge-device/issues">
<span class="md-ellipsis">
Create an Issue
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="https://github.com/jomjol/AI-on-the-edge-device/discussions">
<span class="md-ellipsis">
Join a Discussion
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
API's
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_6_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
API's
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../REST-API/">
<span class="md-ellipsis">
REST API
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../MQTT-API/">
<span class="md-ellipsis">
MQTT API
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Influx-DB/">
<span class="md-ellipsis">
Influx DB
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Webhook/">
<span class="md-ellipsis">
Webhook
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_7" type="checkbox"/>
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_7_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../Build-Instructions/">
<span class="md-ellipsis">
Build the Project
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Upload-files-by-script/">
<span class="md-ellipsis">
Scripted File Upload
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Testing/">
<span class="md-ellipsis">
Testing Option for VSCode
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../Release-creation/">
<span class="md-ellipsis">
Release Procedure
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Old Pages (no longer maintained)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_8_label" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Old Pages (no longer maintained)
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../outdated--Integrated-Functions/">
<span class="md-ellipsis">
Integrated Functions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
Assorted Pages
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#terms-and-definitions">1.0.1
<span class="md-ellipsis">
Terms and definitions
</span>
</a>
<nav aria-label="Terms and definitions" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#prevalue">1.0.1.0.1
<span class="md-ellipsis">
PreValue
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#digits">1.0.1.0.2
<span class="md-ellipsis">
Digits
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#analogs">1.0.1.0.3
<span class="md-ellipsis">
Analogs
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#checkdigitincreaseconsistency">1.0.1.0.4
<span class="md-ellipsis">
CheckDigitIncreaseConsistency
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#allownegativerates">1.0.1.0.5
<span class="md-ellipsis">
AllowNegativeRates
</span>
</a>
<nav aria-label="AllowNegativeRates" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#decimalshift">1.0.1.0.5.1
<span class="md-ellipsis">
DecimalShift
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#analogdigitaltransitionstart">1.0.1.0.5.2
<span class="md-ellipsis">
AnalogDigitalTransitionStart
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#maxratevalue-and-maxratetype">1.0.1.0.5.3
<span class="md-ellipsis">
MaxRateValue and MaxRateType
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#extendedresolution">1.0.1.0.5.4
<span class="md-ellipsis">
ExtendedResolution
</span>
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#ignoreleadingnan">1.0.1.0.5.5
<span class="md-ellipsis">
IgnoreLeadingNaN
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#flow-chart">1.0.1.1
<span class="md-ellipsis">
Flow Chart
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#checkdigitincreaseconsistency-algorithm">1.1
<span class="md-ellipsis">
CheckDigitIncreaseConsistency Algorithm
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="correction-algorithm"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Correction Algorithm</h1>
<p>After the digitization of the images and the composition to a number a checking and correction algorithm is applied. This is explained here.</p>
<p>There are several reasons, that a check might be necessary:</p>
<ol>
<li>In case of digits there is the output of "N" (=NaN = Not-a-Number) in case the digit cannot be detected correctly. This happens for example if the image shows a digit between to states</li>
<li>The replacement of the "N" with a previous value could be not sufficient, due to the fact, that it might have changed.</li>
<li>There is a misreading of one one of the numbers. This can always happen in case of neural network processing.</li>
</ol>
<h3 id="terms-and-definitions"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1</span> Terms and definitions</h3>
<h5 id="prevalue"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.1</span> PreValue</h5>
<p>The last correct read value. PreValue is here a bit missleading, because normally it is the same as the last value. In the next round of reading it will be used to check nagtive rates, high rates (MaxRateValue / MaxRateType) and CCheckDigitIncreaseConsistency (dig-class11 only). Either from a previous correctly identified value or manual setting by the user.</p>
<h5 id="digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.2</span> Digits</h5>
<p>Value that are digitized from a digital number. There are 11 allowed values for this: </p>
<ol>
<li>Digits: 0, 1, 2, ... 9</li>
<li>N = Not-a-Number - representing a not unique state between two numbers</li>
</ol>
<h5 id="analogs"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.3</span> Analogs</h5>
<p>This are value derived from a pointer like meter. This never has the state "N".</p>
<h5 id="checkdigitincreaseconsistency"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.4</span> CheckDigitIncreaseConsistency</h5>
<p>If this is enabled an "intelligent" algorithm is used to derive from zero-crossing of discrete digit positions, if the number should have been increased. This is relevant because in some of the digit meters, the increase of a digit to the next number can be seen, before the sub-digit has gone through zero.</p>
<p>For example: 16.6 --&gt; 16.7 --&gt; 1N.8 --&gt; <strong>17.9</strong> corrected to 16.9 --&gt; 17.0 --&gt; 17.1 </p>
<p>As you can see, the 17.9 is a false reading as the 7 is assumed to be already readable, although the sub-digit has not crossed the zero. In this case the CheckDigitIncreaseConsistency algorithm will correct this to 16.9</p>
<p>A detailed description of the algorithm can be found below (not yet ready!)</p>
<h5 id="allownegativerates"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5</span> <code>AllowNegativeRates</code></h5>
<p>Most of the meters only have increasing numbers and do not count backwards. Therefore a negative rate (= negative change compared to the PreValue) is surely a false value. This can be checked an flagged as false reading</p>
<p>The <code>AllowNegativeRates</code> property ensures that the result does not become negative in the event of incorrect readings. This can happen, for example, if the alignment of the image did not work properly. But also the neural networks sometimes flip between two states for similar images.</p>
<p>If <code>AllowNegativeRates = true</code>, the result is discarded if it is smaller than the pre-value of the last readout and the output shows an error "Negative rate.."</p>
<p>If the <code>ExtendedResolution</code> setting is true, there is an exception where the value does not become smaller, but no error is output. This only applies if the value +/- 0.2 of the last digit is inaccurate.</p>
<h6 id="decimalshift"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.1</span> <code>DecimalShift</code></h6>
<p>The <code>DecimalShift</code> setting puts the decimal point in the right place. It acts like a shift. Negative values shift the decimal point to the left. Positive values move the decimal point to the right, filling with zero.</p>
<h6 id="analogdigitaltransitionstart"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.2</span> <code>AnalogDigitalTransitionStart</code></h6>
<p>For detailed description see <a href="../Watermeter-specific-analog---digital-transition/">Analog-digital-transition</a>.</p>
<h6 id="maxratevalue-and-maxratetype"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.3</span> <code>MaxRateValue</code> and <code>MaxRateType</code></h6>
<p>Here the maximum change from one to the next reading can be limited. If a false reading of the neural network results in a change larger than this, the reading is flagged as false. There a two types of comparisons possible</p>
<p>1) <strong>AbsolutChange</strong>: Here the difference between the PreValue and the current reading is compared directly, independent how much time has passed since the last reading.
2) <strong>RelativeRate</strong>: in this case a change rate in the unit of change/minute is calculated, taking the time between the last and the current reading into account. Be careful, that with increasing time, the absolute allowed change increases.
Example: relative rate of 0.05 m³/minute --&gt; after 20 minutes a maximum change of 20 minutes * 0.05 m³/minute = 1 m³ is possible. That means that a false reading of 1 m³ cannot be detected false after about 20 minutes in this case
Assume, that there might be no change in the meter for hours (e.g. during the night) a much bigger change could also be accepted. </p>
<h6 id="extendedresolution"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.4</span> <code>ExtendedResolution</code></h6>
<p>Newer models such as dig-cont and dig-class100 have a high resolution of the values and can thus represent another digit by using the value of the last digit or pointer (ex. 7.8 in the last digit). </p>
<p>If the value is set to true, the result of the last digit is used completely. </p>
<p>When using dig-class11 models, the setting is ignored.</p>
<p>Due to inaccuracies of the neural networks, it sometimes happens that the results jump back and forth between two decimal places. Therefore, when using `ÀllowNegatives``= false, no error is output if the value is only off by 0.2. Nevertheless, the value then remains at the higher determined value.</p>
<h6 id="ignoreleadingnan"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.5</span> <code>IgnoreLeadingNaN</code></h6>
<p>The parameter is only be used, if a dig-class11 model is selected. <code>ÌgnoreLeadingNaN</code> removes in the CheckDigitIncreaseConsistency process the leading <code>N</code> values.</p>
<h4 id="flow-chart"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.1</span> Flow Chart</h4>
<p><img alt="" src="../img/correct_algo_1.jpg"/></p>
<p><img alt="" src="../img/correct_algo_2.jpg"/></p>
<p><img alt="" src="../img/correct_algo_3.jpg"/></p>
<h2 id="checkdigitincreaseconsistency-algorithm"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> CheckDigitIncreaseConsistency Algorithm</h2>
<p>The check digit increase consistency algorithm is functional for the digits only. Due to the fact, that the rotation might be a little bit earlier or later compared to the zero crossing of the digit before, errors during the reading before and after a zero crossing can be wrong. Therefore a simple algorithm can be applied, checking the consistency of zero crossing and changes in the following digit. This is applied to one after the other digit, starting with the lowest priority digits.</p>
<p><img alt="" src="../img/correct_algo_zero_crossing.jpg"/></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.83f73b43.min.js"></script>
</body>
</html>