The D-bar Method for Electrical Impedance Tomography – Experimental Data

Reconstruction of a pumpkin with a metal pipe by the D-bar method from experimental measurement data.

Summary: Electrical Impedance Tomography (EIT) aims to recover the internal electrical conductivity of a physical body from electrode measurements of voltages and currents at the boundary. EIT has applications in medical imaging, underground prospecting, and nondestructive testing. The image reconstruction problem of EIT is a nonlinear and severely ill-posed inverse problem. The D-bar method is a non-iterative regularized reconstruction method based on low-pass filtering a nonlinear Fourier transform. This page discusses the necessary changes that need to be made if one uses the D-bar method for electrode data.  We provide Matlab routines implementing the D-bar method for experimental EIT data from the KIT4 system at the University of Eastern Finland.

Authors: Andreas Hauptmann and Janne Tamminen

Software: Matlab, including PDE toolbox.

Download package as zip file:

Literature: This post is based on the previous blog entry for simulated data. We strongly advise to read this entry first and the references therein. A summary of the experimental data can be found on arXiv.

Experimental measurements

The D-bar algorithm assumes continuum boundary data and as such it is not readily applicable to real measurement data from electrodes. We present here the necessary pre-processing and minor modifications needed to obtain a reconstruction from experimental data with the D-bar algorithm. The key issues we need to take care of are dependent on the measurement system, in this case the Kuopio Impedance Tomograph 4 (KIT4). These issues are:

1.) The KIT4 system supports only pairwise current injection, that means one electrode is assigned a positive current and another is negative. Nevertheless, the measurement is done over all electrodes at the same time.
2.) We can not measure the complex part and hence we need to use a real valued cosine/sine basis for synthesizing the Neumann-to-Dirichlet (ND) and Dirichlet-to-Neumann (DN) maps. This also leads to changes in the routines that compute the boundary integrals.

In the following we will discuss these two issues separately and then adjust the D-bar codes for simulated data (see previous post) to work with the experimental data from the KIT4 system:

The experimental KIT4 measurement system at the University of Eastern Finland.

The KIT4 system has 16 electrodes in total, that means we will obtain at most 15 linearly independent current patterns. Due to the system restriction we can only apply pairwise injection patterns (one negative, one positive), in this example we use an adjacent current pattern. That means in each current injection two neighboring electrodes are activated, as illustrated below:

First 3 (out of 16) adjacent current patterns.

The reconstruction procedure is started in the main script comp01_KIT4_recons.m by loading the measurement data, from there all other scripts and functions will be called. Next we discuss how to transform the measurements from the obtained adjacent current pattern to a Neumann-to-Dirichlet map in cosine/sine basis.

Obtaining the Neumann-to-Dirichlet map

Given the measured voltages from the adjacent current pattern, we need to perform a change of basis. This is necessary to represent the ND map with respect to an orthonormal basis on the boundary of our domain (the unit circle), see for instance chapter 12.7 and 13.3 of [MS2012]. Since we can only measure the voltage potential (and not the phase), we can only represent the measurements with a real valued basis. In particular we choose a cosine/sine basis for N=16 electrodes


The change of basis is performed in the script comp02_ND_buildFromKIT4.m, by calling the function transfrom_Adj2Trig.m for the measurements with the target and with an empty tank for the background conductivity. After the change of basis is performed we can compute the inner products to obtain the ND matrix with respect to the cosine/sine basis. We then invert the ND matrices in comp03_DN_build.m to obtain the difference DN matrix for solving the boundary integral equations next.

Computation of the scattering transform via the boundary integral equation

The computation of the boundary integral equation and the scattering transform follows essentially the previous post, except that we need to change the orthonormal basis functions to the cosine/sine basis as explained above. This is done in the routines for the boundary integral equation in comp04_psi_BIE.m and then for the scattering transform in comp05_tBIE_psi.m.

Reconstruction using the D-bar method

Now we can solve the D-bar equation to obtain our reconstruction. In general the cut-off radius R for the scattering data t(k) with measured data is smaller, hence we choose here R=4. For additional stability we perform a thresholding, if the values of the scattering data are too large. Precisely, for a threshold of C=25 we set the real and imaginary part (independently) to zero if |Re(t(k))|>C, or |Im(t(k))|>C respectively.

The reconstruction is then performed in comp06_Dbarsolve.m. Below you can see some reconstructions for a few examples. Note that the orientation is different than in the summary on arXiv, This is done, so that electrode 1 is at the angle θ=0 and the numbering of the angles follows the mathematical (anti-clockwise) direction.

The first example presented here consists of three conductive pipes, see below. Since the metal is a perfect conductor, the inner part is treated as if the pipes are solid. In principle the conductivity value of the inclusion would be infinite, but since this can not be resolved (numerically and in the measurement) we simply obtain large conductivity values in our reconstruction.

Reconstruction of three metal pipes with the D-bar method from real experimental data.

The second example consists of a conductive pipe and a resistive (solid) tube, which is a perfect resistor and hence has conductivity value 0. The reconstruction of the tube is hence much smaller and closer to zero.

Reconstruction of one metal pipe and a plastic tube with the D-bar method from real experimental data.

We have included all the measured data that is mentioned in the documentation (arXiv) in the zip archive for this post. You can call the different experiments in the main script comp01_KIT4_recons.m by changing the experiment number ex and the individual set up by changing the version ver. The experiment numbers for the examples above are:

pumpkin: ex 7, ver 2
three pipes: ex 3, ver 5
pipe and tube: ex 4, ver 3