Skip to main content

Research

Fingerprinting Carbonate Texture: Per-Interval Vug Spectra as a Reservoir-Quality Signature

A vug detector usually reports one number per interval, a percent porosity, and one aggregate distribution for a whole well. That aggregate hides the thing an interpreter actually reads off a carbonate: how the pore texture changes with depth. This method note keeps the per-interval spectra separate and stacks about fifty of them down a single well as a ridgeline, so circularity and vug-area distributions become a continuous fingerprint of texture evolution rather than a summary statistic. The circularity spectrum sits in a 0.3 to 0.8 band with a 0.45 to 0.7 peak; vug areas cluster at 1 to 6 cm2. Alongside the ridgeline we show the reason the pipeline reports per interval at all: within a single borehole-image frame the local adaptive threshold ranges from about 0.5 to 2.5-plus, so no one global threshold survives a pad, and a 31-pixel block that covers 46.58 cm2 stepped one pixel at a time is what lets the threshold track that variation. Two genuinely new figures, one method claim.

Quamer NasimTannistha Maitiby Quamer Nasim, Tannistha Maiti9 min read
Research

Abstract

A vug is a dissolution pore, and a vug detector on a carbonate borehole-image log usually delivers a percent-porosity number per depth interval and, if you ask, one aggregate distribution of pore shape or size for the whole well. The aggregate throws away the part a geologist reads by eye. Texture in a carbonate is not one distribution; it is a distribution that changes with depth, tight and round in one zone, ragged and large in the next. This note keeps the per-interval spectra separate rather than pooling them and stacks about fifty depth intervals down a single well as a ridgeline, so the change itself becomes the figure. The circularity spectrum holds a 0.3 to 0.8 band with a peak around 0.45 to 0.7, and vug areas sit predominantly between 1 and 6 cm2, but the value of the stack is watching where those bands drift, not their pooled shape. Beside the ridgeline we place the reason the pipeline reports per interval at all: within one borehole-image frame the local adaptive threshold ranges from roughly 0.5 to 2.5-plus, direct visual proof that a single global threshold cannot fit a pad, and that a local threshold over a 31-pixel block covering 46.58 cm2, stepped one pixel at a time, is a requirement rather than a nicety. The detector mechanics behind those numbers are settled work we point to rather than re-derive; the contribution is the two figures and the single claim they make together.

What the aggregate distribution throws away

The eight-parameter adaptive-threshold detector that produces these spectra is described in full elsewhere, and its per-interval statistics, total count, total area, mean area, area spectrum and circularity spectrum computed every 10 cm, are the settled output of that pipeline [1][2]. What has not been drawn is what those per-interval spectra look like when you decline to pool them.

Report a well as one circularity histogram and one area histogram and you get a true summary that is also a flattening. A carbonate with a tight, well-sorted vuggy zone over a ragged, large-pore zone produces the same pooled histogram as a well where those textures are interleaved, because a histogram has no memory of depth. Yet the depth structure is the reservoir-quality signal. An interpreter reading raw imagery does not read an average pore; they read that the pores get rounder and smaller going down through one interval and then coarsen abruptly at a contact, and they tie that change to a facies boundary. A single distribution cannot carry that reading. The per-interval spectra can, if you keep them apart and stack them in depth order.

Reading the well as a stack, not a summary

The construction is literal. Take the per-interval spectra the detector already computes, one distribution per depth interval, and lay them out as a ridgeline: each interval is one small distribution, the intervals stack shallow-to-deep, and nearer ridges overlap farther ones so the eye follows a surface down the well. About fifty intervals fit legibly in one frame, enough to see a texture trend develop and reverse rather than just a local wobble.

On the circularity axis, each interval's spectrum lives inside the sourced band. The 0.1 m spectrum runs circularity 0.3 to 0.8, and the pooled distribution runs 0.28 to 0.85 with its peak between 0.45 and 0.7, the signature of a semi-circular-dominant pore population rather than perfect circles or elongated traces [1]. Stacked, the point is not that band; it is that the peak of each interval's spectrum sits at slightly different circularity, and the sequence of those peaks is the fingerprint. On the area axis the same logic holds against a different sourced band: vug areas are predominantly 1 to 6 cm2, and watching the per-interval area peak migrate through that range separates a fine-vug interval from a coarse one in a way the 1-to-6 pooled statement cannot.

None of this changes the detector. The circularity band and the area window are shape screens the pipeline already applies to reject elongated fracture traces and outsized washouts before a candidate is counted, and that gate is its own subject [3]. The ridgeline consumes the survivors of that gate and does one new thing with them: it refuses to average across depth.

VUG SPECTRA STACKED DOWN ONE WELL0.5-2.5+local threshold within ONE image50 depth-interval spectra read texture evolution as a fingerprint;the swept local threshold shows why one global cut cannot hold.SPECTRAL AXISCircularity0.28-0.85Vug area1-6 cm2peak band0.45-0.70.1 m spectrum band0.3-0.8intervals stacked50ADAPTIVE BLOCK, NOT A GLOBAL CUT31 pxblock side46.58 cm2block covers1 pxstep sizeper 10 cmstats intervalOne threshold cannot fit a block that spans0.5 to 2.5+ across a single pad.0.280.450.60.750.85circularity (dimensionless)depth downwellONE IMAGE0.51.01.52.02.5+local thresholdmin 0.77 · max 2.35sourced: circularity 0.28-0.85 peak 0.45-0.7, area 1-6 cm2, threshold 0.5-2.5+ in one image, block 31 px = 46.58 cm2, step 1 px · per-interval peak drift is illustrative
Roughly fifty depth-interval vug spectra stacked down one well, shallow interval at the top, so carbonate texture evolution reads as a continuous fingerprint instead of a single aggregate histogram. Toggle the spectral axis between circularity, whose sourced distribution runs 0.28 to 0.85 with a 0.45 to 0.7 peak band (0.3 to 0.8 in the 0.1 m spectrum), and vug area, whose predominant band is 1 to 6 cm2. The orange column on the right is the argument: the local adaptive threshold sweeps from about 0.5 to 2.5-plus within a single borehole-image frame, which is the visual proof that any one global threshold must fail on a pad this variable. The distribution bands, the peak, the area range, the 0.5 to 2.5-plus threshold range, the 31 px (46.58 cm2) block, the 1 px step and the per-10-cm statistics are sourced from the engagement archive; the per-interval drift of each stacked spectrum's peak is an illustrative reading of the source ridge-plot figure, flagged on the plate. This is a texture-quality signature, not a porosity number.

Why the reporting is per interval at all

Stacking spectra by interval only makes sense if per-interval is the honest unit, and it is, for a reason that is itself a figure. A global threshold assumes one grey level separates pore from matrix across a whole frame. On a carbonate pad it does not, and the adaptive-threshold surface shows why directly: within a single borehole-image frame, the local threshold the detector computes ranges from about 0.5 to 2.5-plus. That is not variation between wells or between intervals; it is variation inside one image. A vug that is dark against bright dolomite in one corner of the pad can share a grey value with ordinary matrix a short distance away, so the level that isolates the pore in one place mislabels rock in another.

The threshold column in the exhibit is that surface read as a single strip: the local cut wandering across more than a two-fold range top to bottom. Any horizontal line drawn through it, any global threshold, lands too high in some rows and too low in others. Because the threshold has to be recomputed per neighbourhood, the detector works over a 31-pixel block that covers 46.58 cm2, stepped one pixel at a time, and reports statistics per 10 cm interval [1]. The block size sets how large the local neighbourhood is; the one-pixel step keeps the threshold surface smooth instead of tiling into discontinuities. Stacking per-interval spectra down the well is stacking the natural reporting unit of a detector that never had the option of a global cut.

What the two figures argue together

Put the ridgeline and the threshold surface side by side and they make one claim. The threshold surface establishes that texture varies at the scale of a single frame, so finely that a global parameter cannot describe it and a per-interval treatment is forced. The ridgeline shows what that treatment buys: a continuous record of how pore shape and size evolve down the well, a fingerprint a pooled distribution would have erased. The first figure is the reason the second is possible; the second is the payoff the first earns.

The practical use is texture correlation, not a new porosity number. Two wells with the same pooled vug-porosity percent can carry different fingerprints, one where roundness and size hold steady through an interval and one where they drift, and that difference is a facies signal a single percent hides. Read against a companion well, a ridgeline asks whether the same texture sequence appears at the same relative depth, a correlation question the aggregate cannot pose. This does not replace the vug-porosity log that feeds the static model; that log is the deliverable, and the individual-vug quantification behind it is its own line of work [4]. The fingerprint is a reading aid on top of a settled pipeline, built from spectra it already produces and usually averages away.

Discussion

The narrow point is that a per-interval spectrum is cheap to keep and expensive to throw away. The detector computes it every 10 cm regardless; pooling it into one distribution per well is a choice, and it is the choice that loses the depth structure. Stacking the spectra as a ridgeline costs nothing the pipeline was not already paying and returns a view of texture evolution no summary statistic can reconstruct, because the information was destroyed in the pooling.

The wider point is where these two figures sit relative to the rest of the vug work. The eight parameters, the shape gate, and the individual-vug counting with its agreement to expert picks are all documented, and this note leans on them rather than repeating them [1][2][3][4]. What it adds is visual: an adaptive-threshold surface that makes the failure of global thresholding legible in one frame, and a downwell stack that makes texture evolution legible in another. Both come straight off the sourced figures, and neither has been drawn this way before in our writing.

Limitations

The bands and peaks are sourced, but the ridgeline is a display, not a measurement, and one thing in it is illustration rather than data. The per-interval drift of each stacked spectrum's peak, the way the peak migrates from interval to interval, is an illustrative reading of the source ridge-plot figure chosen to make the fingerprint idea legible; the sourced quantities are the circularity band 0.3 to 0.8, the 0.28 to 0.85 distribution with its 0.45 to 0.7 peak, the predominant 1 to 6 cm2 vug-area band, the 0.5 to 2.5-plus local-threshold range within one image, and the 31-pixel block covering 46.58 cm2 stepped one pixel at a time with statistics per 10 cm, and those are flagged apart from the illustrative shape on the plate. The threshold column is a faithful strip reading of the adaptive-threshold surface rather than a pixel-exact reproduction of any one pad. The stack is about fifty intervals from one well, so it demonstrates the fingerprint idea rather than surveying how much fingerprints vary between wells, and the correlation use in the discussion is a proposal the figures support, not a study we ran across a well set. Finally, this is a texture-quality signature, not a porosity estimate; the vug-porosity log that goes into the reservoir model is a separate output with its own validation, and nothing here changes that number or its error.

References

[1] Nasim, M. Q., and Maiti, T. Adaptive Thresholding for Vugs: The Eight Parameters of a Classical-CV Detector. Earthscan Insights, 2022. The parameter-by-parameter account of the adaptive-threshold vug detector, including the 31-pixel block covering 46.58 cm2, the one-pixel step, and the per-10-cm statistical spectra this note stacks. https://earthscan.io/insights/adaptive-thresholding-eight-parameter-vug-detector

[2] Nasim, M. Q., and Maiti, T. Vugs Explained: Dissolution Pores, Secondary Porosity, and Why They Matter. Earthscan Insights, 2022. What a vug is, why dissolution porosity matters to a carbonate reservoir model, and why it is quantified from borehole-image logs at all. https://earthscan.io/insights/vugs-explained-dissolution-pores-secondary-porosity

[3] Nasim, M. Q., and Maiti, T. The Sign of the Difference: How One Minus Sign Tells a Dissolution Pore From Its Mineral Look-Alike. Earthscan Insights, 2025. The circularity band and area window that screen candidate pores before the spectra are computed, and the contrast test that follows them. https://earthscan.io/insights/circularity-and-area-two-gate-filter

[4] Nasim, M. Q., and Maiti, T. Classical CV vs Deep Learning for Carbonate Vug Quantification. Earthscan Insights, 2023. Where the per-interval vug-porosity log comes from, why the pipeline is classical rather than a network, and how the individual-vug output is validated against expert picks. https://earthscan.io/insights/classical-cv-vs-dl-vug-quantification

Go to Top

© 2026 Copyright. Earthscan