Fisheries Acoustics · Interactive Guide

From Ping to Biomass

A step-by-step visual walkthrough of how sound estimates fish populations

01

The Echosounder Sends a Ping

Sound pulses travel down through water, hit fish and the seabed, and bounce back

Survey Parameters
Frequency
38 kHz
38 kHz
Pulse length
1 ms
1 ms
Sound speed
1500 m/s
1500 m/s
Ping rate
1/s
1 / sec
Vessel speed
~3 kn
~1.5 m/ping
How the pulse works
Travel time = 2 × depth / c
// 2× because sound goes DOWN and UP

At 80m depth:
t = 2 × 80 / 1500 = 0.107 seconds
The echosounder records echo strength at every millisecond of the return trip → this becomes depth-resolved Sv data
Water Column Zones
0–10m ⚠ Vessel noise zone — excluded
10–60m 🐟 Fish integration layer
60–75m Sparse / near-bottom water
75–79m ⚠ Acoustic dead zone
79–80m 🪨 Seabed — excluded
02

Raw Echo Data — The Echogram

Thousands of pings stacked side by side form a 2D acoustic image of the water column

Raw Sv Data Table — First 3 Pings
DEPTH PING 1 (Sv dB) PING 2 (Sv dB) PING 3 (Sv dB) WHAT IT IS
5 m−45−80−78VESSEL NOISE
20 m−75−74−76empty water
35 m−78−77−79empty water
50 m−55−53−56🐟 FISH SCHOOL
60 m−72−70−71empty water
80 m−34−33−35🪨 SEABED
Echogram Visualization
−80 dB
−20 dB
Color Scale (Sv in dB)
🔵 −80 dB → near noise floor, empty water
🟢 −65 dB → sparse zooplankton
🟡 −55 dB → fish aggregation
🟠 −45 dB → dense school
🔴 −34 dB → seabed / very dense
03

Noise Removal & Data Cleaning

Remove vessel noise, impulse spikes, attenuated pings, and set exclusion boundaries

Types of Noise Detected
🚢
Vessel / Cavitation Noise
Top 0–10 m → fully excluded
EXCL
Impulse Spikes
Single-sample outliers flagged by median filter
FLAG
📉
Background Noise
Electronic noise subtracted via Ryan method
CORR
🪨
Seabed + Dead Zone
Bottom 1 m above seabed excluded
EXCL
Impulse Spike Detection — Example
PINGDEPTH 20m Sv (dB)STATUS
Ping 1−76OK
Ping 2−75OK
Ping 3−74OK
Ping 4−20 ⚡SPIKE!
Ping 5−75OK
Median of neighbors = −75 dB
Spike value = −20 dB
Deviation = 55 dB > threshold (10 dB)
FLAGGED → set to NaN
Background Noise Correction
Sv_corr = 10·log₁₀(10^(Sv/10) − 10^(Pn/10))

// Example at 50m depth:
Sv = −55 dB → linear = 3.16×10⁻⁶
Pn = −115 dB → linear = 3.16×10⁻¹²
Sv_corr ≈ −55.00 dB (barely changed)

// At 400m where signal is weak:
Sv = −78 dB, noise matters much more!
Before vs After Cleaning
DEPTHRAW SvCLEANED SvACTION
0–10 m−45 dBNaNVESSEL NOISE EXCLUDED
20 m−75 dB−75 dBCLEAN
50 m−55 dB−55 dBFISH SIGNAL OK
79–80 m−34 dBNaNDEAD ZONE EXCLUDED
80 m−34 dBNaNSEABED EXCLUDED
04

Bottom Detection

Find the seabed in each ping to define the lower boundary of fish integration

Algorithm — Ping by Ping Scan
Scan downward from min depth (e.g. 20 m)
Find first depth where Sv exceeds −50 dB threshold
Apply median smoothing across 5–10 pings to remove jumps
Apply backstep = 0.5 m upward from detected bottom
Exclude bottom 1 m (dead zone) from integration: integration stops at 79 m
Ping 1 Scan Result
DEPTHSv (dB)vs −50 dBRESULT
20 m−75BELOW
40 m−73BELOW
50 m−55BELOW
60 m−72BELOW
80 m−34ABOVE ✓BOTTOM!
Water Column with Boundaries
05

Echo Integration — Computing NASC

Full arithmetic: from raw Sv values to NASC = 1500 m² nmi⁻², every number shown

Survey Setup (inputs to this calculation)
38 kHz
frequency
0.5 m
Δz sample thickness
1.5 m
Δx ping spacing
1235
pings per nmi
① Convert Sv (dB) → sv (linear)  ·  formula: sv = 10^(Sv ÷ 10)
Sv in dB is logarithmic — you cannot do arithmetic on it directly. Convert to linear first. Every 10 dB difference = 10× difference in linear power.
DEPTHSv (dB)CALCULATIONsv (linear, m⁻¹)RELATIVE
20 m−75 dB 10^(−75 ÷ 10) = 10^(−7.5) 3.16 × 10⁻⁸
50 m−55 dB 10^(−55 ÷ 10) = 10^(−5.5) 3.16 × 10⁻⁶ 100× stronger!
60 m−72 dB 10^(−72 ÷ 10) = 10^(−7.2) 6.31 × 10⁻⁸
Why 100× stronger? Because −55 dB − (−75 dB) = 20 dB
10^(20/10) = 10^2 = 100 — that's what 20 dB means in linear scale
② Multiply Each sv by Sample Cell Volume  ·  cell contribution = sv × Δz × Δx
Each sample cell is a thin horizontal slab: 0.5 m deep × 1.5 m wide (one ping width). Multiply sv by the cell dimensions to get its acoustic contribution.
DEPTHsv (linear)× Δz (0.5 m)× Δx (1.5 m)CELL CONTRIBUTION
20 m3.16×10⁻⁸ × 0.5 × 1.5 2.37 × 10⁻⁸
50 m3.16×10⁻⁶ × 0.5 × 1.5 2.37 × 10⁻⁶ 🐟
60 m6.31×10⁻⁸ × 0.5 × 1.5 4.73 × 10⁻⁸
③ Multiply by Number of Pings in 1 nmi  ·  1 nmi = 1852 m ÷ 1.5 m/ping = 1235 pings
Each depth layer repeats across all 1235 pings as the vessel moves 1 nautical mile forward.
DEPTHCELL CONTRIBUTION× 1235 PINGSLAYER TOTAL% OF SIGNAL
20 m2.37×10⁻⁸ × 1235 2.93 × 10⁻⁵
~1%
50 m 🐟2.37×10⁻⁶ × 1235 2.93 × 10⁻³
~98%
60 m4.73×10⁻⁸ × 1235 5.84 × 10⁻⁵
~2%
④ Sum All Depth Layers
Total = 2.93×10⁻⁵  ← 20m layer (empty water)
+ 2.93×10⁻³  ← 50m layer (FISH SCHOOL — dominates!)
+ 5.84×10⁻⁵  ← 60m layer (empty water)
───────────────────
Total ≈ 2.93 × 10⁻³  ← fish school is 98% of everything
⚡ Key insight: in linear space, 2.93×10⁻³ vs 2.93×10⁻⁵ means the fish school is 100× bigger than the empty water contribution. Empty water is essentially invisible.
⑤ Apply 4π Correction and Normalize to 1 nmi² → Final NASC
The 4π factor comes from the standard NASC convention (MacLennan et al. 2002). It accounts for the spherical geometry of acoustic backscattering — sound radiates in all directions, but we only capture the back-reflected portion. Normalizing to 1 nmi² (= 1852² m²) makes NASC comparable across surveys regardless of transect length.
s_A = Total × 4π × 1852²

s_A = 2.93×10⁻³ × 4π × (1852)²

// 4π = 12.566
// 1852² = 3,430,000 m²

s_A = 2.93×10⁻³ × 12.566 × 3,430,000

s_A = 2.93×10⁻³ × 43,100,000

s_A = ≈ 1500 m² nmi⁻²
Full Arithmetic Chain
📥
Input: Sv at 50m
Raw echosounder measurement
−55 dB
🔢
dB → linear
10^(−55/10)
3.16×10⁻⁶
📦
× cell size
× 0.5 m × 1.5 m
2.37×10⁻⁶
🔁
× all pings
× 1235 pings / nmi
2.93×10⁻³
+ all depths
sum all layers
≈2.93×10⁻³
🎯
× 4π × 1852²
spherical correction + normalize
≈ 1500
Contribution by Depth Layer
1500
m² nmi⁻² · NASC
= total effective "mirror area" of all fish
in this 1 nmi survey strip
06

Convert NASC to Fish Density

Full arithmetic: from NASC = 1500 → ρ = 2,354,000 fish/nmi², every number shown

What we carry in from Step 5
1500
NASC (m² nmi⁻²)
28 cm
avg herring length (trawl)
120 g
avg herring weight (trawl)
① Trawl Sampling — Why We Need It
Acoustics only measures how much echo — it cannot tell you which species or how big the fish are. A trawl net is deployed alongside the acoustic transect to physically catch fish and measure them. The trawl gives us the length distribution needed to calculate mean TS.
TRAWL MEASUREMENTVALUEUSED FOR
Species identifiedAtlantic HerringSelect correct TS equation
Number of fish measured350 fishStatistical confidence
Average total length (L)28 cmInput to TS–length formula
Average weight (w)120 g = 0.12 kgBiomass calculation in Step 7
② Calculate Mean Target Strength (TS)  ·  formula: TS = 20·log₁₀(L) + b₂₀
Target Strength (TS) is how strongly one average fish reflects sound back to the transducer. The 20·log₁₀(L) term means TS scales with the square of fish length (because the swim bladder area ∝ L²). The intercept b₂₀ = −71.9 dB is species-specific for herring (Foote 1987).
TS = 20 · log₁₀(L) + b₂₀   // Foote 1987, Atlantic Herring

// Step by step with L = 28 cm:

log₁₀(28) = 1.4472   // because 10^1.4472 = 28

20 × 1.4472 = 28.944

TS = 28.944 + (−71.9)

TS = −42.96 dB
What does −42.96 dB mean physically? A 28 cm herring reflects back only 0.005% of the incident sound energy — the rest passes through or scatters elsewhere.
③ Convert TS (dB) → σ_bs (linear m²)  ·  formula: σ_bs = 10^(TS ÷ 10)
Just like Sv must be converted from dB to linear before math, TS must also be converted. σ_bs (backscattering cross-section) is the effective mirror area of one fish in m².
σ_bs = 10^(TS ÷ 10)

σ_bs = 10^(−42.96 ÷ 10)

σ_bs = 10^(−4.296)

σ_bs = 5.07 × 10⁻⁵ m²

// = 0.0000507 m² — about the area of a postage stamp
// This is the "acoustic mirror size" of one 28 cm herring
FISH LENGTHTS (dB)σ_bs (m²)RELATIVE SIZE
20 cm (small)−45.9 dB2.57×10⁻⁵0.5×
28 cm (our fish)−42.96 dB5.07×10⁻⁵1× baseline
40 cm (large)−39.9 dB10.2×10⁻⁵2× bigger
⚡ Doubling fish length increases σ_bs by (because area ∝ length²)
④ Calculate Fish Density  ·  formula: ρ = s_A ÷ (4π × σ_bs)
Now divide the total acoustic signal (NASC) by the signal one fish produces (σ_bs). The again appears because NASC and σ_bs use the same spherical geometry convention — they cancel correctly to give fish per nmi².
ρ = s_A ÷ (4π × σ_bs)

// plug in our numbers:

ρ = 1500 ÷ (4π × 5.07×10⁻⁵)

// compute denominator first:
4π × 5.07×10⁻⁵ = 12.566 × 5.07×10⁻⁵ = 6.37×10⁻⁴

ρ = 1500 ÷ 6.37×10⁻⁴

ρ = 1500 ÷ 0.000637

ρ = 2,354,000 fish per nmi²
⑤ TS Sensitivity — Why Getting TS Right is Critical
A 3 dB error in TS = 2× error in σ_bs = 2× error in fish density. This is the biggest source of uncertainty in any acoustic survey.
SCENARIOTS USEDσ_bsρ (fish/nmi²)ERROR
Correct−42.96 dB5.07×10⁻⁵2,354,000 ✓0%
Fish too big (trawl bias)−39.96 dB (+3dB)10.1×10⁻⁵1,177,000÷2 (−50%)
Fish too small (trawl bias)−45.96 dB (−3dB)2.54×10⁻⁵4,708,000×2 (+100%)
Wrong species used−36.96 dB (+6dB)20.2×10⁻⁵588,500÷4 (−75%)
Full Arithmetic Chain — Step 6
🎣
Trawl sample
measure fish on board
L = 28 cm
📐
TS–length formula
20·log₁₀(28) − 71.9
−42.96 dB
🔢
dB → linear σ_bs
10^(−42.96/10)
5.07×10⁻⁵ m²
NASC ÷ (4π·σ_bs)
1500 ÷ 0.000637
2,354,000
🐟
Fish density ρ
per square nautical mile
2.35M / nmi²
07

Scale Up to Total Biomass

Full arithmetic: from ρ = 2,354,000 fish/nmi² → 56,500 tonnes, every number shown

What we carry in from Step 6
2,354,000
ρ fish / nmi²
200 nmi²
survey area
0.12 kg
mean fish weight
1000 kg
= 1 tonne
① Survey Area — How Transects Cover the Bay
The vessel doesn't cover every square metre — it follows a set of parallel transects spaced evenly across the survey area. Each 1 nmi segment gives one NASC value. The average NASC across all segments is used to represent the whole area.
TRANSECTLENGTH (nmi)NASC (m² nmi⁻²)NOTES
T-01141820dense school area
T-02141540typical
T-03141390typical
T-04141200sparser
T-05141050edge of distribution
Mean across all transects≈ 1500 m² nmi⁻²our working value
Total survey area = 5 transects × 14 nmi × ~2.9 nmi spacing
200 nmi²  // the bay we are surveying
② Total Fish Abundance (N)  ·  formula: N = ρ × Area
Multiply the fish density per nmi² by the total survey area to get the absolute number of fish in the entire bay.
N = ρ × Area

N = 2,354,000 fish/nmi² × 200 nmi²

N = 470,800,000 fish

// ≈ 471 million herring in this bay
To put this in perspective: 471 million fish stacked nose-to-tail at 28 cm each would stretch 131,880 km — more than 3× around the Earth.
③ Mean Fish Weight — From Trawl to Length–Weight Relationship
Fish weight is measured directly from the trawl catch, or estimated from a length–weight relationship: W = a · Lᵇ (species-specific constants). For herring: a ≈ 0.0057, b ≈ 3.04
W = a × L^b   // length-weight relationship

W = 0.0057 × 28^3.04

28^3.04 ≈ 28³ × 28^0.04 ≈ 21952 × 1.138 ≈ 24,982

W = 0.0057 × 24,982 ≈ 142 g  // predicted from formula

// Trawl directly measured: 120 g (we use this as it's more reliable)
Mean weight used = 0.12 kg per fish
④ Total Biomass (B)  ·  formula: B = N × mean weight ÷ 1000
B = N × w

B = 470,800,000 fish × 0.12 kg/fish

B = 56,496,000 kg

// convert kg → tonnes (÷ 1000):

B = 56,496,000 ÷ 1000

B = 56,496 tonnes ≈ 56,500 tonnes
Final Results
471M
total herring in the bay
56,500
tonnes of biomass
56,500 tonnes = weight of ~375 fully loaded Boeing 747s
Full End-to-End Chain
🔊
Sv at fish school
echosounder ping
−55 dB
📊
NASC
echo integration
1500 m²/nmi²
🎣
TS from trawl
28 cm herring
−42.96 dB
🐟
Fish density ρ
NASC ÷ (4π·σ_bs)
2.35M/nmi²
✖️
× survey area
200 nmi²
471M fish
⚖️
× mean weight
× 0.12 kg ÷ 1000
56,500 t
⑤ Uncertainty Budget — Where Errors Propagate From
Every step introduces uncertainty. These errors multiply together through the chain — so a 50% error in TS combined with a 30% spatial coverage error gives roughly a 65% total error in biomass.
ERROR SOURCETYPICAL SIZEEFFECT ON BIOMASSRISK
TS uncertainty (wrong length or species) ±3 dB ×2 or ÷2 (±100%) HIGH
Species misclassification in echogram variable wrong σ_bs used entirely HIGH
Spatial coverage (transect spacing) ±20–30% under/overestimate area MED
Fish availability (below survey depth) ±10–25% missed fish = underestimate MED
Acoustic dead zone (near seabed) ±5–15% demersal fish missed LOW–MED
Background noise correction ±2–5% correctable with good data LOW
// Combined uncertainty (if independent errors):
CV_total ≈ √(CV_TS² + CV_spatial² + CV_availability²)
≈ √(0.5² + 0.25² + 0.15²) ≈ ±58% on biomass

// This is why fisheries acoustic surveys report confidence intervals,
// not just single numbers — 56,500 t ± 33,000 t is the honest answer.
08

Spatial Biomass Prediction

Kriging, Random Forest/XGBoost, and CNN-based mapping from transect points to full-lake biomass hotspots