PART 1. Installation. Graphical User Interface (GUI) for Reconstruction and Visualization

Related Topics

1 Introduction.
2 Getting Started with COBRA 7 in demo mode.
3 Installation of a licensed package.
4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.
5 COBRA High-Definition 3D Visualisation.

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1 Introduction.

Introduction.

Related Topics

PART 1. Installation. Graphical User Interface (GUI) for Reconstruction and Visualization
1.1 Cobra 7 functionality
1.2 System requirements.


1.1 Cobra 7 functionality

Cobra 7 functionality

COBRA V7 contains the full functionality of V6, providing Feldkamp-style 3-D image reconstruction for cone beam CT geometry. Image reconstruction may be run on single or multiple CPU's, or make use of affordable hardware accelerators provided by NVidia's GeForce graphics cards. We continue to support various geometries, using intrinsic camera parameters as well as the use of projection matrices. COBRA V7 continues to achieve high performance and accuracy, based on more than 2000 installations worldwide.

In addition, there is an optional 3-D visualization package with MPR and volume rendering (see below).

Improvements

(1) Support for new platforms: Windows XP-32, XP-64, Vista, 7

(2) Support for new hardware: new NVidia graphics cards with GPU acceleration and cluster configurations.

(3) Greatly increased accessible volume size by;

- enlarging the scan diameter through explicit support for data acquisition with multiple detector offsets and projection stitching (3xView),

- enlarging scan length through stop-and-shoot volume stacking.

COBRA automatically corrects for minor geometry errors and finds optimal stitch parameters.

(4) Improved artifact reduction

- new metal artifact reduction MAR, tunable to object composition

- better protrusion correction with better HU stability particularly in biological objects; this is useful for local tomography.

(6) New graphical user interface with easier access to setting and manipulating reconstruction parameters.

(7) Improved installation package and API for COBRA integration (SDK).

New Functionality: Visualization

COBRA V7 now offers top-of-the-line visualization for viewing the reconstruction results (and any imported DICOM data sets). This package turns COBRA V7 into an advanced visualization workstation with DICOM compliance. The MPR viewer allows orthogonal and oblique cuts, slab view, MIP, measurements, scrolling in all dimensions, zoom, inversion, snapshot storage. The 3D tab produces a volume rendered image with template-controlled opacity functions, cut planes, interactive image rotation, zoom and measurement functions.

Cobra 7. Windows 32-bit and 64-bit platforms.

Cobra 7 graphical user interface component (CobraGUI.exe) is provided in two versions (32- and 64-bit). The fundamental difference is a memory management. There is the following restriction applied: volumes bigger than 500MB cannot be visualized in Windows 32-bit platforms.

Related Topics

1 Introduction.


1.2 System requirements.

System requirements.

Minimum.

Works only for small datasets (<400 all dimensions), typically provides slow reconstruction.

CPU: 2.0 GHz

Memory: 1 GB

Display resolution: 1680x1050 / 1600x1200

OS: Windows XP/Vista/Win7

Reasonable minimum.

Works for average size datasets (<768 all dimensions), a reconstruction time for 512x512x512 views à 512x512x512 cube is about ~ 3 min

CPU: dual core 2.5 GHz

Memory: 2 GB

Display resolution: 1920x1200

OS: Windows XP/Win7

Recommended.

CPU: quad core 2.5 GHz and higher

Memory: 4 GB

GPU: nVidia GeForce 200 series (ask Exxim about a particular model)

Display resolution: 1920x1200 and higher

OS: Windows XP/Win7 64-bit platform

Cobra 7. Windows 32-bit and 64-bit platforms.

Cobra 7 graphical user interface component (CobraGUI.exe) is provided in two versions (32- and 64-bit). The fundamental difference is a memory management. There is the following restriction applied: volumes bigger than 500MB cannot be visualized in Windows 32-bit platforms.

Related Topics

1 Introduction.


2 Getting Started with COBRA 7 in demo mode.

Getting Started with COBRA 7 in demo mode.

COBRA is available as a free download for a limited demonstration use only. Full use of all COBRA features requires installation of a USB HASP key, which enables licensed use. If the USB HASP key is not installed, the software will run in a demonstration mode.

The restrictions (differences) of a demonstration mode are the following:

· Slices (output volumetric data) contain a word EXXIM;

· Correction algorithms CFA and SAMARA are not available;

· When COBRA GUI is running in High-Definition visualization mode a user is observing semitransparent marks with Demo-Mode letters on a visualization screen

Related Topics

PART 1. Installation. Graphical User Interface (GUI) for Reconstruction and Visualization
2.1 Downloading and installing the software and a demo dataset.
2.2 Getting started with making a reconstruction using the Exxim’s dataset.
2.3 Getting started with visualization.


2.1 Downloading and installing the software and a demo dataset.

Downloading and installing the software and a demo dataset.

· Please manually un-install any existing installation of COBRA (via the start button or Add/Remove Programs) every time before you install a new version.

· Download the latest version of the COBRA installation executable and a mouse demo dataset. These files are downloadable at http://www.exxim-cc.com/download.htm

· Run setup processes by running CobraExximSetup(X.YY.ZZ).exe (X.YY.ZZ stands for the particular version) and Mouse_SetUp.exe.

· If a User is interested in trying graphics card acceleration then he/she may also need to download and install DirectX Runtime and Microsoft Redistributable packages (unless they are installed). See Section 3 below and Exxim’s website http://www.exxim-cc.com/download.htm

NB. The “Demo” and “Licensed” software is “bit-to-bit” identical. The difference between “Licensed” vs. “Demo” is that some COBRA functionality is getting unlocked by installing a special hardware USB license key called HASP (see a vendor’s website www.aladdin.com)

Related Topics

2 Getting Started with COBRA 7 in demo mode.


2.2 Getting started with making a reconstruction using the Exxim’s dataset.

Getting started with making a reconstruction using the Exxim’s dataset.

This section demonstrates how to make a data reconstruction and then to see a reconstructed volume. Only the needed sequence of GUI operations is described. All details regarding data description formats and reconstruction parameters are presented in the Part 2 of this User Manual.

Let assume that

- Cobra software is installed in the folder C:\Cobra_Exxim

- Exxim’s mouse dataset is extracted into the folder C:\CT_DATA\Exxim_Mouse_Example

Step 1. Start Cobra application by running C:\Cobra_Exxim\CobraGUI.exe

Step 2. Open the file C:\CT_DATA\Exxim_Mouse_Example\parameter_512_std.xxm.

One should use

- the pull-down application menu, item Open or

- the tabs Set / Parameters, button Open (right control area of the application)

See Figure 2.1.

Figure 2.1. Screenshot of Cobra GUI. Opening, viewing, and editing reconstruction parameters.

Step 3. How to start a reconstruction process.

One should

- go to the tabs MAKE / Reconstruction (right control area of the application) and then

- push the big Start button in the lower right corner of the application (control area of the application)

See Figure 2.2.

Step 4. Observe the reconstruction progress, wait until reconstruction is complete. The reconstruction time may vary depending on the PC used. Typically, reconstruction takes 10-60 sec (for the described mouse dataset). Figure 2.2 demonstrates an example of the progress screen.

Figure 2.2. Screenshot of Cobra GUI. Starting reconstruction. Observing reconstruction progress.

Related Topics

2 Getting Started with COBRA 7 in demo mode.


2.3 Getting started with visualization.

Getting started with visualization.

When the reconstruction process is finished Cobra automatically switches into visualization mode, particularly into MPR slice view. The user observes the screen shown in the Figure 2.3.

Figure 2.3. Reconstructed volumetric data of the mouse, MPR view.

NB. The screenshot corresponds to the licensed version. If the software is running in

demo mode then multiple semitransparent marks “Demo Mode” are overlapping the volume view.

Please see Part 1 Section 5 COBRA High-Definition 3D Visualization for more information how to control Cobra visualization.

The user also can observe the reconstructed data in VR (volume rendering mode). To do that one should

- choose the tab VR in the right GUI block of controls or

- choose the tab 3D at the bottom of the application window.

To see different tissues the user also has to choose one of presets for the opacity function: ‘bones’ or ‘soft tissue’ in the right control area. See Figures 2.4 and 2.5.

Figure 2.4. Reconstructed volumetric data of a mouse, volume rendering (VR/3D) view with Bones 2 preset of the opacity function.

NB. The screenshot corresponds to the licensed version. If the software is running in demo mode then multiple semitransparent marks “Demo Mode” are overlapping the volume view.

Figure 2.5. Reconstructed volumetric data of a mouse, volume rendering (VR/3D) view with Soft Tissue preset of the opacity function.

NB. The screenshot corresponds to the licensed version. If the software is running in demo mode then the multiple semitransparent marks “Demo Mode” are overlapping the volume view.

Please see Part 1 Section 5 COBRA High-Definition 3D Visualization for more information how to control Cobra visualization.

NB. The visualization component described above has restrictions in demo mode. Please see sections Freeware Visualization below how to see/investigate your data with the free software.

Related Topics

2 Getting Started with COBRA 7 in demo mode.


3 Installation of a licensed package.

Installation of a licensed package.

Full use of all COBRA features requires installation of a USB HASP key, which enables licensed use.

Related Topics

PART 1. Installation. Graphical User Interface (GUI) for Reconstruction and Visualization
3.1 Installing the USB HASP key and other 3rd Party Software
3.2 Installing the COBRA software
3.3 Manual installation
3.4 Installation with hardware authentication (for OEM Customers only).


3.1 Installing the USB HASP key and other 3rd Party Software

Installing the USB HASP key and other 3rd Party Software

The COBRA package needs a support of:

- Microsoft re-distribution package.

- DirectX runtime

- HASP driver.

The COBRA package contains a USB HASP key (see Figure 1).

Figure 1 : USB HASP key

To install this key:

Connect the HASP key into a PC USB port.

Please install USB HASP driver.

The mentioned software packages are available on vendor websites

http://www.microsoft.com

http://www.aladdin.com

Please search Aladdin’s website for the end user driver for HASP4. Please note that the conventional driver setup process (via .inf files or plug&play) may not work in certain configurations, and the user has to explicitly run the setup process mentioned above.

For some customers a softkey used instead of hasp. A prior arrangement with Exxim is needed to use the softkey. This option is accessible from menu Operations/Email Hardware Authentication. The code line should emailed to Exxim, to get a authentication info.

NB. DirectX and HASP libraries are not needed to run Cobra in a trial mode.

Related Topics

3 Installation of a licensed package.


3.2 Installing the COBRA software

Installing the COBRA software

o       Please manually un-install any existing installation of COBRA (via the start button or Add/Remove Programs) every time before you install a new version.

o       Download the latest version of the COBRA installation executable. This executable is downloadable at http://www.exxim-cc.com/download.htm

o       Start setup process by running CobraExximSetup(X.YY.ZZ).exe (X.YY.ZZ stands for the particular version).

Successfully executing the set-up file will prompt the user with the screen shown in Figure 2.

Figure 2: set-up program

Complete the installation as prompted by agreeing to the standard terms and conditions. The set-up application will inform you when installation is completed. The COBRA program components are located in the Windows® start menu in the program group entitled “COBRA_Exxim”

Related Topics

3 Installation of a licensed package.


3.3 Manual installation

Manual installation

Sometime the installation of COBRA package can fail due to a software environment associated with a particular setting. Should that happen, a step-by-step manual installation is advised. Exxim provides a binary zip file on our website as an installation alternative, and the detailed steps are described below.

Step 1. Login in as a system administrator. Open a console window, by typing “cmd” from Windows menu “Start\Run…”

Step 2. Uninstall the old stuff, by running cobra_remove.bat from COBRA folder :

cd C:/COBRA_Exxim

0_remove_cobra6.bat

Expect the following output:

Figure 3 : Run command from console window

Step 3. Delete all files

Step 4. Copy a full set of Cobra files into

C:/COBRA_Exxim

Step 5. Register components and services, by running the following batch file

cobra_install.bat from COBRA folder

cd C:/COBRA_Exxim

0_install_cobra6.bat

Expect the following output:

Figure 4 : Run command from console window

COBRA should have been installed successfully. To start COBRA, go to C:/COBRA_Exxim and double click “COBRA_Exxim.exe”.

If COBRA still doesn’t start, then make sure that Firewall exceptions are installed properly.

TCP port exceptions could be set from Control panel/Windows Firewall.

The software uses the following port:

port # = 27015 port name = COBRA_COM
port # = 27016 port name = COBRA_RPC
port # = 27017 port name = COBRA_GUARD

Figure 5 : Make exceptions to Windows Firewall

Related Topics

3 Installation of a licensed package.


3.4 Installation with hardware authentication (for OEM Customers only).

Installation with hardware authentication (for OEM Customers only).

This section is not applicable for all users. Please proceed to the Part 1 Section 4 if you do not have a special agreement with Exxim.

For some OEM customers a hardware authentication procedure is provided. This procedure works as “one hasp – multiple machines”, opposed to “one hasp – one machine” described in section 3.1. A special hasp is used only once during the authentication procedure, and the target machine will run COBRA hasp-free afterwards.

To use the hardware authentication procedure you will need:

1. Special hasp (issued by Exxim)

2. HW Authentication for OEM client software (supplied by Exxim)

3. Internet connection (recommended, but not required).

There are several ways to perform hardware authentication.

Figure 6 : HW Authentication for OEM client software

Related Topics

3 Installation of a licensed package.
3.4.1 Target PC is connected to Internet
3.4.2 Target PC is not connected to Internet: Authentication through Proxy Machine.
3.4.3 Revoking authentication for PC connected to Internet
3.4.4 Revoking authentication for PC not connected to the Internet


3.4.1 Target PC is connected to Internet

Target PC is connected to Internet

Simplest way is to have the target PC connected to the Internet. Proceed as follows:

1. Insert Hasp

2. Run HW Authentication for OEM client utility (ExxdRegOEMClient.exe)

3. Hit “Authenticate This PC Online” button

4. Wait for “This PC box was registered Ok” message

5. Remove Hasp and close the Authentication utility.

Related Topics

3.4 Installation with hardware authentication (for OEM Customers only).


3.4.2 Target PC is not connected to Internet: Authentication through Proxy Machine.

Target PC is not connected to Internet: Authentication through Proxy Machine.

If the target PC is not connected to the Internet you can still authenticate COBRA using a second PC, which is acting as authentication proxy. Authentication Proxy must be connected to the Internet and have the special hasp. Proceed as follows:

1. Insert Hasp in Authentication proxy.

2. Run HW Authentication for OEM client utility on both computers.

3. Inset USB drive into client (PC where you installing COBRA – the target PC).

4. Hit “Expose/Write Initial Registration Info to USB Stick” button on client PC.

5. Take USB drive from client an insert into proxy.

6. Hit “Read USB Stick and Expose Registration Info” button on proxy PC.

7. Hit “Send Reg. Info and Expose Auth. String” button on proxy PC.

8. Wait for “Authentication string generated” message.

9. Hit “Write Authentication String to USB Stick” button on proxy PC.

10. Take USB drive from proxy an insert into client.

11. Hit “Read USB Stick and Expose Authentication String” button on client PC.

12. Hit “Authenticate This PC by Authentication String” button on client PC.

13. Wait for “This PC box was registered Ok” message.

Note: you can type the Registration Info string and Authentication string manually instead of writing them to USB drive in steps 3-11 if needed.

Related Topics

3.4 Installation with hardware authentication (for OEM Customers only).


3.4.3 Revoking authentication for PC connected to Internet

Revoking authentication for PC connected to Internet

Sometimes, COBRA authentication may have to be revoked on a certain PC. For example, if you wish to start using COBRA on a different computer you need to revoke authentication on one PC and authenticate the other. Or, if you upgrade your computer, the upgraded PC is a new PC for authentication purposes, and you need to revoke authentication of the old hardware and authenticate the new.

To do this you need (if your computer is connected to the Internet):

1. Run HW Authentication for OEM client utility.

2. Hit “Revoking Authentication” button.

3. Wait for “Unregistered” message.

Related Topics

3.4 Installation with hardware authentication (for OEM Customers only).


3.4.4 Revoking authentication for PC not connected to the Internet

Revoking authentication for PC not connected to the Internet

If the PC where you revoke authentication is not connected to the Internet you can revoke authentication using the second PC, which is acting as authentication proxy. To do this you need:

1. Run HW Authentication for OEM client utility on both computers

2. Inset USB drive into client (PC where you installing COBRA)

3. Hit “Revoking Authentication” button on client PC

4. Hit “Expose/Write Initial Registration Info to USB Stick” button on client PC

5. Take USB drive from client an insert into proxy

6. Hit “Read USB Stick and Expose Registration Info to” button on proxy PC

7. Hit “Send Revoking Info to Server” button on proxy PC

8. Wait for “Unregistered” mesasge

Note: you can type the Registration Info string and Authentication string manually instead of writing them to the USB drive in steps 2-6 if needed.

Related Topics

3.4 Installation with hardware authentication (for OEM Customers only).


4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.

Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.

Related Topics

PART 1. Installation. Graphical User Interface (GUI) for Reconstruction and Visualization
4.1 Loading, editing, and saving parameter files. The right group of controls. The tab Set
4.2 Starting a Reconstruction Process. Reconstruction Progress.
4.3 Freeware visualization. Viewing projections and slices
4.4 Editing assigning DICOM headers.
4.5 The tab Tools and the pull-down menu item Tools.
4.6 COBRA log files.
4.7 Freeware Viewers. COBRAViewer Utility.


4.1 Loading, editing, and saving parameter files. The right group of controls. The tab Set

Loading, editing, and saving parameter files. The right group of controls. The tab Set

The tabs Set / Parameters (see Figure 4.1) in the right group of controls allows a user to load, edit, and save parameter files. After opening and loading a parameter file (xxm file) the user may see and edit reconstruction parameters in the left working area. Basically the left working area is similar to notepad editing program.

Figure 4.1. Screenshot of Cobra GUI. The tabs Set / Parameters are active.

Other controls in the right group of controls may affect the whole groups of parameter tag values. They provide an easier way to edit xxm file. Below more details are provided.

- Subgroup Reconstructed Cube is for setting a cube size and voxel pitch to get the accurate field of view with input and output data resolution aligned.

- Subgroup Input Binning is for setting input projection binning (downsampling) factor to adjust input data resolution to the set output volumetric data (output cube) resolution.

- Subgroup Input Data Type helps to set the whole group of tags to tune Cobra Reconstruction Engine for processing raw intensity or logged attenuation projections.

- Subgroup Vertical Smoothing controls the corresponding operation performed on after-projection-filtering stage. See Part 2 Section 7 for details.

- Subgroups Scaling. It is very important to have scaling factors set right in the applied xxm file. Preprocessing scaling is needed to have the intermediate reconstructed data having a decent range to avoid over- and underflow. Slice scaling is for getting correct output values corresponding to physical densities. If the user basically has no idea about setting these parameters then applying “Industrial Applications” and “Default” is safe way to do it. See Part 2 Section 7.5 for details.

- Subgroup Reconstruction Mode. Draft means noisier but faster. Not applicable when GPU (graphics card processor unit) mode is on (the reconstruction is being performed on GPU)

- Subgroup GPU Support. If a decent GPU card is available it will be used.

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


4.2 Starting a Reconstruction Process. Reconstruction Progress.

Starting a Reconstruction Process. Reconstruction Progress.

The tabs Make / Reconstruction (see Figure 4.2) in the right group of controls allows a user to start a reconstruction process and see a progress made.

The button Preview in the right group of controls allows the user to start a few slice cube reconstruction to observe a central volume cut faster. It might be very helpful for cases of big cubes (e.g. 1024x1024x1024). If an initial cube size is NxNxM (M is a number of slices) then Preview uses M=2 (GPU reconstruction) and M=32 (CPU reconstruction)

Figure 4.2. Screenshot of Cobra GUI. Starting reconstruction. Observing a reconstruction progress.

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


4.3 Freeware visualization. Viewing projections and slices

Freeware visualization. Viewing projections and slices

The user can see the source and reconstructed data by built-in freeware components. Particularly they are projection / slice preview tabs in Cobra main application GUI. See Figures 4.3 and 4.4.

Figure 4.3. Screenshot of Cobra GUI. Browsing projections.

Figure 4.4. Screenshot of Cobra GUI. Browsing slices.

There are more details below about available control elements.

The main controlling elements are shown inside red boxes on Figures 4.3 and 4.4: sliders for browsing, window and level controls.

The other controls allow:

- To change a view (flip, rotate, etc.). Note that the original images on the disk are not affected.

- To make main measurements inside elliptical or rectangular areas.

- Save an observed working area as a static 24-bit image.

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


4.4 Editing assigning DICOM headers.

Editing assigning DICOM headers.

The tabs Set / DICOM (see Figure 4.5) in the right group of controls allow a user to load, edit, and save DICOM header parameter file associated with the dataset. Basically the left working area is similar to notepad editing program.

After opening and loading a DICOM parameter file (research.xxm file) the user may see and edit parameters in the left working area. These parameters will be applied when DICOM headers of output slices are being made. If research.xxm file does not pre-exist then default values are shown (and applied). See Part 2 Section 5 for more details.

Figure 4.5. Screenshot of Cobra GUI. The tabs Set / DICOM are active.

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


4.5 The tab Tools and the pull-down menu item Tools.

The tab Tools and the pull-down menu item Tools.

They allow:

- To change a look (color scheme) of Cobra GUI;

- To set Cobra working directory;

- To see Cobra chm User Manual (this document) and other help/information materials.

NB. Cobra GUI version 7.1 does not incorporate Cobra Geo Calibration utility. Please use a standalone application as described in Part 3 of this document

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


4.6 COBRA log files.

COBRA log files.

There are the following logged data available:

- COBRA_Operational.log . Location: the root of the disk C:/.

- COBRA_Operational.log.N, where N=1,2,3. They are used for keeping a log history in the case of accessing COBRA_Operational.log a limit of size (512kB) : the root of the disk C:/.

- Parameter_crt.xxm. The last reconstruction parameters applied. Location Cobra working directory.

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


4.7 Freeware Viewers. COBRAViewer Utility.

Freeware Viewers. COBRAViewer Utility.

CobraViewer.exe utility allows to see the volumetric data as MPR (MultiPlanar Reconstruction). CobraViewer shows slices in the transverse, sagittal, coronal planes.

CobraViewer allows making the following basic operations:

- To load and see volumes represented by slice files, one slice per file, with or without header, non-compressed 2-byte short integers.

- To tune window and level, and see data zoomed in/out.

- To make basic measurements (max, min, etc.) for voxels and areas.

Figure 4.6. Screenshot of Cobra Viewer.

Related Topics

4 Performing a Cone-beam Reconstruction. Controlling the process by COBRA GUI.


5 COBRA High-Definition 3D Visualisation.

COBRA High-Definition 3D Visualisation.

NB. Regaring visualization in Windows 32-bit and 64-bit platforms.

Cobra 7 graphical user interface component (CobraGUI.exe) is provided in two versions (32- and 64-bit). The fundamental difference is a memory management. There is the following restriction applied: volumes bigger than 500MB cannot be visualized in Windows 32-bit platforms.

Related Topics

PART 1. Installation. Graphical User Interface (GUI) for Reconstruction and Visualization
5.1. Volume rendering.
5.2. Volume rendering. Presets.
5.3. Volume rendering. Rotation and translation.
5.4. Volume rendering. Clipping planes
5.5. Volume rendering. Scalpel
5.6. Volume rendering. Optimizing viewing
5.7. Slice data - MPR
5.8. Slice MPR View
5.9. MPR statistics and measurement
5.10. MPR oblique views
5.11. MPR Slab view
5.12. MIP Slab view.
5.13. Importing slices to view.


5.1. Volume rendering.

Volume rendering.

Volume rendering is a way of showing the entire 3D volume; in general, one sees the density in the direction one is looking which has been chosen to be opaque or partially opaque. If something is partially opaque, one can see through it somewhat to material behind it. In Figure 5.1 the soft tissue has been made transparent, so one only sees the bones.

Figure 5.1. Volume rendering. The opacity function is tuned to see bones.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.2. Volume rendering. Presets.

Volume rendering. Presets.

There are presets to automatically select certain types of views such as looking at the skin or bones or soft tissue. Make Preset and Save Preset in the upper right column allow the creation of such presets. Section Optimizing viewing gives more information on how to choose parameters to best look at the data.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.3. Volume rendering. Rotation and translation.

Volume rendering. Rotation and translation.

The volume can be rotated by placing the curser on the screen; the volume rotates with the motion of the curser using the left mouse button. The right mouse button translates the reconstructed volume on the screen.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.4. Volume rendering. Clipping planes

Volume rendering. Clipping planes

Clipping planes allow one to remove some part of the volume (such as a patient table) to look in more detail at the internal structure. In Figure 20 a cut plane has been used to make visible the inner structure. Select Clipping Planes on the upper right and move a given plane by selecting the green square in the middle of that plane.

Figure 5.2. Volume rendering. Clipping planes are off

Figure 5.3. Volume rendering. Clipping planes are on

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.5. Volume rendering. Scalpel

Volume rendering. Scalpel

The scalpel allows one to remove a piece of the outer layer of the volume to look at the data inside. Select Scalpel on the upper right and move the cursor to outline the area to be removed.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.6. Volume rendering. Optimizing viewing

Volume rendering. Optimizing viewing

Below the image is a histogram of the number of voxels (vertical direction) vs. the CT number (horizontal direction). In general, a peak near 0 HU represents soft tissue. On top of this histogram is a curve made of one or more line segments connected by small squares. If one of these squares is along the bottom, then any voxel with a CT number at that point will be completely transparent (i.e., not visible). On the other hand, if a square is at the top of this part of the window, then a voxel with a CT number at that position will be completely opaque (i.e., so visible that nothing beyond it will be visible). Points between the two squares will be partially opaque; a voxel at the point half way up the line will be 50% opaque. Viewing voxels in this way takes some practice.

To adjust the curve, click in the gray area under the curve and move it sideways to change which voxels are opaque and which are transparent.

The curve can have any number of line segments allowing a relatively complicated choice. To add a point, double click on the line where the point is wanted. A square appears there which can be moved using the curser to any desired opacity. To get rid of a square, left click and hold on the point and press the delete key. If there are no points visible, double click on the gray area.

Color is used to help distinguish tissues. To select a color for a point, right click on the point and then choose a color from the choices presented. A bar at the top of the histogram display will show the chosen color as a function of CT number. For example, choosing a curve with white near 500 HU and red near 0 HU, both with high opacity, and 0 opacity under -100HU or so will show soft tissue as red, bone as white, and lung tissue and air will be transparent. Voxels with CT number between 0 HU and 500 HU will have a color with is a mixture of red and white as can be seen on the bar along the top.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.7. Slice data - MPR

Slice data - MPR

CT acquisition acquires a volume of data. MPR (MultiPlanar Reconstruction) shows slices through that data in the transverse, sagittal, coronal, and oblique (arbitrary) planes.

For biological objects the data itself usually has been converted to Hounsfield numbers. Hounsfield numbers (HU) are approximately proportional to density and, by convention, water is 0 HU, air is -1000 HU, soft tissue ranges from -50 HU to +50 HU, and bone has numbers larger than 500 HU.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.8. Slice MPR View

Slice MPR View

Figure 5.4 shows the MPR display in slice view. When a single slice is shown, it has the voxel thickness as reconstructed.

The three primary views are indicated on the left side. The top (outlined in green) is the transaxial view, the center (outlined in blue) is the coronal view, and the bottom (outlined in red) is the sagittal view. The enlarged view in the center is selected by clicking on one of the three views on the left; in this case it is a sagittal view. The orientation cube will show the direction in the patient in which you are looking; that is, if it shows H (Head), you are looking at this transaxial slice from the head of the patient toward its feet. In addition, on the center view, small cubes on top, bottom, right and left sides of the image indicate which side of the patient is adjacent to each of the small cubes.

The location in the volume in the views is adjusted by moving the axial lines shown in the left views. For example, moving the red lines in the coronal or transaxial view will change the sagittal view and thus the enlarged view in this example. By grabbing the end of one of the lines, you can change the angle of the view, thus creating a view in an oblique direction.

The slice in the large view in the center can be changed also by using the mouse wheel. When this done the location lines on the views on the left side change accordingly.

Window and level are adjusted using the sliders on the bottom, which has low numbers on the left. The window width is changed by varying the end points or selecting the width number and typing in a new number; the center is changed by moving the rectangular window indicator or selecting the center number and typing in a new number. The histogram is of number of pixels of a given CT number. Bumps in the histogram indicate where the largest number of pixels are; this is typically around 0 HU, the value of water and near -1000 HU, the value of air.

Figure 5.4. MPR view.

The level and window can also be changed by holding down the right mouse button and moving from side to side (for the level) and up and down (for the window).

The image can be zoomed using the zoom tool under the MIP button (Figure 5.4).

Presets (Figure 5.4) for bone, soft tissue, or other tissue of interest can be created using make preset and saved using save preset. Available presets are shown in the area below the make and save preset buttons. Any presets which have been supplied or created (such as bone or soft tissue) are used to quickly look at an image in a standard way.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.9. MPR statistics and measurement

MPR statistics and measurement

Moving the curser over the image gives the HU value of the point under the curser. One can select also a elliptical or rectangular ROI (Figure 5.5) and draw the ROI on the image. The result is the average HU value within the ROI under mean and the standard deviation under sigma. Min and max then give the maximum and minimum CT number within the ROI. Selection of Profile allows the drawing a line across the image; the CT numbers along that line will show below the Profile tab as a function of the pixel number along the line. Selection of measure allows the measurement of distance between two points on the enlarged image using the curser. The length of the line in mm is given next to the line in the image.

Figure 5.5. MPR oblique plane. Slab view. Volumetric data measurements.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.10. MPR oblique views

MPR oblique views

Operating plane markers on left views gives an opportunity to visualize any desired cross-section of the reconstructed volume. Such cross-sections are usually called oblique planes. See Figure 5.5 for an example.

Figure 5.5. MPR oblique plane. Slab view. Volumetric data measurements.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.11. MPR Slab view

MPR Slab view

Each element of the volume (voxel) is a cube which has the dimensions on each side chosen in reconstruction. As these slices usually are very thin, the image is likely to appear extremely noisy in a slice view. MPR choice of slab view (Figure 5.5) allows the averaging of slices in one direction to, for example, give a slice width of 3 mm, by averaging 10 voxels in the direction perpendicular to the view seen. Only the center view is changed from the slice view when slab view is chosen.

When the center view is the transaxial view, dotted green lines appear in sagittal and coronal view; the width is adjusted using the cursor. If the center view is the coronal, the dotted lines appear in the transaxial and the sagittal views. The dotted lines always appear in the two views which are not displayed in the center. Alternately, the desired new slice width can by typed in the upper left corner of the image where the current slice width is displayed. The image with the wider slice now has much less noise. All the display and measurement capability in slice view is also available in slab view; the only difference is that in slab view the slice is thicker than that reconstructed.

Figure 5.5. MPR oblique plane. Slab view. Volumetric data measurements.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.12. MIP Slab view.

MIP Slab view.

MIP slab view is similar to MPR. The difference is that instead of averaging the operation of “maximum value along the direction perpendicular to the view screen” is being applied. See Figure 5.6 for an example.

Figure 5.6. MIP slab view.

Related Topics

5 COBRA High-Definition 3D Visualisation.


5.13. Importing slices to view.

Importing slices to view.

A user can visualize a volumetric dataset (slices) reconstructed earlier and existing on a hard drive.

Requirements:

1) Slices can be represented in DICOM format, one file per slice. Our DICOM conformance does not include a claim of supporting compressed slices but typically such volumetric data can be viewed.

2) Solid DICOM files (one file for the whole volume) are not supported

3) Slices can be represented in a plain format, one file per slice, array of signed short (2 bytes per voxel) integers. If a slice file has a header then it will be skipped using an assumption that slices are quadrangle. Slices represented by files with a footer or non quadrangle slices are not allowed.

A user loads the desired volumetric data through the item Open in the application pull-down menu.

Related Topics

5 COBRA High-Definition 3D Visualisation.


PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.

Related Topics

1 Introduction
2 COBRA Reconstruction Engine. Release history.
3. System Requirements and Performance
4. Input Data
5. Output Data
6. Reconstruction parameters
7. Pre-Processing and Post-Processing Procedures
8. Streak and Metal Artifact Reduction Algorithm (SAMARA)
9. Feldkamp artifact correction in half beam
10. Distributed (Cluster) Solutions
11. Nearest Neighbor vs. Bi-Linear Interpolation


1 Introduction

Introduction

This chapter describes Exxim's Cone Beam Reconstruction Software Suite, COBRA Version 6/7, from a user’s point of view. The package includes a description:

· Input projection data and supported formats

· Output volumetric data and supported formats

· Implementation of cone-beam reconstruction and corrections

· Controlling the reconstruction process with xxm parameter file

References:

[1]: L.A. Feldkamp, L.C. Davis, and J.W. Kress, “Practical cone-beam algorithm”, J.Opt.Soc.Amer., vol. A1, pp. 612-619, 1984.

[2]: D.L. Parker, “Optimal short scan convolution reconstruction for fan beam CT” Med.Phys. 9, 254-257 (1982).

[3]: DICOM website http://medical.nema.org/

[4]: Hounsfield scale (HU) 1: Med Phys. 1980 Jul-Aug;7(4):283-90. (Also short explanation http://en.wikipedia.org/wiki/Hounsfield_scale )

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
1.1 COBRA Reconstruction Engine Functionality – Overview


1.1 COBRA Reconstruction Engine Functionality – Overview

COBRA Reconstruction Engine Functionality – Overview

Exxim’s COBRA software provides the following Cone –Beam CT functionality:

1. Full 3-dimensional image reconstruction from a set of 2-dimensional projection images , and associated geometry information. COBRA supports the following modes of operation:

1) Full Beam 360: symmetric detector configuration and 360 degrees of projections.

2) Short Scan: symmetric detector configuration and scan angles between 180 degrees + fan angle, and 360 degrees.

3) HalfBeam or Extended View: asymmetric detector and 360 degrees scan angle.

4) 3x Extended View: multiple detector positions and 720 degrees scan angle.

5) Stacked volumes: multiple reconstructed volumes stitched into a bigger solid volume along the axis of rotation.

2. Geometric information as well as control of the reconstruction process happen through a text file parameter.xxm, and can be edited by the user through Windows® Notepad.

3. Input projections to COBRA are read from a hard disk location. Multiple formats are accepted.

4. Output images from COBRA are stored as one file per slice in a user designated location.

5. Numerous Error! Reference source not found. influence image quality, including interpolation method, convolution kernel, artifact reduction, post-processing and data formats (density, Hounsfield Units, DICOM).

6. A geometry calibration tool called Geo Calibration supports the measurement of variable scanner misalignment parameters which can then be used in geometry correction files. This greatly enhanced spatial resolution.

COBRA can be easily adapted to all scanner configurations as long as the source trajectory is approximately circular, or a turn-table design is used. This flexibility of use, however, forces the user to study the following User Manual to fully utilize the product.

Related Topics

1 Introduction

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2 COBRA Reconstruction Engine. Release history.

COBRA Reconstruction Engine. Release history.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
2.1 Version 7 release history
Summary of changes in version 7.1.ZZ
2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.1 Version 7 release history

Version 7 release history

Related Topics

2 COBRA Reconstruction Engine. Release history.


Summary of changes in version 7.1.ZZ

The reconstruction engine functionality of Cobra version 7.1.2 (first publicly available) is identical to version 6.10.5

Related Topics

2 COBRA Reconstruction Engine. Release history.


2.2 Version 6 release history

Version 6 release history

Related Topics

2 COBRA Reconstruction Engine. Release history.
2.2.1 Summary of changes in version 6.10.ZZ
2.2.2 Summary of bug fixes in version 6.9.30
2.2.3 Summary of changes in version 6.9.ZZ
2.2.4 Summary of changes in version 6.8.ZZ.
2.2.5 Summary of changes in version 6.3.ZZ
2.2.6 Not Supported in Version 6

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2.1 Summary of changes in version 6.10.ZZ

Summary of changes in version 6.10.ZZ

New:

An advanced post-processing procedure controllable by the following tags

PARTAG_POSTPROFACTOR (smoothing sigma factor),

PARTAG_POSTPROAPRTHRZ (smoothing hrz aperture),

PARTAG_POSTPROAPRTVRT (smoothing vrt aperture),

PARTAG_POSTPROMEDIANAPRT (median aperture),

PARTAG_POSTPROINTERCUBESIZE (intermediate cube size)

See section 7.6 for additional details.

Controlling pre-processing smoothing by separate introduced tags

PARTAG_PREPROSMOOTHFACTOR (smoothing sigma factor)

PARTAG_PREPROSMOOTHAPRTHRZ (smoothing hrz aperture),

PARTAG_PREPROSMOOTHAPRTVRT (smoothing vrt aperture)

See section 7.4 for additional details.

Auto-scale volume calibration controlled by

PARTAG_SLICE_AUTOWATER

See Section 6.23 Dynamic slice scale calibration (also called water adjustment) for details.

Ring Artifact Reduction post-processing procedure controlled by

PARTAG_DERINGON

See Section 7.7 Ring Artifact Reduction for details.

Wider choice of filter kernels. See section 7.2 for additional details.

Fixes:

- Gamma slice scale was applied incorrectly before.

Related Topics

2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2.2 Summary of bug fixes in version 6.9.30

Summary of bug fixes in version 6.9.30

- Flipping cube in Z direction was incorrect in some modes

- Air (bright field calibration) was incorrect in half-beam mode

- In GXM mode a detector pivot controlled by PARTAG_DETPIVOT was not neglected.

- GPU reconstruction was incorrect when the volume is offset and asymmetric

Related Topics

2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2.3 Summary of changes in version 6.9.ZZ

Summary of changes in version 6.9.ZZ

Treatment of value set by OPTTAG_3DBUFFERSIZE has been improved. This tag can be set to any value. Defines the desired size of used 3D reconstruction buffer (in MB). Also relevant for graphics card RAM (see section 6.8)..

Utilization of multiple graphics processors (GPU). New tag OPTTAG_ENGINEQTY. The tag defines the number of GPU installed and used. See also section 6.8.

New reconstruction mode called 3-x view has been introduced. In this mode every volume scan is a combinations of two 360-degrees scanner gantry (or rotational table) revolutions. The first revolution is being made with the detector in a standard central (relatively axis of rotation) position. The second revolution (might be done in opposite direction) is being made with the detector in offset position (see section 6.15). It allows expanding a field of view diameter by factor 3 (vs. standard detector central position)

New stacked volume algorithm is available; PARTAG_STACKEDVOLMODE has been introduced (see section 6.18). When is set to 1 then subvolumes are being adjusted by translation and rotation. When is set to 0 then only translation is being used in alignment process.

New advanced noise-reduction preprocessing filter option has been introduced. Controlled by the tag OPTTAG_VRTSMOOTH. See also section 8.4.2.

Reconstructed volume auto detect option. If the reconstructed volume is not defined by User (for example, in XXM file) then the automatic settings are applied. Automatically calculated output volume fits the reconstructed field of view; its resolution is ~30% less than the finest theoretical resolution defined by the detector pitch size. See also section 6.22.

Shepp-Logan preprocessing filter has become a default option (instead of a ramp filter). This is a customers’ request.

Dynamic cropping mode. If the scanner hardware has an option to make a dynamic control of collimator blades then non-co-axial partial field of view can be reconstructed. Please contact Exxim (info@exxim-cc.com) for details.

Faster extended mode (Half-beam) reconstruction. Tag PARTAG_FASTEXTVIEW has been untroduced. See also section 6.9.

Direct reconstruction of .CAT files. Please contact Exxim (info@exxim-cc.com) for details.

Related Topics

2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2.4 Summary of changes in version 6.8.ZZ.

Summary of changes in version 6.8.ZZ.

Stacked volume mode. Stacked volume mode allows to stack several (from 2 to 12) cylindrical sub-volumes one on top of the other, thus increasing the effective detector size in V. Several scans must be performed and the object should be moved in vertical z-direction between the scans. See also section 6.18.

Dynamic slice scale calibration. We also call it water adjustment. Allows aligning density profiles automatically. Also compensates cupping and doming artifacts. Controlled by the tag PARTAG_SLICE_AUTOWATER. See also section 6.23.

New tag OPTTAG_GAMMASLICESCALE. A set value controls a multiplicative scale factor applied for values above 1300. See also section 6.10.

Related Topics

2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2.5 Summary of changes in version 6.3.ZZ

Summary of changes in version 6.3.ZZ

Utilization of graphics processors (GPU). COBRA Version 6 implements acceleration of image reconstruction using the GPU capabilities of a high-end graphics card. This allows performing calculations about 3 times faster than on a modern CPU. Multiple graphics cards can improve this further. This mode is turned on by BPMODETAG_USE_GPU tag. Note that this feature is sold as a separate option of COBRA.

Detector Cropping. Many detectors have bad pixels near the edge. That can distort the reconstructed image. The projection margins are internally cropped out before Preprocessing and back-projection to avoid these distortions.

Pivot and Air level are controlled by tags. Pivot is an angular detector misalignment, more specifically rotation around the vector normal to the detector surface. Even small Pivots (fractions of a degree) require correction. In version 5, file pivot.bin was used for correction. Starting from Version 6, a static tag, PARTAG_DETPIVOT, is used.

Air level is the average detector signal without an object. In version 5, file air.raw was used to specify air level and gain variation across the panel. Starting from Version 6, a single value, PARTAG_AIRLEVEL, may be used if the detector panel provides its own gain calibration.

Reconstruct areas not visible in all projections

COBRA software can reconstruct object areas that are not visible in all projections. This is the case in sections at the upper and lower borders of a cylindrical field of view. Missing line integrals lead to image distortion in these partially illuminated areas. Still, this mode can be used to obtain additional information from the input data. See Partially illuminated areas section and PARTAG_SHOWEXTRA tag for details.

Batch calculations

Starting from version 6, COBRA can automatically run calculations for a sequence of several datasets. See Error! Reference source not found. section for more details.

Scanner Geometry Calibration

COBRA Version 6 contains a geometry calibration component for cone-beam CT scanners called COBRA Geo Wizard. It extracts a set of geometry parameters for every projection from data taken with the optional Exxim Calibration Phantom.

Flip Cube Tag

Allows to flip output cube (X,Y, Z may apply )

Beam Hardening Corrections

Simple polynomial correction applied to the attenuation value of the measured signal.

Related Topics

2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2.6 Not Supported in Version 6

Not Supported in Version 6

Solid volume output. Output to solid volume is not supported (all slices in a single file).

PARTAG_PROJACQUIRED. Obsolete starting version 6.9.30. Is ignored if set.

PARTAG_SLICESIZEX. Obsolete starting version 6.9.30. Is ignored if set.

PARTAG_SLICESIZEY. Obsolete starting version 6.9.30. Is ignored if set.

PARTAG_SLICEQTY. Obsolete starting version 6.9.30. Is ignored if set.

API CobraDispatcher_DeliverInlineScannerParameter() with the corresponding relevant tags:

PARTAG_INSTANT_ANGLEPOSITION

PARTAG_INSTANT_DETOFFSETU

PARTAG_INSTANT_DETOFFSETV

PARTAG_INSTANT_SRCOBJDIST

PARTAG_INSTANT_SRCDETDIST

PARTAG_INSTANT_HORTILTING

PARTAG_INSTANT_VRTTILTING

PARTAG_INSTANT_PIVOTING

PARTAG_INSTANT_UPITCH

PARTAG_INSTANT_VPITCH

PARTAG_INSTANT_PROJMATRIX

Related Topics

2.2 Version 6 release history

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


3. System Requirements and Performance

System Requirements and Performance

COBRA Version 6 can be installed on any PC with Windows 2000/XP/Vista.

COBRA Version 7 can be installed on any PC with Windows 2000/XP/Vista/7.

To take full advantage of COBRA performance, the following configuration or better, is recommended:

Quad CPU / 3 GHz / 4 GB RAM/ Windows XP or Windows 7 64 bit platform .

If the graphics option is to be used then our recommendation is:

Quad CPU / 3 GHz / 4 GB RAM/ Windows XP XP or Windows 7 64 bit platform / NVIDIA GeForce GTX285.

Both Windows platforms: 32-bit and 64-bit can be used. We do not recommend Vista (in most cases it is causing a substantial slow down)

PC configuration | Input projections | Output volume | Reconstruction time (nearest neighbor mode)
Dual CPU / 3 GHz / 4 GB RAM GPU NVIDIA GeForce GTX285 | 320 projections 1024x1024 320 projections 1024x1024 | 1024x1024x1024 1024x1024x1024 | Reconstruction: Approx 11 min Total (including slice dumping): Approx 12 min Reconstruction: ~40 sec Total time incl. slice saving: ~120 sec

Table 3.1. Benchmarks of COBRA performance

Main factors affecting reconstruction performance and our recommendation regarding optimal hardware

Reconstruction time depends on scanner parameters (detector size in pixels, number of projections) and on reconstructed volume (number of voxels). All values shown above have been obtained under conditions where projection size, volume size, and resolution fit together. Cases where projection/volume resolutions are significantly different (e.g. a projection size of 10242 being reconstructed to a volume of 2563), can affect performance up to a factor 2: slower or faster, depending on the exact configuration.

A recommended PC configuration for COBRA has 4 GB memory on board and maximum cache. One can instantly gain speed using quad-CPU’s or/and graphics card accelerator. At the same time please be aware that hyper-threading units can slow down the process.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.


4. Input Data

Input Data

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
4.1. Input Projections
4.2. Coordinate system

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


4.1. Input Projections

Input Projections

Input projections are represented by files (one file per projection) using arrays of 16-bit integers or 32-bit floats. The files may have a header or may be header-less. In any case, COBRA cannot extract any parameters from the headers. All reconstruction parameters have to be described in a parameter file (see section 6 Reconstruction Parameters). The input file naming conventions can be set through the parameter file, as will be described later.

Related Topics

4. Input Data

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


4.2. Coordinate system

Coordinate system

The calculations on the input projections and the output reconstruction volume are based on the following coordinate systems:

The object is placed in a coordinate system x,y,z (as shown in Figure 7 : Scanner Coordinate System) which is a fixed ‘world coordinate system’ in a rotating gantry scanner, or a rotating coordinate system in a turn-table design. The axis of rotation is the z-axis.

The Central Ray is the line that passes through the Source and the rotation axis and is perpendicular to the rotation axis. The detector is usually postioned almost perpendicular to the central ray, but the angle between the central ray and the detector plane is not exactly 90 degrees. Note that there are different definitions of central ray may be found in other sources. For example Noo’s paper defiens it a perpendicular to the detector plane.

Figure 7 : Scanner Coordinate System

Important points in Figure 7 : Scanner Coordinate System are Source (S), intersection of Central Ray with the Rotation Axis (O) and with the Detector (D), physical center of the cube (A) and the detector (B). Note D is NOT a projection of S on the detector plane.

There are detector coordinates u and v. Ideally, u is parallel to the x,y-plane and v is anti-parallel to z. In reality there are always small detector tilts around u and v axis and detector pivot (rotation around point D).

COBRA tags describing geometry:

PARTAG_SRCOBJDIST, Source-object distance (DSO), is SO on the picture.

PARTAG_SRCDETDIST, Detector-object distance (DDO), is DO on the picture

PARTAG_CUBEORIGINX, PARTAG_CUBEORIGINY, PARTAG_CUBEORIGINZ are coordinates of the center of the cube (A) relative to O.

PARTAG_DETOFFSETU, PARTAG_DETOFFSETV (Uoffset, Voffset) are coordinates of the center of the detector (B) relative to D.

PARTAG_DETPIVOT (h) is rotation angle of the detector around D. Angle berween v axis and line intersection of detector plane and plane of centeal ray and axis of rotation. Ideally 0. Should not be bigger than 1-3 degrees.

Note detector has 6 degrees of freedom relative to O: 3 spatial ( DDO, U- and V-offsets), 3 angular (pivot and 2 tilts around u and v axis). In COBRA detector tilts are assumed to be small and ignored since their affect on image quality is proportional to the cosine of the tilt.

Related Topics

4. Input Data

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


5. Output Data

Output Data

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
5.1. Output Slices
5.2. DICOM compliance

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


5.1. Output Slices

Output Slices

Output slices are represented by files (one file per slice) using arrays of 16-bit integers (short data type in C). The files may have a header or may be header-less. All reconstruction parameters have to be described in a parameter file file (see section 6 Reconstruction Parameters). The output file naming conventions can be set through the parameter file, as will be described later.

Related Topics

5. Output Data

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


5.2. DICOM compliance

DICOM compliance

Besides the header-less plain array of 16-bit integers, COBRA also provides output into "subset" of standard DICOM format (See DICOM home page http://medical.nema.org/), with the following restrictions:

a. One file contains one slice (the whole volume thus is represented by a series of files)

b. Files are non-compressed

c. File names are provided without Exxim ID and study ID embedded into file names, since Exxim does not have assigned DICOM ID. Rather, they are specified by a name template string through a parameter file (see section 6.4)

The resultant DICOM files contain a minimal set of DICOM tags that can be handled by most viewers and workstations. The geometric tags are obtained from the input .xxm parameter files; the demographic tags, however, are created using default dummy values. After the first reconstruction, a file named “research.xxm” file will be generated (if it did not exist) in the source data folder, and it contains the demographic tags and their corresponding values applied. To change the value of a tag, the user can just modify the value assigned to that tag in the file research.xxm using any text editor. The file then can be used for subsequent reconstructions to generate images with the desired tag values, by placing it in the input projection directory.

The default tags included in the COBRA-generated research.xxm file are listed in the following example:

//ROOT ID

DCM_ROOT_UID=1.2.826.0.1.3680043.2.855.

//PATIENT NAME

DCM_TAG_0010_0010=CT_data

//PATIENT ID

DCM_TAG_0010_0020=CT_data_20061012_124532

//ID Institution Name

DCM_TAG_0008_0080=Here_Is_Inst_Name

//ID Station Name

DCM_TAG_0008_1010=Station_name_HERE

//PATIENT BIRTHDAY

DCM_TAG_0010_0030=19500101

//MANUFACTURER

DCM_TAG_0008_0070=MANUFACTURER

//ACCESSION_NUMBER

DCM_TAG_0008_0050=123456

//MODALITY

DCM_TAG_0008_0060=CT

//REFERRING MD

DCM_TAG_0008_0090=REFERRING_MD

//STUDY_DESCRIPTION

DCM_TAG_0008_1030=DESCRIPTION

//OPERATOR

DCM_TAG_0008_1070=OPERATOR

//DCM_RELSERIESNUMBER

DCM_TAG_0020_0011=1

//ORIENTATION

DCM_TAG_0020_0037=1.000000\0.000000\0.000000\0.000000\1.000000\0.000000

//PIXEL REPRESENTATION

DCM_TAG_0028_0103=1

//STUDY ID

DCM_TAG_0020_0010=STUDY_ID

To change the patient name, for example, the user will just have to edit the value after the corresponding tag “DCM_TAG_0010_0010” and assign the right name to it in this syntax: DCM_TAG_0010_0010=Indiana Jones

This file can be precreated and/or edited. For example, you may add tag:

DCM_TAG_MMMM_NNNN = VALUE, where MMMM and NNNN are the corresponding DICOM codes for that applied tag. The change will take effect in subsequent reconstructions.

Related Topics

5. Output Data

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6. Reconstruction parameters

Reconstruction parameters

The scanner geometry and other parameters relevant for the reconstruction are defined in parameter files. A description of these files follows.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
6.1. Main parameter file
6.2. Tags describing reconstruction volume
6.3. Input/output data naming
6.4. Input data formats
6.5. Output data formats and post-processing
6.6. Pre-processing
6.7. Reconstruction Modes/Branches. System tags
6.8. Reconstructing bigger volume with smaller detector: Stacked volume, 3x Extended Volume
6.9. Scale factors
6.10. SAMARA tags
6.11. Tags applicable only in SDK
6.12. Detector offset and direction of rotation (Full Beam)
6.13. Partially illuminated areas
6.14. HalfBeam or Extended Field of View
6.15. 3X Extended Field of View
6.16. Stacked volumes
6.17. Files describing angular-dependent geometry
6.18. Protrusion correction modes
6.19. Simple Beam-Hardening Correction
6.20. Reconstructed volume auto detect option.
6.21. Dynamic slice scale calibration (also called water adjustment).
6.22. Angular-dependent cropping and dynamic collimation.
6.23. Special data formats.
6.24. Supported modes illustrated by video clips.
6.25. Optional use of projective transform matrices.
6.26. Uncompressed (Raw) and Compressed DICOM output


6.1. Main parameter file

Main parameter file

General information is contained in a parameter file (a regular text file with extension .xxm). The parameter file is constructed of an array of strings, one parameter per string, with the following syntax:

TAG = value

or

TAG

An example of the file content:

PARTAG_SRCDATAPATH      = C:\CT_DATA\data

PARTAG_DSTDATAPATH      = C:\CT_IMAGES\images

PARTAG_SRCOBJDIST       = 1000.000000

PARTAG_SRCDETDIST       = 1550.000000

PARTAG_SCANANGLE        = 360.000000

PARTAG_STARTANGLE       = 0.000000

PARTAG_PROJRECON        = 320

PARTAG_DETSIZEU         = 1024

PARTAG_DETSIZEV         = 1024

PARTAG_DETOFFSETU       = 0.000000

PARTAG_DETOFFSETV       = 0.000000

PARTAG_DETPITCHU        = 0.400000

PARTAG_DETPITCHV        = 0.400000

PARTAG_CUBESIZEX        = 1024

PARTAG_CUBESIZEY        = 1024

PARTAG_CUBESIZEZ        = 1024

PARTAG_CUBEPITCHX       = 0.250000

PARTAG_CUBEPITCHY       = 0.250000

PARTAG_CUBEPITCHZ       = 0.250000

PARTAG_SCALEFACTOR      = -1.000000

      PARTAG_INPUTHEADERLEN   = 0

PARTAG_INPUTISUNSIGNED  = 0

PARTAG_INPUTREQSWAP     = 0

BPMODETAG_NRSTNBR

Tags can be defined in any order. Missing tags are assigned default values as given in the tables below.

Tags describing scanner geometry

Tag name | Description | Default Value | Remarks | Type
PARTAG_PROJRECON | Number of projections to reconstruct | 360 |  | Int
PARTAG_SRCOBJDIST PARTAG_SRCDETDIST | The distance in mm between X-ray source and origin (rotation center) The distance in mm between X-ray source and detector | 500 1000 | Can be angle-dependent. In that case, applicable arrays are represented by files: SrcOrigDist.bin OrigDetDist.bin | Float Float
PARTAG_SCANANGLE PARTAG_STARTANGLE PARTAG_ROTATIONDIR | Scan angle ( degrees) Start angle ( degrees) Rotation direction 1 is CW -1 is CCW | 360 0 1 | Angular positions can be represented by the file angle.bin. If so all information in xxm file is ignored during reconstruction | Float Float Int (= 1 or -1)
PARTAG_DETSIZEU PARTAG_DETSIZEV | Projection size (pixels). U is horizontal axis V is anti-parallel to the axis of rotation | 512x512 |  | Int Int
PARTAG_DETOFFSETU PARTAG_DETOFFSETV | Detector offset in pixels (coordinates where central ray hits the detector) | 0,0 | Can be angle-dependent. In which case applicable arrays are represented by files: uoffset.bin voffset.bin | Float Float
PARTAG_DETPITCHU PARTAG_DETPITCHV | Detector pitch size, mm | 1.0, 1.0 |  | Float Float
PARTAG_DETPIVOT | Detector pivot ( degrees) (detector rotation around its norm) | 0 | Can be angle-dependent, in which case the applicable array is represented by file: pivoting.bin | Float

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.2. Tags describing reconstruction volume

Tags describing reconstruction volume

Tag name | Description | Default Value | Remarks | Type
PARTAG_CUBESIZEX PARTAG_CUBESIZEY PARTAG_CUBESIZEZ | Reconstruction volume size, pixels | 512x512x512 |  | Int Int Int
PARTAG_CUBEORIGINX PARTAG_CUBEORIGINY PARTAG_CUBEORIGINZ | Reconstruction volume origin, pixels | 0,0,0 | One can reconstruct a cube with eccentric center | Int Int Int
PARTAG_CUBEPITCHX PARTAG_CUBEPITCHY PARTAG_CUBEPITCHZ | Voxel pitch size, mm | 1,1,1 |  | Float Float Float
PARTAG_SLICEFLIPX PARTAG_SLICEFLIPY PARTAG_SLICEFLIPZ | Flips the cube at output if set to 1 | 0 0 0 |  | Int Int Int

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

NB. All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.3. Input/output data naming

Input/output data naming

Tag name | Description | Default Value | Remarks | Type
OPTTAG_PRJNAMEFORMAT | Format string for source file in C-syntax (projection name convention) | raw.%04i | e.g. raw.325 | Char
OPTTAG_SLCNAMEFORMAT | Format string for slice file in C-syntax (slice name convention) | %04i.slice | e.g. 416.slice | Char
PARTAG_PRJSTARTFROM | The projection counter starts from this number (0-255) | 0 | Needed if, e,g. , the set of projections to reconstruct is 0010.prj – 0370.prj | Char
PARTAG_SRCDATAPATH | Source data folder | The folder where the current xxm file exists | No need to set this tag if xxm file is in the same folder as data | Char
PARTAG_DSTDATAPATH | Slice data folder | - “ - | No need to set this tag if xxm file is in the same folder as slices | Char

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

NB. All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.4. Input data formats

Input data formats

Tag name | Description | Default Value | Type
PARTAG_INPUTHEADERLEN | Projection file has a header. The length of the header (in bytes) is set by this tag | 0 | Int
PARTAG_INPUTISUNSIGNED | The projection contains unsigned 16-bit integers | 0 | Int (=0 or 1)
PARTAG_INPUTREQSWAP | The projection contains big-endian 16-bit integers | 0 | Int(=0 or 1)
PARTAG_INPUTLOGGEDFLOAT | Projection contains logged attenuation or filtered data in 4-byte floating point format | 0 | Int (=0 or 1)
PARTAG_CROP_LEFT PARTAG_CROP_RIGHT PARTAG_CROP_UP PARTAG_CROP_DOWN | The projection margins to be internally cropped out before Preprocessing and backprojection | 0 0 0 0 | Int Int Int Int
PARTAG_TRANSPOSED_PRJ PARTAG_CATFORMAT PARTAG_HISFORMAT | For the transposed tif projections See section 6.27 | 0 0 | Int(=0 or 1) Int(=0 or 1) Int(=0 or 1)

Remarks.

PARTAG_INPUTLOGGEDFLOAT. COBRA does not accept intensity (raw) data in the floating point format

PARTAG_INPUTREQSWAP. Setting to 1 means big endian

PARTAG_CROP_LEFT… PARTAG_CROP_DOWN. The effective detector size after cropping has to be remained divisible by 4.

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.5. Output data formats and post-processing

Output data formats and post-processing

Tag name | Description | Default Value | Type
PARTAG_MINUS1000 | Converting slice from density values to HU if set to 1 | 0 | Int (= 0 or 1)
PARTAG_SLICEOFFSETVALUE | Arbitrary offset of reconstructed values | 0 | Int
PARTAG_POSTPROFACTOR PARTAG_POSTPROAPRTHRZ PARTAG_POSTPROAPRTVRT | 3-dimensional de-noising procedure | 0 | Int Int Int
PARTAG_POSTPROMEDIANAPRT PARTAG_POSTPROINTERCUBESIZE PARTAG_DICOM | DICOM output |  | Int Int Int (=0..3)
PARTAG_NEGATIVE_DENIED | Negative densities are converted to 0 | 0 | Int
PARTAG_SLICEFLIPX PARTAG_SLICEFLIPY PARTAG_SLICEFLIPZ PARTAG_SLICE_AUTOWATER PARTAG_DERINGON | Flips the cube at output if set to 1 Dynamic slice scale calibration (also called water adjustment) Tuning on/off postprocessing Ring Artifact Reduction procedure | 0 0 0 0 | Int (=0 or 1) Int(=0 or 1) Int(=0 or 1) Int(=0 or 1)

Remarks.

PARTAG_MINUS1000. Subtracts 1000 from voxel values. Precise HU require scanner calibration with a water tank.

PARTAG_SLICEOFFSETVALUE. Just adding operation

PARTAG_POSTPROFACTOR… PARTAG_POSTPROINTERCUBESIZE. See 7.6 for details

PARTAG_NEGATIVE_DENIED. Tag is ignored (always =1) if DICOM format or post-pro de-noising are active

PARTAG_DICOM. See 6.28 for details

PARTAG_SLICE_AUTOWATER. See Section 6.23 Dynamic slice scale calibration (also called water adjustment) for details

PARTAG_DERINGON. See Section 7.7 Ring Artifact Reduction for details

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.6. Pre-processing

Pre-processing

Tag name | Description | Default Value | Type
PARTAG_INPUTDOWNSAMPLE_X | Input projection is downsampled (binned) along U (horizontal) axis by defined factor | 0 | Int (=0, 1, 2, 4,8)
PARTAG_INPUTDOWNSAMPLE_Y | Input projection is downsampled (binned) along V (vertical) axis by defined factor | 0 | Int (=0, 1, 2, 4,8)
PARTAG_INPUTDOWNSAMPLED | If set the detector is down-sampled (binned) by factor 2x2 | 0 |
OPTTAG_ZFILTERN | Coefficients 0-15 for V (vertical) axis filter (N stands for any number 0-15) | 0 | Int (=0…255)
OPTTAG_AIRCAL | Use air calibration step in Preprocessing procedure | 1 | Int (=0 or 1)
PARTAG_AIRLEVEL | To supply a constant value as the air intensity | 32000 | Int
PARTAG_OFFSET | Dark field | 0 | Int
OPTTAG_LOG | Use logarithm step in Preprocessing procedure | 1 | Int (=0 or 1)
OPTTAG_OFFSET | Use offset step in Preprocessing procedure | 1 | Int (=0 or 1)
OPTTAG_FFT | Use FFT step in Preprocessing procedure | 1 | Int (=0 or 1)
OPTTAG_PARKER | Use Parker weighting step in Preprocessing procedure | 1 | Int (=0 or 1)
OPTTAG_SLVERTFILT | Use vertical filtering in Preprocessing procedure | 1 | Int (=0 or 1)
OPTTAG_VRTSMOOTH | Use more vertical filtering in Preprocessing procedure | 0 | Int (=0 or 1)
OPTTAG_FILTERNUM | Used filter (FFT step) in Preprocessing procedure | 1 | Int
OPTTAG_DEADPIXDETECT | Auto detecting dead pixels on the detector. The auto detection process is applied to AirRaw file (if one exists). | 1 | Int (=0 or 1)
OPTTAG_PROTRUSIONCMODE | Select which build-in method to use for protrusion correction 0: no correction 1: based on linear functions 2: based on non-linear functions | 1 | Int (=0 …2)
PARTAG_BHFACTOR0 PARTAG_BHFACTOR1 PARTAG_BHFACTOR2 PARTAG_BHFACTOR3 PARTAG_PREPROSMOOTHFACTOR PARTAG_PREPROSMOOTHAPRTHRZ PARTAG_PREPROSMOOTHAPRTVRT | Beam-Hardening Correction Factors (polynomial coefficients). Used for the absorption nonlinearity correction. Preprocessing smoothing procedure control | 0 0 0 0 0 0 0 | Float Float Float Float Int Int Int

Rematrks.

PARTAG_AIRLEVEL. When there exists “airraw” file, then bright field array in this file takes first priority

OPTTAG_FILTERNUM. See 7.2 for details

OPTTAG_PROTRUSIONCMODE. Mode 2 should only be used in biomedical applications.

PARTAG_BHFACTOR0… PARTAG_BHFACTOR3. See 6.21 for details.

PARTAG_PREPROSMOOTHFACTOR… PARTAG_PREPROSMOOTHAPRTVRT . See 7.4 for details

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.7. Reconstruction Modes/Branches. System tags

Reconstruction Modes/Branches. System tags

Tag name | Description | Default Value | Type
BPMODETAG_NRSTNBR | Using nearest neighbor interpolation during back-projecting | effective | None
BPMODETAG_LINITRP | Using bi-linear interpolation during back-projecting | Non-effective | None
BPMODETAG_CONEBEAM | Conventional cone-beam setup | effective |
BPMODETAG_GENERIC | Cone-beam setup defined by projective transform matrices | effective | None
PARTAG_DUMPVOLBG | In multi-pass , dumping volume on the background | 0 | Int (=0 or 1)
OPTTAG_CFA | Correction of Feldkamp artifact | 0 | Int (=0 or 1)
PARTAG_RESORT | Resort to parallel before backprogecting | 0 | Int (=0 or 1)
BPMODETAG_USE_GPU | Use GPU device | 0 | Int (=0 or 1)
OPTTAG_ENGINEQTY | Number of graphics cards to be used for reconstruction | 1 |
OPTTAG_3DBUFFERSIZE OPTTAG_WORKDIR | 3D buffer size for GPU reconstruction Setting the folder for intermediate output (logging , etc.) | Auto CobraDispatcher.dll location | Int Char

Remarks.

BPMODETAG_NRSTNBR. Adding this tag to xxm file makes this mode effective.

BPMODETAG_LINITRP. Adding this tag to xxm file makes this mode effective.

BPMODETAG_CONEBEAM. Adding this tag to xxm file makes this mode effective.

BPMODETAG_GENERIC. Adding this tag to xxm file makes this mode effective. Projective transform matrices have to be provided (COBRA_Generic.gxm file). See Error! Reference source not found. (6.27) for details.

OPTTAG_CFA. See section 13 Feldkamp artifact correction in half beam for details

OPTTAG_3DBUFFERSIZE. Buffer size is calculated automatically if the tag is not used. In general the recommended value is a half of available memory buffer but not bigger than 1.5 GB.

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.8. Reconstructing bigger volume with smaller detector: Stacked volume, 3x Extended Volume

Reconstructing bigger volume with smaller detector: Stacked volume, 3x Extended Volume

Tag name | Description | Default Value | Type
PARTAG_SHOWEXTRA | Reconstruct areas not visible in all projections | 0 | Int (=0..2)
PARTAG_HBTC | Extended view (half beam) mode | 0 | Int (=0 or 1)
PARTAG_FASTEXTVIEW | Affects calculation of missing part of the projection in half_beam and 3xView | 0 | Int (=0 or 1)
3X View Extended Volume |  |  |
PARTAG_3XVIEW | Extended 3x view mode | 0 | Int (=0 or 1)
PARTAG_PRJ_STARTFROM_3X | Extended projection subset start index | 0 | Int
PARTAG_DET_OFFSET_U_3XEXT | Detector offset in U (3X View) | 0 | Float
Stacked volume |  |  |
PARTAG_PROJ_RECON0, PARTAG_PROJ_RECON1, … , PARTAG_PROJ_RECON11 | Projections to reconstruct, subsets #0, #1,…#11 | 0 | Int
PARTAG_STACKEDVOLQTY | Number of stacked subvolumes | 1 | Int (=1..12)
PARTAG_STACKEDVOLOVERLAP | Overlap of stacked subvolumes (%%) |  | Int (=1…100)
PARTAG_STACKEDVOLDIRECTION | Subvolume#0 is on top or bottom | 0 | Int (=0 or 1)
PARTAG_STACKEDVOLMODE | No anglular alignment = 0; anglular alignment = 1 | 0 0 | Int (=0 or 1)
PARTAG_STACKEDVOLADJUSTFACTOR | Ajusting signal level between adjcent subvolumes | 0 | Int (=1…100)

Remarks.

PARTAG_SHOWEXTRA. If set to 0 then not shown, 1- optimal, 2-maximal. See also Partially illuminated areas (section 6.15). Works only with GPU.

PARTAG_FASTEXTVIEW. Makes reconstruction faster, but may be less accurate.

PARTAG_3XVIEW… PARTAG_DET_OFFSET_U_3XEXT. See section 6.17 3X Extended Field of View PARTAG_PROJ_RECON0… PARTAG_STACKEDVOLADJUSTFACTOR. See section 6.18 Stacked volumes

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.9. Scale factors

Scale factors
Tag name | Description | Default Value | Remarks | Implementation
PARTAG_SCALEFACTOR | Factor for fitting the dynamic range of the filtered projections into signed word scale (see How to find the correct ScaleFactor for details) | 600 | Does not affect final slice values unless there is underflow or overflow | int
OPTTAG_SLICESCALE | multiplicative scale factor (full description is given in OPTTAG_SLICESCALE) | 1 | Use this factor for calibrating scanner to get correct density values | Float
OPTTAG_GAMMASLICESCALE | multiplicative scale factor applied for values above 1300 (full description is given in OPTTAG_SLICESCALE) | 1 | Use this factor for calibrating scanner to get correct density values | Float

Remarks.

See section 7.5 Scaling Procedure for details

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.10. SAMARA tags

SAMARA tags
Tag name | Description | Default Value | Type
SAMARATAG_HIGHCONTRASTLEVEL | SAMARA parameter controlling appearance of high contrast details | 0 | Int
SAMARATAG_LOWCONTRASTLEVEL | SAMARA parameter controlling appearance of low contrast details | 0 | Int
SAMARATAG_HIDENSLEVEL | SAMARA parameter controlling threshold of high density objects (metal) | 0 | Int

Remarks.

See section 12 Streak and Metal Artifact Reduction Algorithm (SAMARA) for details

SDK use remarks.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

All tags with the prefix <SAMARATAG> are set by CobraDispatcher_SetIntOptionParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefix < BPMODETAG> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.11. Tags applicable only in SDK

Tags applicable only in SDK
Tag name | Description | Default Value | Type
MODE_OFFLINE | Implementing in-line reconstruction | Effective | Adding this tag to xxm file makes this mode effective
MODE_INLINE | Implementing in-line reconstruction | Non-Effective | Adding this tag to xxm file makes this mode effective
MODE_INLINE_PARAMETERS | Implementing in-line parameter control | Non-Effective | Adding this tag to xxm file makes this mode effective
OPTTAG_APPDIR | Application directory | CobraDispatcher.dll location | Char
OPTTAG_DISTRIBUTED | Use distributed mode if =1 | 0 | Int (= 0 or 1)
OPTTAG_NODENAME | PC name |  | Char
PARTAG_INSTANT_ANGLEPOSITION PARTAG_INSTANT_DETOFFSETU PARTAG_INSTANT_DETOFFSETV PARTAG_INSTANT_SRCOBJDIST PARTAG_INSTANT_SRCDETDIST PARTAG_INSTANT_HORTILTING PARTAG_INSTANT_VRTTILTING PARTAG_INSTANT_PIVOTING PARTAG_INSTANT_UPITCH PARTAG_INSTANT_VPITCH PARTAG_INSTANT_PROJMATRIX | Setting instant scanner geometry parameter inline with the scanner | Obsolete , Non-Effective |

SDK use.

Interfaces CobraDispatcher_SetIntOptionYYY, where XXX stands for Int/Float/Char and YYY stands for Parameter or Option.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

All integer tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionParameter

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

Interfaces CobraDispatcher_SetReconMode.

All tags with the prefixes < BPMODETAG> and <MODE> are set by CobraDispatcher_SetReconMode

All tags described above are defined in the file TagDefinitions.h. Please note that there are many other tags with similar syntax defined in this file. Tags that not described above are for internal COBRA use or reserved for future implementations/versions.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.12. Detector offset and direction of rotation (Full Beam)

Detector offset and direction of rotation (Full Beam)

Please find below the example of the parameter file for the mouse scan available via Exxim’s web site www.exxim-cc.com .

PARTAG_SRCOBJDIST = 395.730011

PARTAG_SRCDETDIST = 529.590027

PARTAG_SCANANGLE = 195.000000

PARTAG_STARTANGLE = 0.000000

PARTAG_PROJRECON = 195

PARTAG_DETSIZEU = 512

PARTAG_DETSIZEV = 1022

PARTAG_DETOFFSETU = 4.000000

PARTAG_DETOFFSETV = 0.000000

PARTAG_DETPITCHU = 0.161760

PARTAG_DETPITCHV = 0.161760

PARTAG_CUBESIZEX = 512

PARTAG_CUBESIZEY = 512

PARTAG_CUBESIZEZ = 128

PARTAG_CUBEPITCHX = 0.100000

PARTAG_CUBEPITCHY = 0.100000

PARTAG_CUBEPITCHZ = 0.100000

PARTAG_CUBEORIGINX = 0

PARTAG_CUBEORIGINY = 0

PARTAG_CUBEORIGINZ = 0

PARTAG_OFFSET = 0

PARTAG_ROTATIONDIR = 1

PARTAG_SCALEFACTOR= 710.289673

OPTTAG_AIRCAL = 1

OPTTAG_LOG = 1

OPTTAG_OFFSET = 1

OPTTAG_FFT = 1

OPTTAG_PARKER = 1

OPTTAG_SLVERTFILT = 0

OPTTAG_VRTSMOOTH = 0

OPTTAG_FILTERNUM = 1

BPMODETAG_NRSTNBR

BPMODETAG_CONEBEAM

OPTTAG_SLICESCALE = 2.000000

OPTTAG_PRJNAMEFORMAT = raw.%04i

OPTTAG_SLCNAMEFORMAT = %04i.slice

Figure 8 : Detector offset and direction of rotation as seen in the xy-plane.

Figure 8 above demonstrates the effect of a detector displacement in the xy-plane along its u-coordinate:

  • The amount DetoffsetU measured in pixels has to be set in the parameter file to preserve good spatial resolution;
  • The FOV is a bit reduced as the fan angle γ becomes smaller;
  • In certain cases, it may be useful to offset the detector by ¼ pixel to improve sampling over 360 degrees.

Note that the FOV is slightly smaller than half of the detector width divided by the magnification SDD/SOD.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.13. Partially illuminated areas

Partially illuminated areas

Ideally, the scanned object should appear in every projection. However some distant and/or protruding parts of the object may be visible only in some projections. COBRA software will try to reconstruct these partially illuminated areas, however, artifacts may appear due to lack of projection data. PARTAG_SHOWEXTRA determines the fraction of partially illuminated areas that will be shown in the reconstructed slices.

PARTAG_SHOWEXTRA = 0 – only parts of the object that are visible on all projections (illumination angle = 360°) are shown. Partially illuminated areas are not shown.

PARTAG_SHOWEXTRA = 1 – Partially illuminated areas that are visible in at least half of the projections (illumination angle > 180°) are shown. Reconstructed volume will be a cylinder in this case.

PARTAG_SHOWEXTRA = 2 – Maximum possible reconstruction volume (illumination angle > 60°) are shown.

This is implemented only for reconstruction on GPU (BPMODETAG_USE_GPU = 1). For reconstruction on CPU, PARTAG_SHOWEXTRA will always be 0.

Figure 9 : Reconstruction volume illumination

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.14. HalfBeam or Extended Field of View

HalfBeam or Extended Field of View

This is a special mode of COBRA, which allows extending the FOV almost twice (1.6-1.8 times comaring to normal full beam) by using an asymmetric detector configuration as shown in Figure 10 below:

Figure 10 : Detector configuration for the half-beam mode.

The projections are now truncated on one side, and COBRA needs to handle this situation. This is controlled through the following parameters:

- DetoffsetU is now much larger corresponding to the amount of shift applied

- PARTAG_HBTC = 1 will invoke COBRA’s HalfBeam treatment

- RESORT = 1 or 0 gives a choice of reconstruction mode (resort = 1 stands for resorting to parallel rays, which introduces additional interpolation resulting in a smoother image).

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.15. 3X Extended Field of View

3X Extended Field of View

This is a special mode of COBRA, which allows extending the FOV more than 3 times (3-3.6 times compared to normal full beam) by performing 2 scans with 2 detector positions with different U-offsets as shown in Figure 10 below:

Figure 11 : Detector configuration for the 3X View mode.

The following tags must be set for this mode:

- PARTAG_3XVIEW = 1

- PARTAG_DETOFFSETU detector u-offset for projections set #1

- PARTAG_DET_OFFSET_U_3XEXT detector u-offset for projections set #2

- PARTAG_PRJSTARTFROM first projection number for projections set#1

- PARTAG_PRJ_STARTFROM_3X first projection number for projections set#2

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.16. Stacked volumes

Stacked volumes

Halfbeam and 3X Extended view modes allow increasing the diameter of the reconstructed cylinder or increase the effective detector size in U. Stacked volume mode allows stacking several (from 2 to 12) cylindrical sub-volumes one on top of the other, thus increasing the effective detector size in V. Several scans must be performed and the object should be moved in vertical z-direction in between the scans. Stacked volume is composed as shown in Figure 10 below:

Figure 12 : Stacked volume

Projections sets for each subvolume must be put into subfolders named \subvolume00\, \subvolume01\, and so on. *.bin files must be in the subfolders and can be different for each subvolume. Tags in *.xxm files are applied to all subvolumes and there is no way to apply different values of tags to different subvolumes other than using *.bin files.

The following tags must be set for this mode:

- PARTAG_STACKEDVOLQTY = 2…16 Number of stacked subvolumes

- PARTAG_PROJ_RECON0, PARTAG_PROJ_RECON1, … , PARTAG_PROJ_RECON11 Projections to reconstruct, subvolumes #0, #1,…#11

- PARTAG_STACKEDVOLOVERLAP Upper limit of overlap of stacked subvolumes (%%). COBRA will look for 2 slices with maximum similarity and will stitch subvolumes there. The tag says where to look. The bigger the PARTAG_STACKEDVOLOVERLAP the slower the stitching and the more memory COBRA uses for stitching

- PARTAG_STACKEDVOLDIRECTION = 0 or 1 (1 if subvol#0 is on top).

- PARTAG_STACKEDVOLMODE No anglular alignment = 0, adjusting volumes only in x,y,z; angular alignment = 1, adjusting volumes in all 6 degrees of freedom. Mode 1 is much slower than Mode 0.

- PARTAG_STACKEDVOLADJUSTFACTOR = 0…100 Ajusting the signal level between adjcent subvolumes. Sometimes this improves the quality, but often it is problematic. Better keep = 0.

NB. Regarding stacked volume overlap: Let us assume we have two scanned subvolumes (see chapter 6.18 in this user manual). Let us also assume that each subvolume has 512 slices. Since we want to combine these partial volumes together into one solid volume without a visible “seam” those subvolumes must be scanned with some overlap. It means – for example - that 100 lower slices of subvolume 1 should contain the same objects as 100 upper slices of subvolume 2. Hypothetically it is possible to make the scanner mechanics so precisely that we have an exact a priori knowledge about a geometrical correspondence between subvolume 1 and subvolume 2. For example, in the case of ideal mechanics we might know that slice #450 of subvolume 1 exactly corresponds to the slice #50 of subvolume 2. Then the combining procedure is pretty straightforward. However, in a real life we never know the positions of the subvolumes with sufficient accuracy, so we must find a correspondence by software means. Such a component is incorporated in Cobra. PARTAG_STACKEDVOLOVERLAP = 40 (for example) means that 40% of the slices of subvolume 1 and 40% of the slices of subvolume 2 are involved in such an adjustment process. If we are talking about 512 slices per subvolume then the correspondence is being searched involving 205 lower slices of subvolume 1 and 205 upper slices of subvolume 2. Practically this parameter should be set to the number that is a little bit bigger than the overlap produced by the scanner mechanics. If your mechanics is tuned to have an overlap of 100 slices (512 per subvolume total) then PARTAG_STACKEDVOLOVERLAP should be set to 25-30.

Important: Stacked volume is a memory-consuming mode. It consumes 2*PARTAG_CUBESIZEX* PARTAG_CUBESIZEY* PARTAG_CUBESIZEZ* 3*PARTAG_STACKEDVOLOVERLAP/100 bytes. Beware of out of memory problems.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.17. Files describing angular-dependent geometry

Files describing angular-dependent geometry

COBRA can reconstruct 3-D images from non-ideal geometries. E.g., the rotation speed may vary slightly during the scan, or the gantry may have some wobble. Under the assumption that these deviations are reproducible, they can be measured and written to correction files. COBRA will then use this geometry information per projection during the back-projection process.

All geometry files should be named as defined in the following table, and should be placed in the input data directory. Any number of these files can be omitted, in which case the default geometry parameters from the parameter file will be used. All files should contain arrays of 4-byte floating point numbers (float data type in MSVC). The length of arrays should be set to a number equal or bigger the amount of projection to reconstruct.

Filename

Description

angle.bin

uoffset.bin

voffset.bin

SrcOrigDist.bin

OrigDetDist.bin

HorTilting.bin

VrtTilting.bin

Pivoting.bin

CropLeft.bin

CropRight.bin

Value of angular stops in degrees

Value of horizontal and vertical detector offsets in pixels

(coordinates where the central ray intersects the detector)

Distance in mm between the X-ray source and the origin

(rotation center)

Distance in mm between the origin and the detector.

Angle in degrees of the detector tilt relative to its horizontal axis

(u-axis). Defaults to 0 if this file is omitted.

Angle in degrees of the detector tilt relative to its vertical axis

(v-axis). Defaults to 0 if this file is omitted.

Angle in degrees of the detector tilt relative central ray. Defaults to 0 if this file is omitted.

The width (pixels) of the strip (left side) which should be excluded from preprocessing (this strip is assumed to be shadowed by a collimator blade)

The width (pixels) of the strip (right side) which should be excluded from preprocessing (this strip is assumed to be shadowed by a collimator blade)

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.18. Protrusion correction modes

Protrusion correction modes

If the object is bigger then the scanner field of view, part of the object will not be visible on all projections and can produce artifacts during the reconstruction. To avoid this extrapolation should be performed outside of the field of view. The extrapolation is based on the image close to the detector edge.

COBRA’s protrusion correction algorithm is activated with the tag OPTTAG_PROTRUSIONCMODE which can have 3 different values, 0, 1 and 2. When it is set to 0, there will be no protrusion correction. Mode 1 assumes that image is linearly decaying outside the detector field of view. A one-dimensional schematic of this mode is given in Figure 13b. Mode 2 assumes that the object has nearly cylindrical shape and a non-linear arch-shape function is used for the extrapolation. A one-dimensional schematic of this mode is given in Figure 13c. The latter mode is frequently applicable to biological objects. The default setting is 1.

a) Mode = 0 (as measured)

b) Mode = 1 (linear)

b) Mode = 1 (non-linear)

Figure 13 : Protrusion correction algorithm.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.19. Simple Beam-Hardening Correction

Simple Beam-Hardening Correction

The applied correction is an implementation of the following formula:

Where an is a value assigned by PARTAG_BHFACTOR0, …, PARTAG_BHFACTOR3, in function CobraDispatcher_SetFloatParameter in SDK. By default and if all the coefficients are set to 0, the correction is not applied.

Sin is the signal attenuation value (logged signal calibrated against air), Sout is the output.

Please note that signal S is the ‘log attenuation’ value defined as:

S = ln(I0) – ln(I) = μd, where I0 and I are intensity values without and with object, μ is the attenuation coefficient and d is the path length through the object. S is in the range of 0 to about 12. A good way to obtain estimates for the coefficients is as follows:

Measure attenuation for 3 different thicknesses of a water-like substance suitable for the scanner (e.g. 5, 10 and 15cm for a head scanner).

Plot the measured values against d. They will show the effect of beam hardening, which tends to decrease the measured path length. Now fit the coefficients a1 through a3 to obtain a straight line with slope μ (a0 = 0 in practical cases). Expect a1 about 1, a2 >0 and a3<0.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.20. Reconstructed volume auto detect option.

Reconstructed volume auto detect option.

If the reconstructed volume is not defined by the user (for example, in XXM file) then automatic settings are applied. The automatically calculated output volume fits the reconstructed field of view; its resolution is ~15% less than the finest theoretical resolution defined by the detector pitch size.

Example.

Let us assume we have the following scanner geometry configuration:

PARTAG_SRCOBJDIST = 1000.000000

PARTAG_SRCDETDIST = 1550.000000

PARTAG_SCANANGLE = 360.000000

PARTAG_PROJRECON = 320

PARTAG_DETSIZEU = 1024

PARTAG_DETSIZEV = 1024

PARTAG_DETPITCHU = 0.400000

PARTAG_DETPITCHV = 0.400000

Then the default volume is

PARTAG_CUBESIZEX = 896

PARTAG_CUBESIZEY = 896

PARTAG_CUBESIZEZ = 896

PARTAG_CUBEPITCHX = 0.294931

PARTAG_CUBEPITCHY = 0.294931

PARTAG_CUBEPITCHZ = 0.294931

NB.

This option is applied separately for horizontal and vertical cube size. User may choose only one size defined automatically.

In the SDK the defined volume size is reported to the host program through a callback method ShowMessage().

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.21. Dynamic slice scale calibration (also called water adjustment).

Dynamic slice scale calibration (also called water adjustment).

The algorithm allows aligning density profiles automatically. It is based on reconstructed volume histogram analysis and controlled by the tag PARTAG_SLICE_AUTOWATER. The tag should be set to a value of the density corresponding to a number between the observed densities of air and water. Please note that the value is supposed to be set in mg/cm3 (HU+1000).

Example. Let us assume that the observed densities are -50 for air (should be 0), and 600-800 for water (should be 1000). In this case the recommended value for PARTAG_SLICE_AUTOWATER would be about 300.

The algorithm also compensates cupping and doming artifacts.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.22. Angular-dependent cropping and dynamic collimation.

Angular-dependent cropping and dynamic collimation.

COBRA supports exclusion of detector borders from reconstruction process to avoid imperfections of the sensor (detector), which are more frequent at the outer edge. In this case the tags PARTAG_CROP_LEFT, PARTAG_CROP_RIGHT, PARTAG_CROP_UP, PARTAG_CROP_DOWN may be applied. The desired side cropping can be defined by the binary files CropLeft.bin and CropRight.bin. Every element of those files defines the width of a left/right strip that should be excluded from processing. This becomes a necessity during dynamic collimation of the x-ray beam, where excluded strips correspond to shadows from the collimator blades.

Please note. In the case when CropLeft.bin, CropRight.bin are defined (there is a physical presence of these files in the input data folder) the reconstructed cube origin is calculated automatically, the definitions in xxm parameter file are ignored. Please also note that the size of reconstructed cube may be also calculated automatically. In this case PARTAG_CUBESIZEX and PARTAG_CUBESIZEY should be set to 0.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.23. Special data formats.

Special data formats.

COBRA supports two special data formats: .CAT and .HIS

CAT file is a solid file containing all projections, dark and bright calibration fields and basic scanner geometry information. COBRA does not support reading geometry data directly from CAT header. So one has to set relevant values explicitly in the corresponding xxm file. To make this mode active one should use PARTAG_CATFORMAT=1.

This is a typical xxm file:

//Scanner

PARTAG_SRCOBJDIST = 152

PARTAG_SRCDETDIST= 351

PARTAG_SCANANGLE=255

PARTAG_PROJRECON=680

PARTAG_DETSIZEV=1024

PARTAG_DETSIZEU=1536

PARTAG_DETOFFSETU=7

PARTAG_DETOFFSETV=0

PARTAG_DETPITCHU=0.064

PARTAG_DETPITCHV=0.064

PARTAG_ROTATIONDIR=1

PARTAG_CATFORMAT=1

//Naming

OPTTAG_PRJNAMEFORMAT = 20cm_3F_H.cat

OPTTAG_SLCNAMEFORMAT = %04i.slice

// Cube

PARTAG_CUBESIZEX = 512

PARTAG_CUBESIZEY = 512

PARTAG_CUBESIZEZ = 320

PARTAG_CUBEPITCHX = 0.09

PARTAG_CUBEPITCHY = 0.09

PARTAG_CUBEPITCHZ = 0.09

HIS files are projection files with headers containing all relevant scanner geometry information: angular position, offsets, detector size, etc. To make this mode active one should use PARTAG_HISFORMAT=1. Below is an example of an xxm file containing a minimal set of mandatory tags:

PARTAG_HISFORMAT=1

PARTAG_PROJRECON=511

PARTAG_CUBESIZEY=512

PARTAG_CUBESIZEX=512

PARTAG_CUBESIZEZ=256

PARTAG_CUBEPITCHX=0.9

PARTAG_CUBEPITCHY=0.9

PARTAG_CUBEPITCHZ=0.9

PARTAG_SCALEFACTOR=700

OPTTAG_SLICESCALE=2.44

OPTTAG_PRJNAMEFORMAT=20080401_15223843-%04i.prj

OPTTAG_SLCNAMEFORMAT=20080513_10411331-%04i.dcm

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.24. Supported modes illustrated by video clips.

Supported modes illustrated by video clips.

Related Topics

6. Reconstruction parameters
6.24.1. How Feldkamp algorithm works
6.24.2. Handling instable geometry
6.24.3. Conventional 360-degrees scan
6.24.4. Conventional short scan
6.24.5. Conventional 360-degrees scan with protruding object
6.24.6. Half-beam scan
6.24.7. 3-x view scan
6.24.8. 3-x view scan combined with stacked volume


6.24.1. How Feldkamp algorithm works

How Feldkamp algorithm works

The clip illustrates the main idea of a conventional back projecting cone-beam algorithm

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/feldcamp_0.wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.2. Handling instable geometry

Handling instable geometry

The clip illustrates an example of inconsistent rotation-table motion. If such a motion is accurately described (defined) in the corresponding .bin files (see section 6.19) then Cobra provides a correct reconstruction result.

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/motion.wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.3. Conventional 360-degrees scan

Conventional 360-degrees scan

The clip illustrates a conventional (A.K.A. full-beam) hardware setup for 360 degrees scan

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/clip01_2p(full_beam_full_scan).wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.4. Conventional short scan

Conventional short scan

The clip illustrates a conventional (A.K.A. full-beam) hardware setup for short (180+fan degrees) scan

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/clip02_2p(full beam short scan).wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.5. Conventional 360-degrees scan with protruding object

Conventional 360-degrees scan with protruding object

The clip illustrates a conventional (A.K.A. full-beam) hardware setup for 360 degrees scan with the scanned object larger than available field of view. Cobra incorporates a set of methods allowing getting correct reconstructed values even when protrusion is pretty substantial.

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format:

http://exxim.com/video/clip03_6p(full beam short scan protrusion).wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.6. Half-beam scan

Half-beam scan

The clip illustrates a half-beam (A.K.A. extended view) scan. See also the section 6.16.

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/clip04_4p_hb(half beam full scan).wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.7. 3-x view scan

3-x view scan

The clip illustrates 3x view scan. See also the section 6.17.

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/clip05_6p_3X(3x dual scan).wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.24.8. 3-x view scan combined with stacked volume

3-x view scan combined with stacked volume

The clip illustrates 3x view scan combined with a stacked volume mode. See also the section 6.18.

Flash player is required to playback the video clip.

Download links for Flash player: http://get.adobe.com/flashplayer/

To get in wmv format: http://exxim.com/video/clip06_2p_3X(3x quad scan).wmv

Related Topics

6.24. Supported modes illustrated by video clips.


6.25. Optional use of projective transform matrices.

Optional use of projective transform matrices.

COBRA (version 4 and higher) supports scanner geometry description in form of projective transform matrices. For comprehensive definition of the scanner geometry one should use a set of these matrices (one matrix per each angular position)

This mode is turned on by the tag BPMODETAG_GENERIC in the parameter.xxm file or via call of CobraDispatcher_SetReconMode with this tag included (see Programmer’s Guide).

Each projective matrix defines the correspondence between a volume voxel and its projection (voxel’s “shadow”) on the detector.

The size of each matrix is 4x3 (12 elements total). Values of matrix elements have to be set in a file called COBRA_Generic.gxm. The file COBRA_Generic.gxm has to exist in the folder containing input data set (controllable via PARTAG_SRCDATAPATH).

The file COBRA_Generic.gxm is a text file, which can be created/edited by conventional MS DOS compatible text editors (e.g. Notepad) or other relevant programs (e.g. the scanner controlling software).

In the file COBRA_Generic.gxm each line (starting at the very first line) represents one matrix (so please make sure that this file contains enough lines). Matrix elements are separated by space character(s).

Let us consider an example. The first line of COBRA_Generic.gxm might look like that:

0.41184 7.46044 0.03632 505.3131 -0.7434 0.150 -7.468 568.573 -0.00131 0.000186 0.000008568 1.0

It defines the following matrix

A00 = 0.41184 | A01 = 7.46044 | A02 = 0.03632 | A03 = 505.3131
A10 = -0.7434 | A11 = 0.150 | A12 = -7.468 | A13 = 568.573
A20 = -0.00131 | A21 = 0.000186 | A22 = 0.000008568 | A23 = 1.0

The matrix A is defines the correspondence between the voxel coordinates and its projection (shadow) on the detector. The volume coordinates are measured in millimeters, the origin of the volume coordinate system is the center of the volume. The detector coordinates are measured in pixels. The origin is the detector’s upper left corner.

The mapping rule is the following. If (X,Y,Z) is some volume voxel (measured in millimeters relative to the volume’s center) then its “shadow” coordinates (U,V) on the projection is calculated as follows:

NB.

· Defining the scanner geometry by providing projective matrices makes some tags in the parameter file (e.g. PARTAG_SRCOBJDIST, PARTAG_SRCDETDIST, etc.) obsolete. However, we still ask to supply approximate values for these tags (10% accuracy).

· Calculating projective matrices for a particular scanner is not a trivial task and it is not covered by the COBRA package. However, Exxim Computing Corporation has know-how and tools (phantoms, software) and is offering the calculations as R&D service. Please contact us for additional information.

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


6.26. Uncompressed (Raw) and Compressed DICOM output

Uncompressed (Raw) and Compressed DICOM output

COBRA (versions 6.10.zz and higher) supports uncompressed (raw) and compressed DICOM output. The corresponding settings should be the following.

PARTAG_DICOM setting | Output slices format
0 1 2 3 | No-DICOM Raw, no header plain array of short integers DICOM Raw, plain array of short integers with DICOM header DICOM compressed loss-less DICOM compressed ( lossy)

Related Topics

6. Reconstruction parameters

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


7. Pre-Processing and Post-Processing Procedures

Pre-Processing and Post-Processing Procedures

Preprocessing includes three main steps: detector correction, filtering, and post-filtering. Any of these steps may be skipped as described below.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
7.1. Detector Correction
7.2. Filtering
7.3. Parker Weighting
7.4. Smoothing on a pre-processing step
7.5. Scaling Procedure
7.6. Smoothing on a post-processing step
7.7. Ring Artifact Reduction

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


7.1. Detector Correction

Detector Correction

Detector correction starts with electronic offset subtraction. It then takes the logarithm of the signal, and applies the air map correction (the projection acquired with no object in the scanner). The logarithm of the attenuation signal, which is used for further filtering, is defined as:

S (u,v) = log ( S_air(u,v) - S_offset(u,v) ) - log (S_prj_in(u,v) - S_offset(u,v) )

where

S_prj_in is the input projection,

S_offset is the offset calibration file represented by a file named offset,

S_air is the air calibration file (the projection acquired with no object) represented by a file named AirRaw.

NB: The files AirRaw or/and offset can be omitted. In these cases default values of 32000 and 0, respectively, are applied.

Related Topics

7. Pre-Processing and Post-Processing Procedures


7.2. Filtering

Filtering

COBRA performs Feldkamp's filtered back-projection algorithm; hence each acquired projection has to be filtered line by line. This is done in the Fourier domain. The filter coefficients to be applied :

- May reside in the file hrz_ctfilter_N_MMM.bin (see below);

- May be calculated by Cobra internally.

A filter file contains the coefficient array represented as 4-byte floats. The nth element is the multiplier for the nth frequency component. The filter file representing pure derivatives (“ramp”) is 0., 1., 2., 3., 4.,… Filtering is a floating point operation; therefore filter coefficients can be scaled in any desired manner (also see "Scaling factor"). The length of the filter should match the horizontal size of the projection; it must be greater or equal to the nearest larger power of 2 plus 1.

Examples:

Horizontal projection size (pixels) | Filter length (elements)
160 400 512 513 1024 1300 | 257 513 513 1025 1025 2049

The installation package contains filter files with 257, 513, 1025, 2049, etc. coefficients.

Filter files are put into the same directory as the main COBRA_Exxim program.

Syntax: hrz_ctfilter_1_257.bin, hrz_ctfilter_1_513.bin, …, hrz_ctfilter_2_2049.bin.

suffix 1 means Shepp-Logan

suffix 2 means cosine filter

Suffixes 3-7 mean user filter (e.g. hrz_ctfilter_3_513.bin). User filters are not supplied. Filter file representation is array of 4-byte floats, no header.

If OPTTAG_FILTERNUM is set to values 8,9,10 or >100 then the filter kernel is being calculated internally. The calculations is being made according to the following.

OPTTAG_FILTERNUM | Filter type | Frequency cut-off
8 9 10 N (where N>100) | Shepp-Logan Cosine Ramp Cosine | Horizontal cube size Horizontal cube size Horizontal cube size N

7. Pre-Processing and Post-Processing Procedures


7.3. Parker Weighting

Parker Weighting

This compensates for ray redundancy in cases where the scan angle is less than 360 degrees (typically in the case of 180 degrees + fan angle). For an explanation in 2-D CT see [2].

7. Pre-Processing and Post-Processing Procedures


7.4. Smoothing on a pre-processing step

Smoothing on a pre-processing step

After filtering, the input projections can be smoothed. The following smoothing options can be set:

  • vertical mask [0.5, 1.0, 0.5] (use OPTTAG_SLVERTFILT = 1/0 to turn on/off),
  • vertical mask [0.5, 1.0, 1.0, 1.0, 0.5] (use OPTTAG_VRTSMOOTH = 1/0 to turn on/off),
  • “smart” smoothing mask defined by OPTTAG_VRTSMOOTH
  • vertical mask defined by OPTTAG_ZFILTERN

The default filter is

OPTTAG_SLVERTFILT=1

OPTTAG_VRTSMOOTH=0

OPTTAG_ZFILTERN = 0

Related Topics

7. Pre-Processing and Post-Processing Procedures
7.4.1. Vertical smoothing using tags OPTTAG_ZFILTERN
7.4.2. Smoothing using tag PARTAG_PREPROSMOOTHFACTOR


7.4.1. Vertical smoothing using tags OPTTAG_ZFILTERN

Vertical smoothing using tags OPTTAG_ZFILTERN

To explain lets use a simple example like this

OPTTAG_ZFILTER0 = 12

OPTTAG_ZFILTER1 = 10

OPTTAG_ZFILTER2 = 8

OPTTAG_ZFILTER3 = 6

Then the output value

S_out[m,n] = { S_in[m-3,n]*6 + S_in[m-2,n]*8 + S_in[m-1,n]*10 + S_in[m,n]*12 + S_in[m+1,n]*10 + S_in[m+2,n]*8 + S_in[m+3,n]*6}/60

Where 60 = OPTTAG_ZFILTER0 + 2* OPTTAG_ZFILTER1 + 2* OPTTAG_ZFILTER2 + 2*OPTTAG_ZFILTER3

Related Topics

7.4. Smoothing on a pre-processing step

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


7.4.2. Smoothing using tag PARTAG_PREPROSMOOTHFACTOR

Smoothing using tag PARTAG_PREPROSMOOTHFACTOR

When PARTAG_PREPROSMOOTHFACTOR is set to a number different than 0 then 2-dimensional non-linear filter is being applied. This filter has the following parameters: horizontal and vertical aperture and a signal standard deviation to control a boundary-preserving behavior (to set a level of noise).

This filter is being applied in a spatial domain on pre-FFT stage (on the logged attenuation signal representation) to normalized preprocessed signal. The filter is defined by three parameters:

Ax (horizontal aperture), Ay (vertical aperture), V (signal variation).

Use PARTAG_PREPROSMOOTHFACTOR to set up the value of V. Since the procedure is being applied on a normalized integer signal please make multiple experiments with various V to find out an optimal value. It should provide the best compromise between keeping all boundaries preserved and a signal value. A particular setup depends on application and a scale factor (see section 7.5)

Use PARTAG_ PREPROSMOOTHAPRTHRZ to control Ax

Use PARTAG_PREPROSMOOTHAPRTVRT to control Ay

Related Topics

7.4. Smoothing on a pre-processing step

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


7.5. Scaling Procedure

Scaling Procedure

COBRA performs filtering as a floating-point operation, while back-projection is a 32-bit integer operation to increase performance. Because of the diversity of data (biological, industrial, etc.), and the variety of Preprocessing algorithms and filter coefficients, the filtered projection should be scaled to obtain a reasonable range of integer values. If the scale factor is too small, information is lost due to underflow, and the resulting image will show poor low contrast. If the scale factor is chosen too high, overflow happens in the accumulation process, and dense objects will have erroneous voxel values.

Related Topics

7. Pre-Processing and Post-Processing Procedures
7.5.1 How to find the correct ScaleFactor
7.5.2 OPTTAG_SLICESCALE and OPTTAG_GAMMASLICESCALE
· Step one: Detector offset calibration
· Step two: Taking the logarithm
· Step three: Air calibration
· Step four: filtering or convolution
· Step five: Back-projection (accumulation)
· Step six: Final scaling

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


7.5.1 How to find the correct ScaleFactor

How to find the correct ScaleFactor

Related Topics

7.5. Scaling Procedure
Working with the default value
Scanning biological objects
Scale Factor Auto-Detection

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


Working with the default value

The default value for PARTAG_SCALEFACTOR is 1000. This should give an initial image for most objects; however, it may not be optimal. If the object composition is such that there is not much contrast between adjacent regions, then 1000 may not be enough to preserve the full low-contrast capability of the scanner (underflow). If the object contains regions with high contrast (e.g. metal pieces in plastic), then 1000 may be too high, which results in wrong density values (overflow).

Figure 14 : Correct scaling on the left, overflow on the right.

7.5.1 How to find the correct ScaleFactor


Scanning biological objects

For biological objects, using the full Preprocessing procedure and a ramp filter, the recommended scaling factor is 700.

7.5.1 How to find the correct ScaleFactor


Scale Factor Auto-Detection

The scale factor can be auto-detected. Auto-detection is enabled by setting PARTAG_SCALEFACTOR to -1. This setting achieves correct scaling for most cases, by analyzing the first projection. However, in the case of very inhomogeneous objects or non-rectangular detectors (e.g. a circular image intensifier), the auto-selection procedure may fail and cause overflow or underflow.

The following procedure is recommended:

· Select auto-select, PARTAG_SCALEFACTOR to -1.

· 4-5 seconds after start of the reconstruction, check the first preprocessed projection (use COBRA_View_Exxim). This projection will be available as file preprocd_proj.000 in the working directory (see also "Error! Reference source not found. and Settings"). The preprocessed projection should have pixel values in the range +/- 24000, and should display as a recognizable edge-enhanced image. Underflow may occur if extreme pixel values are below 3000. Overflow may occur if the pixel values exceed 30,000. If underflow or overflow is suspected, then an appropriate scaling factor (which is available in the "Messages" GUI page) must be applied.

Example: The auto-selected scale factor reported by COBRA_Exxim is 300. preprocd_proj.000 contains pixels with values in the range of +/- 500 (obvious case of underflow). The recommended value for PARTAG_SCALEFACTOR in this case would be in the range of 3000-5000.

NB: COBRA also allows reconstructing “log-ed” projections (air compensation and logarithm transform already have been done on the client side). Auto-detection also works for those cases. Typical scale factor for biological objects is 0.2.

7.5.1 How to find the correct ScaleFactor


7.5.2 OPTTAG_SLICESCALE and OPTTAG_GAMMASLICESCALE

OPTTAG_SLICESCALE and OPTTAG_GAMMASLICESCALE

This is not a pre-processing step, but mentioned here for completeness. After performing the back-projection/accumulation procedure, every voxel value is divided by the number of projections. At this point of the algorithm it is possible to perform additional scaling, for example for calibrating the whole system to HU.

OPTTAG_GAMMASLICESCALE is used to correct for nonlinearity resulting from beam hardening and scattering. It is an additional/alternative way to correct beam hardening to PARTAG_BHFACTOR0 , …, PARTAG_BHFACTOR3 tags.

For better understanding all steps of the reconstruction routine and controlling them via post-filtering and slice-scale, please find the accurate description below.

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


· Step one: Detector offset calibration

Signal_1(u,v) = InputPrjSignal (u,v) – Offset(u,v)

Air_1(u,v) = AirSignal (u,v) – Offset(u,v)

where

InputPrjSignal(u,v) is the input projection (raw intensity signal),

AirSignal(u,v) is the intensity without absorber (nothing inside FOV), presented by file airraw (or tag PARTAG_AIRLEVEL. Value of 32000 is applied in every pixel if both airraw and tag PARTAG_AIRLEVEL are missing)

Offset(u,v) is the electronic signal offset value, presented by file offset (value of 0 is applied to every pixel if offset is missing).

All data are 16 bit signed integers.

This step is not obligatory for all detectors and is automatically skipped if the file offset is missing.

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


· Step two: Taking the logarithm

Signal_2(u,v) = log{ Signal_1(u,v) }

Air_2(u,v) = log{ Air_1(u,v) }

Signal_1 and Air_1 are 16 bit signed integers. Signal_2 and Air_2 are 32 bit floats.

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


· Step three: Air calibration

Signal_3(u,v)
=  Air_2(u,v) -
Signal_2(u,v)

All are 32 bit floats. Signal_3 is also called “log attenuation”. It is equal to μ∙d (attenuation coefficient x path length).

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


· Step four: filtering or convolution

Signal_bh(u,v) = [image] (optional step see 6.19)

Signal_4(u,v) = ForwardFourierTransform{Signal_bh(u,v)}

Signal_5(u,v)
=  Filter_Coefficients(u,v) *
Signal_4(u,v)

Signal_6(u,v) = InverseFourierTransform{Signal_5(u,v)}

Signal_7(u,v) = Scale1* 0.25 * Filter{Signal_6(u,v)}.

Signal_3 is 32 bit floats. Signal_4, Signal_5, and Signal_6 are 64 bit floats. Signal_7 is 16 bits signed integer.

Scale1 is the value defined by PARTAG_SCALEFACTOR (see How to find the correct ScaleFactor above). The additional factor 0.25 has some “historic” nature and results in approximate units of [mg/cm3] for the default PARTAG_SCALEFACTOR of 1000 (unless steps 1-3 are already done outside COBRA).

Please note

- The main purpose of the factor Scale1 is to push the filtered signal to the range of ±32767. We do not recommend using this factor for calibrating the whole system to HU(Hounsfield, also see below).

- The factor Scale1 (defined by PARTAG_SCALEFACTOR) obviously depends on the scale of filter coefficients applied. We use 0,1,2, etc. (for example) for the ramp filter, which corresponds approx. 1000 as Scale1. If to use 0,2,4, etc. but 500 as Scale1 instead the result of this step will be the same

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


· Step five: Back-projection (accumulation)

Cube32 (x,y,z) = Cube32 (x,y,z) + Mapped{ Signal_7(u,v) }

Signal_7 is a 16 bit signed integer. Cube32 is a 32 bit signed integer.

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


· Step six: Final scaling

CubeRes1 (x,y,z) = Cube32 (x,y,z)/NOP * Scale2

CubeRes (x,y,z) =

where CubeRes(x,y,z) is resulting cube voxel, NOP is number of projections (views), Scale2 is the slice scale factor. The factor Scale2 is defined by OPTTAG_SLICESCALE and can be used for entire system calibration to [mg/cm3]. Hounsfield Unite [HU] can be obtained by subtracting 1000 from the density values (see PARTAG_MINUS1000).

Cube32 is a 32 bit signed integer. Scale2 is a 32 bit float. CubeRes is a 16 bit signed integer.

Related Topics

7.5. Scaling Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


7.6. Smoothing on a post-processing step

Smoothing on a post-processing step

COBRA provides 3-dimensional smoothing as a post-processing feature, controlled by a set of parameters. This is a boundary-preserving de-noising procedure.

Figure 15 : Typical results of post-processing smooth procedure applied. PARTAG_POSTPROFACTOR 0, 30, 120, 200 in clockwise order.

Restriction: SAMARA and 3-D filtering will not work in cluster configurations where the master node is also acting as computing node (back-projector).

The framework of an algorithm.

It is assumed that a reconstruction is being performed into a bigger slice size cube. For example instead of 512x512x512 the cube 768x768x512 may be applied (this depends on PARTAG_POSTPROINTERCUBESIZE setting, so is controllable by a user). Using of an increased cube typically is beneficial for the further steps.

NB. The final cube size is defined by PARTAG_CUBESIZEX, PARTAG_CUBESIZEY. The alignment of a cube size (down-sampling from an intermediate size to a final one) is the internal step of the algorithm.

The second step of algorithm is median filtering of slices (it is 2D operation). Use PARTAG_POSTPROMEDIANAPRT to set the aperture of 2D median filter. Please not that using 0 as a value for PARTAG_POSTPROMEDIANAPRT means skipping this step.

The third step is edge preserving noise reduction filter in 3D. Please use

- PARTAG_POSTPROFACTOR to set a smoothing sigma factor, a good estimation of this parameter is a standard deviation of an observed noise ;

- PARTAG_POSTPROAPRTHRZ to set a horizontal aperture of a smoothing 3D filter;

- PARTAG_POSTPROAPRTVRT to set a horizontal aperture of a smoothing 3D filter;

7. Pre-Processing and Post-Processing Procedures


7.7. Ring Artifact Reduction

Ring Artifact Reduction

Ring artifact is visible as a ring around center of the slice. It is usually caused by uncompensated / udercompensated / overcompensated defects on the detector. Normally the best way to eliminate rings is to use proper air, offset and dead pixel corrections (see Detector Corrections chapter).

If detector corrections for some reason cannot eliminate ring artifact, COBRA provides a ring artifact reduction option using tags PARTAG_DERINGON, PARTAG_DERINGAPERTUREX, PARTAG_DERINGAPERTUREY, PARTAG_DERINGTHRESHOLD.

PARTAG_DERINGON activates ring artifact reduction. It can be 0 or 1, correction off or on correspondently.

PARTAG_DERINGAPERTUREX and PARTAG_DERINGAPERTUREY filtration parameters. Good value is 10.

PARTAG_DERINGTHRESHOLD threshold for ring detection. Good values between 100-1000. Higher values make algorithm more aggressive.

7. Pre-Processing and Post-Processing Procedures


8. Streak and Metal Artifact Reduction Algorithm (SAMARA)

Streak and Metal Artifact Reduction Algorithm (SAMARA)

SAMARA stands for Streak Artifact and Metal Artifact reduction algorithm. It is an iterative algorithm for 3D reconstruction, which is more tolerant against input data imperfections than the standard Feldkamp method. Such data imperfections can be caused by;

- absorption non-linearity,

- scanner geometry misalignment,

- non-equidistant angular stepping or

- insufficient number of projections (e.g. less than 200).

The technique is designed to reconstruct better images than a standard Feldkamp procedure.

For performing SAMARA- reconstruction of volumetric data it is necessary (and enough) to define relevant SAMARA parameters in the actual parameter.xxm file (see below). After reconstruction the slices will appear in the destination slice folder (controllable by the tag PARTAG_DSTDATAPATH) and in subfolders (created automatically) /SAR (streak artifacts are reduced) and /MAR (metal artifacts are reduced)

SAMARA reconstruction can be performed in two different modes: streak artifact reduction (SAR) and metal artifact reduction (MAR). SAR is performed if the tags SAMARATAG_HIGHCONTRASTLEVEL and SAMARATAG_LOWCONTRASTLEVEL are defined in parameter.xxm file. The reconstruction procedure is automatically turned into MAR if the tag SAMARATAG_HIDENSLEVEL is also defined. The duration of SAR is approximately 2.5-3 times longer than conventional Feldkamp reconstruction. MAR is approx. 3.5-4.5 longer than Feldkamp. The detailed description of the SAMARA tags and the way to find their values is described in the subsections below.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
8.1. SAMARA parameters
8.2. Streak Artifact Reduction Mode. Tuning SAMARA parameters.
8.3. Metal Artifact Reduction Mode. Tuning SAMARA parameters.


8.1. SAMARA parameters

SAMARA parameters

The implementation both of Feldkamp and SAMARA algorithms require the same parameters for scanner and target volume description. However, SAMARA should be supplied with some additional parameters as follows:

  • The parameter called “High Contrast Details Appearance”, which usually is one third of the difference between average values for air and water (so = 300 if the system is calibrated to HU). In parameter.xxm this value is controlled by the tag SAMARATAG_HIGHCONTRASTLEVEL
  • The parameter called “Low Contrast Details Appearance”, which does not have a straightforward physical equivalent. In parameter.xxm this value is controlled by the tag SAMARATAG_LOWCONTRASTLEVEL
  • For metal artifact reduction, additionally the average density value of metal (obligatory). In parameter.xxm this value is controlled by the tag SAMARATAG_HIDENSLEVEL

SAMARA requires a substantial amount of additional parameters, but the reconstruction routine is not very sensitive to particular values. In other words, the parameters have to be set “just about right”. In most cases, changes in the range of ± 20% are not noticeable. Also, once SAMARA parameters have been tuned (optimized), they do not need to be re-optimized for the same equipment and similar scanned objects.

Please find below an example of the parameter file for the mouse scan available on Exxim’s web site www.exxim-cc.com (including streak artifact reduction).

PARTAG_SRCOBJDIST = 395.730011

PARTAG_SRCDETDIST = 529.590027

PARTAG_SCANANGLE = 195.000000

PARTAG_STARTANGLE = 0.000000

PARTAG_PROJRECON = 195

PARTAG_DETSIZEU = 512

PARTAG_DETSIZEV = 1022

PARTAG_DETOFFSETU = 4.000000

PARTAG_DETOFFSETV = 0.000000

PARTAG_DETPITCHU = 0.161760

PARTAG_DETPITCHV = 0.161760

PARTAG_CUBESIZEX = 512

PARTAG_CUBESIZEY = 512

PARTAG_CUBESIZEZ = 128

PARTAG_CUBEPITCHX = 0.100000

PARTAG_CUBEPITCHY = 0.100000

PARTAG_CUBEPITCHZ = 0.100000

PARTAG_CUBEORIGINX = 0

PARTAG_CUBEORIGINY = 0

PARTAG_CUBEORIGINZ = 0

PARTAG_OFFSET = 0

PARTAG_ROTATIONDIR = 1

PARTAG_SCALEFACTOR = 710.289673

OPTTAG_AIRCAL = 1

OPTTAG_LOG = 1

OPTTAG_OFFSET = 1

OPTTAG_FFT = 1

OPTTAG_PARKER = 1

OPTTAG_SLVERTFILT = 0

OPTTAG_VRTSMOOTH = 0

OPTTAG_FILTERNUM = 1

BPMODETAG_NRSTNBR

BPMODETAG_CONEBEAM

OPTTAG_SLICESCALE = 2.000000

Error! Reference source not found.

OPTTAG_PRJNAMEFORMAT = raw.%04i

OPTTAG_SLCNAMEFORMAT = %04i.slice

SAMARATAG_HIGHCONTRASTLEVEL = 200

SAMARATAG_LOWCONTRASTLEVEL = 160

Restriction: SAMARA and 3-D filtering will not work in cluster configurations where the master node is also acting as computing node (back-projector).

Related Topics

8. Streak and Metal Artifact Reduction Algorithm (SAMARA)


8.2. Streak Artifact Reduction Mode. Tuning SAMARA parameters.

Streak Artifact Reduction Mode. Tuning SAMARA parameters.

For getting optimal results we would recommend the following procedure of defining SAMARA parameters.

Step 1. Find typical “streaky” slice in reconstructed cube. For example it might look like this.

Figure 16 : Slice with streaks.

Step 2. Tuning the parameter “High Contast Details Appearance”.

Set parameter “High Contast Details Appearance” to the half of the difference between DC values for air and water (so = 500 if the system is calibrated to HU). Set parameter “Low Contast Details Appearance” to 0. Update right slice. You should see main structures on the image but streaks and low contrast details should be faded. There are pictures below illustrating correct and wrong settings of the parameter “High Contast Details Appearance”.

Figure 17: Optimal setting of the parameter “High Contast Details Appearance”. High contrast edges are preserved and streaks are gone.

Figure 18: The value of the parameter “High Contast Details Appearance” is too high. High contrast edges are blurred.

Figure 19 : The value of the parameter “High Contast Details Appearance” is too low. Not all streaks are gone.

Step 3. Tuning the parameter “Low Contast Details Appearance”. Usually it should be set to some value in the range 100-400. Please try different numbers to get correct low-contrast details with minimum streaks on the image

Figure 20 : SAMARA result with both parameters “High Contast Details Appearance” and “Low Contast Details Appearance” optimized.

Related Topics

8. Streak and Metal Artifact Reduction Algorithm (SAMARA)


8.3. Metal Artifact Reduction Mode. Tuning SAMARA parameters.

Metal Artifact Reduction Mode. Tuning SAMARA parameters.

For getting optimal results we would recommend the following procedure of defining SAMARA parameters.

Important! The algorithm performing single-slice MAR is utilizing entire volumetric data (the result of regular Feldkamp cube reconstruction). Please make sure that you have reconstructed the volume correspondingly with current parameter file. Otherwise before any MAR tuning please do reconstruct the cube.

Step 1. Find typical slice with metal artifacts in the reconstructed cube. For example it might look like this.

Figure 21 : Slice with typical metal artifacts.

Step 2. Tuning the parameter “High Contast Details Appearance”.

Keep the checkbox “Treat high-density non-linearities” unchecked. Set parameter “High Contast Details Appearance” to the half of the difference between DC values for water and metal (so ~= 1000 if the system is calibrated to HU). Set parameter “Low Contast Details Appearance” to 0. Update right slice. You should see sharp metal structures on the image but streaks should be faded as well as some other image details. Find the smallest value of the parameter “High Contast Details Appearance” when streaks from the metal basically are gone.

There are pictures below illustrating correct and wrong settings of the parameter “High Contast Details Appearance”.

Figure 22 : Optimal setting of the parameter “High Contast Details Appearance”. Maximum of high contrast edges are preserved and streaks are gone.

Figure 23 : Wrong setting of the parameter “High Contast Details Appearance”. High contrast edges are preserved but streaks are not gone.

Figure 24 : Wrong setting of the parameter “High Contast Details Appearance”. High contrast edges of metal structures are preserved, streaks are gone, but in accordance with pic.11.7 the parameter can be reduced for getting more detailed image.

Step 3. Tuning the parameter “Low Contast Details Appearance”. Usually it should be set to some value in the range 200-1000.

Keep the checkbox “Treat high-density non-linearities” unchecked. Try different numbers in the range 200-1000 to get correct low-contrast details with minimum streaks across the image. The typical “star-patterns” caused by metal still appear.

Figure 25 : MAR result with both parameters “High Contast Details Appearance” and “Low Contast Details Appearance” optimized. The typical “star-pattern” caused by metal (dark areas near the metal coil) still appears.

Step 4. Tuning the parameter “High-density threshold level”.

Check the checkbox “Treat high-density non-linearities”. Set it to the value between DC values of tissue and metal. Try different values to get best result.

Figure 26 : Final MAR result.

Related Topics

8. Streak and Metal Artifact Reduction Algorithm (SAMARA)


9. Feldkamp artifact correction in half beam

Feldkamp artifact correction in half beam

Feldkamp algorithm is an approximate algorithm and as such can produce artifacts known as Feldkamp artifacts. The example of such artifact is given in Figure 27. The artifact comes from the nature of the algorithm itself and independent on its implementation. It is more critical in half beam mode, because in full beam it is largely compensated by presence of the projections from the opposite sides.

Feldkamp artifact correction algorithm is an iterative method that significantly reduces this artifact (Compare in Figure 27 and Figure 28). This method is 3-5 times slower than standard Feldkamp algorithm in halfbeam mode. It is activated by OPTTAG_CFA tag.

Figure 27 : Feldkamp artifact in form of horizontal streaks on a half beam scan reconstruction.

Figure 28 : Half beam scan reconstruction after correction of Feldkamp artifact.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.


10. Distributed (Cluster) Solutions

Distributed (Cluster) Solutions

The Distributed Version of COBRA_Exxim is based on a Master/Slave model. This is described as follows.

· Once installed on any network connected computer, COBRA can perform either as Master node or as Slave node.

· Starting the COBRA_Exxim main program on one computer automatically selects that computer as the Master node.

· All other computers with COBRA (distributed version) installed, which are connected to the network, are automatically available as Slaves (see Restrictions below).

· Slaves are completely controlled by the Master node, so no user interaction (other than the initial installation) is required on the Slave computers.

· A network can have any number of Masters and Slaves.

The software architecture uses a DCOM- and Winsock-based design. It allows the program to be built from independent executable components. They are represented as files on the hard drive and as processes during execution.

NB

Restrictions of the model:

· Any computer which is already running in Master mode cannot simultaneously be a Slave (the same computer can not be Master and Slave at the same time).

· Masters cannot share Slaves.

· Up to 4 Slaves are supported.

The model is illustrated in the diagram below.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.
10.1. Getting Started with the Exxim PC’s.
10.2. Using Distributed Mode
10.3. Troubleshooting
10.4. COBRA Installation for Distributed Mode


10.1. Getting Started with the Exxim PC’s.

Getting Started with the Exxim PC’s.

Exxim Computing supplies the computer system(s) with COBRA_Exxim software fully installed and configured for the distributed mode of operation.

Before starting the user must ensure that the PC’s have the proper network connection. The PC’s are configured as WORKGROUP nodes.

Any of the PC’s can be used as a Master. “Master” means that the computer is executing the main COBRA program (see below). The other PC(s) will be remotely controlled without any additional interaction.

Exxim supplies both the “Mouse” and the “Head” examples. These can be used for system check and for evaluation.

Important! Do not start the main COBRA program on more than one of the node computers at the same time. Doing so will prevent them to work in parallel as a cluster.

Important! If the main COBRA program cannot communicate with the remote PC(s) error messages will appear. In this case refer to Troubleshooting described in 9.4 (Distributed Solution Specific Troubleshooting).

Related Topics

10. Distributed (Cluster) Solutions

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


10.2. Using Distributed Mode

Using Distributed Mode

If the COBRA_Exxim package (version 2.0 and higher) is correctly installed on two or more computers (see 10.5 for installation details), COBRA_Exxim can be used in distributed mode.

The first step to be done is selecting the Slave computer(s) and the participation parameters. To accomplish this, open the Distribution tab and to enter the Slave names in the textboxes (the Master’s name is already present and is not available for editing). All nodes should be dedicated to participate in the CT reconstruction process. All nodes will contribute evenly to the process; therefore, a network of equally performing nodes will give best results.

During the reconstruction process each designated node completes the work for an appropriate part of the cube. When sharing reconstruction between nodes, the whole cube is divided in slabs along the Z axis (sub-volumes).

Sub-volumes must obey the same rules as the whole volume. The participation parameters have the following restrictions: any sub-volume must have the Z-size divisible by 32. In practice it means that volumes with a Z-size such as 256, 512, 768, 1024, 1536, etc. can be shared easily among 4 nodes. A cube with a Z-size of 480 cannot be shared at all. If the opened parameter file does not comply with this rule, an appropriate message will appear and execution of the reconstruction process will be blocked.

An additional complication appears if it is necessary to use a multi-pass process for sub-cube reconstruction (the sub-cube is larger than the designated 3D buffer). In such a case there is no simple and straightforward recommendation about the cube metrics. If some unusual size is needed, then the basic recommendation is to load a ‘best guess’ parameter file and check the History tab. If an error message appears then try another distribution, or another cube size, or both. e.g. consider using 512 or 1024 instead.

Once the Master and Slave parameters are selected, all other interactions between the COBRA_Exxim GUI and the User, or between COBRA_Exxim and a Client program (see Programmers Guide for details about in-line mode), are almost identical to the non-distributed version. Easily overlooked is the possibility to switch the progress screen (five slices on the Progress tab) between the different sub-cubes (nodes). The “Show Progress” radio buttons (Distribution tab) provide immediate status and control of the reconstruction progress in any node. The selected choice is effective immediately after the selection is made.

NB.

The Master computer is allowed to get zero as the participation parameter.

The COBRA_Exxim engine pipelines the reconstruction process. This “masks” any network/hard drive operations “behind “ the reconstruction process. For this to work as designed, the distributed version of COBRA_Exxim must be installed correctly on a network. The required sections from the input projections are then acquired by the Slave computer(s) without interrupting or delaying the reconstruction process.

To change a PC from Master mode to Slave mode, reboot the PC.

Related Topics

10. Distributed (Cluster) Solutions

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


10.3. Troubleshooting

Troubleshooting

Typical problems, specific to the clustered implementation, are addressed as follows: COBRA Master does not remotely activate or communicate correctly with BackPrj_COM_Server. The usual cause of this is network issues. Either a connection problem exists or excessive traffic is slowing down the network. Interruption of network communications during the active phase of COBRA can lock out remote operation of BackPrj_COM_Server. As a last resort, re-booting all COBRA nodes should help but the network issues must be resolved.

It is more convenient and easier to do the following:

- Close the main COBRA program on the Master node.

- Start the Task Manager (use Ctrl-Alt-Del) on all nodes and select the Processes tab.

- For every node in the cluster ensure that the process BackPrj_COM_Server is not listed. Close the process if required to remove it from the list. Note that the process may be listed as BACKPR~1.EXE

- Restart the COBRA program on the Master node.

NB

It is recommended that the Task Manager be displayed on all nodes. Use it to monitor CPU, memory and network usage.

Related Topics

10. Distributed (Cluster) Solutions

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


10.4. COBRA Installation for Distributed Mode

COBRA Installation for Distributed Mode

The installation process for cluster solutions is the same for all nodes. The user has to install COBRA on every node of the cluster. Please note that the HASP dongle has to be set only on the Master PC.

Related Topics

10. Distributed (Cluster) Solutions

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


11. Nearest Neighbor vs. Bi-Linear Interpolation

Nearest Neighbor vs. Bi-Linear Interpolation

COBRA v3.0.x (and higher) allows the user to make a choice between nearest neighbor and bi-linear interpolation during back-projecting process. Note:

1. Reconstruction process based on bi-linear interpolation is approximately 2.5 times longer

2. Bi-linear interpolation achieves better S/N ratio; nearest neighbor interpolation requires post-processing to remove some of the frequency noise (see picture below).

Figure 29 : Upper Left: Bi-Linear interpolation. Lower Left: Nearest neighbor interpolation.

Lower Right: Nearest neighbor interpolation plus COBRA’s post-processing filtering.

Related Topics

PART 2. Reconstruction Engine. Input and Output Data. Controlling a reconstruction process.


PART 3. COBRA Geo-Calibration Utility. User Manual

Image quality is strongly dependent on correct description of the scan geometry. Static deviations from idealized parameters (misalignment), can be handled through PARTAGS (see above), or through precise scanner alignment, if possible. Dynamic geometry parameters, which change from projection to projection due to gravity, centrifugal force or lack of balancing, can also be handled by COBRA. The geometrical calibration is provided at two levels, for static and dynamic parameters, respectively.

The static parameter calibration is done by a stand-alone program “CobraGeoCalibration”. It also can be done through SDK function calls. Please refer to COBRA Programming Guide for the use of the calibration SDK, and the general work procedure will be demonstrated based on the stand-alone GUI based CobraGeoCalibration program.

The dynamic parameters, i.e. parameters that change from projection to projection, are given by COBRA_Geo, which will extract the most important of these dynamically changing parameters from the scan of a phantom:

  • u-offset;
  • v-offset;
  • angular position (azimuth of the gantry position)
  • magnification ratio (detector-object distance).

COBRA_Geo generates the following files: uoffset.bin, voffset.bin, angle.bin, SrcOrigDist.bin, OrigDetDist.bin.

Please note the following:

COBRA Geo provides geometry data on a per projection basis, and it can calibrate rather instable scanner mechanics as well as scanners configured for half-beam mode. The .bin files contain angular dependent geometries. “u-offset.bin”, for example, is a field of offset data indexed by the projection number, containing u-offset values for each projection.

Please also be aware that the scanner mechanical instability may not be covered by the selected parameters mentioned above in all cases. For example, detector pivoting is assumed to be a static parameter, which does not vary with projection direction. Also, the deviations may not be reproducible due to loose mechanics etc. In this case, the calibration procedure may not improve image quality.

Also, the geometry parameters may depend on scan speed. Therefore, COBRA_Geo calibration should be done for each scan mode.

In the next sections, the static parameter calibration will be described first. It then is followed by a detailed explanation of the procedure of performing the dynamic parameter calibration.

Related Topics

1 Static Parameter Calibration Procedure
2 Dynamic Parameter Calibration Procedure
3 COBRA_GeoCalibration COM Interface Tags (SDK)


1 Static Parameter Calibration Procedure

Static Parameter Calibration Procedure

Exxim provides an optional calibration phantom which is specially designed for scanners with a FOV of about 5~20 cm in diameter, to be used with the COBRA calibration tool. The phantom is an acrylic cylinder with four sets of metal beads, with diameter at 32, 70, or 100 mm. Each set of beads lies in a plane perpendicular to the cylinder’s axis and contains 2 to 8 beads (d = 1.6 mm or 1.0 mm) at 45 degree angles.

The user can consider scanning his/her own phantom, in which case Exxim should be contacted regarding additional details.

Figure 30 : Exxim’s 100mm plastic phantom with metal beads.

Related Topics

PART 3. COBRA Geo-Calibration Utility. User Manual
1.1 Step 1: Scanning of bead phantom
1.2 Step 2: Start of static CobraGeoCalibration and input phantom information
1.3 Step 3: Extract bead centers
1.4 Step 4: Calibrate the geometry

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.1 Step 1: Scanning of bead phantom

Step 1: Scanning of bead phantom

The calibration phantom should be placed at the center of the field of view, with its axis coinciding with the axis of rotation as closely as possible. It must be made sure that at least two layers of beads are projected onto the detector, with one above the equatorial plane, and the other below the equatorial plane.

After a set of projections are acquired with the calibration phantom, the user should first examine the projections to verify that the phantom was positioned correctly and did not move throughout the scan. These checks can be performed automatically using the SDK function CheckPhantomPositioning.

At the top and bottom of each projection, depending on phantom size and size of the field of view, the end surfaces of the cylindrical calibration phantom may produce ellipses or partial ellipses that appear darker than other region of each projection; they should be excluded during the process of calibration in order to ensure the accuracy of automatic bead detection. A typical projection of the phantom will look like what is shown in the figure below, with full-beam and half-beam scan configuration, respectively.

Figure 31 : Typical projection images of the calibration phantom, under full-beam and half-beam scan modes.

Besides the standard cylindrical calibration phantoms shown in Figure 30, the static CobraGeoCalibration program will also work with a much simpler “straw” phantom, which is just a rod (the “straw”) with two to four small metal beads embedded at equal distances. This functionality is designed to offer flexibility and serves as an alternative to calibrating systems with FOV diameter and length not suitable to the standard calibration phantoms. A straw phantom can virtually fit into any sizes of FOVs. There should be at least one bead each sitting above and below the equatorial plane. The geometry parameters are then computed using ellipse analysis, which does not require many projections. It therefore can be useful in calibrating a short-scan geometry as well. However, the extraction of scan angle is not supported in the current version the software with this type of phantom, and the user must determine the scan angle on his or her own.

Related Topics

1 Static Parameter Calibration Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.2 Step 2: Start of static CobraGeoCalibration and input phantom information

Step 2: Start of static CobraGeoCalibration and input phantom information

a) Input phantom geometry

When the program starts, it is provided with default values for the detector and the phantom. The user has to set up the correct values for both the detector and the phantom. The values of the detector include the number of pixels and the pixel pitch in millimeters. Those of the phantom include the phantom diameter, the number of bead layers, the number of beads in each layer, and the distances between two neighboring layers.

Figure 32 : Start the CobraGeoCalibration program and input values relating to the calibration phantom and the detector

The other information needed at this step is the path where the projection files are stored, the name template of those files, and the number of projections that will be used in calibration. A screen shot of the program is shown in Figure 32.

When a straw phantom is used, the “Layer Radius” is disabled, and in the box for “Distance Between Layers”, a value for “Distance Between Beads” should be supplied instead.

b) Setup the image margins

The dark partial ellipse in the half-beam scan in Figure 31 can influence the bead detection process and should be excluded. This is done by setting up the image margins before starting calibration. In some cases, the beads on a certain layer can overlap with each other depending on the phantom positioning and projection angle, e.g. if the layer is close to the equatorial plane. For best accuracy, this entire layer of beads should be masked out in calibration as well.

The 2-bead per layer Exxim phantoms are designed in double-helix fashion. When they, and the straw phantoms as well, are used, it is currently necessary to tell the calibration program which layer each detected bead belongs to. This is done through 3 layer delineators to separate the 4 (maximum) bead layers.

To do this, please click the button “More Options”. This will bring up a dialog box, as shown in Figure 33. In this dialog box, there are 9 parameters to be set up: 4 parameters for the margins; and 2 for masking out of the overlapped bead layer (referred as strip for convenience); and another 3 for delineate the bead layers (named “Layer Zones” in the dialog box). The margins are measured in pixels from their corresponding edges, while the strip and Layer Zones are always specified in pixels from the top of the projection image, thus are the absolute y coordinates.

When there is no overlap in all the visible bead layers, the two parameters for the strip are ignored and should be set to zero’s.

The settings in “Layer Zones” are only applicable for 1- or 2-bead (per layer) phantoms used in the extended field of view mode. They are otherwise neglected when the 8-bead phantoms are used or to calibrate full-beam geometry.

Note: Starting v6.1.7. full-beam or half-beam modes are set explicitly. In older versions it was determined by the values of left and the right margins. In full-beam mode, the values of the left and the right margins should be set to be the same, while in half-beam mode they must not be the same. In half-beam mode, the side where the phantom is truncated should be set to have a smaller margin than the other side.

Note: When one bead layer is excluded by setting up the values for strip due to bead overlapping, the distance between two neighboring layers should be adjusted accordingly. When this happens, please make sure that only two layers are included in the images after the margin and the strip being excluded, and the layer distance is set twice bigger as the physical value.

Figure 33 : The dialog box to setup the image margins to be excluded during calibration.

Related Topics

1 Static Parameter Calibration Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.3 Step 3: Extract bead centers

Step 3: Extract bead centers

After all aforementioned values have been set up correctly, one can proceed to the next step which is to extract the bead centers from each projections, by clicking the button “Extract Bead Centers”. This is done automatically by the program and, depending on the size of each projection and the number of projections, it can roughly take from 1 minute to 5 minutes. The progress bar at the bottom of the program (see Figure 32) indicates the progress of the extraction process. When it is done, the time it used will be displayed. If the process stops prematurely, the user should check if the phantom was positioned in the center of the field of view and parallel to the axis of rotation. The user also should verify that the input parameter values in step 1 and 2 are correct.

Note: The bead extraction routine is setup to work well with relatively small bead shadows appearing on projections. When the shadows of the metal beads are large (e.g., ~100 pixels across), the routine can often fail. In this case, the user can change one parameter that is called “Median Filter Length”, through Windows registry:

1) in Windows “Start\Run…”, type in “regedit”; 2) go to the entry of “HKEY_CURRENT_USER\Software\COBRA_Exxim\CobraGeoCalibration\GeoWizard”, and change the value for “Median Filter Length” to a larger odd value (e.g., 201, default is 81); 3) restart the calibration program. One might have to experiment with this parameter to find the best suitable value.

Related Topics

1 Static Parameter Calibration Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.4 Step 4: Calibrate the geometry

Step 4: Calibrate the geometry

This is the last step of the static parameter calibration procedure. When the bead extraction is finished, the user can then click the button “Calibrate Parameters”. This is a rather fast step and takes less than a second. At this step the program generates a parameter file, named as “GeoTest_output.xxm” and located under the same directory as the projection files, that can be directly used for reconstruction. The key output parameters are: the source-object distance, the source-detector distance, the detector U offset, the detector V offset (refer to 6.2, Tags Describing Scanner Geometry). The detector pivot also is outputted but at a separate file named “pivoting.bin”.

Besides the two main files containing geometrical information, three other files also are saved from intermediate steps. One contains the bead centers extracted from each projection, one contains the values of the input parameters, and the third one contains debug information. The user may ignore these files, but should send them to Exxim for diagnosis if any unexpected geometrical value appears with the calibration.

Note: The default method used for 1- and 2-bead phantoms (the straw and 2-bead double helix phantom) is ellipse analysis. One has an option to switch from ellipse analysis for 2-bead phantom to a more sophisticated method that also provides scan angle, by setting “Preferred Method” to 1:

1) in Windows “Start\Run…”, type in “regedit”; 2) go to the entry of “HKEY_CURRENT_USER\Software\COBRA_Exxim\CobraGeoCalibration\GeoWizard”, and change the value for “Preferred Method” to 1 (default is 0); 3) restart the calibration program.

These four steps describe the procedure of calibrating a scanner with static parameters. In certain cases, a set of dynamic parameter are much desired, especially when a scanner has a gantry not rigid or precise enough but with trajectory reproducible, and needs to be treated differently. This is to be described in detail in the next section.

Related Topics

1 Static Parameter Calibration Procedure

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2 Dynamic Parameter Calibration Procedure

Dynamic Parameter Calibration Procedure

Dynamic parameter calibration is another calibration mode. Generally it is assumed to be less accurate than static. But it can provide calibration information for each projection wich is useful for shaky gantry scanners and in some other cases. Similarly to static calibration, phantoms are used. This calibration takes 4 steps.

1. Step 1: Scanning of bead phantom

2. Input phantom information

3. Calibrate the geometry

4. Output data. Phantom positioning artifact correction First and second steps are the same as in static calibration. Just check the “Dynamic Algorithm” checkbox.

Related Topics

PART 3. COBRA Geo-Calibration Utility. User Manual
2.1 Step 3: Extract bead centers
2.2 Step 4: Output data. Phantom positioning artifact correction.


2.1 Step 3: Extract bead centers

Step 3: Extract bead centers

After all aforementioned values have been set up correctly, one can proceed to the next step which is to extract the bead centers from each projections, by clicking the button “Extract Bead Centers”. The program performs all calculations automatically and, depending on the size of each projection and the number of projections, it can roughly take from 1 minute to 5 minutes.

You can monitor its progress by looking on the viewer window. Here you can see current projection image, detected beads positions (red crosses), ellipse trajectories, and lines separating the bead layers. Red crosses correspond to corrected bead positions, so they will not always exactly coincide the bead shadows on the projections. Calculated calibration parameters for the current projection are shown in the top right corner of the viewer window.

Button “Calibrate Parameters” is not used in this version.

Figure 34: The viewer window during the callibration.

2 Dynamic Parameter Calibration Procedure


2.2 Step 4: Output data. Phantom positioning artifact correction.

Step 4: Output data. Phantom positioning artifact correction.

The program produces 2 files with the results “GeoTest_Out.xxm” and “ProjCalib.txt”. “ProjCalib.txt” contains per projection (dynamic) calibration parameters as well as summary of averages at the bottom. “GeoTest_Out.xxm” is a file used by COBRA, contains only average values of the calibrated parameters.

The data in “ProjCalib.txt” could be used calibrate a scanner with unsteady mechanics, where calibration parameters depend on scan angle. However data in “ProjCalib.txt” should be manually corrected for the phantom positioning artifact. This artifact affects only per projection (dynamic) values in “ProjCalib.txt”, average values in “GeoTest_Out.xxm” are not affected.

Ideally phantom axis should coincide with the axis of rotation. In this case no correction would be necessary. However in practice it is not possible to place phantom ideally with 0.5 pixel accuracy. Usually phantom has ~2mm (~8pixel) horizontal offset and ~0.1 degree vertical tilt. It is impossible for the software to distinguish between phantom offset and detector offset and between phantom tilt and detector pivot from the single projection. Thus phantom offset and tilt will produce a measurement artifact. This artifact can have significant amplitude, but can be easily removed since it has a predictable sinusoidal shape. Current version of the software does not remove this artifact automatically, so it must be done manually, e.g. in Excel.

For true values of calibration parameters detector offsets (Uoffset, Voffset), DSO, DDO, detector pivot (h), distorted values Uoffset*, Voffset*, DSO*, DDO*, h* can be expressed as follows:

, not affected by artifact

Pivot

Slightly affected by phantom offset and tilt

To remove the artifact it is necessary to fit and then subtract the sine function from dynamic values Uoffset*, Voffset*, DSO*, DDO*, h*.

Note that for calibration purposes measured values can be used even without any corrections. Sinusoidal fluctuations will just shift axis of rotation of the scanner to the axis of the phantom.

2 Dynamic Parameter Calibration Procedure


3 COBRA_GeoCalibration COM Interface Tags (SDK)

COBRA_GeoCalibration COM Interface Tags (SDK)

Tag name | Description | Default Value | Remarks
PHANTOM_RADIUS | The radius of the calibration phantom, in mm |  |
PHANTOM_LAYERHGT | The distance of neighboring bead layers, in mm |  |
PHANTOM_LAYERS | The number of bead layers in the calibration phantom |  |
PHANTOM_PERLAYER | Number of beads per layer |  |
CROP_TOP | Number of rows to be excluded on the top during bead extraction |  |
CROP_BOTTOM | Number of rows to be excluded at the bottom |  |
CROP_LEFT | Number of columns to be excluded on the left |  |
CROP_RIGHT | Number of columns to be excluded on the right |  |
CROP_MIDDLE1 | The starting y value of a horizontal strip to be excluded. “y value” here means the y coordinate where the top row of the detector is considered as y = 0 and rows below it are positive |  |
CROP_MIDDLE2 | The ending y value of a horizontal strip to be excluded |  |
LAYER_ZONE1 | The y value of a line that can clearly separate the first bead layer and the second layer |  |
LAYER_ZONE2 | The y value of a line that can clearly separate the second bead layer and the third layer |  |
LAYER_ZONE3 | The y value of a line that can clearly separate the third bead layer and the fourth layer |  |
HWND_CALLER | The handle to the caller’s window |  |
DELAY_MSECS | The amount of time in milliseconds for the calibration |  |
HALFBEAM_MODE | Determines the scan mode. Possible values: Fullbeam (0), Left Halfbeam (-1), Right Halfbeam (1), Undefined (-10000). In older versions (or when (-10000 is used) the mode was determined by left and right crops. | -10000 undefine | Starting v6.1.7

PART 3. COBRA Geo-Calibration Utility. User Manual


PART 4. Programmer’s Guide. Cobra Cone-Beam Reconstruction SDK.

Related Topics

1. CobraDispatcher Dynamic Link Library
2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1. CobraDispatcher Dynamic Link Library

CobraDispatcher Dynamic Link Library

Related Topics

PART 4. Programmer’s Guide. Cobra Cone-Beam Reconstruction SDK.
1.1. Introduction.
1.2. Return values
1.3. Function CobraDispatcher_Init
1.4. Function CobraDispatcher_CheckLicence
1.5. Function CobraDispatcher_Release
1.6. Function CobraDispatcher_Communicate
1.7. Function CobraDispatcher_GetReconstructionStatus
1.8. Function CobraDispatcher_SetParametersByFile
1.9. Function CobraDispatcher_SetCharParameter
1.10. Function CobraDispatcher_SetIntParameter
1.11. Function CobraDispatcher_SetFloatParameter
1.12. Function CobraDispatcher_SetCharOption
1.13. Function CobraDispatcher_SetFloatOption
1.14. Function CobraDispatcher_SetIntOption
1.15. Function CobraDispatcher_SetReconMode
1.16. Function CobraDispatcher_ResetReconstruction
1.17. Function CobraDispatcher_CalculateScale
1.18. Function CobraDispatcher_StartReconstruction
1.19. Function CobraDispatcher_ProjectionAvailable
1.20. Function CobraDispatcher_DeliverInlineScannerParameter
1.21. Function CobraDispatcher_TerminateReconstruction
1.22. Function CobraDispatcher_ImageLinearTrf
1.23. Function CobraDispatcher_SetProjectionArray
1.24. Function CobraDispatcher_SetSliceArray
1.25. Class CdispatcherCallbackTemplate
1.26. Function InitCallBack

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.1. Introduction.

Introduction.

CobraDispatcher is the DLL component of the COBRA software package containing a set of API’s to control a reconstruction process. Particularly it provides the interface between user’s application with GUI and COBRA’s engine.

COBRA_Exxim installation package contains two examples of programs. One is a simple console application (ConsoleApp) . The other one is more complicated MFC-based client program, which may simulate a data acquisition (Error! Reference source not found.) .

NB. Please use CobraDispatcher_x64.lib / CobraDispatcher_x64.dll for 64-bit applications.

Below there are formal descriptions of all API’s.

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.2. Return values

Return values

All functions return standard values (defined in WinError.h)

S_OK (=0x00000000)

E_UNEXPECTED (=0x8000FFFF)

E_NOTIMPL (=0x80004001)

E_OUTOFMEMORY (=0x8007000E)

E_INVALIDARG (=0x80070057)

E_NOINTERFACE (=0x80004002)

E_POINTER (=0x80004003)

E_HANDLE (=0x80070006)

E_ABORT (=0x80004004)

E_FAIL (=0x80004005)

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.3. Function CobraDispatcher_Init

Function CobraDispatcher_Init

is for initialization the COBRA

Syntax:

HRESULT CobraDispatcher_Init(

const char* RegisterTo,

const char* SerNum)

Parameters:

RegisterTo

Company/Organization name

SerNum

Serial Number of CobraExxim

Remarks.

The serial number is generated by Exxim Computing Corporation for licensed installations. Any name and number is allowable, but, in this case COBRA will only work in the

demo-version mode (slices will display the word "Exxim", distributing mode is unavailable)

The recommended place to call the function is: CWinApp::InitInstance()

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.4. Function CobraDispatcher_CheckLicence

Function CobraDispatcher_CheckLicence

License checking.

Syntax:

HRESULT CobraDispatcher_CheckLicence(

const char* RegisterTo,

const char* SerNum)

Parameters:

RegisterTo

Company/Organization name

SerNum

Serial Number of CobraExxim

Remarks.

The serial number is generated by Exxim Computing Corporation for licensed installations.

The recommended context to call the function is: checking necessity to provide registration dialog.

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.5. Function CobraDispatcher_Release

Function CobraDispatcher_Release

The close and release of all internal objects of CobraDispatcher: this should be the last call in the sequence of CobraDispatcher calls during a reconstruction

Syntax:

HRESULT CobraDispatcher_Release()

Parameters: no

Remarks.

This is allowed in any program context (e.g. - it can be called twice)

Recommended place to call the function: in the WM_DESTROY handler of the main application window

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.6. Function CobraDispatcher_Communicate

Function CobraDispatcher_Communicate

Setup of computers that form a cluster (for the distributed mode)

Syntax:

HRESULT CobraDispatcher_Communicate(

int NodeNum=1,

char* NodeName[]=NULL,

int nParticipation[]=NULL);

Parameters:

NodeNum

Quantity of PC nodes (for distributed mode is more than one)

NodeName

Array containing names of computers. Should be provided as a NULL pointer for non- distributed mode.

nParticipation

Node participation in reconstruction process, the array of numbers in the range from 1 to 16. Sum of the array elements should be equal to 16. Should be provided as a NULL pointer for non- distributed mode.

Remarks.

Call CobraDispatcher_Communicate() for non-distributed mode.

Recommended place to call the function: CWinApp::InitInstance().

Should be called after CobraDispatcher_Init().

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.7. Function CobraDispatcher_GetReconstructionStatus

Function CobraDispatcher_GetReconstructionStatus

Getting reconstruction status

Syntax:

HRESULT CobraDispatcher_GetReconstructionStatus(

int node,

int* pass,

int* prj,

int* slice,

int* phase)

Parameters:

node

input, node number starting zero (always zero for not distributed configuration)

pass

output, active pass; reconstruction process is inactive (finished) if equal to -1

prj

output, number of projection, which currently has being processed (equal to -1000 in the phase of slice dumping)

slice

output, number of slices, wich currently has being dumped (equal to -1 in the first phase of reconstruction)

phase

output, number of iteration, wich currently has being performed (equal to 0 in the first phase of reconstruction)

Remarks.

The COBRA is processing projections by bunches of 8 ones. Returned value of prj

is a sequence of 0, 8, 16, etc.

Returned value of prj during dumping slices is equal to –1000.

The COBRA is inactive (has completed the reconstruction and dumping) if for all nodes the value of pass is equal to -1

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.8. Function CobraDispatcher_SetParametersByFile

Function CobraDispatcher_SetParametersByFile

This function is used to set all parameters present in the file

Syntax:

HRESULT CobraDispatcher_SetParametersByFile(

const char* FileName)

Parameters:

FileName

Name of file containing parameters tags and tag values

Remarks.

See PART 2, Reconstruction Engine, section 6 for tags and parameter file description

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.9. Function CobraDispatcher_SetCharParameter

Function CobraDispatcher_SetCharParameter

This function is used to set string parameters

Syntax:

HRESULT CobraDispatcher_SetCharParameter(

DWORD Tag,

const char* Value)

Parameters:

Tag

Name of the tag

Value

Value of the tag to be set

Remarks.

All character tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionCharParameter

See PART 2, Reconstruction Engine, section 6 for tags description.

Variables that are undefined by CobraDispatcher_SetCharParameter will be set to

the default value. "Default" means the value which will have the variable undefined by CobraDispatcher_SetCharParameter (e.g. PARTAG_SRCDATAPATH will be set to the default value "c:\data" unless specified otherwise by calling this function with the PARTAG_SRCDATAPATH tag )

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.10. Function CobraDispatcher_SetIntParameter

Function CobraDispatcher_SetIntParameter

This function is used to set integer parameters

Syntax:

HRESULT CobraDispatcher_SetIntParameter(

DWORD Tag,

int Value)

Parameters:

Tag

Name of the tag

Value

Value of the tag to be set

Remarks.

All integer tags with the prefix <PARTAG> and <SAMARATAG> are set by CobraDispatcher_SetIntOptionParameter. See PART 2, Reconstruction Engine, section 6 for tags description

Variables that are undefined by CobraDispatcher_SetIntParameter will be set to

the default value. "Default" means the value which will have the variable undefined by CobraDispatcher_SetIntParameter (e.g. PARTAG_CUBESIZEX will be set to the default value 512 unless specified otherwise by calling this function with the . PARTAG_CUBESIZEX tag )

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.11. Function CobraDispatcher_SetFloatParameter

Function CobraDispatcher_SetFloatParameter

This function is used to set float parameters.

Syntax:

HRESULT CobraDispatcher_SetFloatParameter(

DWORD Tag,

float Value)

Parameters:

Tag

Name of the tag

Value

Value of the tag to be set

Remarks.

All float tags with the prefix <PARTAG> are set by CobraDispatcher_SetIntOptionFloatParameter. See PART 2, Reconstruction Engine, Reconstruction parameters (Section 6) for tags description

Variables that are undefined by CobraDispatcher_SetFloatParameter will be set to

the default value. "Default" means the value which will have the variable undefined by Error! Unknown switch argument. (e.g. PARTAG_SCANANGLE will be set to the default value 360 unless specified otherwise by calling this function with the PARTAG_SCANANGLE tag )

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.12. Function CobraDispatcher_SetCharOption

Function CobraDispatcher_SetCharOption

This function is used to set optional string parameters

Syntax:

HRESULT CobraDispatcher_SetCharOption(

DWORD Tag,

const char* Value)

Parameters:

Tag

Name of the tag

Value

Value of the tag to be set

Remarks.

All character tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption. See section 6 of Part 1 for details.

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.13. Function CobraDispatcher_SetFloatOption

Function CobraDispatcher_SetFloatOption

This function is used to set optional float parameters for the following tags

OPTTAG_SLICESCALE - Scaling during getting 16-bit slices from 32-bit cube, default = 1.0

Syntax:

HRESULT CobraDispatcher_SetFloatOption(

DWORD Tag,

float Value)

Parameters:

Tag

Name of the tag

Value

Value of the tag to be set

Remarks.

All float tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption. See PART 2, Reconstruction Engine, Reconstruction parameters (Section 6) for tags description

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.14. Function CobraDispatcher_SetIntOption

Function CobraDispatcher_SetIntOption

This function is used to set optional string parameters .

Syntax:

HRESULT CobraDispatcher_SetIntOption(

DWORD Tag,

int Value)

Parameters:

Tag

Name of the tag

Value

Value of the tag to be set

Remarks.

All integer tags with the prefix <OPTAG> are set by CobraDispatcher_SetIntOption

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.15. Function CobraDispatcher_SetReconMode

Function CobraDispatcher_SetReconMode

This function is used to set the reconstruction mode in the following forms (examples)

CobraDispatcher_SetReconMode (BPMODETAG_CONEBEAM | MODE_OFFLINE);

CobraDispatcher_SetReconMode (BPMODETAG_CONEBEAM | MODE_OFFLINE

);

CobraDispatcher_SetReconMode (MODE_OFFLINE | BPMODETAG_LINITRP);

Syntax:

HRESULT CobraDispatcher_SetReconMode(

DWORD Value)

Parameters:

Value

Value to be set

Remarks.

All tags with the prefix < BPMODETAG> amd <MODE> are set by CobraDispatcher_SetReconMode. See PART 2, Reconstruction Engine, Reconstruction parameters (Section 6) for tags description

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.16. Function CobraDispatcher_ResetReconstruction

Function CobraDispatcher_ResetReconstruction

To reset all API's

Syntax:

HRESULT CobraDispatcher_ResetReconstruction()

Parameters: no

Remarks.

CobraDispatcher_ResetReconstruction should be called as the first function in a sequence of calls when starting a new reconstruction process

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.17. Function CobraDispatcher_CalculateScale

Function CobraDispatcher_CalculateScale

To get auto-detected scale factor which is applied to filtered projections

Syntax:

HRESULT CobraDispatcher_CalculateScale(

double* pScaleFactor)

Parameters:

pScaleFactor

Calculated scale factor

Remarks.

The function is optional and reconstruction process can be started with

PARTAG_SCALEFACTOR =-1. This function and the ability to access to and analyze first scaled projection gives more flexible control of auto-detecting the scale factor.

For getting access to first scaled projection user has to set the optional parameter OPTTAG_WORKDIR. The function CobraDispatcher_CalculateScale dumps the file with preprocessed projection to this folder (the name of the file is Preprocd_proj.000)

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.18. Function CobraDispatcher_StartReconstruction

Function CobraDispatcher_StartReconstruction

Used to start reconstruction

Syntax:

HRESULT CobraDispatcher_StartReconstruction()

Parameters: no

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.19. Function CobraDispatcher_ProjectionAvailable

Function CobraDispatcher_ProjectionAvailable

This function signals that the projection nPrj has been dumped to the disk and is available for processing

Syntax:

HRESULT CobraDispatcher_ProjectionAvailable(

int nPrj)

Parameters:

nPrj

Number of available projection

Remarks.

CobraDispatcher_ProjectionAvailable should be called using a sequence such as

CobraDispatcher_ProjectionAvailable (0);

CobraDispatcher_ProjectionAvailable (1);

CobraDispatcher_ProjectionAvailable (2);

CobraDispatcher_ProjectionAvailable (3);

... , etc.

This version of Cobra does not support nonconsecutive projections (this mode is available as a customization)

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.20. Function CobraDispatcher_DeliverInlineScannerParameter

Function CobraDispatcher_DeliverInlineScannerParameter

is for in-line delivery of parameters defining scanner geometry

Syntax:

HRESULT CobraDispatcher_DeliverInlineScannerParameter(

/*[in]*/ unsigned int scan_pos,

/*[in]*/ unsigned int tag_name,

/*[in]*/ float* tag_value)

Parameters:

scan_pos

Scanner position (number of projection)

tag_name

Tag name (see below)

tag_value

Defines tag value(s)

Remarks.

Important!

Starting version 6 this function is not effective and being kept for Cobra client code compatibility.

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.21. Function CobraDispatcher_TerminateReconstruction

Function CobraDispatcher_TerminateReconstruction

Terminating reconstruction

Syntax:

HRESULT CobraDispatcher_TerminateReconstruction(int ProjStop=-1)

Parameters: ProjStop

The reconstruction process has to be terminated after backprojecting the projection

defined by this parameter. If >0 then calculated slices will be dumped.

Remarks.

A call to this function is allowed even when the reconstruction process is not running

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.22. Function CobraDispatcher_ImageLinearTrf

Function CobraDispatcher_ImageLinearTrf

The function executes the operation of linear image transform. Executed formula:

out_pixel (u_ctr,v_ctr) = in_pixel(x_ctr,y_ctr)

where

x_ctr = u_ctr*cos(angle) - v_ctr*sin(angle) + HrzOffset;

y_ctr = u_ctr*sin(angle) + v_ctr*cos(angle) + VrtOffset;

x_ctr = x-SizeX/2

y_ctr = y-SizeY/2

u_ctr = u-SizeX/2

v_ctr = v-SizeY/2

Syntax:

HRESULT CobraDispatcher_ImageLinearTrf(

short* pInputArray[],

short* pOutputArray[],

int nAmount,

int nSizeX,

int nSizeY,

float fHrzOffset,

float fVrtOffset,

float dangle )

Parameters:

pInputArray - Array of input images (one 16-bit signed integer per pixel)

pOutputArray - Array of output images (one 16-bit signed integer per pixel)

nAmount - Amount of images in the array to be transformed (can be only 1,2 or 4)

nSizeX, - Image size (horizontal)

nSizeY - Image size (vertical)

fHrzOffset - Horizontal offset

fVrtOffset - Vertical offset

dAngle - Angle of rotation (rolling), in degrees

Remarks.

This is stand-alone function. In practice the possible context to use it is projection rolling compensation (axis of rotation is not parallel to the vertical axis of detector). The place in the program to use is the moment preceding dumping projections to the disk.

Please use this function with nAmount = 2 or 4 to utilize the advantage of multi-CPU PC's.

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.23. Function CobraDispatcher_SetProjectionArray

Function CobraDispatcher_SetProjectionArray

This function is setting the pointer to the projection array so client SW may keep all projections in the memory. The address of the first pixel in prj # N (N starts from 0) is :

WORD* pPrjN = (WORD*) (ppProjectionArray[N]);

where ppProjectionArray is not NULL

All buffers are allocated/released in the calling program

For off-line mode all projection buffers has to be allocated and contain data before starting reconstruction

For in-line mode projection buffers has to be allocated and contain data before making the current projection available for reconstruction (see also API CobraDispatcher_ProjectionAvailable)

The buffer allocated for projection # N maight be released after getting sync. info (callback or pull out) that projection # N is preprocessed and backprojected

Syntax:

HRESULT CobraDispatcher_SetProjectionArray(

unsigned long ** ppProjection) ;

Parameters:

ppProjection - Pointer to the projection array

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.24. Function CobraDispatcher_SetSliceArray

Function CobraDispatcher_SetSliceArray

This function is setting the pointer to the slice array the address of the first pixel in slice # N (N starts from 0) is :

WORD* pSlcN = (WORD*) (ppSlices[N]);

where ppSlices is not NULL at the moment of starting reconstruction. Slice buffers has to be allocated before starting reconstruction.

All buffers are allocated/released in the calling program

Syntax:

HRESULT CobraDispatcher_SetSliceArray(unsigned long ** ppSlice) ;

Parameters:

ppSlice - Pointer to the slice array

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25. Class CdispatcherCallbackTemplate

Class CdispatcherCallbackTemplate

The virtual class provides the formal definition of callback functionality. Virtual functions should be implemented on the GUI side. An object created from the inheriting class is passed as a void* pointer by function InitCallBack(see below).

It is legal to not set the callback object or to set it to NULL. In this case the reconstruction progress is controllable by CobraDispatcher_GetReconstructionStatus().

Because the methods are called from the Introduction.

CobraDispatcher threads the recommended (strongly) way to update the main application GUI content is using PostMessage() calls

An example of the implementation is shown in the Error! Reference source not found. application by the files DispatcherCallback.h and DispatcherCallback.cpp

Related Topics

1. CobraDispatcher Dynamic Link Library
1.25.1. Method InformProjectionProgress
1.25.2. Method ProgressImageIsAvailable
1.25.3. Method InformStartDumpingSlices
1.25.4. Method InformFinishDumpingSlices
1.25.5. Method InformDumpingSlicesProgress
1.25.6. Method ShowMessage
1.25.7. Method InformPhaseProgress
1.25.8. Method InformReconstructionCompleted
1.25.9. Method InformStartLongOperation
1.25.10. Method InformStopLongOperation

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.1. Method InformProjectionProgress

Method InformProjectionProgress

Introduction.

CobraDispatcher calls it when nCount projections have been backprojected

Syntax:

DWORD InformProjectionProgress(

int nCount,

DWORD nAvgProjProcTimeMsec,

DWORD nTimeElapsed,

DWORD nNode )

Parameters:

nCount - Number of processed projection

nAvgProjProcTimeMsec - Averaging time for back-projecting one projection (msec)

nTimeElapsed - Total time elapsed from start (sec)

nNode - PC node (0 for not distributed configuration)

Remarks.

It is called once per bunch of 8 projections

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.2. Method ProgressImageIsAvailable

Method ProgressImageIsAvailable

Introduction.

CobraDispatcher calls it when the five-slices image (which shows the reconstruction progress) has been updated

Syntax:

DWORD ProgressImageIsAvailable(

DWORD nSize,

short* pFiveSlices,

DWORD nNode)

Parameters:

nSize - Size of 5 slice image (bytes)

pFiveSlices - Pointer to image (GUI can grab it)

nNode - PC node (0 for not distributed configurations)

Remarks.

The size of the image is equal to 376*536 (it’s provided by the Introduction.

CobraDispatcher via a parameter nSize)

The image is represented as a row-by-row linear array of shorts (16-bit signed integers)

The actual slice pixels have values in the range of [1,255]. The background is zero.

The function is called once per bunch of projections. Call frequency depends on the cube size and can be once per 8, 16, or 32 projections.

pFiveSlices is the input parameter and is the valid pointer to the temporary buffer provided by the Introduction.

CobraDispatcher. The content of pFiveSlices should be copied to another buffer inside the implemented body of ProgressImageIsAvailable(..).

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.3. Method InformStartDumpingSlices

Method InformStartDumpingSlices

Introduction.

CobraDispatcher calls it when the slice dumping process has started

Syntax:

DWORD InformStartDumpingSlices(

DWORD nTimeElapsed,

DWORD nNode)

Parameters:

nTimeElapsed

Total time elapsed from start (sec)

nNode

PC node (0 for not distributed configurations)

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.4. Method InformFinishDumpingSlices

Method InformFinishDumpingSlices

Introduction.

CobraDispatcher calls it when the slice dumping process has finished

Syntax:

DWORD InformFinishDumpingSlices(

DWORD nTimeElapsed,

DWORD nNode)

Parameters:

nTimeElapsed

Total time elapsed from start (sec)

nNode

PC node (0 for not distributed configurations)

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.5. Method InformDumpingSlicesProgress

Method InformDumpingSlicesProgress

Introduction.

CobraDispatcher calls it when nCount slices are dumped

Syntax:

DWORD InformDumpingSlicesProgress(

int nCount,

DWORD nTimeElapsed,

DWORD nNode)

Parameters:

nCount

Number of dumped slice

nTimeElapsed

Total time elapsed from start (sec)

nNode

PC node (0 for not distributed configurations)

Remark

Called after each slice dump

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.6. Method ShowMessage

Method ShowMessage

Introduction.

CobraDispatcher calls it when an info, error or warning message is required

Syntax:

DWORD ShowMessage(

char* Message,

DWORD nNode)

Parameters:

Message

0-terminated string of chars

nNode

PC node (0 for not distributed configurations)

Remark

Can be used to provide logging (see also Error! Reference source not found. examples).

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.7. Method InformPhaseProgress

Method InformPhaseProgress

Introduction.

CobraDispatcher calls it when the phase of reconstruction process is being changed

(start/stop back projecting, start/stop forward projecting)

Syntax:

DWORD InformPhaseProgress (

int nPhaseType,

int nPhase,

int nPhaseCount,

DWORD nNode)

Parameters:

nPhaseType

Phase type where

PHASE_BACK_PRJ_START (=1) - start back projecting,

PHASE_BACK_PRJ_STOP (=2) - stop back projecting,

PHASE_FORWARD_PRJ_START (=3) - start forward projecting,

PHASE_FORWARD_PRJ_STOP (=4) - stop forward projecting.

nPhase

Phase number

nPhaseCount

Total phases per the whole reconstruction

nNode

PC node (0 for not distributed configurations)

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.8. Method InformReconstructionCompleted

Method InformReconstructionCompleted

Introduction.

CobraDispatcher calls it when final result of reconstruction is available

Syntax:

DWORD InformReconstructionCompleted (

int duration)

Parameters:

duration

Total time of reconstruction (ms)

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.9. Method InformStartLongOperation

Method InformStartLongOperation

Introduction.

CobraDispatcher calls it when COBRA starts a long operation (over 3 seconds) so client program (progress bars etc) should be arranged properly.

Syntax:

DWORD InformStartLongOperation (

int opcode)

Parameters:

opcode

Reserved (currently = 0)

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.25.10. Method InformStopLongOperation

Method InformStopLongOperation

Introduction.

CobraDispatcher calls it when COBRA finishes a long operation (over 3 seconds) so client program (progress bars etc) could finish properly.

Syntax:

DWORD InformStopLongOperation (

int opcode, int duration)

Parameters:

opcode

Reserved (currently = 0)

duration

Total time of long operation computation (ms)

Related Topics

1.25. Class CdispatcherCallbackTemplate

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


1.26. Function InitCallBack

Function InitCallBack

Setting the callback object created from the class inheriting from the virtual class CdispatcherCallbackTemplate and implementing its functionality

Syntax:

HRESULT InitCallBack(

void* p_objCallBackToGUI)

Parameters:

p_objCallBackToGUI

Pointer to object

Remarks.

It is legal to not set the callback object or to set it to NULL. In this case the reconstruction progress is controllable by CobraDispatcher_GetReconstructionStatus()

Because the methods are called from the Introduction.

CobraDispatcher threads the recommended way to update the main application GUI content is using PostMessage() calls.

Related Topics

1. CobraDispatcher Dynamic Link Library

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2. COBRA_GeoCalibration COM Interface

COBRA_GeoCalibration COM Interface

The geometrical calibration routine provides 10 exported methods for use within user’s program. A summary of these methods is listed in the following subsection, while the detailed descriptions are given in the next section “Methods”.

The geometrical calibration routine also provides a Windows message to notify the user’s program its progress in the calibration process. This can typically be used in the user program to display the calibration progress. More detail will be given in section “Message”.

All the methods exported have the same return data type HRESULT, a 32-bits unsigned integer, to indicate the returned status of the called method. The user is encourage to check the return values of these method calls to monitor the calibration routine, to ensure any error arose be handled in time. A list of possible return values are given in section “Returned Values”.

Related Topics

PART 4. Programmer’s Guide. Cobra Cone-Beam Reconstruction SDK.
2.1. Manual Installation
2.2. Methods
2.3. Method Exec
2.4. Method GetLastError
2.5. Method GetOutputFloatParameter
2.6. Method GetOutputIntParameter
2.7. Method GetStatus
2.8. Method Init
2.9. Method ReleaseGeo
2.10. Method SetInitialCharParameter
2.11. Method SetInitialFloatParameter
2.12. Method SetInitialIntParameter
2.13. Method ProcessOneFrame
2.14. Method ComputeParameters
2.15. Method CheckPhantomPositioning
2.16. Message sending and progress notification
2.17. Returned Values

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.1. Manual Installation

Manual Installation

The COBRA geometrical calibration routine is supplied as a COM object. The COM object, COBRA_GeoCalibration, needs to be first installed before any use. Usually it is being installed during Cobra SW Suite installation process. To (re)install Cobra_GeoCalibration.dll manually, go to Windows’ “Start\Run…” command window from the Start Menu, and type in the following:

Regsvr32 [Full_Path]\Cobra_GeoCalibration.dll

where “Regsvr32” is a standard windows program that can be found in the “system32” folder under the Windows installation directory.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.2. Methods

Methods

The following table lists the interface methods provided by the COBRA_GeoCalibration COM object, in alphabetic order:

Method | Functionality
Exec ComputeParameters GetLastError GetOutputFloatParameter GetOutputIntParameter GetStatus Init ProcessOneFrame ReleaseGeo SetInitialCharParameter SetInitialFloatParameter SetInitialIntParameter CheckPhantomPositioning | Perform geometrical calibration Compute the geometrical parameters Get information on the last error occurred Retrieve a floating point parameter Retrieve an integer parameter Receiving information about calibration status in percentage progress Initialize the calibration routine, should be called before any other function calls in this list Extract bead centers on per projection basis Release resource and variables used in the calibration Routine. It should be called as the last call into the routine Set a string parameter Set a floating point parameter Set an integer parameter Checks the phantom positioning accuracy

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.3. Method Exec

Method Exec

It performs geometrical calibration after all the input parameters have been set up correctly.

Syntax:

HRESULT Exec(

/* [LONG][in] */ LONG nParam)

Parameters:

nParam

Represents the intermediate steps in the geometrical calibration. It has a value to be either 0 or 1. When it is 0, this function performs the routine’s first step to extract the bead centers for each projection. When it is 1, it computes the geometrical parameters based on the extracted bead center from step 1.

Remark

This function should be called in sequential order two times with its parameter set to 0 and 1 respectively. With nParam = 0 (the first step), the function returns immediately, and the user should either call the method GetStatus to check its progress, or respond to a predefined Windows message it sends out (refer to 4.2.2). With nParam = 1 (the second step), the function will return till it is completed.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.4. Method GetLastError

Method GetLastError

is for retrieving the information describing the last error, if there is any error during the last function call.

Syntax:

HRESULT GetLastError(

/* [string][in] */ char *strMessage,

/* [LONG][in] */ LONG nMaxChar)

Parameters:

strMessage

Points to a buffer, allocate by the user, to receive the error message.

nMaxChar

Is the length of the buffer.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.5. Method GetOutputFloatParameter

Method GetOutputFloatParameter

is to obtain a single precision floating point value. It is intended to use for receiving the results outputted from the geometrical calibration.

Syntax:

HRESULT GetOutputFloatParameter(

/* [string][in] */ char *strTagName,

/* [float][out] */ float *pOutValue)

Parameters:

strTagName

Specifies the name of the variable whose value is to be retrieved. It can be

"PARTAG_DETOFFSETU" the detector U offset, in pixels

"PARTAG_DETOFFSETV" the detector V offset, in pixels

"PARTAG_SRCOBJDIST" the source-to-isocenter distance, in mm

"PARTAG_SRCDETDIST" the source-to-detector distance, in mm

"PARTAG_SCANANGLE" the scan angle, in degrees

"PARTAG_DETPIVOT" the detector pivot, in degrees

pOutValue

The address to which the retrieved value should be stored.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.6. Method GetOutputIntParameter

Method GetOutputIntParameter

is to obtain an integer value. It is used to receive the output results from the geometrical calibration.

Syntax:

HRESULT GetOutputIntParameter(

/* [string][in] */ char *strTagName,

/* [LONG][out] */ LONG *pOutValue)

Parameters:

strTagName

Specifies the name of the variable whose value is to be retrieved. It can be:

"PARTAG_CUBEORIGINZ" the z origin of the reconstructed volume

"PARTAG_ROTATIONDIR" the direction of rotation

pOutValue

The address to which the retrieved value should be stored.

Examples:

GetOutputFloatParameter ("PARTAG_DETOFFSETU", &fUoffset);

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.7. Method GetStatus

Method GetStatus

is for obtaining the progress status of the calibration process.

Syntax:

HRESULT GetStatus(

/* [LONG][out] */ LONG * nStage,

/* [LONG][out] */ LONG * nStatus)

Parameters:

nStage

Specify the step of the calibration is currently performing. It can be only either 0 or 1 as specified within the method Exec. 0 means the bead-extraction stage, and 1 means the calculation stage. Refer to method Exec.

nStatus

Specify the percentage progress of the calibration. Its value is from 0 to 100, with 100 meaning the corresponding stage has completed. When there is error, it is set to -1, and the user should call GetLastError to receive the detailed error information.

Remarks

a) This function is meant to be called after the user calls Exec(0) to monitor and display the calibration progress.

b) If the user program receives and monitors the Windows message the calibration routine sends out, there is no need to make this method call for obtaining the progress status.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.8. Method Init

Method Init

is to initialize the calibration COM object.

Syntax:

HRESULT Init(

/* [string][in] */ char *strParameterFile)

Parameters:

strParameterFile

Points the initialization a parameter file. Reserved for future use, and must be set to NULL in the current version.

Remarks

This function has to be called before any other function calls.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.9. Method ReleaseGeo

Method ReleaseGeo

is to release the calibration object.

Syntax:

HRESULT ReleaseGeo(void)

Parameters:

This function does not take any parameters.

Remarks

This function has to be called after all the function calls.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.10. Method SetInitialCharParameter

Method SetInitialCharParameter

is for setting a string parameter for the calibration routine.

Syntax:

HRESULT SetInitialCharParameter(

/* [string][in] */ char * strTagName,

/* [string][in] */ char * strTagValue)

Parameters:

strTagName

The name of the variable whose value is to be set. It can be:

"PARTAG_SRCDATAPATH" the path of the projection files

" OPTTAG_PRJNAMEFORMAT " the name template of the projection files

strTagValue

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.11. Method SetInitialFloatParameter

Method SetInitialFloatParameter

is for setting a floating point parameter for the calibration routine.

Syntax:

HRESULT SetInitialFloatParameter(

/* [string][in] */ char * strTagName,

/* [float][in] */ float fTagValue)

Parameters:

strTagName

The name of the variable whose value is to be set. It can be:

"PHANTOM_RADIUS" the radius of the calibration phantom, in mm

"PHANTOM_LAYERHGT" the distance of neighboring bead layers, in mm

"PARTAG_DETSIZEU" the detector U pixel size, in mm

"PARTAG_DETSIZEV" the detector V pixel size, in mm

"PARTAG_CUBEPITCHZ" the voxel size in z direction, in mm

fTagValue

The value the variable is to be set.

Remarks

1) For "PHANTOM_LAYERHGT", in full beam mode where the central bead layer is excluded from calibration, this value should be set as the distance between the two used neighbor layers as if the central layer were not existed.

2) "PARTAG_CUBEPITCHZ" is only needed if the user wants the calibration routine to set the value for “PARTAG_CUBEORIGINZ” for them. Otherwise it is not used.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.12. Method SetInitialIntParameter

Method SetInitialIntParameter

is for setting an integer parameter for the calibration routine.

Syntax:

HRESULT SetInitialIntParameter(

/* [string][in] */ char * strTagName,

/* [LONG][in] */ LONG nTagValue)

Parameters:

strTagName

The name of the variable whose value is to be set. It can be:

"PARTAG_DETSIZEU" the detector pixel number in U

"PARTAG_DETSIZEV" the detector pixel number in V

"PARTAG_PROJRECON" the number of projections

"PHANTOM_LAYERS" the number of bead layers in the calibration phantom

"PHANTOM_PERLAYER" number of beads per layer

"CROP_TOP" number of rows to be excluded on the top during bead extraction

"CROP_BOTTOM" number of rows to be excluded at the bottom

"CROP_LEFT" number of columns to be excluded on the left

"CROP_RIGHT" number of columns to be excluded on the right

"CROP_MIDDLE1" the starting y value of a horizontal strip to be excluded. “y value” here means the y coordinate where the top row of the detector is considered as y = 0 and rows below it are positive

"CROP_MIDDLE2" the ending y value of a horizontal strip to be excluded

"LAYER_ZONE1" the y value of a line that can clearly separate the first bead layer and the second layer

"LAYER_ZONE2" the y value of a line that can clearly separate the second bead layer and the third layer

"LAYER_ZONE3" the y value of a line that can clearly separate the third bead layer and the fourth layer

"HWND_CALLER" the handle to the caller’s window

"DELAY_MSECS" the amount of time in milliseconds for the calibration routine to sit in idle after having processed each projection frame

"HALFBEAM_MODE" Determines the scan mode. Possible values: Fullbeam (0), Left Halfbeam (-1), Right Halfbeam (1), Undefined (-10000). In older versions (or when (-10000 is used) the mode was determined by left and right crops. Starting v6.1.7.

nTagValue

The value the variable is to be set.

Remarks

a) Starting v6.1.7 "HALFBEAM_MODE" is implemented to show if it is Fullbeam (0), Left Halfbeam (-1) (the left side of the projection images are missing), or Right Halfbeam (1). For older versions and if HALFBEAM_MODE not used or set to –10000 see b) and c) below

b) (Applicable for versions before v6.1.7) For full beam scan, "CROP_LEFT" and "CROP_RIGHT" should be set to be equal.

c) (Applicable for versions before v6.1.7) For half beam scan, if "CROP_LEFT" is greater than "CROP_RIGHT", it means that the detector is shift to left (the right side of the projection images are missing); if "CROP_LEFT" is smaller than "CROP_RIGHT", it means that the detector is shift to right (the left side of the projection images are missing). It is extremely important to keep this convention for the proper function of the calibration routine.

d) "CROP_MIDDLE1" and "CROP_MIDDLE2" should be set to 0 for half beam setup. They are intended for use under full beam where the central layer of bead could potentially overlap in projections.

e) "HWND_CALLER" is only used for the calibration routine to post a windows message to the caller window, to notify its progress. Default is NULL, in which case no message posting will be performed.

f) "DELAY_MSECS" is provided as an option to slow down the calibration process so the user’s program can have enough time to do other processes such as image displaying. Default is zero and can be ignored if not intended to use.

g) The parameters "LAYER_ZONE1~3" are meant for phantoms with 1 or 2 beads per layer used in the half-beam (extended view) mode. Otherwise they are not in effect and can be ignored.

Examples

SetInitialIntParameter ("PARTAG_PROJRECON", nViews);

SetInitialIntParameter ("HWND_CALLER", LONG(m_hWnd));

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.13. Method ProcessOneFrame

Method ProcessOneFrame

is for extracting the beads from one single projection.

Syntax:

HRESULT ProcessOneFrame(

/* [short][in] */ short * data,

/* [LONG][in] */ LONG nFrameNumber,

/* [float][out] */ float * beads,

/* [LONG][out] */ LONG * nBeadDetected,

/* [LONG][out] */ LONG * nBeadsValid)

Parameters:

data

A pointer points to the projection data stored as short integers.

nFrameNumber

Indicates which projection it is.

beads

A pointer points to a buffer to receive the bead coordinates. Allocated by the user program, and should have at least 128*sizeof(float) bytes. When this method returns, the buffer will contain the bead coordinates with x and y interleaved.

nBeadDetected

Returns the total number of beads detected by the routine.

nBeadsValid

Returns the total number of beads considered valid by the routine.

Remarks

This function replaces method Exec(0), and has to be used together with method ComputeParameters.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.14. Method ComputeParameters

Method ComputeParameters

is for calculating geometrical parameters based on the bead centers previously extracted by a series of calls to ProcessOneFrame.

Syntax:

HRESULT ComputeParameters(void)

Parameters:

This function does not take any parameters.

Remarks

This function replaces method Exec(1), and has to be used together with method ProcessOneFrame.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.15. Method CheckPhantomPositioning

Method CheckPhantomPositioning

for checking the phantom positioning accuracy. The function performs phantom image recognition of 3 projections, and determines how precisely phantom was positioned. It analyses not only beads, but also phantom borders, alignment crosses positions and other information.

Syntax:

HRESULT CheckPhantomPositioning(

/ * [in] */ FLOAT fDSO,

/* [in] */ FLOAT fDDO,

/* [in] */ FLOAT fUoffset,

/* [in] */ FLOAT fVoffset,

/* [out] */ CHAR *txtStatus) = 0; )

Parameters:

fDSO

Source-object distance estimate.

fDDO

Detector-object distance estimate.

fUoffset

Horizontal detector offset estimate

fVoffset

Vertival detector offset estimate

txtStatus

Currently unused.

Returns:

# of warnings (0-7) or error code

Remarks

Arguments are just approximate values and can be fairly imprecise. In fact only few checks performed by this function depend on these estimates.

This function should be called after SetInitialIntParameter and SetInitialFloatParameter function calls, just before first ProcessOneFrame or Exec call, because it uses standard parametrs used for geocalibration, like phantom

hight, radius, det. pitch, etc.

Warnings (if any) are saved to a log file "C:\GeoCheckLog.txt"

Possible warnigs include:

1. "GeoCalibration Warning: Phantom is tilted,

estimated tilt = %f degrees"

Shows if vertical tilt > 0.5 egrees

2. "GeoCalibration Warning: Phantom is not centered correctly,

estimated x,y offset = %f mm"

Shows if x,y offset > 3.5mm

3. "GeoCalibration Warning: Phantom is not facing right direction,

estimated offset = %f pix"(currently disabled)

4. "GeoCalibration Warning: Magnification estimation incorrect,

phantom thikness measured = %f pix vs estimated %f pix"

Shows if DSO, DDO and offsets estimates are far off

(calculated phantom width is more than 30 pix diffent from measured)

5. "GeoCalibration Warning: Phantom is higher/lower or Voffset incorrect,

z offset estimate = %f mm"

Shows if Measured Voffset position is 10mm off from given estimate

6. "GeoCalibration Warning: Pivot is to big, consider adjusting,

pivot estimate = %f mm "

Shows if Pivot > 0.5 degrees

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.16. Message sending and progress notification

Message sending and progress notification

COBRA_GeoCalibration COM object provides a predefined user message to indicate its progress in calibration. Specifically, the message reports the status of the bead extraction thread within the routine. It is up to the user to supply the calibration routine with a window handle for this to be effective. Alternatively, the user program can call GetStatus to actively monitor the progress.

The message is defined as WM_USER+10. The user should define a message handler in the user program to handle this message, for example:

BEGIN_MESSAGE_MAP(CCobra_Geo_Example2Dlg, CDialog)

  …

  ON_MESSAGE(WM_USER+10, OnThreadNotification)

  …

END_MESSAGE_MAP()

with a function prototype in the following form:

LRESULT OnThreadNotification(WPARAM wParam, LPARAM lParam);

The possible values for the parameter wParam and what they represent are listed below:

wParam | 0 | The thread has completed and exited successfully.
 | 1-0x010000 | The bead extraction is in progress, and has processed the nth projection, where n is the value returned by wParam. Note this value is indexed off 1, not 0.
 | 0x010001- | Indicating an error. The user should call GetLastError for more information in this case.

When wParam is in the range of 1-0x010000, the thread also returns a structure indicating the per projection result, pointed by the parameter lParam. Otherwise the pointer parameter should be ignored. The structure is defined as following:

      struct

      {

            int   nValidCounts;

            int   nDetectedCounts;

            float fCoords[128];

      };

where “nDetectedCounts” is the total number of beads detected in this projection, with the bead locations stored in the array “fCoords” and with x and y coordinates interleaved. “nValidCounts” indicates the number of beads the calibration routine thinks is valid. It will be either the same as “nDetectedCounts” or zero. When it is zero, the beads detected either contain error or they cannot be separated into layers correctly by the routine. In this case, the detected beads will not be used in calibration and they are provided only for monitoring purpose.

An example (Cobra_Geo_Example2) is supplied for use of this progress reporting mechanism. The users are encouraged to follow the conditional processes of the example’s message handler in their own message handler.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


2.17. Returned Values

Returned Values

All the methods will return one of the following values (please also see header file Communicator_Response_Codes.h):

Mnemonics | Hexagonal | Meaning
CMTR_NOERROR CMTR_PINGRESP CMTR_SERVERRUN CMTR_SERVERREST CERR_OUTOFMEMORY CERR_INVALIDARG CERR_INVALIDSQN CERR_COULDNOTRESET CERR_COULDNOTSTART CERR_SERVER CERR_INCORRCTSEQ CERR_FILEWRITE CERR_FILEREAD CERR_FILEHANDLING | 0x00000000 0xfedc0123 0x00000010 0x00000020 0x10000010 0x10000020 0x10000030 0x10000040 0x10000050 0x10000060 0x10000070 0x10000080 0x10000090 0x10000100 | No error , normal finish Just a number, which comes out after pinging Server is doing reconstruction Server is not doing reconstruction Out of memory, memory allocation problem Invalid argument Invalid sequence of client calls Reconstruction could not be reset. “Hanging" of server Reconstruction could not be started. The problem is caused by Win messaging queue. "Hanging" of server Server cannot be handled Incorrect client’s call sequence File operations errors

Remarks

Such situation as breaking network connection can cause any error with codes 0x10000030 - 0x10000100.

HRESULT should be interpreted as 32-bits unsigned integer.

Related Topics

2. COBRA_GeoCalibration COM Interface

Text Box: 1 Copyright © 2003- 2010 Exxim Computing Version 6 / 7

All Rights Reserved


Copyright © 2003- 2010 Exxim Computing Version 6 / 7