![]() |
MZA Associates Corporation 2021 Girard SE, Suite 150 Albuquerque, NM 87106 voice: (505)245-9970, fax: (505)245-9971 email: ics@mza.com, web: http://www.mza.com |
ICS Overview
The image capture system (ICS) is a set of programs that give the user full control to do realtime image acquisition and recording using different camera configurations, frame rates, and acquisition patterns. In order to achieve real multithreaded high speed performance with different priorities and more flexibility, each process (e.g. data acquisition, recording) is done in a separate console program. The ICS Control GUI is in command of the acquisition and recording process and has two dialogs that allow for user input and control. The Stage Properties dialog shows the current stage setup, which describes the way the image acquisition and recording will be done. The Acquisition Control Panel dialog holds the buttons to control the acquisition and recording process and displays the progress. Other separate programs to view or multicast images are available and can be started with the appropriate button on the toolbar.
The ICS can easily be expanded to employ different imaging hardware and to perform other user specific applications.
User's Guide
The following links describe the features of the different programs belonging to the ICS:
Quick start
Start the main Control GUI program by double-clicking on the ics.exe program usually located in the c:\ics\bin directory or run its shortcut on the desktop. This will also start the acquisition and recording process. Launch the image viewer, the image multicasting, and the centroid/r0 calculation by pressing the corresponding buttons on the toolbar. The directory paths, the IP addresses for multicasting and the operation mode can be altered in the ics.cfg configuration file. For acquiring images at a remote computer, see remote control on how to setup the Control GUI.
Use the Stage Properties dialog to setup the parameters for the next test stage. Select the camera type, set the frame rate and the ensemble parameters and choose the recording options. For example, to capture every 5th frame with a frame rate of 500, set the Frames between Samples to 5, the Samples per Ensemble to 100 and the Frames between Ensembles to 500. Now select the duration of the stage by changing the Number of Ensembles or the Repeat Count. In this case, setting the Repeat Count to 600 would correspond to 600 seconds (10 minutes) of image capturing. To record the captured images or their centroids, turn on the appropriate recording options and set the Record Stage flag. When using an external camera sync, make sure to set the Frame Rate equal to the external sync pulse rate. Press Apply after altering the stage to register the changes.
Start the image data acquisition by pressing Go on the Acquisition Control Panel dialog. The current frame rate and the progress of the acquisition and recording are displayed. To abort the process prematurely press the Abort button. To record images during acquisition when the Record Stage flag is not set, select the duration and press the Record button.
On the image viewer turn on the Local option in the Source menu to view the images being recorded on the local computer. To look at multicasted images, set the Remote option in the Source menu and select the multicasting location using the Set Address dialog.
The image multicasting uses the IP address and frame rate specified in the ics.cfg file to multicast the newly acquired images to the network.
When exiting the Control GUI, all other programs will be closed automatically, except any image viewer set to look at multicasted images. Before starting the GUI again, make sure all programs have been terminated first, so none of the console programs are opened twice. To close a console program manually, hit the q key in order to correctly terminate the image ringbuffer read access and to avoid blocking the image data acquisition later on.
Software configuration and requirements
The ICS programs were written for the WindowsNT environment using the MS Visual C++ 6.0 compiler. Files needed for the ICS acquisition system are the executables ics.exe, icsdaq.exe, icsrec.exe, icsmcimg.exe, icsviewer.exe, and icscentr0.exe, and the configuration files ics.cfg, and centr0.cfg, located in the \ics\bin directory. Necessary dll files which must be installed into the \Winnt\System32 directory are aced.dll, mfc42.dll, msvcrtd.dll, msvcirtd.dll, itxco10.dll, itxdrv10.dll, ltxdsp10.dll, hiffl32.dll, and itxavi10.dll. The environment and operation modes for the ICS system, including directory paths and IP addresses for multicasting, are defined in the ics.cfg configuration file and can be changed by the user as needed. In order for the ICS system to work properly, make sure all required directory paths point to the correct location. Image data will be recorded to the directory specified in the configuration file and the path and filename of the last recording is printed onto the status bar of the Control GUI.
For the digital image acquisition, an IC-PCI frame grabber from Imaging Technology Inc. (ITI) is utilized and should be sufficient for almost any RS-422 digital camera. In order to configure the frame grabber for the type of camera being used, the program requires the proper camera configuration file located in the \ics\cameras directory. For example, when using a Dalsa CA-D1-128A camera, the file would be Dalsa128A.cnf. The camera and frame grabber setup can be tested using the ITEX-IC configurator program under Start/Programs/Itex. Opening the appropriate camera configuration file and clicking on the grab button should show a live image. The vendor supplied frame grabber software resides in the c:\icpci directory.For the precise time stamp on the acquired images, the ICS uses a TrueTime IRIG timer card which provides GPS-synced system time. In addition, the system employs a digital I/O card (CIO-CTR05, ComputerBoards) to create the camera control signals, the sync pulse and the binning signal. The camera sync pulse can also be supplied by an external source. To gain access to both cards in the WindowsNT environment, the giveio.sys driver must be copied into the \Winnt\System32\Drivers directory and installed and started using the loaddrv.exe program. Make sure the driver is listed under Devices in the Control Panel with the startup set to automatic and the status showing started. A copy of both files is in the \ics\drv subdirectory.
The ICS software was tested on a dual Pentium 450MHz processor machine with 1GB of RAM running WindowsNT, a similar or better system is recommended for high speed large frame data acquisitions and processing.
Starting and exiting the program
To start the ICS Control GUI execute the ics.exe program or run its shortcut on the desktop. This will automatically start the ICS Acquisition and Recording process in the background with the acquisition process set to realtime priority. The ICS Image Viewer, Image Multicasting, and Centroid/R0 Calculation can be started from the Control GUI with the buttons on the toolbar. To run the ICS Control GUI in remote control select either Remote Server or Local Client in the Control menu or alter the startup control mode in the ics.cfg configuration file. Another possibility is to use command line arguments demonstrated in the start_local or start_remote batch file.
Upon exiting the Control GUI, the acquisition program writes an exit message to the image ringbuffer, and all open programs, reading the buffer, will shut down. To manually terminate a console program that accesses the image ringbuffer for reading, hit the q key instead of using the exit X button on the window. This will prevent exiting the ringbuffer incomplete and causing the acquisition process to eventually fail.
Stage Properties dialog
| The Stage Properties dialog is used to edit the stage parameters that define the way the image data acquisition and recording will be carried out. The following parameters can be altered: |
![]() |
|
| The stage setup is
invalid if the following condition is not met: Frames between
Samples * Samples per Ensemble <= Frames between
Ensembles. In this case, the acquisition program will return an
error and no acquisition will be performed. To acquire every possible
frame, set the Frames between Samples to 1 and Samples per
Ensemble equal to Frames between Ensembles. In the event
that the external sync pulse is greater than the maximum possible
frame rate of the selected camera, the camera will not utilize every
pulse and the actual acquisition rate will be lower. In this case, one
need to adjust the Frame Rate to the actual number (most likely
half the sync pulse) in order for the ensemble setup to be correct.
Next is a list of options that can be turned on/off:
Be sure to press the Apply button to register the new setup before starting the data acquisition. The dialog can be opened in the Edit menu or by pressing its button on the toolbar. |
Acquisition Control Panel dialog
| The Acquisition Control Panel dialog gives the user control over the data acquisition and recording process. |
![]() |
These are the available control
buttons:
|
| The name of the current stage is always shown and the camera frame rate is updated during the image data acquisition. In addition, the overall stage progress and the recording progress are displayed. When images are recorded, the filename and path is printed onto the status bar. Exiting the dialog will abort any acquisition or recording in progress. The dialog can be opened in the View menu or with the button on the toolbar. |
Toolbar
The GUI toolbar has buttons to open the dialogs and to start the associated programs:
| Opens the Stage Properties dialog. | |
| Opens the Acquisition Control Panel dialog. | |
| Starts the ICS Image Viewer. | |
| Starts the ICS Image Multicasting process. |
| Starts the ICS CentroidR0 Calculation process. |
The Stage Properties and the Acquisition Control Panel dialog can also be opened in the Edit and View menu respectively. This document can be accessed in the Help menu under Help (HTML).
Remote Control
The ICS system can be setup to acquire images at a remote computer via a network. For this operation the ICS Control GUI on the remote computer with the acquisition and camera hardware must be started first and set to Remote Server in the Control menu. This will disable its dialogs and buttons and start the ICS server process. Once the remote Control GUI is running in remote server mode the ICS Control GUI on the local computer can be started and set to Local Client control. Here the user will be asked to choose an IP address for the remote computer and then the ICS client process is started. After communication has been established between both computers, the image data acquisition and recording can be controlled from the local computer and all other remote processes can be started locally. When recording images, the data files will only be stored on the remote computer. Even though the remote Control GUI is disabled, it still shows the stage progress and updates its stage properties every time Apply was pressed locally. If the network connection fails or is lost, or the transmitted data gets corrupted repeatedly, appropriate error messages will be displayed and the local and remote Control GUI must be restarted. When the local Control GUI in client mode is terminated, the remote Control GUI in server mode will be shut down as well provided the network connection is still in operation.
![]() |
The control type of the GUI can be changed by selecting the options in the Control menu without having to restart the system. The current control state is displayed on the status bar. |
In addition, the Control GUI can be started in the appropriate control mode by supplying the command line argument noremote, server, or client as shown in the start_local or start_remote batch file. When starting in client mode, one can supply the IP address of the remote computer as a second command line argument to bypass the address dialog. The command line arguments have always precedence over the control mode defined in the ics.cfg configuration file.
Image ringbuffer
The image ringbuffer, storing the captured image data, is defined and setup by the acquisition process. The acquisition program is the only program that actually writes to the buffer. All other programs access the ringbuffer only for reading the data and have two methods of doing so. Either stepping through the buffer tracking every image or advancing always to the newest image available. Stepping through the ringbuffer requires a lot of buffer access time and not more than one program should be using this method at a time. In addition, when looking at every image, the reader can trail behind the actual image stored by the acquisition and slow down the acquisition itself. The maximum reading speed possible depends on the PC system, the camera frame size, and the acquisition frame rate. In comparison to this option with which high reading frame rates can be achieved, the method of tracking only the newest image reaches frame rates of up to 30fps. In this case, the reader looks every so often for the newest image in the ringbuffer and even many readers of this type will not interfere with the acquisition process.
Programs that use the step through option are the recording and the centroid/r0 calculation process. The image viewer can access the ringbuffer using both methods.
ICS Acquisition Process
The icsdaq console program performs the camera frame acquisition and stores the acquired image data in a ringbuffer. It is started automatically by the ICS Control GUI program to run with realtime priority. Using file mapping, the Control GUI directs the acquisition process when and what type of stage to acquire, when to pause, when to abort the acquisition, and finally when to shut down. All the acquisition information, frame rate, type of camera, binning mode, and number of frames to acquire is contained in each stage submitted to the acquisition process. If the Frames between Samples is greater than one, the program will automatically detect missed frames and adjust the frame count accordingly. Upon receiving the exit command from the Control GUI, the acquisition process writes an exit message to the ringbuffer, and all open programs, reading the buffer, will shut down. To manually terminate a console program that accesses the image ringbuffer for reading, hit the q key instead of using the exit X button on the window. This will prevent exiting the ringbuffer incomplete and causing the acquisition process to eventually fail. In case of a ringbuffer write error or an error tracking the camera vertical blank signal, the acquisition process will inform the ICS Control GUI, which then displays an error message. The system currently uses an IC-DIG AM-DIG16 frame grabber from Imaging Technology Inc. for the digital image acquisition.
ICS Recording Process
The icsrec console program reads the image ringbuffer and records the image and centroid data to file. The ICS Control GUI program automatically starts and terminates the recorder program and tells it which stage to record or how many frames to record instantly. During stage recording, the recorder searches the ringbuffer until it finds the stage to record and then writes the data to file according to the information provided in the stage header. If the recorder can't find the stage or detects that not enough hard drive space is available, the ICS Control GUI is notified and displays an error message. Every time a certain amount of data has been read the recorder needs to flush its data buffer to file. This causes a delay and slows down the acquisition process during realtime recording. In case the recorder times out waiting to read the next frame or detects an end of stage header, it will terminate the recording prematurely. The image and centroid data is written to different files and stored in the directory specified in the ics.cfg configuration file. The filenames consist of the year, day, and time when the recording was started preceded by letters indicating the data type: i - image data, b – background data, c – centroid data, cr - centroid and r0 data.
ICS Image Multicasting Process
The icsmcimg program constantly reads the ringbuffer and multicasts the image data at a selectable frame rate between 1 and 10 frames per second to a given IP address. It is started by pressing the button on the toolbar of the Control GUI program. The frame rate and the IP address are specified in the ics.cfg configuration file and can be changed by the user. The program is shut down by the Control GUI, and should only be quit by typing the letter q. When the image multicasting process is waiting for new data in the ringbuffer, it currently times out after 60 minutes.
ICS Centroid/R0 Calculation Process
The icscentr0 program constantly reads the image ringbuffer and provides the options to either calculate the centroid of the total image or to calculate two centroids using different image halves and compute the corresponding r0 value. In addition, all results can be recorded and multicasted. To start the calculation process, press the button on the toolbar of the ICS Control GUI. This runs the icscentr0.exe file, which reads the centr0.cfg configuration file. The configuration file allows the user to alter the operation mode and to adjust the different calculation parameters. The centroids can be calculated for a certain number of frames per second (up to 30 fps) or for every n-th frame (up to about 200 fps without delay, depends on how many other processes access the ringbuffer and on the frame size, see also image ringbuffer). If one attempts to read the image ringbuffer at a higher frame rate, the centroid reader will run behind the newest image acquired and can eventually slow down the acquisition process. The program is shut down by the Control GUI, and should only be quit manually by typing the letter q. When the centroid program is waiting for new data in the ringbuffer, it currently times out after 60 minutes.
ICS Server Process
The icsserver program is automatically started by the ICS Control GUI when its control is changed to remote server control. At the beginning, the server process waits until it receives the first message from the client process in order to accept the network connection. After the connection has been established, the server process receives control commands and stage properties data from the client which it passes along to the remote Control GUI. It responds to the client by sending the progress information from the acquisition and recording process. Each message is checked for correct size and 32-bit cyclic redundancy. If the network connection fails or is lost, a corrupted message is received successively, or sending data fails several times, the program will shut down and the ICS Control GUI must be restarted.
ICS Client Process
The icsclient program is automatically started by the ICS Control GUI when its control is changed to local client control and the IP address of the remote computer running the server process was selected. In order to set up a network connection the remote server process must be running before the client process executes. Once a connection has been established, the client process sends control commands and stage properties data to the server and waits for the server to respond with the progress data from the acquisition and recording process. Each message is checked for correct size and 32-bit cyclic redundancy. If the network connection fails or is lost, a corrupted message is received successively, or sending data fails several times, the program will shut down and an error message is displayed on the local Control GUI. To setup a network connection again restart the ICS Control GUI in local client control. The IP address of the remote computer is given to the client process as a command line argument.
ICS Image Viewer
The Image Viewer is a stand-alone GUI program to display camera images by either reading the image data from a ringbuffer on the local computer or receiving image data via multicasting from a remote computer. Several options are provided on how to display the image data and the user can alter the frame rate, the colormap, and the scaling. The icsviewer program is located in the \ics\bin directory and can be started using the button on the ICS Control GUI toolbar. It reads the ics.cfg configuration file to update its path to the help files. If the viewer is set to show local images it will shut down automatically when the Control GUI is terminated. If the viewer is waiting for new local image data it currently times out after 60 minutes.
Remote images
![]() |
To
view images from a multicasting source, set the Remote option in
the Source menu and choose an IP address in the Set
Address dialog. You can enter your own address or select one of
the predefined addresses in the pull down list. The Old Data Type
option should remain unselected unless you are running the old scorer
data acquisition program.
|
Local images
| In order to display images from the local ringbuffer, the Local option in the Source menu has to be turned on. The name of the ringbuffer can be changed using the Set Buffer Name dialog in the Source menu and must correspond to the name the acquisition process is using. Using the local ringbuffer, one has two choices viewing the images, either stepping through the buffer tracking every image or advancing always to the newest image available. To step through the buffer, go to the Image menu and select the option Step Through Image Buffer. Use the Set Display Step Rate dialog to set the number of frames to be skipped between each frame displayed. If the step rate is set to 1, every image will be displayed. For small step rate numbers, the viewer will run behind the actual image acquired and after enough time can slow down the buffer writing process and thus the realtime image data acquisition. Click on Catch Up to advance the viewer to the newest image available, and resume the step through mode. | ![]() |
| To continuously show the newest image available select Always Track Newest Image.
In this case, the viewer stays up-to-date displaying the most recent images with
a frame rate set in the Set Display Frame Rate dialog. Values between 1
and 50 frames per second are possible but the actual image display speed also
depends on the window size of the image viewer. This mode will not interfere
with the data acquisition.
The image viewer can be paused and restarted by clicking on Pause in the Image menu. |
Image display options
![]() |
In the Scale menu the user can choose between different types of scaling: Linear, Logarithmic, Exponential, and Square Root. In each case, the pixel color values will be automatically scaled to 256 levels depending on the minimum and maximum color value of the current image. To manually set the scale minimum and maximum, use the Set Scale dialog. Turning on Sum will cause the viewer to continuously display the sum of all following images. The Colormap menu lists different types of colormaps, which can be applied to change the appearance of the images. |
View options
![]() |
Image viewer with all view options enabled and waiting for new remote data In addition to the image itself, the viewer displays a colorbar with the minimum and maximum pixel values, the image size for each axis, and a text line with the date and time stamp of the current image. The text line also includes the pixel bit size, the image source, remote or local (MC / RB), and an image counter. Any of this supplemental information can be turned off in the View menu. A text line on the bottom of the image area shows the current status in the event that the viewer is waiting for new image data, cannot access the ringbuffer, or open the multicast socket. |
Copyright and license information
ICS, Version 1.21
Copyright © 2000, MZA Associates Corporation, All rights reserved. Authorized recipients of this documentation may copy it freely in unmodified form for pre-authorized use only. Any distribution of this documentation must include this license statement.
The ICS software package and its related documentation, are copyrighted and are specifically not committed to the public domain. MZA Associates reserves all rights related to the software and documentation. Individuals wishing to obtain or learn more about the ICS system should contact MZA. If you or your organization have obtained the ICS software from anyone but MZA, contact MZA to negotiate the conditions of its use.
MZA Associates Corporation, MZA, the MZA logo, tempus, ABLSim, WaveTrain, Adaptive Dynamic Range Wavefront Sensor, ADRWFS, and ICS are trademarks of MZA Associates Corporation.