The input a human interpreter prefers and the input a detector learns best from are not always the same input. Usually they are close enough that nobody has to choose. In carbonate vug detection they pointed in opposite directions, and picking the prettier one would have quietly wrecked the pipeline. This is the story of why we fed our vug detector the raw static borehole image log and threw away the contrast-enhanced dynamic version that every interpreter on the project reached for first.
The counter-intuitive part is that we had already proven, on the same wells, that dynamic wins. For fracture and bedding picking the dynamic representation was decisive: same architecture, same weights, same recipe, and swapping static for dynamic input cut fracture classification error by roughly 25x. We wrote that result up separately in Static vs Dynamic Image Logs: A 25x Class-Error Drop from Data Choice Alone, and the mechanics there stand; we will not re-derive them. The one-line version: dynamic rescales contrast inside a sliding window, and that local rescaling is exactly what makes a tilted-plane sinusoid pop against the borehole wall.
So when the vug work started, the reflex was obvious. Use the input that already won. It was wrong, and the reason it was wrong is the whole point of this piece.
What dynamic actually does to a vug
A dynamic log is not a different measurement. It is the same static electrical image with a contrast transform applied: within a moving window the intensities are stretched so the local range fills the display. For a planar feature cutting the wall, that transform is a gift. A fracture or a bedding plane is a high-contrast edge, and window-local stretching sharpens edges. The sinusoid the interpreter is trying to trace jumps off the page.
A vug is not an edge. It is a blob of conductive fluid sitting in a dissolution pore, and on the raw image it reads as a small region of high intensity against the carbonate matrix around it. What the vug detector needs is the intensity of that blob relative to the whole-well population, not relative to whatever happens to sit in a small window beside it. Window-local contrast stretching does two damaging things at once. It amplifies every fracture and bedding edge in the frame, and those edges are, for a vug detector, pure noise the model has to learn to ignore. And it renormalises the blob against its immediate neighbourhood, which drags the vug's intensity back toward the local mean and dissolves the very separation the detector keys on.
Put plainly: dynamic enhancement is tuned to make planar features loud. For vugs, planar features are the distractor class. We would have been paying, in preprocessing, to amplify the thing we most needed suppressed.
The right tail is the signal, not an outlier
The cleaner way to see this is on the intensity histogram of the raw static log, scaled 0 to 255. The bulk of the pixels form the carbonate matrix, a tall lump left of centre. Off to the right sits a long, low tail that never quite dies out. The instinct of anyone who has cleaned data is to treat that tail as outliers and clip it.
That instinct is exactly backwards here. The outliers are the vugs. The high-intensity pixels in the right tail are the dark conductive blobs we are trying to find, so the first rule of the vug pipeline is that the long right tail of the intensity histogram is kept, deliberately, and never clipped or flattened. Dynamic normalisation, by folding local ranges back into a common display scale, does flatten it. Static preserves it. That single difference is why the representation that lost the fracture contest wins the vug contest.
The mud physics that tells you which pixels are vugs
None of this holds without knowing why a vug reads dark and conductive in the first place, and that is a fluid property, not an imaging convention. These are water-based-mud wells with a borehole salinity of 116,935 ppm and a connate water resistivity of 1.0 ohm.m. Highly saline water is highly conductive. A dissolution pore filled with that fluid conducts current far better than the tight carbonate matrix around it, so it images as a high-intensity, dark feature. The conductive feature is the vug.
That fact becomes an operational rule at the contour stage. For each candidate contour we compare the mean intensity inside it against the mean of the surrounding rock, and keep it only if the surroundings are darker than the contour by the right sign. Writing the difference as
the keep-rule for water-based mud is
For oil-based mud the resistivity contrast inverts, so the sign flips, but the principle does not move: the target is still the conductive feature relative to its matrix, and the sign check simply encodes which way conductive reads under that fluid. This is what makes the right tail more than a statistical artefact. The tail is where the conductive contours live, and the sign check is how we confirm each one is a vug and not a fracture edge or a bedding contact that wandered into high intensity.
A dynamic log breaks this check before it runs. Once contrast has been stretched window by window, the intensity inside a contour and the intensity of its surroundings have both been rescaled against different local ranges, and Δμ no longer means what the mud physics says it means. The sign check only reads true on the raw electrical measurement. That is a second, independent reason static is not a stylistic preference here but a correctness requirement.
Enhancement, without the transform that hurts
Keeping the static log did leave a real gap. Dynamic contrast was doing genuine work for a human eye, and some local enhancement is legitimately useful even for vugs, because grayscale drifts slowly with depth and a single global threshold cannot track it. We did not want to give that up. We wanted the local sensitivity without the edge amplification and without the histogram flattening.
The substitute is a mode-subtraction local-variation enhancement, and its full derivation lives in Top-K Mode Subtraction: Isolating Dissolution Pores from Carbonate Background, so here it is a pointer, not a re-tell. In one line: we subtract the top-five intensity modes of a patch to produce a small stack of locally-enhanced copies, with the mode spacing held at delta-m equals 5 so the copies stay distinct rather than duplicating the same contours. That gives the detector local variation to work with while leaving the raw intensity scale, and its right tail, intact underneath. It is enhancement chosen for the vug target instead of enhancement borrowed from the fracture target.
The general lesson
The habit worth taking from this is to stop treating preprocessing as a fixed front-end you inherit and start treating it as a per-target modelling choice. Dynamic versus static is not a quality setting where one option is simply better. It is a representation decision, and the right answer flips depending on whether the target is a high-contrast planar edge or a conductive blob in a long histogram tail. The same transform that bought a 25x error reduction for fractures would have amplified our distractor class and erased our signal for vugs.
Processed-for-humans and best-for-the-model diverged here because the human interpreter and the model are optimising different objectives. The interpreter wants every feature legible at once and reaches for the loudest rendering. The detector wants one feature class separable from the rest and needs the rendering that preserves that class's particular fingerprint, which for vugs is an intensity right tail the mud physics gives meaning to. When those objectives point in opposite directions, the model does not get to inherit the interpreter's default. It gets the input its own physics argues for.
Limitations
This is a data-representation argument, not a benchmark. The static-versus-dynamic comparison is decisive in the direction we describe, but the magnitude of the vug-side penalty from using dynamic input was not run as a clean single-variable ablation the way the fracture-side 25x figure was; we chose static on the physics before it could cost us a measured accuracy gap. The mud-physics sign check as stated is calibrated to water-based mud at the salinity and resistivity of these wells; the sign, and the identification of conductive with dark, must be re-derived for any well on oil-based mud or at materially different borehole-fluid properties. The intensity histogram in the exhibit shows the schematic shape of the static-versus-dynamic transform on a shared pixel population to make the tail argument legible; it is illustrative of the mechanism, and the printed salinity, resistivity, and mode-subtraction constants are the sourced numbers. Finally, this covers the input representation only. Whether a contour that survives the sign check is a true dissolution vug, and not an artefact of circularity or area, is a separate gate we handle downstream.