GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small...

27
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

Transcript of GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small...

Page 1: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 2: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

2

Introduction

Embedded System Support

3D Camera Support

Outline

Page 3: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

3

Introduction

Why GenICam? (1/2)

A TL does not deal with camera features

What a TL does

Page 4: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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)

Page 5: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 6: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

*)

Page 7: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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?

Page 8: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

8

Introduction

Embedded System Support

3D Camera Support

Outline

Page 9: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 10: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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?

Page 11: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 12: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 13: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 14: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 15: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 16: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 17: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 18: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

18

Introduction

Embedded System Support

3D Camera Support

Outline

Page 19: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 20: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 21: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

21

3D Camera Support

Area Scan / Line Scan 3D

Page 22: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

22

Multiple Data Values per Pixel

Page 23: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 24: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

24

3D Camera Support

Pixel Formats

Page 25: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

25

3D Camera Support

Coordinate System)

Page 26: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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

Page 27: GenICam 3.0 – Faster, Smaller, 3D · 2016-09-05 · Mostly ARM architecture Mostly Linux Small footprint required GenICam v2.4 ok, but not ideal Need for GenICam v3.0 Other, e.g.

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