JAI has introduced the latest version of its popular and powerful GigE Vision SDK & Control Tool software. Version 1.3.0 – compatible with Windows 7, Windows XP and Windows Vista - has been updated and improved in a considerable number of areas, aimed at maintaining its status as one of the most robust and versatile vendor independent GigE Vision software packages offered by any camera manufacturer.
Perhaps most significant, is the software’s support for the GenICam 1.2 (SFNC) and GigE Vision 1.1 standards. This is a key enhancement over the current 1.2.5 version, and supports the release of new SFNC- and GigE Vision 1.1-compatible firmware, which began shipping in all of JAI’s C3 GigE Vision cameras on July 1.
The new features found in the 1.3.0 SDK and Control Tool package include:SDK API (Application Programming Interface):
Camera Control Tool:
Please read the following sections for a more detailed description of each of these new features.
Action command broadcast supportThe JAI SDK now automatically supports this key GigE Vision 1.1 feature when it detects devices (cameras, strobe controllers, etc.) that have implemented this capability (such as the latest C3 GigE Vision cameras). Applications can then transmit commands across the network and have multiple devices respond based on their “group” designation and how they have been programmed to respond to certain broadcast commands. In this way, a single command can trigger multiple cameras, reset timestamps, or perform other actions with a minimum of latency and programming effort. A new sample application is included in the SDK to illustrate the usage of this feature. In addition, a new dialog has been added to the Control Tool to enable the feature to be used manually across multi-device systems when such control is desired.
Firewall traversal supportA second key feature of GigE Vision 1.1 is firewall traversal. The new 1.3.0 version of the JAI SDK automatically detects cameras that support this function (like JAI’s latest C3 GigE Vision cameras), and opens up the firewall for the stream channel and/or the message channel for these devices. No longer do users have to disable their firewalls to get information from their GigE Vision devices. The firewall traversal capability enables user applications to receive images and events even with the firewall enabled.
Lookup table (LUT) functionsSeveral new API functions have been added to help create and initialize lookup tables as a post-processing step. Users can now apply LUT capabilities to optimize the contrast and dynamic range of their images, whether or not this functionality is included in the camera. Capabilities are provided to quickly initialize typically used values (such as Gamma function, linear tables created from knee-points, etc.).
The size of the LUT is automatically determined based on the pixel-format read from the camera. For color cameras, the LUT automatically provides individual value tables for the three color planes - R, G and B. LUT’s can be easily saved and loaded from disk. The LUT processing has been optimized for multi-core CPUs.
Basic transformation functions Also added as an image processing capability are several basic transformation functions. Images can be easily:
- Flipped horizontally and/or vertically- Rotated 90 degrees clockwise, 90 degrees counter-clockwise and 180 degrees
Like the LUT functions, the transformation functionality has been optimized for multi-core CPUs to enable it to be efficiently applied to live image streams.New histogram API functions As a final piece of image processing functionality, the 1.3.0 SDK has incorporated new histogram functions, making it easy to create histograms for analysis of the images being received.New Processing” tab in Control ToolAll three of the new image processing functions – LUT, image transformation, and histograms - have been pre-integrated into a new “Processing” tab inside the JAI Control Tool. This offers an easy way to demonstrate the capabilities provided by these new SDK functions or to utilize them in a manual (versus programmatic) fashion. Simple selection boxes, buttons, check boxes, and interactive graphs can be displayed side-by-side with the image display to enable users to analyze and modify image characteristics in real-time during acquisition. Users can also right-click in the processing display to print the graphical information to a connected printer.
Extended AVI-file support When saving recorded images, the 1.3.0 Control Tool now makes it possible to select the encoder directly from the list of installed Video-for-Windows codecs (see following screen shot example). In addition, optimization has been added for 8-bit monochrome pixel formats for any of the Video-for-Windows codecs that support 8-bit monochrome bitmaps as input.
Full Unicode support in the JAI SDKIt is now possible to freely select between ASCII and Unicode in user applications created with the 1.3.0 SDK. All functions that either save or load files can now utilize Unicode so the file names and paths can include multi-byte characters, such as Japanese, Chinese, or other complex character sets. In addition to file names, the video display window caption can now also include multi-byte characters.
Dynamic loading of the JAI SDK .dll A new include file (Jai_Factory_Dynamic.h) has been added to the SDK to simplify dynamic loading of the .dll file. The .dll will automatically be loaded when the J_Factory_Open() function is called and the .dll will automatically be unloaded when the J_Factory_Close() function is called. A new C/C++ sample has been added (DynamicLoadSample) to help illustrate how to easily use the new dynamic loading capability.
New “raw” file format added It is now possible to save raw images to disk and later load them back into the SDK for display or processing thanks to a new raw file format that includes a header with pixel format information. Previously, this information was not captured as part of the image file, meaning that users either had to guess or have this information provided separately in order to figure out how to get the image to load and display properly. The new raw file format is saved to disk using the existing API function J_Image_SaveFileEx(). The raw image can now be intelligently read from disk using the new API function J_Image_LoadFileRaw().
New “trigger setup wizards”Two new “trigger setup wizards” have been added to the Control Tool in version 1.3.0. These wizards are designed to support the new SFNC names and procedures, as well as basic JAI trigger functionality, to help users quickly set up trigger modes for the cameras.
New sample applications addedThe following new sample applications have been added to version 1.3.0:
o Auto-exposure sample in C# (CSAutoExposureSample)
o LUT sample in C/C++ (LUTSample)
o Transformation sample in C/C++ (TransformSample). Shows how to use new Flip and Rotate features.
o Statistics sample that shows how to get information about number of missing frames and missing packets in images (VCMissingFrames)
o Dynamic load of the Jai_Factory.dll sample in C/C++ (DynamicLoadSample)
o Pan/Zoom functionality samples in both C/C++ and C# (ZoomImageDisplaySample)
GenICam backwards compatibilityThe 1.3.0 version of the JAI SDK includes the latest released version of the GenICam redistributables (GenICam version 2.0.1). This version of GenICam not only supports all the new GenICam functionality, but also provides full backwards compatibility with GenICam 1.x XML files. Thus, customers using the JAI SDK can support GenICam-compliant cameras regardless of the GenICam version under which the cameras were developed.
Video Window event handlingIt is now possible to implement custom Video Window event handling into user applications using a new event callback functionality. The user application is now able to specify which types of events it will like to subscribe to and a callback function will automatically be called every time an event is generated for a given Video Window. The types of events currently supported are:- Moving and resizing of the Video Window- Mouse move event (cursor location in pixel coordinates)- Mouse click events (left and right mouse button up/down events)- Mouse drag event (user selected an area within the View Window area using left mouse button)
Zooming and panning inside the Video Window using the mouse cursorIf the Video Window is in “Stretch mode” then it is possible to zoom and “navigate” within the Video Window directly using the mouse cursor. This is directly available for all user applications that already use the JAI SDK Video Window functionality!
If the mouse zoom has been enabled then the mouse cursor will change to a cross-hair style cursor whenever it is inside the Video Window. This indicates that the user can zoom inside the image by simply dragging the mouse cursor with the left button pressed.
Dragging in any direction with the left mouse button pressed creates a red rectangle to indicate which part of the image will be zoomed into.
When the left mouse button is released after the zoom dragging then the image will automatically change to the new zoomed view. The zooming action can be repeated multiple times to increase the total zoom level.
Clicking the right mouse button inside the Video Window resets the image back to the original zoom level (or press the “Reset Zoom” button in the Zoom Navigation window).
Reading current pixel values using the mouse cursor in the Control ToolWhen the mouse cursor display has been enabled either indirectly via the “Enable Mouse Zoom” setting or directly via the “Enable Mouse Cursor Display” setting then it becomes possible to view the current mouse cursor location (in image pixel coordinates) as well as reading the current pixel values at any location.
When the “Cursor Information” display is enabled, a new window is automatically displayed whenever the image acquisition is started.
The Cursor Information window is capable of displaying the current cursor location inside the image whenever the mouse cursor is moved inside the Video Window. It also displays the camera IP address as well as the model name.
If the left mouse button is pressed inside the Video Window then the pixel location of the cursor is displayed, as well as the current pixel value.
A pixel value from a color camera will be displayed with the bit depth and value of all three color components as shown below:
If the mouse cursor is dragged inside the Video Window with the “Enable Mouse Cursor Display” setting enabled (and the “Enable Mouse Zoom” disabled at the same time) then the average pixel value for the selected area will be displayed.
Version 1.3.0 of the JAI GigE Vision SDK & Control Tool can be downloaded from the SDK & Control Tool Page