This page covers schools detection algorithms applied to single beam, split beam, and dual beam data only. 3D schools detection uses an entirely different schools detection algorithm.
A detected school is defined as an analysis region in Echoview. The only difference between regions created with the schools detection module and other regions is that the region boundaries of "schools" are constrained to follow the boundaries of data points. That is, in the depth-time space of an echogram, the rectangle that a data point is considered to occupy - having a thickness equal to the sample thickness and a width equal to that of the ping (which is equal to half the time since the previous ping plus half the time to the next ping). Note that regions are defined in terms of depth and time (see About regions).
A restriction in the Schools detection module, requires that any single detected school spans a part of the echogram with constant vertical resolution (that is, the sample thickness remains unchanged over the interval of detection). If the sample thickness changes in the middle of a visible school, Echoview will generate one region for each range of pings with constant sample thickness.
In some cases, such as for corrected lengths and thickness, there are restrictions on the size of regions to which the analysis variables can be sensibly calculated or other restrictions on the data resolution that the algorithms assume.
Refer to the topic Using the Schools module for general comments and Notes about schools detection for notes on some limitations on the analysis variables that can be calculated for regions using the schools module. Refer to the primary literature for more detail.
In all summations only good data samples in the region are considered,
The following indexes are used in summations:
n is the number of samples included in the summation.
i is the number of a sample in the summation (1 to n)
j is the number of a ping in the summation
k is the number of a rows in the summation (equal sample thickness/spacing is assumed for all pings in the region)
The following symbols are used:
mSv is the minimum integration threshold (dB re 1 m-1) at time of processing.
MSv is the maximum integration threshold (dB re 1 m-1) at time of processing.
Sv is the observed Mean Energy of the region (dB re 1 m-1).
En is the observed Mean Energy of the region in linear units (m2/m3) = 10Sv/10
Ej is the linear mean Sv of all good data samples in ping j (m2/m3),
Ek is the linear mean Sv of all good data samples in row k (m2/m3),
Ei is the linear Sv of sample i (m2/m3) - set to 0 for any sample where Ei < mSv or Ei > MSv,
R is the mean range of the region (m) - Echoview does not use Target_true_depth.
t is the transmitted pulse length (ms).
j is the 3dB beam angle in the direction of travel (degrees).
Note: j is calculated in Echoview using the 3dB minor-axis angle, the 3dB major-axis angle, and the defined transducer geometry. If you are using an elliptical transducer at an angle (not vertically downward with the major or minor axis pointing in the direction of travel) you should note that j may contain an error. Please contact Echoview support if in doubt.
Uncorrected_length is the length of the bounding rectangle of the region, calculated as:
L = Distance(pe) - Distance(ps) + (Distance(pe)- Distance(pe-1)
where pe and ps are the ping numbers of the last and first (end and start) pings of the school.
Distance(pi) is the distance (in meters) to travelled the i’th ping (pi) as determined from the Position source selection on the Position page of the Platform Properties dialog box.
Note: It is assumed that ping spacing in the region is constant and that the transducer is pointing vertically downwards. If the transducer is mounted horizontally pointing side wards for example, L will contain significant errors when the vessel is not travelling in a straight line.
T = RM - Rm
where RM and Rm are the maximum and minimum ranges (in meters) of the bounding rectangle of the region.
Sv = Mean Sv of all good data samples in the region (dB re 1m-1) (see Sv mean for algorithm)
Note: Original SHAPES algorithms did not include the concept of good and bad data.
P = Si li
where li is the length of side i of the polygon defining the region.
Note: li is calculated for each i from the range-distance co-ordinates of the two nodes defining it. The region itself is stored in depth-time coordinates, the time dimension is converted to distance using the Position source selected on the Position page of the Platform Properties dialog box and the depth dimension is converted to range with the known transducer geometry - see About depth and range.
A = Si ai
where summation is over all data samples in the region, and
ai = area of sample i = ri · wi for ping pi
ri = sample spacing (in meters) of ping i.
wi = width of ping i in meters

dRS = Sv - mSv (subtraction in dB domain, namely division in the linear domain)
B = 0.44 · j · dRS0.45 if dRS
0;
B = 0 if dRS < 0
NB = L / (2 · R · tan(B/2)) if R
0 and B
0;
NB = 0 if R=0 or B=0
dRv = 2.56 / (NB - 1) if NB
1;
dRv = 0 if NB = 1
Rvp = Sv + dRv
dRSp = Rvp - mSv = dRS + dRv (subtraction/addition in dB domain, namely division/multiplication in the linear domain)
NBC = Lc / (2 · R · tan (f/2)) if f > 0;
NBC = 0 if f
0
Note: See Attack angle for method of calculating f
dRvc = 4.09 / NBC0.88 if NBC > 0;
dRvc = 0 if NBC
0
f = j · (1.04 · dRSp0.33 - 1.52) if dRSp
0; or
f = 0 if dRSp< 0
Lc = (L - 2 · R · tan(f/2))
Tc = T - C/2 · t/1000
where C = speed of sound (m/s) - fixed at 1500 m/s for this calculation
A2D = A · (Lc · Tc ) / (L · T) if L · T
0;
A2D = 0 if L · T = 0
Pc = P - (2 · [(L - Lc) + (T - Tc)])
IC = Pc2 / (4 · p · A2D) if A2D
0;
IC = 0 if A2D = 0
Image_compactness is not a SHAPES school descriptor, however this expression is a measure similar to 1/Circularity. This reciprocal is a shape factor that is commonly used with image analysis. The values range from one for a circle to infinity. Circularity and its reciprocal is discussed under Wikipedia: Shape factor (image analysis and microscopy). In mathematics, this factor is related to the isoperimentric inequality.
![]() |
Left: Two example regions and their associated Image compactness values Region3596: IC = 20.8 Region3595: IC = 155.8 Note: An Image compactness of -1 indicates the region has no GPS value. |
Ec = En · (A2D / A)· 10(dRvc/10) if A
0;
Ec = 0 if A = 0
Rc = 10 log(Ec) if Ec> 0;
Rc = -999 if Ec
0
ECV = ESD . 100 / Ec if Ec
0;
ECV = 0 if Ec = 0
![]()
Horizontal_roughness = Rh2 / En
where Rh2 = Sj [(Ej - Ej+1)2 / (nh - 1)]
summation is over all horizontal pairs of samples in the region
nh is the number of horizontal pairs of samples within the region
Notes:
Vertical_roughness = Rv 2 / En
where Rv2 = Sk [(Ek – Ek+1)2 / (nv - 1)]
summation is over all vertical pairs of samples in the region
nv is the number of vertical pairs of samples within the region
Notes:
A3D = Lc · Tc · 4
Note: This calculation does not include the area of the circles at the top and bottom of the cylinder.
School volume:
V = Sj p . (Tj/2)2 . Lj
where:
j is the ping number
Tj is the thickness of the region at ping j
Lj is the distance from ping j to ping j+1 as determined using the Position source selected on the Position page of the Platform Properties dialog box (exception: for the last ping in the region only, it is the distance from ping j-1 to ping j).
Corrected school volume:
Vc = V . (Tc2 . Lc) / (T2 . L) if (T2 . L)
0;
Vc = 0 otherwise.
Ping number of middle ping of bounding rectangle. See Ping_M algorithm.
Latitude and longitude of middle ping (pm). See Lat_M amd Lon_M.
Mean of range or depth of all good data points in region. See Range_mean and Depth_mean.
See also About Transducer Geometry and About Depth and Range Mode.
This is not output, but can be calculated as the mean bottom depth/range (Exclude_below_line_depth_mean / Exclude_below_line_range_mean; if the exclude below line is the bottom) minus mean school depth/range (Depth/Range_mean) depending upon the choice or depth or range modes.
Date and time of middle ping (pm). See Time_M and Date_M.
Vessel log distance for middle ping (pm). See VL_mid.
The GPS distance of the middle ping can also be calculated. See Dist_M.
Skewness is a statistic that is used to measure the symmetry of the distribution for a set of data. See About skewness and Skewness algorithm.
Kurtosis is a statistic that is used to measure the "flatness" or "peakedness" of a set a of data. See About kurtosis and Kurtosis algorithm.
Notes about schools detection
Schools module references
Schools detection while live viewing algorithm