Python Gstreamer Third-party libs
Sensor LVDS FPGA
Open source APIs Mentor Embedded Linux
GPU PCle AMD APU
Open CL Video4 Linux2 Linux
Gen2 x4 interface to the R series SOC. If further
computing power is required, an additional GPU
can be added within the body of the camera.
However, for most applications, the computing
power of the R series SOC is suffcient.
Accessing the functionality of the GPU compute units in the system is achieved through the
Open Computing Language (OpenCL), an open
standard maintained by the non-proft technology consortium Khronos Group (Beaverton, OR,
USA; www.khronos.org) for programming and
executing programs on devices such FPGAs,
CPUs and GPUs. Similarly, the functionality of
the image sensor can be accessed through Vide-
o4Linux ( www.linuxtv.org), a collection of device
drivers and an API for supporting video capture on Linux systems. This
enables parameters such as the image resolution and the frame rate to be
controlled, freeing the user from using proprietary libraries.
Because of the open architecture of Qtechnology’s platform, a developer has many programming options to choose from (Figure 3). First,
an application could be created simply using C or C++ . Secondly, open
source software such as GStreamer ( https://gstreamer.freedesktop.org)
could be deployed to process image data by connecting a number of proprietary or third-party image processing plug-ins to create custom pipelined software. Thirdly, programs could be developed using libraries of
image processing functions written in Open CV or Python, or by reusing functions from third-party libraries such as MATLAB from MathWorks (Natick, MA, USA; www.mathworks.com) or HALCON from
MVTec Software (Munich, Germany; www.mvtec.com).
Before writing any application software, however, developers must be
aware of the characteristics of the inspected product, based on which
the choice of camera and light source technologies will be affected.
Due to its modular nature, this is an easy task with Qtechnology cameras. The vision researcher will develop a single application and then
experiment with the different heads/sensors, reducing dramatically the
time to explore the solution space.
To discern between real and counterfeit banknotes, it was determined
that under infrared (IR) light, only the emerald number, the right side
of the main image and the silvery stripe are visible on the front of the
banknote. On the reverse side, only the numerical value and the horizontal serial number are visible (Figure 4).
Hence it was decided to illuminate the
banknotes using a halogen lamp as a source
of IR light and to capture the images using a
Qtechnology monochromatic CMOS camera
—a Qtec QT5122 body with CMOSIS (
Antwerp, Belgium; www.cmosis.com) monochrome IR enhanced 2MPixel head—ftted
with an IR flter. Images captured by the camera
of the real Euro note will have all the left part
of the details missing, while in the counterfeit note, the details will still be clear. This is
because Euro notes use an ink that absorbs
IR light, whereas counterfeit notes (possibly
Figure 2b: The body contains two main computing units – an FPGA and AMD’s R series SOC with
four Excavator x86 CPUs cores with a Radeon graphics GPU and an I/O controller all on a single die.
Figure 2a: Qtechnology cameras comprise a number of heads into
which a variety of CMOS, CCD, InGaAs, and microbolometer sensors
are mounted, and a body (QT5122 is displayed).
Figure 3: Application programs can be developed using C or C++. Alternatively, free and open-source software such as GStreamer can be deployed to process image data by connecting a number of proprietary or third-party image processing plug-ins to create a custom pipelined software
program. Also, programs can be developed using libraries of image processing functions that
have already been written in Open CV, Python or third party libraries.