Q&A, Common ProblemsQuestion
not answered here? Contact
Basler directly.
For some cameras, running the camera at a line rate near zero is not a problem.
For example:
|
1. |
L304k,
L304kc, L400k, and L800k cameras have no minimum required line rate
when an external trigger (ExSync) signal is used to trigger line
acquisition.
Keep in mind that for proper operation,
the exposure time should
be at least 10% of the line period. And if these cameras are used in
free run, there is a 10 Hz minimum line rate. |
|
2. |
Runner
cameras have no minimum line rate when an external line start trigger
(ExLineStTrig) signal is used to trigger line acquisition.
However if an external line start
trigger is not used, there is a minimum 100 Hz line rate. |
On some cameras, there is an
absolute minimum line rate. For example:
|
1. |
L100k, L301k, L301kc and sprint cameras all have a minimum line rate of 1KHz. |
So why do some cameras have an
absolute minimum line rate?
Basic Camera Principles
The principle of how a camera works
is that during line exposure,
photons from a light source strike the pixels in the camera's sensor
and generate electrons. At the end of each line exposure, the electrons
collected by each pixel are transported to an analog-to-digital
converter. For each pixel, the converter provides a digital output
signal that is proportional to the number of electrons collected by the
pixel.
Below Minimum Line rates
If a camera is triggered at a rate
below the specified minimum, it
is much easier to fall into an over exposure situation. This happens
due to an effect called "shutter inefficiency". The electronic
shutter
on digital cameras is not 100% efficient, and the pixels in the camera
will collect some photons even when the shutter is closed. At very low
line rates, you have long periods of time between exposures when the
shutter is closed but the pixels are still collecting some photons and
generating electrons. When the electrons collected with the shutter
closed are added to the electrons collected during an exposure, the
electrons can flood the electronics around the pixel.
After an Over Exposure
After an over exposure or with a
trigger rate below 1kHz, it takes
several readout cycles to remove all the electrons from the pixels and
the electronics. For this reason, gray values will be abnormally high
during the first several readouts after an over exposure.
Solutions
1. Use a camera that can operate at line rates near zero such as the L304k,
L304kc, L400k, and L800k.
2. If you use a camera with a higher
specified minimum line rate:
|
1. |
Don't operate the camera below its minimum specified rate. |
|
2. |
Design an application which accepts a few lines that are brighter than normal. |
|
3. |
Run the camera in free-run mode and collect only the lines that you need. |
|
4.
|
Send dummy trigger signals to the camera and ignore the lines generated by the
dummy triggers. |
Back to Top
Application notes are available that provide a detailed description of
how to interface Basler GigE cameras with VisionPro 5.1 software from
Cognex.
Click here
to download the application notes in PDF format. Back to Top
When an application (for example, the pylon Viewer) establishes a
connection to a Basler GigE Vision camera a so-called "control
channel"
is established. A channel is a virtual link used to transfer
information between a device and an application. The control channel is
used by an application to communicate with a device. Only one pylon
based application is allowed to establish a control channel at a time.
Such an application is called the “control application”.
A heartbeat mechanism is used to
allow a camera to detect if its
control application is alive. A control application must periodically
access the camera. If the camera doesn’t recognize an access within a
configurable period of time, the camera will close the connection and
become ready to accept new connections. The period of time is defined
by the heartbeat timeout parameter, which is set to 3000 milliseconds
by default.
The pylon GigE library implements a
thread which ensures that the
camera is periodically accessed. When a debugger is used to break into
an application, the heartbeat thread is paused, and this would normally
cause the camera to close the connection after 3 seconds. To avoid this
situation, the debug version of the pylon GigE library sets the
heartbeat to 5 minutes by default. This means that if an application is
terminated by using the debugger, or if it just crashes, the control
channel will be keep open for 5 minutes and the only way to access the
camera during that period is to power it off and on again.
As an easier alternative, Basler
provides a software tool called
the C4Tool (Camera Control Channel Close Tool) that lets you close the
control channel in a software manner. The C4Tool requires the WinPcap
library (the Windows Packet Capture Library), and the library must be
installed before using the C4Tool.
Use this link to download a zip file
that contains an installer for the WinPcap library and an installer for the
C4Tool:
Download Back to Top
Application notes are available that provide a detailed description of
how to interface Basler GigE cameras with Stemmer Common Vision Blox
9.0.2 Software.
Click here
to download the application notes in PDF format. Back to Top
Application notes
are available that describe using pylon's DirectShow
filter along with some common open source software to capture video
from Basler cameras.
Click here
to download the application notes in PDF format.
Back to Top
Basler provides two GigE Vision network drivers for interfacing Basler GigE
Vision cameras:
|
1. |
The Basler filter driver
is a basic GigE Vision network driver that is compatible with all
network adapters. The advantage of the filter driver is its extensive
compatibility. |
|
2. |
The Basler performance driver
is a hardware specific GigE Vision network driver. The performance
driver is only compatible with network adapters that use specific Intel
Pro 1000 chipsets ("compatible chipsets"). The advantage of the
performance driver is that it significantly lowers the CPU load needed
to service the network traffic between the PC and the camera(s). It
also has a more robust packet resend mechanism. |
To take advantage of the benefits of
the Basler performance driver,
we recommend using Intel Pro 1000 network adapters. These adapters
generally work well with the performance driver. However, since the
Intel Pro 1000 series has changed over the time, it may happen that the
Basler performance driver does not support your particular Intel Pro
1000 adapter.
To make sure that the Pro 1000 network
adapter you are using is
compatible, consult the table below that lists the currently supported
Intel Pro 1000 chipsets and their corresponding Hardware IDs. Note that
some chipsets are compatible with pylon version 2.1, but not with
version 2.0.
In the following table:
|
1. |
Yes = is compatible |
|
2. |
Yes/M = is compatible but requires manual installation |
|
3. |
No = is not compable |
|
|
|
|
|
|
|
|
|
|
|
Intel
Pro 1000 Chipset |
Hardware
ID
|
Pylon
2.0
|
Pylon
2.1 |
|
|
|
|
|
82540EM |
PCI\VEN_8086&DEV_100E
|
Yes |
Yes |
|
|
|
|
|
82540EP_EL |
PCI\VEN_8086&DEV_101E |
Yes |
Yes |
|
|
|
|
|
82541GI |
PCI\VEN_8086&DEV_1076 |
Yes |
Yes |
|
|
|
|
|
82541GI_LF |
PCI\VEN_8086&DEV_107C |
Yes |
Yes |
|
|
|
|
|
82545EM |
PCI\VEN_8086&DEV_100F |
Yes |
Yes |
|
|
|
|
|
82545GM |
PCI\VEN_8086&DEV_1026 |
Yes |
Yes |
|
|
|
|
|
82563EB/80003ES2 |
PCI\VEN_8086&DEV_1096 |
No |
Yes |
|
|
|
|
|
82567/ICH9_IGP_AMT* |
PCI\VEN_8086&DEV_10BE |
No |
Yes/M |
|
|
|
|
|
82567/ICH9_IGP_AMT* |
PCI\VEN_8086&DEV_10F5 |
No |
Yes/M |
|
|
|
|
|
82571EB |
PCI\VEN_8086&DEV_105E |
Yes |
Yes |
|
|
|
|
|
4-port<br>(2
X 82571EB) |
PCI\VEN_8086&DEV_10A4 |
Yes |
Yes |
|
|
|
|
|
4-port
LP<br>(2 x 82571EB) |
PCI\VEN_8086&DEV_10BC |
Yes/M |
Yes |
|
|
|
|
|
82572EI |
PCI\VEN_8086&DEV_10B9 |
Yes |
Yes |
|
|
|
|
|
82572EI-Copper |
PCI\VEN_8086&DEV_107D |
Yes |
Yes |
|
|
|
|
|
82573E |
PCI\VEN_8086&DEV_108B |
Yes |
Yes |
|
|
|
|
|
82573E-IAMT |
PCI\VEN_8086&DEV_108C |
Yes |
Yes |
|
|
|
|
|
82573L |
PCI\VEN_8086&DEV_109A |
Yes |
Yes |
|
|
|
|
|
82574L |
PCI\VEN_8086&DEV_10D3 |
No |
Yes |
|
|
|
|
* pylon operation with this chipset is unreliable
To check the Hardware IDs for your
network adapter:
1. Click Start > Run.
2. Type in: devmgmt.msc
3. Click the OK button. The device
manager will start.
3. Expand the node for Network
Adapters.
4. Right click on the name of your
Intel Pro 1000 adapter
and select Properties from the drop
down menu.
5. Click the Details tab and make sure that Hardware IDs is selected in the
drop down list.
Check the hardware IDs in the list on the Detail Tab against the table
that appears earlier in this FAQ. If hardware IDs for your adapter do
not match an ID in the table, you must use the Basler filter driver
with your network adapter.
Customers who happen to acquire an
unsupported Intel Pro 1000
network adapter, but who still need to use the Basler performance
driver, can contact the Basler support team. The support team will
arrange shipment of the non-compatible network adapter to Basler AG and
will attempt to get the adapter supported either by creating a hotfix
for the performance driver or by including the adapter in the next
Basler performance driver release.
Back to Top
On PCs with a Windows™ OS, if you configure a Basler GigE camera for
a
persistent (fixed) IP address and the address is in the range normally
reserved for "multicast" IP addresses (224.0.0.0 to 239.255.255.255),
the camera will not be discoverable by pylon, even when you use the
pylon IP Configuration Tool. This situation occurs because Windows
rejects all incoming IP packets from any device (such as a GigE camera)
with an IP address in the multicast range. You can find some good basic
information about IP multicast on Wikipedia.
Click
here to open the Wikipedia article.
The pylon IP Configuration Tool
works by sending UDP broadcast
messages to all attached cameras and waiting for the cameras to answer.
But since Windows rejects packets from devices with IP addresses in the
multicast range, answers from any camera with an IP address in the
range will never reach the configuration tool.
With the current package of pylon
tools, there is no way to
discover a camera with an IP address set in the multicast range.
However, the Basler pylon API does provide a method for accessing a
camera by its MAC address and for forcing a change to the camera's IP
address (the FORCEIP_CMD). This will let you set the camera back to a
state where it is discoverable.
A programming sample is available
that illustrates how to use the
pylon C++ API to set the camera's IP configuration. It also illustrates
how to use the Force IP command. The programming sample is based on the
Basler pylon 2.0 C++ SDK and to build the entire sample project, you
must have the pylon 2.0 SDK installed on your PC. The sample also
includes a prebuilt "Simple IP Configuration Tool" executable which
will run on PCs that have either the pylon SDK or Basler's free pylon
2.0 runtime package installed.
You can use the link below to
download the programming sample:
And you can click here
to access the pylon 2.0 runtime package download on the Basler website.
Back to Top
Application notes are available that give a good overview of what these
parameters do and provide advice about how you can best use the
parameters in some specific situations.
Click here
to download the application notes in PDF format. Back to Top
Some users of Basler's Pylon 2.0 software may want to build their own
applications without the need to buy Microsoft Visual C++ Studio.
Application notes are available that describe a way to build pylon
based applications for free using Microsoft Visual C++ Express and the
Microsoft Platform SDK.
Back to Top
Application notes are available that provide a detailed description of
how to interface Basler GigE cameras with Vision 8.2.1 Acquisition
Software from National Instruments.
Click here
to download the application notes in PDF format. Back to Top
Basler scout cameras are
available with a DCAM compliant IEEE 1394b
(FireWire b) interface or with a GigE Vision interface. When using
scout cameras, you must first decide which camera interface to design
into your application.
Some detailed information about GigE
Vision can be found in the
White Paper downloads section of our website. Information about CPU
load and latency can also be found there. Click here
to go to the white paper downloads.
The table below presents an overview
of the most important differences between the two interfaces:
|
|
|
|
|
|
|
|
GigEVision |
IEEE
1394b |
|
|
|
Cable
length |
Up
to 100 meters per cable. Multiple cables can be connected
using switches or repeaters, thus allowing a virtually unlimited cable
length. Standard CAT6 Ethernet cable can be used. |
Up
to 4.5 meters per cable. With special cables and a repeater,
the max. cable length can be extended up too 14.5
meters. Standard FireWire cables can be used. |
|
|
|
Power
supply |
Camera
power must be supplied via a power connector on the camera. An
additional cable for the power supply is required. |
Camera power
is supplied over the 1394 cable |
|
|
|
Broadcasting
commands(one application sends the
same command, e.g., a software trigger, to all cameras connected to one
network/bus) |
Currently
not supported, but in preparation |
Fully
supported |
|
|
|
Max.
available bandwidth |
Up to 1
gigabit per sec |
1394a - up
to 400 megabits per sec 1394b - up to 800 megabits per sec |
|
|
|
CPU
load(the
CPU load caused by streaming data from the camera to the PC is highly
dependent on the PC hardware and camera settings) |
Low (5-10%
is typical) |
Even lower
(> 1%) |
|
|
|
Latency
when sending a command from the PC to the camera(e.g.,
a software trigger) |
600-900
µs (jitter of about 30%) |
350-500
µs (jitter of about 30%) |
|
|
|
Latency
when sending image data from the camera to the PC(when
image will be present in PC memory is highly dependent on the PC hardware and
camera settings) |
13-14 ms |
13-14 ms |
|
|
|
Accessory
hardware |
All required
hardware is available as standard, industrially proven devices:
|
1. |
Gigabit
Ethernet network interface connector (also called the Ethernet card,
NIC, or network adapter) is most likely already part of the PC |
|
2. |
Switch (if needed to connect multiple cameras to one NIC) |
|
3. |
Standard CAT6 Ethernet cable |
|
The required
hardware is typically derived from the consumer market:
|
1. |
FireWire adapter card is required |
|
2. |
Standard FireWire cables |
|
3. |
Hub (if needed to connect multiple cameras to one FireWire card or to extend
the max. cable length) |
|
4. |
Repeater (if needed to extend the max. cable length) |
|
|
|
|
Summary:
For new projects where supplying camera power over the interface cable
is NOT a must, we recommend using the GigE Vision interface for the
following reasons:
|
1. |
Virtually unlimited cable length |
|
2. |
Robust, attractively priced, industrially proven accessory hardware |
|
3. |
Higher max bandwidth compared to 1394b |
Back to Top
Basler provides two different high level C++ APIs for interfacing with
our IEEE 1394 (FireWire) and GigE Vision cameras: the classic BCAM 1394
API and the GenICam compliant pylon API.
The table below shows which API
supports which camera interface and uses which compiler.
|
|
|
|
|
|
|
|
|
|
|
BCAM
1.8 |
BCAM
1.9 |
pylon
1.0 |
pylon
2.0 |
pylon
2.1 |
|
|
|
Supported
Camera Interfaces |
1394a |
1394a 1394b* |
1394a 1394b* GigEVision |
1394a 1394b** GigEVision |
1394a 1394b** GigEVision |
|
|
|
Visual C++
6.0 (part of Visual Studio 6.0) |
Y |
Y |
N |
N |
N |
|
|
|
Visual C++
7.0 (part of Visual Studio 2002.NET) |
Y |
Y |
N |
N |
N |
|
|
|
Visual C++
7.1 (part of Visual Studio 2003.NET) |
Y |
Y |
Y |
Y |
Y |
|
|
|
Visual C++
8.0 (part of Visual Studio 2005) |
Y*** |
Y*** |
Y |
Y |
Y |
|
|
|
Visual C++
9.0 (part of Visual Studio 2008) |
Y*** |
Y*** |
Y**** |
Y**** |
Y |
|
|
|
* S400 speed on Windows XP SP2 requires the addition of patch KB885222.
S800 speed on Windows XP SP2 requires a partial driver rollback to SP1.
** S400 and S800 speeds without
limitations. No patch or rollback required.
*** Some minor source code
modifications are required. For more information, click here.
**** Unofficially supported for
Visual C++ 9.0. Back to Top
DirectX
Microsoft DirectX represents a collection of technologies established
by Microsoft. It provides accelerated direct and uniform access to the
video and audio hardware installed on a system. Since the introduction
of Windows 98, DirectX has been an integral component of all Microsoft
operating systems. You can view more detailed, official information
about DirectX on the Microsoft website at:
http://msdn2.microsoft.com/en-us/library/ms786508(VS.85).aspx
DirectShow
DirectShow is the generic term for those parts of the DirectX API that
control the behaviour of video and audio data streams. Since the
release of Windows 98, DirectShow has been established as a standard
for multimedia oriented image processing. DirectShow enables any
DirectShow compliant device (e.g., a camera) to operate with any
DirectShow compliant software (e.g., DirectShow based image processing
libraries such as MontiVision. See: http://www.montivision.com).
WDM
WDM is the abbreviation for the Windows Driver Model. The WDM describes
a model driver architecture for Windows 2000 and its successors. A WDM
streaming driver controls the processing and transport of streaming
data at the operating system level ("kernel mode") instead of at the
application level ("user mode").
The Pylon DirectShow Filter
If you install either the Basler pylon runtime package (can be downloaded free
of charge our website. Click here
for the download.) or the Basler pylon SDK, a pylon DirectShow Filter
Driver will automatically be installed on your system. Even though this
filter driver is not actually a WDM driver (because it operates in user
mode), it can be used in any situation where a WDM driver is required.
This means, that you can interface
any Basler GenICam compliant
camera that has a FireWire or GigE Vision interface with any WDM /
DirectShow compliant application! Compliant cameras include:
|
1. |
the A102f/fc |
|
2. |
the A311f/fc and A312f/fc |
|
3. |
the A601f/fc through the A641f/fc |
|
4. |
all scout cameras |
|
5. |
all pilot cameras |
|
6. |
all runner cameras |
The pylon DirectShow filter provides
a GenICam feature tree that is
very similar to the feature tree in the pylon Viewer application. The
feature tree lets you access and control all of the features on all
supported cameras.
Back to Top
Check your network adapter settings.
Go to Start>Control
Panel>Network Connections and
right click on your network adapter. Select Properties from the drop down menu. When the
properties window opens, click the Configure button.
Look for a tab with a name such as "Connection speed". If you see a tab like this, select the tab
and set the "Speed &
Duplex" property to "Automatic identification" or "Auto".
If you do not see a "Connection Speed" tab, select the Advanced" tab and look for the "Speed & Duplex" property. Set the "Speed
& Duplex" property to "Automatic identification" or "Auto". Back to Top
Check your network adapter settings.
Go to Start>Control
Panel>Network Connections and
right click on your network adapter. Select Properties from the drop down menu. When the
properties window opens, click the Configure button. Select the Advanced tab
and in the property box on the left, select the property called "Jumbo Frames". Set the value as high as possible (for
jumbo frames, it’s approximately 16KB).
Be aware that if your adapter
doesn’t support jumbo frames, you might not be able to operate your
camera at the full frame rate. Back to Top
If you have multiple network adapters in a single PC, keep the following
guidelines in mind:
|
1. |
Only
one adapter in the PC can be set to use auto IP assignment. If more
than one adapter is set to use auto assignment, auto assignment will
not work correctly and the cameras will
not be able to connect
to the network. In the case of multiple network adapters, it is best to
assign fixed IP addresses to the adapters and to the cameras. You can
also set the cameras and the adapters for DHCP addressing and install a
DHCP server on your network. |
|
2. |
Each
adapter must be in a different subnet. The recommended range for fixed
IP addresses is from 172.16.0.1 to 172.32.255.254 and from 192.168.0.1
to 192.168.255.254. These address ranges have been reserved for private
use according to IP standards. |
|
3. |
If
you are assigning fixed IP addresses to your cameras, keep in mind that
for a camera to communicate properly with a network adapter, it must be
in the same subnet as the adapter to which it is attached. |
Back to Top
You must configure the IP address of your network adapter and your
camera. Generally, there are two approaches to configuring a network
adapter: "Fixed Address" or"DHCP / Alternate Configuration =
APIPA
(Automatic Private IP Addressing)".
To configure your network adapter,
please follow the procedure described in the scout-g User's Manual.
To change your camera’s IP
configuration, you can use the Basler IP
Configuration Tool. This tool was automatically installed when you
installed the pylon Viewer. Detailed information about using the IP
Configuration Tool is included in the scout-g User's Manual.
When configuring your camera's IP
address, keep the following guidelines in mind:
|
1. |
For a camera to communicate properly, it must be in the same subnet as the
adapter to which it is connected. |
|
2. |
The camera must have an IP address that is unique within the network. |
|
3. |
The
recommended range for fixed IP addresses is from 172.16.0.1 to
172.32.255.254 and from 192.168.0.1 to 192.168.255.254. These address
ranges have been reserved for private use according to IP standards. |
Tip: There's a convenient "trick" that is handy
during your
initial camera design-in process or when working with cameras in your
lab. You can set your network adapter to a fixed address in the
automatic IP address range (169.254.0.0 to 169.254.255.255) with a
subnet mask of 255.255.0.0 and you can set your camera(s) for automatic
IP address assignment. With these settings, a camera and an adapter can
establish a network connection very quickly. This can save you some
time if you are frequently connecting and disconnecting cameras or
switching the system on and off as you would during design-in.
Back to Top
You have just installed the pylon Viewer and you're trying to acquire your
first images, but it just doesn't work.
Unlike the BCAM Viewer, installing
the pylon Viewer by itself is
not enough. Depending on the type of GigE network adapter in your
computer, you must also install either the Basler Filter Driver or the
Basler Performance Driver. The filter driver and the performance driver
are network drivers for pylon. Before you can acquire images, one of
these drivers must be installed.
The Basler Filter Driver can be used
with all common GigE network
adapters. The Basler Performance Driver is appropriate for use with
network adapters that have specific Intel chipsets (e.g., the Intel
Pro/1000 series).
Keep in mind that before installing
a new version of the filter
driver, you must make sure that you don’t have any old versions of it
on your system. If you do have an older version of the filter driver
installed, you must remove it before installing a newer version of the
driver. For more details regarding the installation and removal
procedure, please refer to the scout-g User's Manual. Back to Top
If your PC has a Windows XP operating system with Service Pack 2 and
you have an IEEE 1394b (FireWire) adapter card installed, you will
notice that any FireWire-b device attached to the PC, e.g., a Basler
scout camera, will reduce its transmission rate to S100 (100 Mbits/s)
speed. This happens even though the 1394b device should be capable of
transmitting data at rates up to 800 MBits/s (S800).
The speed reduction is the result of
a limitation that was
introduced in Service Pack 2. To regain the ability to run at full S800
speed on a PC equipped with Windows XP and Service Pack 2, you must
perform a partial service pack rollback, i.e., you must roll back
certain 1394 drivers to their Windows XP Service Pack 1 version.
Section 2 of the "Scout-f with BCAM API User's Manual" explains in
detail how to do the partial rollback. To download the manual, please go to the
download page for scout user manuals. Back
to Top
The simple answer is "yes you can"! Here is a small tool you can
use to directly write to or read from the registers. Download. Back to Top
The set of parameters that a Basler camera uses for camera control is
known as the "work set" of parameters. When you use the Basler BCAM
1394 Driver or another tool to change parameter values, you are
changing the settings in the work set. The work set resides in the
camera's volatile memory and is lost at power off or camera reset.
Most Basler 1394 cameras have a
feature that lets you save the
current work set into one of three "memory channels". A set of
parameters saved in one of the memory channels is known a "user set".
The memory channels are part of the camera’s internal, non-volatile
memory and the user sets stored in the memory channels will be retained
when the camera is powered off or reset. No memory channel data will be
stored on your PC.
Each camera also has a set of
factory parameter settings stored in
a separate memory channel. The memory channel containing the "factory
set" can't be overwritten.
You can save up to three different
user sets in the camera's memory
channels. If you desire, you can load one of the saved user sets from a
memory channel into the camera's work set. And if you want to restore
the camera to its initial factory settings, you can simply load the
camera's factory set into the work set.
By default, the camera always loads the factory set into the work set
at power up or reset. This default behavior can be changed by using the
camera's “startup memory channel” smart feature. This
feature lets you
designate one of the three stored user sets as the parameter set that
will be loaded into the work set at power up or camera reset.
You can use the link below to
download a zip file containing a
small tool I call the “BCAM User Set Configurator”. This
tool will help
you to perform the actions described above. The file also contains the
source code for the tool to show you how you can program these features
using the BCAM SDK and the SFF. Download Back to Top
After installing the Basler BCAM 1394 SDK on your computer, you will
notice that we provide some code samples for Visual Studio 6.0
(containing the VC++ 6.0 C++ compiler) and for Visual Studio 2002.NET
(containing the VC++ 7.0 C++ compiler). Newer Microsoft C++ compilers
have been released since these code samples were created. The behavior
of the compilers has changed, especially with the new VC++ 8.0 compiler
included in the new Visual Studio 2005.NET. This makes some
modifications in the BCAM SDK source code and in the workspace project
settings necessary if you want to build the SDK with this most recent
Microsoft C++ compiler. This article describes the steps needed to
build all BCAM SDK samples with the native C++ compiler (VC++ 8.0) of
Visual Studio 2005.NET.
1. Install the most recent Windows
Template Library (WTL 7.5).
It can be downloaded from the WTL
page in the
Microsoft download center.
2. Remove write protection for
BcamApiMfc7.vcproj.
Due to a minor bug in our setup
script, the “…\Basler\BCAM 1394
Driver\src\BcamApi\Mfc7\BcamApiMfc7.vcproj” file might be write
protected. Visual Studio 2005.NET must modify this file, so please
remove the write protection.
3. Open the SDK with Visual Studio
2005.NET.
Start Visual Studio 2005.NET and
select File > Open >
Project/Solution in the menu. Switch to the “…\Basler\BCAM
1394 Driver”
folder and select BcamSamples.sln for opening. The Visual Studio
Conversion Wizard will automatically start and will perform some
necessary modifications for you. It will also ask you about creating a
backup. Backups are always a good idea.
4. Set the include and lib paths.
In the Tools >Options
>Project and Solutions >VC++
Directories menu, add the “…\Basler\BCAM 1394
Driver\inc” path and the
WTL7.5 include directory (see step 1) to Visual Studio’s include
paths
and “…\Basler\BCAM 1394 Driver\lib” to Visual
Studio’s lib paths.
5. Rebuild the required static
libraries.
The prebuilt BCAM libraries can no
longer be used with VC++ 8.0 and
you must rebuild them. If you rebuild the libraries, you will notice
some compiler errors because Microsoft changed the behavior of the VC++
8.0 compiler to be more ANSI C++ compliant. The reason for the errors
is always the same - a variable that was declared inside of a for-loop
is now no longer valid outside of the loop. This can easily be fixed if
you declare and initialize this variable before the for-loop. If you do
not want to patch the BCAM source code, ask the Basler VC Support Team
for the appropriate source code patches.
6. Rebuild the samples (except
BcamViewer).
You should now be able to rebuild
the BCAM samples. You will notice
compiler errors similar to those mentioned above and these errors can
be fixed in the same way. If you don’t want to fix the code on your
own, the Basler VC Support Team will help you with code patches.
7. Rebuild the BcamViewer.
Rebuilding the BcamViewer requires a
bit more C++ experience to
patch the sources. We recommend that you ask the Basler VC Support Team
for the appropriate source code patches.
Back to Top
Avoiding Data or Video
Corruption
Corrupted data or video when using a notebook's IEEE 1394 port can be
caused by too much latency in the C3 power state transition, which
results in buffer under runs. In other words, the interrupts associated
with the processor's ability to dynamically change speeds conflict with
the high demand on the processor that occurs when streaming video or
data across the IEEE 1394 port. When operating a Basler 1394 camera at
high data rates, this behavior can be observed, for instance, as a
jittering test image when using the BCAM viewer. We found this behavior
with several different notebook computers including Dell, Toshiba,
Acer, Gericom, and others. The problem may disappear or may become less
noticeable when a USB device such as a mouse or a memory stick is
connected to the notebook PC.
A better workaround, however, is to
change the C3 latency setting
in the Windows® Registry. You can either change the setting manually or
you can download and run a file that will make the change
automatically.
Caution! The following procedures contain
information about
editing the Windows registry. Basler does not guarantee success or
support these actions. Any use of the information provided herein is
performed at your own risk. You should make a backup copy of the
registry files before executing any of the following steps. Incorrect
use of the registry editor and editing the registry files can cause
serious problems that may require a complete reinstall of your
operating system. Basler assumes no responsibility, expressed or
implied, regarding the consequences of any action taken as a result of
the information provided herein.
Changing the Setting
Manually
To change the C3 latency setting in
the Windows registry, perform the following steps:
1. Click the Start button and then
click Run.
2. In the Open box, type: regedit
3. Click OK. The registry editor
will open.
4. In the registry editor, locate
the following key:
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
Processor
5. In the Processor key, right-click
CStateFlags and select Modify.
6. Change the Value data to 8.
7. Exit the Registry Editor.
Note: The Processor key may not exist. If it
does not exist,
you will need to create it. To create the key, perform the following
steps:
1. Right-click the Contol key and
select New and Key from the menu.
2. Rename the new key as: Processor.
3. Click on the Processor key. From
the Edit menu, select New and DWORD value.
4. Rename the new DWORD value to:
CStateFlags.
5. Right-click CStateFlags and
select Modify.
6. Change the Value data to 8.
7. Exit the Registry Editor.
After you make any changes to the
registry, you must restart the computer for the changes to take effect.
Making the Changes by
Running a File
As an alternative to manually
changing the registry, you can
download the file below and run it to make the changes. If the
Processor key is not present in the registry, running this file will
create the key and will set its value. If the Processor key already
exists, running this file will simply change the value of the existing
key.
After you run the file, you must restart the computer for the registry changes
to take effect.
Back to Top
Powering IEEE 1394 Cameras When Using
a Laptop
If you are using a laptop, you must
make sure that the camera is
being properly supplied with power. Many of the built-in IEEE 1394
connectors on laptops and the connectors in add-on IEEE 1394 PCMCIA
cards only have a 4 pins instead of the normal 6 pins. The two missing
pins are for the wires used to supply power to the camera. If your
laptop's built-in connector or the connector on its PCMCIA card has
only 4 pins, it will not supply power to the camera and your camera
will not work. In this case, you can purchase an adapter cable from
Basler with extra power input, switch to a card that does supply power
to the camera or you can add a powered IEEE 1394 hub to your system.
Back to Top
The Moiré Effect
The word "moiré" was first used by weavers and it derives
from the word
mohair, a kind of cloth made from the fine hair of an Angora goat. The
physical nature of moiré lies in the interference between two or
more
regular structures with different spatial frequencies. You can see this
effect in real life as you walk past two fences located one behind the
other or when you look at folded sheer stockings.
The Mathematik.com web site has a
very good animation that shows the moiré effect. Click here
to see the animation.
The moiré effect can
produce interesting and beautiful geometric
patterns. In the machine vision world, however, the phenomenon can
degrade the quality and resolution of captured images. It can occur
when the image from a camera is reproduced on a computer display and
then rendered in a screened or dot-matrix format. The fine matrix of
dots in the original image almost always conflicts with the matrix of
dots in the reproduction. This generates a characteristic criss-cross
pattern on the reproduced image. Moiré patterns can also be created
by
plotting a series of curves on a computer screen. In this case, the
interference is caused by the rasterization of the finite-sized pixels.
When you capture an image with
a Basler camera, it is digitized by a
matrix of photosensitive elements. Each photosensitive element in the
matrix is a discrete unit and the elements are arranged in a regular
pattern. If the captured image also has a very regular pattern (e.g., a
jacket with a fine fabric weave), that pattern will be superimposed on
the matrix of photo elements. The superimposition of the pattern in the
captured image on the pattern in the photo element matrix can cause
interference and may result in moiré patterns.
There are several different
techniques for limiting moiré effects:
|
1. |
If
your captured images show a heavy moiré effect, try rotating the
camera
or the object. Experiment with the angle of rotation to achieve the
minimal moiré pattern. |
|
2. |
Change the position of the camera. A simple change in the camera angle can
result in significant moiré reduction. |
|
3. |
Change the focus. The moiré effect is most noticeable in images with
high sharpness. Overlapped fine details boost the effect. |
|
4. |
Try a lens with a different focal length. This can reduce the moiré
effect. |
In some cases, you may not be able
to completely eliminate the
moiré effect by using these techniques. But they should at least
give
you a noticeable improvement in your results. Back to Top
BCAM Installation Problems
After a new installation of the BCAM driver or after updating an
existing BCAM driver installation to the current version, users
sometimes encounter problems. These instructions will help you solve
the most typical problems. The instructions are written for Windows XP,
but if you are operating a system with Windows 2000, the solutions work
in a very similar manner.
If you are using a laptop:
If you are using a laptop, please
make sure that the camera is
being properly supplied with power. Many IEEE 1394 PCMCIA cards only
have a 4 pin connector instead of the normal 6 pin connector. The two
missing pins are for the wires used to supply power to the camera. If
your PCMCIA card has only 4 pins, it will not supply power to the
camera and your camera will not work. In this case, you can either
switch to a card that does supply power to the camera or you can add a
powered IEEE 1394 hub to your system.
Common Error Messages:
After installing the driver or an
update, you may see one of these error message when you open the BCAM viewer:
"The Versions of the BCAM
API(1.6) and BCAM Driver(1.8) don't match"
"BCAM is not compatible with
driver 0.0"
"Die Netzwerkanforderung wird
nicht unterstuetzt"
All of these messages have the same
origin, i.e., the camera driver
is not properly associated with your camera. To correct this error, you
must change the driver association.
To begin the process, click Start > Control Panel > System
> Hardware > Device Manager.
A Device manager window will open.
The correct BCAM driver is now
associated with your camera. If you
open the BCAM viewer, you will see the Basler camera installed and you
can grab images. Have Fun!
Back to Top
Saving Image Data Deeper Than
8 Bits as a TIFF Using Libtiff with Visual Studio 7
This FAQ describes how to save 16 bit monochrome image data to a
conforming TIFF with libtiff. Once the image is saved, you can do
further image post processing with other applications like ImageJ.
Libtiff is open source software, but is not GPL.
Integrating Libtiff into
your Solution
First, you must get libtiff. I
suggest that you download Version 3.7.2 of the original sources from: ftp.remotesensing.org/pub/libtiff/old/.
When your download is complete, copy the libtiff sources
(\tiff-3.7.2\libtiff) into your solution directory (\libtiff). There
are two configuration files with pre-processor definitions:
tif_config.h and tiffconf.h. Since we are working with Visual Studio
(on an Intel/AMD platform I assume), rename:
|
|
tiffconf.h |
|
to tiffconf.h.old |
|
|
tiffconf.h.vc |
|
to tiffconf.h |
|
|
tif_config.h.vc |
|
to tif_config.h |
Next, set up a Win32 project named
libtiff with a static library and no precompiled header.
NOTE: It is not absolutely necessary
for you follow this part of
the FAQ in all of its particulars. If you need to vary the procedure
(e.g., by building a dynamic link library instead of a static library),
then do so. You can also use the attached make-file to create a
library. That’s just the way I made it and it worked.
Now add all the libtiff-sources to
your library, except for the dispensable OS-specific ones:
tif_acorn.c, tif_apple.c,
tif_atari.c, tif_msdos.c, tif_stream.cxx, tif_unix.c, tif_win3.c
To access libtiff support in your
code, add libtiff-path to
include-paths, include <tiffio.h>, and link your application
against the created libtiff library.
The Sample Code: Save/load
Image Data to/from your HDD
I’ve prepared some sample
code to illustrate working with 16 bit images. Click the link below to download
the sample.
A TIFF (Tagged Image File Format) file consists of anterior tags that
describe the following image data whether it is compressed or it is raw
(this FAQ only deals with raw image data). So the method to save image
data needs to know the destination filename, a pointer to the image
data, the dimension, and the data depth that are assigned to the image
data.
bool save16mono ( const char *
szFilename,
|
|
|
|
const unsigned short * pImageBuf, |
|
|
|
|
const unsigned int width, |
|
|
|
|
const unsigned int height, |
|
|
|
|
const unsigned int bppReal ); |
The method to load the image data
only needs to know which file to
load to which memory area and tells you in which dimension and at which
data depth the image was stored.
bool load16mono ( const char *
szFilename,
|
|
|
|
unsigned short * pImageBuf, |
|
|
|
|
size_t SizeImageBuf, // for buffer overrun prevention |
|
|
|
|
unsigned int * pWidth, |
|
|
|
|
unsigned int * pHeight, |
|
|
|
|
unsigned int * pBppReal ); |
The TIFFSetField()/TIFFGetField()
routines give you the ability to
write/read such a tag (e.g. TIFFTAG_IMAGEWIDTH-tag for image’s
width). The
TIFFWriteScanline()/TIFFReadScanline() routines provide writing/reading an
image line to/from a TIFF file.
Both of these routines need a TIFF*
file handle, which TIFFOpen()
delivers. The semantic is just like the one for fopen()/fclose().
My sample code first generates a 10
bit deep image gradient (400 x
300 pixels, pExampleBuf) and then saves the image data, loads the image
into another buffer (pLoadBuf), and compares the generated and loaded
buffers to each other. In some cases, the image data you want to
save/load is not necessarily 16 bits deep (it could be anywhere between
8 bits and 16 bits). So, for example, if you have 10 bit image data for
one pixel:
If you save the data as shown above, most image processing applications
will clip the image data to 8 bits in order to display them. So what
you’ll see are the upper 8 bits:
That includes nearly nothing from the original picture. To avoid this problem,
we must shift the original image data:
Now the largest part of the image
data is visible. This illustrates
that sometimes before saving the image data, the saving method must
shift the data (see \CodeSample\main.cpp:75):
// shift data, if necessary
int SHL = bppSave-bppReal;
if( SHL>0 )
{
for(
unsigned int c=0; c<(width*height); c++ )
{
pTmpImgBuf[c]
= (pTmpImgBuf[c] << SHL);
}
}
To remember how many bits were
shifted at saving, we must save the
saving bit depth (in the TIFFTAG_BITSPERSAMPLE) as well as the
image’s
data bit depth (in the TIFFTAG_IMAGEDEPTH).
Different image viewers/editors handle the mono 16 bit
TIFF images in different ways. The Microsoft™ Picture and Fax Viewer,
for example, will not display images saved like this. Also, KDE’s
Kuickshow doesn’t handle files like this properly. ImageJ does. Image
J is a powerful image analyzer written in JAVA™ and it
handles TIFF images in mono16 correctly. If you are reliant on a
special tool that doesn’t handle your saved files properly, I would
assume that your first step is the tags the tool requires. A
list of all tags and possible values can be found in \libtiff\tiff.h.
Back to Top
RGB Color Space
Because the human eye only has color sensitive receptors for red, green
and blue, it is theoretically possible to decompose every visible color
into combinations of these three “primary colors.” Color
monitors, for
instance, can display millions of colors simply by mixing different
intensities of red, green and blue. It is most common to place the
range of intensity for each color on a scale from 0 to 255 (one byte).
The range of intensity is also known as the “color depth.”
The possibilities for mixing the
three primary colors together can
be represented as a three dimensional coordinate plane with the values
for R (red), G (green) and B (blue) on each axis. This coordinate plane
yields a cube called the RGB color space:
Image 1 - RGB Color Space
If all three color channels have a value of zero, it means that no
light is emitted and the resulting color is black (on a monitor, for
example, it cannot be blacker than the surface of the monitor producing
0 light). If all three color channels are set to their maximum values
(255 at a one byte color depth), the resulting color is white. This
type of color mixing is also called “additive color mixing”:
Image 2 - Additive color
mixing
If you draw a diagonal from the black (0, 0, 0) origin point of the
color cube to the white (255, 255, 255) point, you will get a line
where each point on the line has identical R,G and B values. The result
of having the same value for all three color channels is the color
gray. The only thing that changes as you move along this diagonal is
the intensity of the shade of gray as you go from black to white.
Back to Top
YUV Color Coding
A CCD or a CMOS sensor alone is not able to detect the color of
incident light. In reality, each pixel in the sensor simply detects the
intensity of the incident light. But when a color pattern filter is
applied to the sensor, each pixel becomes sensitive to only one color -
red, green or blue. The following table shows the color arrangement of
a “Bayer Pattern” filter on a sensor with a size of X x Y
(with X and Y
being multiples of 2).
Image - Bayer Pattern
Filter
Since the arrangement of the colors in the Bayer pattern filter is
known, a PC can use the raw information transmitted for the pixels to
interpolate full RGB color information for each pixel in the sensor.
Instead of using the raw sensor information, however, it is more common
to use a color coding known as YUV. The block diagram below illustrates
the process of conversion inside a Basler IEEE 1394 camera. To keep
things simple, we assume that the sensor collects pixel data at an 8
bit depth.
Block Diagram - YUV
Conversion Process
As a first step, an algorithm calculates the RGB values for each pixel.
This means, for example, that even if a pixel is sensitive to green
light only, the camera gets full RGB information for the pixel by
interpolating the brightness information from adjacent red and blue
pixels. This is, of course, just an approximation of the real world.
There are many algorithms for doing RGB interpretation and the
complexity and calculation time of each algorithm will determine the
quality of the approximation. Basler IEEE 1394 color cameras have an
effective built-in algorithm for this RGB conversion.
A disadvantage of RGB conversion is
that the amount of data for
each pixel is inflated. If a single pixel normally has a depth of 8
bits, after conversion it will have a depth of 8 bits per color (red,
green and blue) and will thus have a total depth of 24 bits.
YUV coding converts the RGB signal
to an intensity component (Y)
that ranges from black to white plus two other components (U and V)
which code the color. The conversion from RGB to YUV is linear, occurs
without loss of information and does not depend on a particular piece
of hardware such as the camera. The standard equations for
accomplishing the conversion from RGB to YUV are:
Y = 0.299 R + 0.587 G + 0.114 B
U = 0.493 * (B - Y)
V = 0.877 * (R - Y)
In practice, the coefficients in the
equations may deviate a bit
due to the dynamics of the sensor used in a particular camera. If you
want to know how the RGB to YUV conversion is accomplished in a
particular Basler camera, please refer to the camera’s user manual
for
the correct coefficients. This information is particularly useful if
you want to convert the output from a Basler IEEE 1394 camera from YUV
back to RGB.
The diagram below illustrates how
color can be coded with the U and
V components and how the Y component codes the intensity of the signal.
Diagram - Color Space
Diagram
This type of conversion is also known as YUV 4:4:4 sampling. With YUV
4:4:4, each pixel gets brightness and color information and the
“4:4:4”
indicates the proportion of the Y, U and V components in the signal.
To reduce the average amount of data
transmitted per pixel from 24
bits to 16 bits, it is more common to include the color information for
only every other pixel. This type of sampling is also known as YUV
4:2:2 sampling. Since the human eye is much more sensitive to intensity
than it is to color, this reduction is almost invisible even though the
conversion represents a real loss of information. As defined in the
DCAM specification, YUV 4:2:2 digital output from a Basler camera has a
depth that alternates between 24 bits per pixel and 8 bits per pixel
(for an average bit depth of 16 bits per pixel).
As shown in the table below, when a
Basler camera is set for YUV
4:2:2 output, each quadlet of image data transmitted by the camera will
contain data for two pixels. In the table, K represents the number of a
pixel in a frame and one row in the table represents a quadlet of data
transmitted by the camera.
Table - Quadlet Table
For every other pixel, both the intensity information and the color
information are transmitted and this results in a 24 bit depth for
those pixels. For the remaining pixels, only the intensity information
is preserved and this results in an 8 bit depth for them. As you can
see, the average depth per pixel is 16 bits.
On all Basler IEEE 1394 color
cameras, you are free to choose
between an output mode that provides the raw sensor output for each
pixel or a high quality YUV 4:2:2 signal. Due to the high bandwidth
that would be needed to provide full RGB output at 24 bits/pixel,
Basler IEEE 1394 color cameras do not provide RGB output.
Back to Top
Camera Temperature
The electronic devices used in digital cameras are typically specified
to run at up to 70° C (158° F). If the temperature inside of
the camera
rises above that point, the devices may be damaged or destroyed. This
is true for all types of electronic cameras.
An electronic camera usually
contains a CCD sensor and several
types of analog and digital devices. For the analog devices, as their
temperature increases, electrical noise in the devices increases
noticeably. Digital devices have the same characteristic but with
digital signal interpretation, noise is not usually an important
factor. The performance of the CCD sensor is also influenced by heat
and the image produced by the sensor tends to get noisier as
temperature increases.
As you can see, with the potential
for component damage and poor
performance caused by heat, it makes great sense to keep the components
inside of the camera as cool as possible. What can be done to keep the
devices inside of a camera cool?
|
1. |
Design
the camera so that there is good heat flow from the electronic devices
to the camera housing. Good heat flow between the components and the
housing allows the heat to be dissipated to the atmosphere around the
camera rather than being captured inside of the camera. Good heat flow
between the components and the housing also helps external cooling
devices such as heat sinks, fans and Peltier coolers work better.
Basler engineers took great care to design a good energy connection
between the components in our cameras and the camera housings. This
connection brings the heat to the housing surface so that cooling will
be can be more effective. |
|
2. |
Keep
the camera's power consumption low. Power input to the camera must
equal power output from the camera (this is known as energy balance).
Cameras usually only have two ways for power to exit: through the data
connection to the frame grabber and as heat. So basically, any power
that is not used by the digital drivers for LVDS communication will be
converted to heat. Basler engineers have carefully selected the
electronic devices used in our cameras so that power consumption is at
a minimum. |
|
3. |
Use external cooling. This is something that the camera user can do. |
Basler cameras are typically
specified for operation at up to 40° C
(104° F). At higher temperatures, a heat sink, fan, Peltier cooler or a
similar device must be used to cool the camera. Back to Top
FireWireTM
FireWire is a standardized serial
communications bus similar to USB
that allows digital devices to talk to one another at high speed.
FireWire operates at a maximum speed of 400 Megabits per second and can
handle up to 63 connected devices such as hard drives, monitors,
printers, computers and cameras. A FireWire system has no need for a
host controller; each device on the system can operate on its own but
must follow strict rules about when it is allowed to talk.
Because FireWire is standardized,
all FireWire compliant devices
should easily plug and play. FireWire has also been designed to allow
hot plug and unplug. Since each type of FireWire compliant device is
assigned a worldwide identification number, there is little possibility
of identification conflicts within the system.
FireWire was initially developed at
Apple Computer and Apple still
retains the FireWire trademark. The Institute of Electrical and
Electronics Engineers formalized the rules for communication on a
FireWire bus in a document called the IEEE 1394-1995 specification and
you will often hear FireWire referred to as IEEE 1394. The IEEE 1394
document defines the electronic and software protocols used to transmit
data over a FireWire system and also specifies the format of the
cabling and connectors used with FireWire compliant devices.
The FireWire bus system is much
different from the data interface
that we use now. Currently, one camera interfaces with one frame
grabber and communication between the two is optimized for this
one-to-one relationship. With a FireWire bus system, many devices can
share the communication line. To avoid conflicts between the devices,
strict rules are needed to determine which device can talk and when it
can talk. The IEEE 1394 specification provides the rules to ensure that
communication between the devices on the FireWire bus takes place in an
orderly fashion.
Back to Top
CCD vs. CMOS
CCD sensors use devices called shift registers to transport charges out
of the sensor cells and to the other electronic devices in the camera.
The use of shift registers has several disadvantages:
|
1. |
Shift registers must be located near to the photosensitive cells. This
increases the possibility of blooming and smearing. |
|
2. |
The
serial nature of shift registers makes true area of interest image
capture impossible. With shift registers, the readings from all of the
sensor cells must be shifted out of the CCD sensor array. After all of
the readings have been shifted out, the readings from the area of
interest can be selected and the remaining readings are discarded. |
|
3. |
Due
to the nature of the shift registers, large amounts of power are needed
to obtain good transfer efficiency when data is moved out of the CCD
sensor array at high speed. |
CMOS sensors and CCD sensors have
completely different
characteristics. Instead of the silicon sensor cells and shift
registers used in a CCD sensor, CMOS sensors use photo diodes with a
matrix oriented addressing scheme. These characteristics give CMOS the
following advantages:
|
1. |
The
matrix addressing scheme means that each sensor cell can be accessed
individually. This allows true area of interest processing to be done
without the need to collect and then discard data. |
|
2. |
Since
CMOS sensors don't need shift registers, smear and blooming are
eliminated and much less power is needed to operate the sensor
(approximately 1/100th of the power needed for a CCD sensor). |
|
3. |
This low power input allows CMOS sensors to be operated at very high speeds
with very low heat generation. |
The quality of the signals generated
by CMOS sensors is quite good
and can be compared favorably with the signals generated by a CCD
sensor. Also, CMOS integration technology is highly advanced; this
creates the possibility that most of the components needed to produce a
digital camera can be contained on one relatively small chip. Finally,
CMOS sensors can be manufactured using well-understood, standardized
fabrication technologies. Standard fabrication techniques result in
lower cost devices.
Back to Top
3 Chip vs. 1 Chip Color
Three chip color cameras always contain a prism which divides the
incoming light rays into their red, green and blue components. Each
chip then receives a single color at full resolution.
One chip area scan cameras use a
single sensor that is covered by a
color filter with a fixed, repetitive pattern. Filters with several
different patterns are used but the Bayer color filter is the most
common. The illustration to the right shows a portion of the Bayer
filter. When a color filter is used with a single sensor, each
individual cell in the sensor gathers light of only one particular
color. To reconstruct a complete color image, an interpolation is
needed. The red, green and blue information is interpolated across
several adjacent cells to determine the total color content of each
individual cell.
Image 1 - Color Filters
One chip line scan cameras use a sensor that has three rows of cells, a
red rwo, a green row and a blue row. As an area on an object moves past
the camera, the area is examined first by the cells in the red row,
second by the cells in the green row and third by the cells in the blue
row. The information from the red, green and blue cells is then
combined to produce a full color image.
3-Chip Color Advantages:
|
1. |
Full resolution RGB Images |
|
2. |
Easier software handling of the data output |
3-Chip Color Disadvantages:
|
1. |
High camera cost due to the need for a prism and three sensor chips |
|
2. |
Large camera housing needed for prism and sensors |
|
3. |
Typically require expensive, special optics |
|
4. |
High weight |
1-Chip Color Advantages:
|
1. |
Much less expensive |
|
2. |
Smaller size |
|
3. |
Lower weight |
1-Chip Color Disadvantages:
|
1. |
For area scan cameras, an interpolation algorithm must be run to achieve full
color resolution |
|
2. |
For line scan cameras, spatial correction must be done to combine the color
data from the three sensor rows |
When deciding on a three chip or a one chip camera, you must consider
the advantages and disadvantages of each and determine which type is
most appropriate for your application. Experience shows that in many
cases, a one chip camera is more than adequate and is the cost
efficient solution. Back to Top
Sensitivity
The response curve for a light sensitive sensor can be divided into
three parts: the dark area, the linear area and the saturation area. A
typical response curve is shown in the graph below.
The dark area of the response curve
shows the sensor's response to
very low light. The output of the sensor in the dark area is very low,
is noisy and is unpredictable. As you gradually increase the light
falling on a sensor, you will find a point where the output of the
sensor begins to increase predictably as the amount of light increases.
This point is called the Noise Equivalent Exposure (NEE).
After the NEE point is reached, the
output of the sensor becomes
linear. The output remains linear until a point called the Saturation
Equivalent Exposure (SEE) is reached. At this point, increasing the
light intensity results in a nonlinear increase in the sensor output.
The gradient of the linear portion of the sensor's response curve is
commonly referred to as sensitivity and is usually measured in
V/µJ/cm2. The higher a sensor's output voltage is for a given amount
of
light, the higher its sensitivity.
But when you are discussing sensors,
talking about sensitivity
alone does not make sense. For one thing, NEE is also very important.
Since a sensor with a high NEE will be blind at low light levels, NEE
should be as low as possible.
Another point to consider is that a
digital camera is a system and
that sensor sensitivity is just one of the factors involved in the
output signal from the camera. Electronic devices in the camera such as
Analog to Digital converters and amplifiers also influence the output
signal. At Basler, we feel that a camera's "responsivity" is a better
measure of camera performance. We also think that since our cameras are
digital, responsivity should be stated as DN/µJ/cm2 (DN stands for
digital number). The graph below shows a responsivity curve.
If a camera provides a gain feature as most of them do, responsivity
will depend on the gain setting. And responsivity really only makes
sense when it is stated in combination with a measurement of the
camera's noise such as peak-to-peak, signal-to-noise ratio.
Let's consider an example. Suppose
that you are comparing two cameras and that they have the following
specifications:
Camera One: Responsivity
= 1 DN/µJ/cm2 Noise = 2 DN (peak-to-peak)
Camera Two: Responsivity
= 2 DN/µJ/cm2 Noise = 5 DN (peak-to-peak)
At first glance, camera two seems
better than camera one because
its responsivity is higher. However if camera one has a gain feature,
we can adjust the gain and increase the responsivity to two. Keep in
mind that if we adjust the gain to double the responsivity from one to
two, we will also double the noise. Now we have this situation:
Camera One: Responsivity
= 2 DN/µJ/cm2 Noise = 4 DN (peak-to-peak)
Camera Two: Responsivity
= 2 DN/µJ/cm2 Noise = 5 DN (peak-to-peak)
Which camera is better? They now
both have the same responsivity,
but camera one has lower noise. Camera one would be the better choice.
The lesson to be learned from all of
this is that sensor
sensitivity alone does not tell the entire story and that we should be
sure to use similar measuring criteria when we are comparing cameras. Back
to Top
Signal-to-Noise Ratio
An ideal camera sensor would convert a known amount of light into an
exactly predictable output voltage. Unfortunately, ideal sensors (like
all other electronic devices) do not exist. Due to temperature
conditions, electronic interference, etc., sensors will not convert
light 100% precisely. Sometimes, the output voltage will be a bit
bigger than expected and sometimes, it will be a bit smaller. The
difference between the ideal signal that you expect and the real-world
signal that you actually see is usually called noise. The relationship
between signal and noise is called the signal-to-nose ratio (SNR).
Signal-to-noise ratio is commonly
expressed as a factor such as 20
to 1, 30 to 1, etc. Signal-to-noise ratio is also frequently stated in
decibels (dB). The formula for calculating a signal-to-noise ratio in
dB is: SNR = 20 x log (Signal/Noise).
Once noise has become part of a
signal, it can't be filtered or
reduced. So it is a good idea to take precautions to reduce noise
generation such as:
|
1. |
using good quality sensors and electronic devices in your camera |
|
2. |
using a good electronic architecture when designing your camera |
|
3. |
lowering the temperature of the sensor and the other analog devices in your
camera |
|
4. |
taking precautions to prevent noisy environmental conditions from influencing
the signal (such as using shielded cable) |
Many times, camera users will increase
the gain setting on their
cameras and think that they are improving signal-to-noise ratio.
Actually, since increasing gain increases both the signal and the
noise, the signal-to-noise ratio does not change significantly when
gain is increased. Gain is not an effective tool for increasing the
amount of information contained in your signal. Gain only changes the
contrast of an existing image.
Back to Top
PRNU
When a fixed, uniform amount of light falls on the sensor cells in a
digital camera, each cell in the camera should output exactly the same
voltage. However, due to a variety of factors including small
variations in cell size and substrate material, this is not actually
true. When a uniform light is shined in the cells in a digital camera,
the cells output slightly different voltages. This difference in
response to a uniform light source is referred to as "Photo Response
Non-Uniformity" or PRNU for short. Since PRNU is caused by the physical
properties of the sensor itself, it is almost impossible to eliminate.
PRNU is usually considered to be a normal characteristic of the sensor
array used in a camera.
One easy way to deal with PRNU is to
use a look up table (LUT).
With this method, the sensor cells in a camera are exposed to uniform
light and an adjustment factor that would result in a uniform output is
calculated for each sensor cell. The adjustment factor for each cell is
stored in a table. When an image is captured, a software routine looks
in the table and applies the appropriate correction factor to the
output from each cell.
PRNU can be made worse if the gain
on your camera is set too low or if your exposure time is set too high (usually
> 500 ms). Back to Top
Area of Interest Feature
Many of Basler's area scan cameras include an area of interest (AOI)
feature. The AOI feature lets the user specify a portion of the
camera's sensor array and during operation, only the pixel information
from the specified portion of the array is transmitted out of the
camera.
The main advantage of the AOI
feature is that as you decrease the
height of the AOI, there is usually an increase in the camera's maximum
allowed frame rate. In other words, when you capture smaller images,
you can capture more images per second. This can be very useful in an
application where you need to capture smaller images at higher speeds.
Be aware that on most area scan
cameras with an AOI feature,
decreasing the AOI height will result in a higher maximum allowed frame
rate - but this is not true for every camera model. Also, on some
camera models the maximum allowed frame rate will increase when both
the AOI height and the AOI width are decreased. You should consult the
user's manual for your camera model to learn the specific details of
the AOI feature on your camera. Back to Top
Binning in CCD Cameras
Binning increases the camera's sensitivity to light by summing the
charges from adjacent pixels in the CCD sensor into one pixel. There
are three types of binning available: horizontal binning, vertical
binning, and full binning.
With horizontal binning , pairs of
adjacent pixels in each line of
the sensor are summed (see the drawings below). With vertical binning,
pairs of adjacent pixels from two lines in the sensor are summed. Full
binning is a combination of horizontal and vertical binning in which
four adjacent pixels are summed.
Using horizontal or vertical binning generally increases the camera's
sensitivity by up to two times normal. Full binning increases
sensitivity by up to four times normal. On some camera models, using
horizontal or full binning increases the camera's maximum frame rate
(this is not true for all cameras and depends on the architecture of
the sensor used in the camera).
With horizontal binning active,
horizontal image resolution is
reduced by half, for example, if a camera's normal horizontal
resolution is 1300, with horizontal binning active, this would be
reduced to 650. With vertical binning active, vertical image resolution
is reduced by half, for example, if a camera's normal vertical
resolution is 1030, with vertical binning active, this would be reduced
to 515. When full binning is used, both horizontal and vertical
resolution are reduced by half. Back to Top
Color Filters for
Single-Sensor Color Cameras
In general single-sensor color cameras use a monochrome sensor with a
color filter pattern. Another way to achieve a color image with only
one sensor would be to use a revolving filter wheel in front of a
monochrome sensor, but this method has its limitations.
With the color filter pattern method
of color imaging, no object
point is projected on more than one sensor pixel, that is, only one
measurement (for a single color or sum of a set of colors) can be made
for each object point.
There are several different filter
methods for generating a color
image from a monochrome sensor. In the following some frequently used
filter arrangements are detailed.
Bayer Color Filter (Primary
Color Mosaic Filter)
The following table 1 shows the
filter pattern for a sensor of size xs x ys (xs and ys being multiples of 2):
Table 1 - Bayer Filter
Pattern
Complementary Color Mosaic
Filter
The following table 2 shows the filter pattern for a sensor of size xs x ys (xs
and ys being multiples of 2):
Table 2 - Complentary
Filter
This is basically the same arrangement as the Bayer filter pattern, but
instead of using primary colors (R, G, B) it works with complementary
colors (magenta, cyan, yellow). The reason for this is that a primary
color filter blocks of 2/3 of the spectrum (i.e. green and blue for a
red filter) while a complementary filter blocks only 1/3 of the
spectrum (i.e. blue for a yellow filter). Thus, the sensor is 2 times
more sensitive. The tradeoff is a somewhat more complicated computation
of the R, G, B values, requiring the input of each complementary color.
Primary Color Vertical
Stripe Filter
Table 3 shows the filter pattern for
a sensor of size xs x ys (xs being a multiple of 4):
Table 3 - Verticle stripe
pattern
This arrangement is very simple and basically well suited to machine
vision applications. The drawback is that the horizontal resolution is
only 1/3 of the vertical resolution. Back to Top
|
White Papers
Each document is provided in pdf
format
Application Notes
Each document is provided in pdf
format
|