The pulse sequence used for data acquisition in this study was a commercially available, dual-echo, fast spoiled gradient-echo sequence. After each RF excitation pulse, two gradient echoes with water and fat signals out-of-phase and in-phase, respectively, were collected at the same phase-encode gradient and within the same pulse repetition time (TR). For the 1.5-Tesla field strength at which this study was carried out, the difference between the echo times (TEs) of the out-of-phase and in-phase images was approximately 2.3 ms. The TEs used for the first and second echoes were thus 2.3 and 4.6 ms, respectively. The advantages of the dual-echo, fast gradient-echo acquisition include minimal signal reduction due to tissue relaxation, the ability to examine the entire abdomen in a single-breath-hold, and complete elimination of patient respiratory motion or slice misregistration artifacts.
The in-phase and out-of-phase images were first reconstructed with the use of a fast Fourier transform (FFT). Ignoring tissue relaxation, the two images can be written as follows:
in which water and fat contributions to the signal in a given pixel are represented by W and F, respectively; m and n are the indices for the pixel location along the x- and y-axes, respectively; ϕo is the phase of the image So(m,n), which includes the phase due to the field inhomogeneity and a static phase that may arise from RF penetration and signal delay in the receiver chain; and ϕ represents an additional phase due to the Bo field inhomogeneity accumulated during the time between the first and second echo acquisitions.
The phase-correction algorithm used in this study aims at determining e−iϕ, which, for the sake of this discussion, shall be called the phase vector. By definition, the phase vector is a unit vector whose direction is defined by the phase ϕ due to the local field inhomogeneity. It is clear from Eqs.  and  that determining the phase vector without explicitly determining the phase ϕ is sufficient for unambiguous water and fat separation.
Figure 1 presents a flowchart of the phase-correction process. As a preliminary step, two masking flags, Vst and Chk, are set to zero and assigned to each pixel of the image. Separately, multiple initially empty pixel stacks are created and labeled in order. In this study, a total of nine pixel stacks were used, each of which covered an angular range of 10° (see below). To jump start region-growing, an initial seed is placed onto one of the pixel stacks, and its Vst value is set to one. The initial seed can be selected either randomly or with the use of some other convenient criteria. Additionally, two images representing the angular difference between the S of two neighboring pixels along the x- and y-axes, respectively, are calculated as follows:
in which arg(…) and * denote taking the argument and the complex conjugate of a complex variable, respectively. By definition, both Gx and Gy are within the 0–π angular range.
The actual region-growing consists of the following looped processing:
First, a seed pixel is selected from the pixel stack that has the lowest stack order and is not empty. When multiple pixels are on the pixel stack, the seed is selected on a first-in, first-out basis.
As the second step, the four nearest neighbors of the seed pixel are sequentially “visited.” Any of the four neighbors that have not been visited before will be marked as visited by setting their “Vst” flag to one. Additionally, each of these pixels will be placed on one of the nine pixel stacks according to its Gx or Gy value and its position relative to the seed pixel. For example, if the pixel is being visited from the horizontal (or vertical) direction, and its Gx (or Gy) value falls within the range of 0–10°, then the pixel will be placed onto the first pixel stack. Similarly, if its Gx (or Gy) value falls within the range of 20–30°, the pixel will be placed onto the third pixel stack.
As the third step, the value of S, which represents the phase vector of the seed pixel, is determined and the seed pixel is marked as “checked” by setting its pixel value in “Chk” to one. For the initial seed pixel, S assumes the value of S. For all of the other seed pixels, the determination of S is based on the S values of the pixels that are already marked as checked and are located within the neighborhood of the seed pixel. In this study, a simple estimation is as follows:
in which (io, jo) represents the indices for the location of the seed pixel, and summation is performed over a small boxcar region (7 × 7 pixels, for example) centered at the seed pixel. The calculated S is compared with S. If the angular difference between S and S is < π/2, S takes the value of S. Otherwise, S takes the value of −S. After the seed pixel is checked, a new seed is selected from the pixel stacks as in step 1. This three-step process is repeated until all the pixel stacks are empty.
Water and Fat Identification
The data acquisition used in this study sampled the water and fat signals symmetrically (i.e., when the two signals were either parallel or antiparallel). By using the phase information alone, one can only separate water and fat. To identify water and fat from the two output images, additional information (such as the unique spectrum (8) of biological fat, or the image pattern that human eyes use for identification) could be used. For the pulse sequence and the protocol used in this study, we found that the fat-only images always had a distribution of pixels with higher intensity than the water-only images. Consequently, we designated a pixel with intensity that was 70–80% of the maximum image intensity as a fat pixel, and used that as the initial seed for region-growing. Although it was not exploited here, the same histogram information can be used to identify water and fat after the two images are generated with a randomly selected initial seed.