GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small...
Transcript of GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small...
1
Dr. Fritz Dierks
Director of Platform Development at
Chair of the GenICam Standard Committee
Vision Stuttgart Nov 2014
GenICam 3.0 – Faster, Smaller, 3D
2
Introduction
Embedded System Support
3D Camera Support
Outline
3
Introduction
Why GenICam? (1/2)
A TL does not deal with camera features
What a TL does
4
GenTL Standardizes programming interface for TLs. Makes TLs interchangeable
GenApi Standardizes feature description language (XML) Maps features to register
SFNC Standard feature naming convention (~1.700 entries)Exhaustive list of standardizes camera features
PFNC Pixel format naming convention
GenCP Generic Control Protocol
Why GenICam? (2/2)
5
� Two Meetings per year, rotating between Europe, America, and Asia
� Two days per meeting
� 18 contributing members with voting rights (Yokohama meeting Sep 2014)
GenICam Standard Committee
146 member a/o Nov 2014
6
� 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
Reference Implementation
*) Static use case is not supported any moretherefore the test code shrank
*)
7
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
What’s Next?
8
Introduction
Embedded System Support
3D Camera Support
Outline
9
Embedded System Support
Deep Embedded Systems
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
10
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
Embedded System Support
Why GenICam v3.0?
11
Embedded System Support
V3.0 Timeline & Status
2012 2013 2014 2015
Dresden Sep ’12• Decision
Seoul Apr ’13• Feasibility study
Schongau Oct ’13• Architecture decisions
San Jose Mar ’14• First prototype
Yokohama Oct ’14• Alpha Version
London Apr ’15• Release candidate
V2.3.1 V2.4 V2.4.1 V3.0
Now
12
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
Performance Results
Performance Results
13
� The cache file size has shrunk to 20%
Performance Results
XML Testfiles and Cache Size
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
File Statistics
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
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
Cache File Size
GenApi v3.0
14
� The code size has shrunk to 45..20%
depending on the compile type
Performance Results
Code Size
GenICam v3.0 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
File Size
15
• 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 isfor 1st time load <12 MBytefor cache load <8 MByte
Performance Results
Memory Footprint
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
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
GenApi 3.0 GenApi 2.4
Peak Private Memory
16
� The 1st loading time has shrunk to 12%
� The cache loading time has shrunk to 20%
� Even with large XML files the 1st load time is <170 ms
� Even with large XML files the cache load time is <70 ms
Performance Results
Loading Time
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
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
GenApi v3.0 GenApi v2.4
Laoding Time
17
Memory Footprint
� Code - Standard configuration 4 MB � 45%
� Code - Deep Embedded1,2) configuration 1.1 MB � 13%
� Cache3) < 0.7 MB � 20%
� Private Memory2,3) 8..12 MB � 25%
Loading Time 3)
� 1st 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
GenICam Update
Performance Increase Conclusion
18
Introduction
Embedded System Support
3D Camera Support
Outline
19
� 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
3D Camera Support
3D Measurement Principles
Stereo Structured Light Time-of-Flight
20
� 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
3D Camera Support
New Topics in 3D Images
21
3D Camera Support
Area Scan / Line Scan 3D
22
Multiple Data Values per Pixel
23
� 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.
Multipart Image
24
3D Camera Support
Pixel Formats
25
3D Camera Support
Coordinate System)
26
� Still quite some work to be done
� Proof-of-concept prototypes available
� Visit the Standards Booth 1B09
3D Camera Support
3D Roadmap
3D Camera
3D Camera
3D Image ProcessingLibrary
27
Questions?
Dr. Fritz DierksDirector of Platform Development Chair of the GenICam Standard Committee
Basler AG
An der Strusbek 60-6222926 AhrensburgGermany
Phone: +49-4102-463-381 Email: [email protected]
www.baslerweb.com