**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: KIT4_Dbar_recon.zip

**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 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:

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

with

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.

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.

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

**. The experiment numbers for the examples above are:**

*ver*pumpkin: ex 7, ver 2

three pipes: ex 3, ver 5

pipe and tube: ex 4, ver 3

Hi, why you called it “D-bar”?

Is it really like “D” on alphabet?

Why can’t called it by the shape?

The name D-bar comes from the D-bar equation. There, the D-bar operator arises from complex analysis. WHen you hit a function of one complex variable with the D-bar operator, you get zero if and only if the function is analytic.