-
Notifications
You must be signed in to change notification settings - Fork 0
Functional description of submodules
The MR_ACR analysis module is intended to be used for QC of MRI scanners by analyzing images of the large ACR phantom. Several tests described in the ACR large phantom guidance are implemented in this module. The module has been tested for GE, Philips and Siemens MRI scanners for the standard ACR scan protocol.
Implemented actions/submodules are
- rf_tx_amplitude: Transmitter amplitude and frequency from the DICOM header.
- resonance_frequency
- geometry_xy: In-plane geometry of a circular or elliptical phantom. Measures horizontal and vertical diameter. For the ACR phantom a transverse plain-water slice is used.
- geometry_z: Measures lenght of a cylindrical or cubical phantom. For the ACR phantom use a sagital slice.
- signal_noise_ratio: SNR of the (phased array: combined coils) image, ghosting en signal (B1) uniformity.
- ghosting
- image_uniformity
- signal_noise_ratio_uncombined: SNR analysis for each coil element of a phased array coil.
- B0_uniformity: Uniformity of the static (B0) field.
For a description of the scan protocol please refer to the NVKF recommendations for QC of MRI. Please find some additional hints and tips here.
Gets several parameters from the DICOM header, in particular the transmitter amplitude and frequency. The availability of these parameters depends on the manufacturer. The module config takes parameters to define where/how to get these.
Results of the analysis
- Transmitter - Amplitude: for GE en Siemens available in a private field
Calculate diameter in horizontal and vertical directions of a round (or elliptical) phantom. All images showing a feature-less plain image are suitable. Analysis follows these steps:
Measure the diameter in horizontal and vertical directions of a circular (cylindrical or spherical) phantom. All images showing a feature-less plain image are suitable. Analysis follows these steps:
- image upsampling
- edge detection using Canny edge filter:
- calculate norm of gradient
- thresholding on norm of gradient
- fit ellipse to detected/selected edge points
- selection of points based on location (to exclude edge pixels at location of the air bubble in the phantom) and distance from fitted edge (to exclude falsely detected edge points (2nd and 3rd iteration). These parameters are configurable.
- repeat previous two steps
Results of the analysis
- Geometrie X - Diameter [mm]: horizontal diameter
- Geometrie Y - Diameter [mm]: vertical diameter
The fitted ellips is shown as overlay on the image.
This action evaluates the length of the ACR phantom in head-feet direction on mid-saggital slice (the actual length is 148 or 147.5 mm)
Input: SAG series on ACR phantom, for best results rotate the image (in-plane rotation during slice planning) 2 to 5 degrees for edge pixel subsampling. Analysis is performed on first image in series
This action consists of the following seven steps:
-
Calculation of the row APPROXIMATELY centered in the middle of the phantom ("center row")
- the image intensities along each row are summed
- the gradient of summed intensities is calculated
- the "upper row" is the max after multiplying the gradient with a function to find a positive step
- the "lower row" is the min after multiplying the gradient with a function to fing a negative step The "center row" will be used for
- help finding the "center column"
- for finding the precise edges a given distance interval above and below the "center row" (to minimize the chance of detecting wrong edges)
-
Calculation of the column APPROXIMATELY centered in the middle of the phantom ("center column") It is used that a vertical "hole" aligned in the middle is present in the lower half of the phantom.
- the image intensities below the "center row" along each column are summed
- the "center column" is the maximum after multiplying the summed intensities with a function to find a symmetric minimum. The "center column" will be used for horizontal cropping of the binary edge image.
-
Edge detection in horizontal direction, using an edge filter. The result is a gradient image.
-
Cropping of the gradient image in horizontal direction to the "center column" plus and minus 45 mm Cropping is done for two reasons:
- A more unambiguous assignment of distance between edges in case these edges are curved.
- In the upper left corner a second edge (few millimeter lower than "real" edge) might also be detected. This unwanted edge can be aligned (towards the right) with the real edge in case this real edge is curved, giving rise to an unwanted peak in the Radon matrix. The cropped region is visualized in the output by vertical blue lines.
-
Radon transform. Lines (or aligned line segments) in the cropped edge image are found by means of a Radon transform.
-
Detection of two lines (or aligned line segments). Hereafter, "shift" (either positive or negative) corresponds to the difference between the "center row" of the phantom and the center row of the image.
- Most pronounced straight line (or aligned line segments), for which
- shortest distance between line and center pixel is between 65+shift and 85+shift mm
- the point along the line closest to the center pixel is ABOVE the center row of the phantom.
- Most pronounced straight line (or aligned line segments), for which ("shift" has now opposite sign)
- shortest distance between line and center pixel is between 65+shift and 85+shift mm
- the point along the line closest to the center pixel is BELOW the center row of the phantom The position of the maximum in the Radion transform is detected using the zero-crossing of the derivative. This allows (linear) interpolation. The lines (corresponding to edges in the original image) are visualized in the output by red lines.
-
Calculation of length of phantom. This length equals the sum of the two "shortest distances". For parallel lines, this corresponds to the distance between the lines. Each shortest distance (center pixel - edge) is visualized in the output by a red line.
Results of the analysis
- Geometrie Z - Lengte [mm]: length of the phantom
- Geometrie Z - Rotatie [graden]: in-plane rotation of the phantom (no action limit)
Images to check the integrity of the analysis are provided: an edge image and the regular image, both with the fitted edge as overlay in red, and an indication which part of the edge was fitted in blue.
SNR is calculated by dividing the mean value of the signal S of a large ROI inside the phantom by the SD of an ROI in the background. The SD is calculated over all pixels that are outside the phantom within 4 ROIs in the corners of the image. The calculated ratio S / SD is multiplied by a factor 0.655 to correct for the fact that a magnitude image is used. Thus: SNR = 0.655 * S / SD The phantom ROI size, and the background ROI size and position are configurable.
Results of the analysis
- Combined coils - SNR: SNR
For the calculation of ghosting G the ACR definition is used: G = 100% * (Sghost - Sbckg) / (2.0 * S) Where Sghost is the average signal over the ghost ROI (rectangular, next to phantom), the highest signal is taken from the two ROIs on both sides of the phantom. Sbckg is the average signal of the ROIs in the 4 corners of the image, and S is the signal in the phantom.
Results of the analysis
- Row - Ghosting [%]: ghosting in horizontal direction
- Col - Ghosting [%]: ghosting in vertical direction
- Phase encoding direction: from DICOM header, information to aid interpretation of ghosting.
For the signal uniformity U the ACR definition is also maintained. The maximum (Smax) and minimum (Smin) signal value is searched for within a small ROI (size 1/10 of the phantom ROI), where the search area is limited to the phantom ROI. U = 100% * (1 - (Smax - Smin) / (Smax + Smin) )
Results of the analysis
- Image - Uniformity [%]: B1 uniformity
SNR calculated similar to WAD_MR_SNR, per coil element of a phased array coil. The coil images have to be saved separately to make this calculation, this is only possible with Siemens in a standard way. With the other manufacturers, access to Service or Research mode is necessary.
Calculation of uniformity of the B0 field. Since this is very manufacturer-specific, implementations have been made per manufacturer. The configuration file must indicate which "action" function is to be used. Currently implemented:
-
PhilipsDoubleEchoFor product version protocol gradient echo with 2 echo times, and phase images. -
Philips_B0mapFor B0 maps with one magnitude image, and one B0 map image in Hz -
SiemensPhaseDifferenceFor product version B0-map, which is available under the fMRI license. Note that the B0 map is possible with 2nd order shim only (if 2nd order shim hardware is installed), which means that B0 inhomogeneities tend to be 'shimmed away'. -
SiemensServiceStimEchoFor the service sequence with stimulated echoes. This only gives a result as an image, but not a number. -
GE_VUMC_customCustom sequence VUmc in research mode -
GE_B0mapType-in product sequence GE (scans only in iso-center)
Instead of the min and max values of B0, a slightly more robust statistic is taken, that is the 0.1 percentile and the 99.9 percentile. B0 homogeneity is calculated as the difference between those two percentiles.