Skip to main content


Segmentation is the mapping of sheets of papyrus in a 3D X-ray volume. The resulting surface volumes can be used directly to look for ink. The community has made this a significantly more automated process, but it still involves human input.

We have a small group of contractors and volunteers who have been mapping the scrolls, mostly Scroll 1.

Progress of mapping the scrolls, in area (cm²), from the Segment Directory spreadsheet (dates are when a segment was started, not finished, so it lags behind a bit)

The main tool which our segmenting team currently uses is Volume Cartographer, which you can learn more about in Tutorial 3. The basic idea is to manually annotate a piece of papyrus in a single slice, after which an algorithm can extrapolate it into 3D, essentially by doing really fancy line-following. This algorithm still needs a lot of correction and supervision, but that’s the rough idea.

Illustration of Volume Cartographer with an algorithm extrapolating in 3D.

The resulting 3D shape is called a “mesh”. You can view the meshes of all our segments in a tool called Volume Viewer (select “segments” in the top right):

Some segments from Scroll 1

Data format

The .volpkg format used by Volume Cartographer (learn more in Tutorial 3) has a paths folder, in which each segment has its own subfolder. Each subfolder contains two files:

  • Scroll1.volpkg/paths/<id>/meta.json: Metadata of a segment.
  • Scroll1.volpkg/paths/<id>/pointset.vcps: Pointset of a segment. This is a custom data format specific to Volume Cartographer.

There are two main places in which you can find segments on our data server:

Surface volumes

In addition to the meta.json and pointset.vcps required by Volume Cartographer, we generate a bunch of other files:

  • /layers/{00-64}.tif: Surface volumes of 65 layers.
    • This is most useful for detecting ink on.
  • /<id>_points.obj: Pointcloud.
  • /<id>.obj: Mesh of the segment.
  • /<id>.tif: Texture of the surrounding voxels.
  • /<id>.ppm: Custom data format mapping points between the surface volume and the original 3D volume of the scroll.
  • /author.txt: Name of the author of the segment.
  • /area_cm2.txt: Total surface area, in cm2.

The surface volume is the most useful dataset for ink detection. The middle layer (32) is sampled right from the segment mesh, and the other layers are sampled “above” and “below” the surface. This results in a new 3D volume “around” the surface of the segment.

Scrubbing through layers of the surface volume of segment 20230827161846

All these extra files were generated using the following script: export SLICE=20230827161846 && cd /Scroll1.volpkg/paths/${SLICE} && nice vc_convert_pointset -i pointset.vcps -o "${SLICE}_points.obj" && nice vc_render -v ../../ -s "${SLICE}" -o "${SLICE}.obj" --output-ppm "${SLICE}.ppm" && mkdir -p layers && nice vc_layers_from_ppm -v ../../ -p "${SLICE}.ppm" --output-dir layers/ -r 32 -f tif --cache-memory-limit 50G && vc_area ../.. ${SLICE} | grep cm | awk '{print $2}' > area_cm2.txt

Monster segment

The team at the University of Kentucky created special tooling (“Quick Segment”) to create the “Monster Segment”: a massive segment in Scroll 1. At the time of writing, it is larger than all our other segments combined, so we recommend trying this one first. More information here and here.

The data for this can be found on the data server at /stephen-parsons-uploads/. There are two segments, which were created by projecting in different directions from a large air gap. The recto segment is the one where we expect written text.

Monster Segment texture
Location of the Monster Segment in the scroll