The chart corner quadrants are defined as follows:
Quadrants of the SFRplus chart
In the table below, the center square is Row 0, Column 0 (R0,C0), and Row number R increases from top to bottom. Note that some squares are not included in a quadrant. Chart quadrants are detected automatically; no changes to the input (Edge ID file, etc.) are needed.
Region  Row R, Column C 
Center  1 ≤ R ≤ 1; 1 ≤ C ≤ 1 
UL  R ≤ 1; C ≤ 2 
LL  R ≥ 1; C ≤ 2 
UR  R ≤ 1; C ≥ 2 
LR  R ≥ 1; C ≥ 2 
Quadrant results
Imatest SFRplus calculates the mean, minimum, and maximum of each quadrant (Center, UL, UR, LL, LR) and the location of the lowest minimum and highest maximum,
then calculates the minimum of the means and the difference between the maximum and minimum of the means.
Here are some results from the JSON output for secondary readouts and quadrants.
“secondary_readout_1”: “MTF @ .25 C/P = “, “secondary_1_results”: [0.423,0.402,0.343,0.327,0.557,0.582,0.327,0.316,0.381,0.37,0.356,0.344,0.401,0.358,0.551,0.566, 0.413,0.378,0.355,0.361], “secondary_1_min_max_ratio”: [0.748], “secondary_2_results” [0.762,0.761,0.663,0.642,0.829,0.834,0.627,0.654,0.773,0.765,0.644,0.673,0.715,0.691,0.827,0.823, 0.683,0.689,0.675,0.635], “secondary_2_min_max_ratio”: [0.81], 

“quadrants”: “Center, UR, LR, UL, LL; min and max excludes Center.”,  quadrants corresponding to results below. 
“secondary_1_quadrant_mean”: [0.5642,0.3577,0.3564,0.3807,0.3692],  mean MTF@ 0.25C/P for each quadrant. 
“secondary_1_quadrant_min”: [0.5512,0.3267,0.3162,0.3432,0.3274],  minimum MTF@ 0.25C/P for each quadrant. 
“secondary_1_quadrant_min_location”: “LR”,  location of above minimum. 
“secondary_1_quadrant_max”: [0.5823,0.4019,0.3779,0.4229,0.4129],  maximum MTF@ 0.25C/P for each quadrant. 
“secondary_1_quadrant_max_location”: “UL”,  location of above maximum. 
“secondary_2_quadrant_mean”: [0.8281,0.692,0.6856,0.6959,0.6895],  mean MTF@ 0.125C/P for each quadrant. 
“secondary_2_quadrant_min”: [0.8227,0.6423,0.6351,0.644,0.6267],  minimum MTF@ 0.125C/P for each quadrant. 
“secondary_2_quadrant_min_location”: “LR”,  location of above minimum. 
“secondary_2_quadrant_max”: [0.8338,0.7611,0.765,0.7621,0.7734],  maximum MTF@ 0.125C/P for each quadrant. 
“secondary_2_quadrant_max_location”: “UL”,  location of above minimum. 
Pass/fail results
To obtain pass/fail results for quadrants and saturation, the lines shown in boldface below (all optional) should be added to the pass/fail ini file. Comments shown in red are not a part of the file.
[sfrplus]
…
Secondary_readout_1_outer_quadrant_delta_max = .15
the maximum difference between the highest and lowest mean values of the corner quadrants (UL, UR, LL, LR)
for secondary readout 1 (MTF @ 0.25 C/P, i.e., Nyquist/2).
Secondary_readout_1_outer_quadrant_mean_min_min = .25
the minimum of the mean values of the corner quadrants (the smallest of the four means) for secondary readout 1.
Secondary_readout_2_outer_quadrant_delta_max = .15
the maximum difference between the highest and lowest mean values of the corner quadrants (UL, UR, LL, LR)
for secondary readout 2 (MTF @ 0.125 C/P, i.e., Nyquist/2).
Secondary_readout_2_outer_quadrant_mean_min_min = .6
the minimum of the mean values of the corner quadrants (the smallest of the four means) for secondary readout 1.
Chart_mean_pixel_level_bounds = .3 .8
The lower and upper bounds of the chart mean normalized pixel level (for the central 1/9 = 1/3 X 1/3 linearly) of the chart.
Low_pixel_saturation_fraction_max = .3
High_pixel_saturation_fraction_max = .3
Chart_radial_pixel_shift_max = 15
Mirrored_chart = 1
Bayer_decode = 1
Horizontal_bars_OK_min = 1
All_Edge_IDs_detected = 1
Stepchart_expected_detected = 1
Color_expected_detected = 1
Here is the corresponding JSON pass/fail result, with many lines omitted.
“passfail”: {
“Secondary_readout_1_outer_quadrant_delta_max”: [0.16],
“Secondary_readout_1_outer_quadrant_name”: “MTF @ 0.125 C/P”,
“Secondary_readout_1_outer_quadrant_delta”: [0.1527219409],
“Secondary_readout_1_outer_quadrant_delta_passed”: [1],
“Secondary_readout_1_outer_quadrant_mean_min_min”: [0.5],
“Secondary_readout_1_outer_quadrant_mean_min”: [0.5324737485],
“Secondary_readout_1_outer_quadrant_mean_min_passed”: [1],
“Secondary_readout_2_outer_quadrant_delta_max”: [0.2],
“Secondary_readout_2_outer_quadrant_name”: “MTF @ 0.125 C/P”,
“Secondary_readout_2_outer_quadrant_delta”: [0.1801956371],
“Secondary_readout_2_outer_quadrant_delta_passed”: [1],
“Secondary_readout_2_outer_quadrant_mean_min_min”: [0.2],
“Secondary_readout_2_outer_quadrant_mean_min”: [0.2393977739],
“Secondary_readout_2_outer_quadrant_mean_min_passed”: [1]
}