Introduction
The modern world is hard to imagine without video cameras. They are so tightly settled in our life that they have become an integral part of it, whether we like it or not. Smartphones, computers, security systems, etc. The list of applications can be continued for a long time, but ultimately the goal is one - building an image based on the light information coming from the outside world to the photosensitive sensor.
The widespread industrialization, optimization of production capacity, the development of production equipment for mass production of products and the acceleration of this release began to require systems for rapid visual control and monitoring. Such systems are called machine vision systems. They are complex software and hardware complexes for receiving and processing images.
Until 2006, there was no standard for creating such systems. This led to the fact that a large number of devices from different manufacturers, which were developed according to the internal closed standards of companies, settled on the market. Consumers had to stick to one camera manufacturer, since switching to another manufacturer required switching to other software for new cameras. All this resulted in the need to re-prepare production for work. The universality of both the cameras themselves and the software for them was required. In 2003, the European Machine Vision Association (EMVA) and leading manufacturers in this field united to create a common, exhaustive standard for controlling camera vision. After some time, the GenICam interface appeared.
The interface is decoded as Generic Interface Camera, but, it is more logical to call it a protocol or a standard, since It is superimposed over data interfaces. GenICam defines a single API for all cameras, through which the device is controlled. Also, it determines the firmware structure of the camera's controller, which is important. Thanks to all this, there was an opportunity to use different cameras of machine vision with different control software. Moreover, versatility is not limited to replacing the camera with another one with the same physical interface, for example USB3.
GenICam set the direction for the development of machine vision cameras, to which the industry follows and most likely will follow for a long time.
')
GenICam target
The purpose of the standard is to provide a basic programming interface for various cameras. There are a large number of machine vision cameras on the market that are based on this standard. They may have different physical data interfaces, but since the cameras support GenICam, they are all interchangeable. The same can be said about the software for cameras of machine vision, if the software supports GenICam, then, if necessary, it can be replaced with a solution from another developer.
Fig. 1 - GenICam principleComponent modules
The standard is divided into interconnected modules. Further, an explanation of each module will be briefly given.
Genapi
It stands for Generic API. Required to configure the camera. Modern cameras are not just devices that produce some kind of picture. On the contrary, they can perform a wide range of tasks, for example, the banal amplification of a signal from a photosensitive sensor. Signal amplification is an opportunity and needs to be controlled. In addition to amplification, other options are used if the electronics permits. GenApi is required to describe the camera's functionality and its parameters, for example, the width and height of a frame in pixels.
Gentl
Generic Transfer Layer. Required to determine the device system and communication with a single device or with multiple. In addition, it provides a means to transfer streaming data from the camera to the host. The module largely relates to the host management software, since the camera, in most cases, is a slave device. By providing a working link from GenApi and GenTL, you can get an entry-level software project for working with the camera.
GenCP
The transfer of control data through GenTL is carried out in accordance with the GenCP protocol. Generic Control Protocol determines the type of sending from host to device and the format of the response message from device to host. This protocol is focused on packet data transmission and works on the principle of sending a command, waiting for confirmation with tracking the waiting time.
SFNC
Standard Features Naming Convention. Cameras, as mentioned above, can have many possibilities. An example was the amplification of the signal from the image sensor. Different manufacturers could call this function differently, but then, due to differences in name, the cameras would not be interchangeable. Therefore, a naming convention, SFNC, was developed. It defines the main list of features, their names and principle of operation.
CLProtocol
Provides an API for GenApi to interact with the CameraLink interface. We will not analyze this module in more detail, since In the following parts, we will focus on the USB3 interface.
Conclusion
The standard is rather voluminous in terms of documentation, but quite understandable and logical. In the introduction, the history and reasons for its creation were casually touched upon, and the description of the composition is a very brief explanation of the meaning of the GenICam modules. This is enough to understand the basic meaning and purpose of the standard, which consists in combining and describing the basic principles of camera control with the subsequent creation, on their basis, of interchangeable computer vision systems.
The article should be divided into several parts for better perception of the material. The next part will be devoted to GenApi and camera configuration.