Segments
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.
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.
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):

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:
/full-scrolls/Scroll{1,2}.volpkg/paths
: This is where we put finished paths long term./hari-seldon-uploads/team-finished-paths/scroll{1,2}/
: This is the staging area for segments made by the segmentation team (led by @Hari_Seldon on Discord).- Every few weeks we move files from here to the main
/paths
folder. - We also update Volume Viewer when we do this.
- Every few weeks we move files from here to the main
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.

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.

