GeniCam and SFNC. A Common Language for Machine Vision

A cornerstone of Machine Vision was created in the spring of 2006 with the introduction of the GenICam Standard Feature Naming Convention (SFNC). Before SFNC, every camera manufacturer offered their own proprietary set of commands to configure their cameras. Although this worked (to a point) it meant system integrators needed to re-learn these commands every time they spec’d a camera from a different vendor (sometimes even within different families of cameras from the same vendor!) Many times, this required installing and maintaining multiple Software Development Kits (SDK) from the camera vendor. Painful! The introduction of SFNC catapulted the industry in a new direction in terms of interoperability: all new vision camera standards expose camera control through SFNC.

So what is SFNC? SFNC is a dictionary of standardized functionality names made visible by a camera to the application configuring the camera. They are stored in the GenICam XML file of the camera: a text file listing the features and associated registers of the camera. Having a common language defined by this dictionary ensures companies in our industry use the same terminology to reference a specific functionality of the camera. And why should you care? Because as you integrate a new camera into a system, you’ll know how to control and configure it. And when you switch to a different camera vendor, changes to your software will be minimal since the same set of basic features are used. Time to market is king these days, and this is true for SFNC too!

Let’s take an example. A very typical situation is to play with the exposure setting of the sensor to control the intensity of the image captured. Well, there might not be an app for that, but there is certainly a feature for that! And it is simply called ExposureMode. So you know that any camera that is GenICam compliant and offers exposure control will present it through this ExposureMode feature. And this feature can take 4 different values: Off, Timed, TriggerWidth or TriggerControlled. I won’t go into detail for what each of these 4 modes represent (you can find it for yourself in the SFNC document), but I am completely sure you understand that having a common way to represent a given camera behavior will save you plenty of time the next time you have to control a new camera. Learn it once, use it everywhere!

At Teledyne DALSA, we believe the SFNC concept is so powerful that we have extended it internally to standardize features not covered by SFNC in our new product families. We call it the “DALSA Feature Naming Convention” (DFNC) and it ensures our new products speak the same language and respond in the same way. And because Camera Link HS supports GenICam, the door is wide open not only for cameras but also for frame grabbers to share this language. And when you have multiple devices speaking the same language, opportunities abound for automatic synchronization. A topic for a future post, for sure.

Till then!

About Eric

Eric is in charge of R&D activities at the Montreal office of Teledyne DALSA where he is surrounded by talented people working on the technologies of tomorrow. Chair of the GigE Vision committee, he enjoys reading and writing machine vision standards, especially the thicker ones.
Posted on by Eric. This entry was posted in Image processing, Interface Standards, Machine Vision, Software. Bookmark the permalink.

2 Responses to "GeniCam and SFNC. A Common Language for Machine Vision"

  1. says:

    How genIcam permits file upload from PC to camera ? For example, I need to transfer a map defect file used by camera to correct defect pixel. How can I do in respect of genIcam standard protocol ?