{"id":162,"date":"2025-05-11T09:00:00","date_gmt":"2025-05-11T09:00:00","guid":{"rendered":"https:\/\/www.tb-software.ch\/ai\/conveyorvision-applikation-industrielle-bildverarbeitung-fuer-foerderbaender\/"},"modified":"2025-05-11T09:00:00","modified_gmt":"2025-05-11T09:00:00","slug":"conveyorvision-applikation-industrielle-bildverarbeitung-fuer-foerderbaender","status":"publish","type":"post","link":"https:\/\/www.tb-software.ch\/ai\/en\/conveyorvision-applikation-industrielle-bildverarbeitung-fuer-foerderbaender\/","title":{"rendered":"ConveyorVision Application \u2013 Industrial Image Processing for Conveyor Belts"},"content":{"rendered":"<p>Discover how we\u2019ve created a lean yet highly powerful solution with modern camera control, optimized OCR, and intelligent logic\u2014from initial hurdles to real-time evaluation.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.tb-software.ch\/ai\/wp-content\/uploads\/2026\/05\/ConveyorVision_Screenshot-1181-1024x552-1.jpg\" alt=\"\" loading=\"lazy\"><\/p>\n<h2>In short<\/h2>\n<p>ConveyorVision combines robust camera control, high-performance OCR, intelligent conveyor belt logic, a modular plugin architecture, and insightful statistics within a .NET framework. With a simulator, live histogram, and transparent feedback, new features can be developed, tested, and deployed to customers swiftly.<\/p>\n<p>Development was completed within one month.<\/p>\n<h2>Introduction<\/h2>\n<p>ConveyorVision is a .NET-based WPF application specifically designed to detect and evaluate date imprints on packaging boxes in real-time on conveyor belts. Beneath the surface lies a modular structure comprising:<\/p>\n<ul>\n<li><strong>camera service<\/strong> (DirectShow-based)<\/li>\n<li><strong>OCR service<\/strong> (deep learning)<\/li>\n<li><strong>Segmentation and Logic Engine<\/strong><\/li>\n<li><strong>Statistics and visualization module<\/strong><\/li>\n<li><strong>PLC integration<\/strong> (Siemens LOGO! via Modbus)<\/li>\n<li><strong>Simulator<\/strong> and <strong>Unit tests<\/strong><\/li>\n<\/ul>\n<h2>Core Features<\/h2>\n<ol>\n<li><strong>Dynamic camera control<\/strong><\/li>\n<\/ol>\n<p>Resolution, FPS, Image Format (RGB24 \/ MJPG), Flip &amp; Rotation in 90\u00b0 Increments<\/p>\n<ol>\n<li>Manual exposure time, gain, brightness, contrast, white balance<\/li>\n<li>ROI (Region of Interest) f\u00fcr Zuschneiden und Histogramm\u00fcberlagerung<\/li>\n<li>Bis zu 30 FPS im zugeschnittenen Bereich<\/li>\n<li><strong>Hochleistungs-OCR-Pipeline<\/strong><\/li>\n<\/ol>\n<p>Tesseract-Konfiguration mit Brute-Force-Optimierung<\/p>\n<ol>\n<li>Deep-Learning-Fallback-Modelle f\u00fcr knifflige F\u00e4lle<\/li>\n<li>Whitelist-Filter, DPI-Anpassung, Graustufen-Konvertierung, 24-Bit-Modus<\/li>\n<li>ROI-Zuschneiden f\u00fcr fokussierte Erkennung<\/li>\n<li><strong>Intelligente F\u00f6rderbandlogik<\/strong><\/li>\n<\/ol>\n<p>Erkennung, ob eine Box bereits im Sichtfeld ist (keine Lichtschranke erforderlich)<\/p>\n<ol>\n<li>Automatische Ausl\u00f6sung von Aktuatoren \u00fcber Siemens LOGO! mit Modbus<\/li>\n<li>Handling of nested packages, congestion situations, and \"idle time\"<\/li>\n<li><strong>Real-time statistics &amp; visualization<\/strong><\/li>\n<\/ol>\n<p>Stacked time intervals (10 seconds to minutes) for valid vs. invalid boxes<\/p>\n<ol>\n<li>Live diagrams without axis labels, just subtle grid lines<\/li>\n<li>Metrics: Total, Min\/Max, Average, Start\/End Time<\/li>\n<li><strong>Simulation mode &amp; UI feedback<\/strong><\/li>\n<\/ol>\n<p>Integrated dispatcher timer for testing modules<\/p>\n<ol>\n<li>Histogram overlay and transparent masks for intuitive ROI adjustment<\/li>\n<li>\"Traffic light\" feedback (green\/red) with contrast-equivalent foreground text<\/li>\n<li><strong>Modular architecture &amp; quality assurance<\/strong><\/li>\n<\/ol>\n<p>Plugin architecture enables easy extension with new modules<\/p>\n<ol>\n<li>Clean separation of services, view models, and utilities<\/li>\n<li>Extensive unit tests for camera, OCR, segmenter, and statistics<\/li>\n<li>Functionality guaranteed through automated test runs<\/li>\n<li><strong>Data logging &amp; cloud connectivity<\/strong><\/li>\n<\/ol>\n<p>Local CSV\/TXT logs for frames, performance and segments<\/p>\n<ol>\n<li>Optional upload to server or cloud (REST\/FTP)<\/li>\n<li>Persistent settings via JSON and reflection<\/li>\n<\/ol>\n<h2>Developer Insights: Challenges &amp; Solutions<\/h2>\n<ul>\n<li><strong>Incorrect SPS server IP<\/strong>**Endless debugging: \u2713 Cable? \u2713 LOGO! firmware? \u2713 .NET Modbus client? In the end, only end-to-end tracing in the BackgroundWorker proved effective.**<\/li>\n<\/ul>\n<p>Relay card vs. LOGO!&lt;br&gt;Originally, we planned to control valves directly via relays. Thanks to stable image logic, we bypassed this and reliably used the SPS-LOGO! via Modbus.<\/p>\n<p>Removal of the light barrier****Intelligent image recognition detects \u2018box present\/box gone\u2019 entirely through software \u2013 the external light barrier is no longer needed.<\/p>\n<p>Statistics display****Out-of-the-box, no ready-made diagram for stacked buckets is available. We\u2019ve implemented custom rectangle bar series and fixed time intervals (10s \/ 1min) using OxyPlot.<\/p>\n<h2>Performance Optimization<\/h2>\n<p>Camera Tuning<\/p>\n<p>Shorter exposure times, MJPEG encoding<\/p>\n<ul>\n<li>Dynamic frame rate limits \u2192 faster conveyor belt<\/li>\n<\/ul>\n<p><strong>OCR models<\/strong><\/p>\n<ul>\n<li>Bruteforce tuning (English\/German, PSM variants, DPI, whitelist, etc.)<\/li>\n<li>Deep-Learning-Fallback for complex texts<\/li>\n<\/ul>\n<p><strong>ROI &amp; filter chains<\/strong><\/p>\n<ul>\n<li>Process only relevant image sections<\/li>\n<li>Contrast and sharpening filters improve recognition rates<\/li>\n<\/ul>\n<p><strong>Result:<\/strong>From 0.2 images per second on an old laptop to 5\u201310 FPS today (up to 30 FPS in the ROI) on modern hardware.<\/p>\n<h2>Quality assurance &amp; brute-force tuning<\/h2>\n<p>brute-force scripts<strong> for days<\/strong>Testing all OCR combinations on video footage<\/p>\n<p>Automated evaluation<strong>:<\/strong>CSV and performance metrics per configuration<\/p>\n<p>Unit tests<strong> for all critical classes:<\/strong>Camera initialization, format switching, buffer callbacks, segmenter logic<\/p>\n<h2>Test video from the development phase (Alpha version)<\/h2>\n<p>Learn more and try it out now: <a href=\"https:\/\/tb-software.ch\/page\/conveyorvision-applikation-industrielle-bildverarbeitung-f%C3%BCr-foerderbaender\/\">https:\/\/tb-software.ch\/page\/conveyorvision-applikation-industrielle-bildverarbeitung-f\u00fcr-foerderbaender\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Discover how we&#8217;ve created a lean yet highly powerful solution using modern camera control, optimized OCR, and intelligent logic\u2014from initial hurdles to final real-time evaluation. In short, ConveyorVision combines robust camera control, high-performance OCR, smart conveyor belt logic, modular plugin architecture, and insightful statistics within a .NET framework. Thanks to the simulator, live histogram, and transparent feedback, new features\u2026<\/p>\n","protected":false},"author":1,"featured_media":160,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"class_list":["post-162","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-applikationsentwicklung"],"_links":{"self":[{"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=\/wp\/v2\/posts\/162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=162"}],"version-history":[{"count":0,"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=\/wp\/v2\/posts\/162\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=\/wp\/v2\/media\/160"}],"wp:attachment":[{"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tb-software.ch\/ai\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}