If you have trouble viewing this, try the pdf of this post. You can download the code used to produce the figures in this post.

# Correlated noise reduction

The noise of the components of the A-vector is highly correlated and the previous post showed a way to produce low noise images analogous to conventional, non-energy selective images by “whitening” the A-vector data. That is good but is there a way to use the correlation to produce lower noise material selective images such as bone or soft tissue canceled? It turns out there are many methods that are seemingly different but are all based on the correlation. Al Macovski introduced the idea and his group at Stanford published several papers on it. It has been used in commercial systems. For example, the Fuji Corporation used an elaborate iterative method to reduce the noise in their “sandwich” photostimulable screen detector system. Other companies like GE are more secretive but I think that they used a similar method with their voltage switching flat panel system. In this post, I will describe a linear least mean squares method, which is a simplified version of the approach introduced by Cao et. al., who also did her work at Stanford. This approach has straight-forward theory, is easy to implement and is effective at reducing noise. One problem with the approach is that it may change the quantitative values of the data in CT and Kalendar et al. published an enhancement that may retain the quantitative information. However, if quantitative data are important, then the software can extract data from the underlying images guided by an operator using the noise-reduced image.

## The basic idea

The basic idea is to reduce the noise in a material selective image, S, with a correlated image with lower noise, L. Note that I use the symbol S in a different way than Cao et al. The material selective image might be one of the A-vector components or a bone canceled image computed from low and high voltage images in a dual energy chest x-ray system. The low noise image might be computed as described in the previous post or one of the conventional images in a voltage switched dual energy system. The images are spatially filtered creating low and high frequency pairs for each of the two images.
S  =  Sl + Sh L  =  Ll + Lh .
They are then put together to combine the low frequency information from the original material selective image and the estimated high frequency edge information from the low noise image.
= Sl + h

## Linear least mean square method

The least squares method approaches the problem as one of estimating the high frequency material selective information, Sh, from the correlated high frequency low noise image data, Lh. As the name implies a least squares estimator is used.
Suppose we model the images as zero mean, two dimensional random processes. Then, at every pixel, we use a linear estimator, h(x, y) = CLh(x, y), that minimizes the expected value of the error between the estimate and the expected value of the high frequency material selective image data
ϵ = Sh(x, y) − CLh(x, y).
As usual   denotes an expected value.
We can use the orthogonality principle of least squares estimation (see any book on regression analysis such as Ch. 20 of Draper and Smith) to compute the optimal C. We can understand the principle from Fig. 1↓. The minimum error occurs when the ϵ vector is orthogonal to the estimated vector CLh. When this occurs, the expected inner product is zero:
(Sh(x, y) − CLh(x, y))Lh(x, y) = 0.
Multiplying this out
ShLh − CL2h = 0.
Solving for C
(1) C = (ShLh)/(L2h). Figure 1 Orthogonality principle of least squares. The error ϵ = Sh − CLh is minimized when it is orthogonal to Lh.

## Estimating C from image data

Of course, we do not know the expected values in the numerator and denominator of Eq. 1↑. But we can estimate them by assuming that the random processes are ergodic over small regions. That is the spatial average is equal to the expected value. Although Cao et al. describe a complex method to estimate C, I have found that a simple method gives good results. The method first computes the image products ShLh and L2h pixel by pixel. Then the products are low pass filtered so that the value at each pixel is the weighted average of the surrounding pixels using the point spread function of the filter as the weights. This gives an approximation to the expected values in Eq. 1↑ so the value of C(x, y) at each pixel can be computed by dividing low pass filtered product images pixel by pixel.
A possible fly in the ointment is that the denominator might be equal to zero. In my code, I tested for that and it did not occur with the images tested. If it did, we could use the values of Sh at those pixels instead of the estimated values.
The Matlab code to implement the algorithm is shown in the code box. Note that the unsharpf function computes the low pass filtered image and subtracts it from the original to give the high pass version so it produces both images at one time. My implementation uses a Gaussian point spread function but others like simple averaging 2D rect functions can also be used.
```1[Shigh,sdat] = unsharpf(S,’frac’,frac,’sigma’,sigma);
2Slow = sdat.img_smooth;
3Lhigh = unsharpf(L,’frac’,frac,’sigma’,sigma);
4LSprod = imfilter(Lhigh.*Shigh,sdat.gauss_filt,’replicate’,’conv’);
5LHsq = imfilter(Lhigh.*Lhigh,sdat.gauss_filt,’replicate’,’conv’);
6C = LSprod./LHsq;
7Shat = Slow + C.*Lhigh; % correlated noise filtered image
```

## Example images

I used the algorithm on some x-ray images made with my “active detector”. This is a dual spectrum detector that combines a storage phosphor sandwich detector with voltage-switched spectra. It results in much better conditioned spectra than a sandwich detector while the voltages can be switch rapidly, within about 100 milliseconds, without moving the storage phosphor screens. The code is included with the package for this post. If you are interested in the raw data for the example, email me.
The filtering parameters were selected ’by hand.’ There may be better ones since I have not done a systematic search. A region of interest extracted from the large original and filtered images is shown in Fig. 2↓. Figure 2 Example of original (left) and correlation noise filtered image (right).

## Conclusion

I have presented the theory and implementation of a correlation noise reduction algorithm for material selective images from x-ray energy spectrum information. Its objective is to reduce noise while retaining edge information.

## --Bob Alvarez

Last edited Sep 16, 2014