GenICam 3.0 Faster, Smaller, 3D Vision Stuttgart Nov 2014 Dr. Fritz Dierks Director of Platform Development at Chair of the GenICam Standard Committee 1
Outline Introduction Embedded System Support 3D Camera Support 2
Why GenICam? (1/2) Introduction What a TL does A TL does not deal with camera features 3
Why GenICam? (2/2) GenTL GenApi SFNC PFNC GenCP Standardizes programming interface for TLs. Makes TLs interchangeable Standardizes feature description language (XML) Maps features to register Standard feature naming convention (~1.700 entries) Exhaustive list of standardizes camera features Pixel format naming convention Generic Control Protocol 4
GenICam Standard Committee 146 member a/o Nov 2014 Two Meetings per year, rotating between Europe, America, and Asia Two days per meeting 18 contributing members with voting rights (Yokohama meeting Sep 2014) 5
Reference Implementation Used by most companies Not part of the standard Latest release v2.4 (Feb 14) *) Written in C++ Supports Win32/64 using Visual Studio Supports Linux32/64 using gcc Supports x86 and ARM processors Supports MacOS Strict focus on quality *) Static use case is not supported any more therefore the test code shrank 6
What s Next? Maintenance New OS & New Compilers Even more camera features New Transport layers Embedded System Support Shrink memory Footprint Speed-up XML file loading Simplify Installation 3D Camera Support Multi-part images New pixel types New camera features 7
Outline Introduction Embedded System Support 3D Camera Support 8
Deep Embedded Systems Embedded System Support PC-Based System Mostly x86 architecture Mostly Windows Large footprint ok GenICam v2.4 ok Deep Embedded System Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g. CSI 9
Why GenICam v3.0? Embedded System Support The basic SW architecture was chosen ~2004 PC was target platform XML files were assumed to be small DOM parser for XML + XSTL for pre-processing was adequate Today, 10 years later, things have changed (Deep) embedded systems are used for image processing Today s camera are extremely feature rich and bear huge XML files GenICam v2.4 is rather too slow and too fat for embedded systems Standard Committee decided 1.5 years ago Re-build the XML loader section incl. pre-processing from scratch Make GenICam faster, smaller, and easier to install Maintain 100% backwards compatibility to existing XML files 10
V3.0 Timeline & Status Embedded System Support 2012 2013 2014 2015 V2.3.1 V2.4 V2.4.1 V3.0 Dresden Sep 12 Decision Seoul Apr 13 Feasibility study Schongau Oct 13 Architecture decisions Now San Jose Mar 14 First prototype Yokohama Oct 14 Alpha Version London Apr 15 Release candidate 11
Performance Results Performance Results Test PC Lenovo T430 Laptop Intel Core i5-3320m CPU @ 2.6 GHz 8 GB RAM Windows 7 SP1-64 bit Compiler Version VisualStudio 2013 (VS12), Service Pack 1 Code Version https://genicam.mvtec.com/svn/genicam/branches/v3_0 Revision 2517 12
XML Testfiles and Cache Size Performance Results File Statistics XML File Name XML File Size NumNodes NumLinks NumProperties NumStrings Basler_Ace_GigE_Version_3_7.xml 1.198 kb 2.699 59.870 75.398 7.486 Basler_Ace_USB_Version_1_0.xml 349 kb 981 27.090 34.126 2.744 pt1000_cl4_gev_0_2_0_23e62310.xml 611 kb 3.556 31.075 45.070 7.377 XML File Name Basler_Ace_GigE_Version_3_7.xml Basler_Ace_USB_Version_1_0.xml pt1000_cl4_gev_0_2_0_23e62310.xml Cache File Size GenApi v3.0 GenApi v2.4 Cache File v3.0/v2.4 Cache w/o strings v3.0/v2.4 String Content String/Total Cache File 837 kb 20% 702 kb 17% 419 kb 50% 4.133 kb 290 kb 18% 219 kb 14% 105 kb 36% 1.603 kb 490 kb 24% 440 kb 22% 212 kb 43% 2.035 kb The cache file size has shrunk to 20% 13
Code Size Performance Results GenICam v3.0 File Size GenICam v2.4 Module Release MinSize Embedded Module File Size GCBase.dll 127 kb 56 kb 56 kb GCBase.dll 105 kb Log.dll 72 kb 28 kb 28 kb Log.dll 36 kb Log4cpp.dll 387 kb 142 kb no log Log4cpp.dll 330 kb MathParser.dll 88 kb 30 kb 30 kb MathParser.dll 92 kb GenApi.dll 2.087 kb 1.000 kb 1.000 kb GenApi.dll 1.883 kb XMLParser.dll 1.177 kb 390 kb cache only XMLLoader.dll 183 kb Total 3.938 kb 1.646 kb 1.114 kb Xalan-C.dll 3.327 kb Xerces-C.dll 2.711 kb XalanMessages.dll 42 kb Size v3.0 / v2.4 45% 19% 13% Total 8.709 kb The code size has shrunk to 45..20% depending on the compile type 14
Memory Footprint Performance Results XML File Name Basler_Ace_GigE_Version_3_7.xml Basler_Ace_USB_Version_1_0.xml pt1000_cl4_gev_0_2_0_23e62310.xml Peak Private Memory GenApi 3.0 GenApi 2.4 1st load v3.0/v2.4 cache load v3.0/v2.4 Base load 1st load cache load Base load 13.000 kb 23% 9.100 kb 19% 1.000 kb 56.000 kb 49.000 kb 1.250 kb 5.600 kb 22% 3.700 kb 18% 1.000 kb 25.000 kb 21.000 kb 1.250 kb 11.500 kb 29% 9.100 kb 25% 1.000 kb 40.000 kb 37.000 kb 1.250 kb Private Memory is the portion of a processes virtual address space that has been allocated for private use. It does not include shared or code memory. Peak Private Memory is the max amount of private memory Base Load describes what the test program uses without loading an XML file Net Peak Private Memory is (Peak Private Memory Base Load) The peak private memory has shrunk to 25% The net peak private memory for loading very large XML files is for 1 st time load <12 MByte for cache load <8 MByte 15
Loading Time Performance Results XML File Name Basler_Ace_GigE_Version_3_7.xml Basler_Ace_USB_Version_1_0.xml pt1000_cl4_gev_0_2_0_23e62310.xml Laoding Time GenApi v3.0 GenApi v2.4 1st load v3.0/v2.4 cache load v3.0/v2.4 1st load cache load 169 ms 12% 68 ms 17% 1.360 ms 400 ms 57 ms 11% 29 ms 18% 500 ms 164 ms 134 ms 12% 51 ms 20% 1.100 ms 260 ms The 1 st loading time has shrunk to 12% The cache loading time has shrunk to 20% Even with large XML files the 1 st load time is <170 ms Even with large XML files the cache load time is <70 ms 16
Performance Increase Conclusion GenICam Update Memory Footprint Code - Standard configuration 4 MB 45% Code - Deep Embedded 1,2) configuration 1.1 MB 13% Cache 3) < 0.7 MB 20% Private Memory 2,3) 8..12 MB 25% Loading Time 3) 1 st time load <170 ms 12% Cache load < 70 ms 20% This is adequate even for deep embedded systems 1) no logging 2) load from cache 3) very large (1.2 MB) XML file 17
Outline Introduction Embedded System Support 3D Camera Support 18
3D Measurement Principles 3D Camera Support Stereo Structured Light Time-of-Flight 3D Cameras will be used a lot in future There are different measurement principles used The measurement results however can share the same format as can many camera features Idea: Extend GenICam to cover all kind of 3D cameras 19
New Topics in 3D Images 3D Camera Support Support area scan as well as line scan 3D cameras Have multiple data values per pixel Support new pixel formats Deal with Coordinate systems New camera Features Most of the following drawings are taken from presentations given by Mattias Johannesson, Sick 20
Area Scan / Line Scan 3D 3D Camera Support 21
Multiple Data Values per Pixel 22
Multipart Image The camera does not deliver one buffer Instead the user can configure what is transferred and select different parts of the transferred data GenTL extension required TL standards need to support multipart images. 23
Pixel Formats 3D Camera Support 24
Coordinate System) 3D Camera Support 25
3D Roadmap 3D Camera Support Still quite some work to be done Proof-of-concept prototypes available 3D Camera 3D Camera 3D Image Processing Library Visit the Standards Booth 1B09 26
Questions? Dr. Fritz Dierks Director of Platform Development Chair of the GenICam Standard Committee Basler AG An der Strusbek 60-62 22926 Ahrensburg Germany Phone: +49-4102-463-381 Email: friedrich.dierks@baslerweb.com www.baslerweb.com 27