Sitemap
Jon Cohrs

Jon Cohrs

Technology and Journalism

How We Used Gaussian Splats to Take Readers Inside a Restricted Refugee Camp

17 min readOct 5, 2026

--

Press enter or click to view image in full size

How can journalists help readers understand places they cannot access themselves?

With “Grenzenräume” (“Border Zones”), we, an interdisciplinary team of journalists, designers, creative technologists, and photographers, set out to explore how new technologies might help us report from restricted areas. Over the course of a year, we experimented with 3D reconstruction, satellite data, generative AI, and other emerging rendering methods to see how fragmented or imperfect source material could help us understand and visualize inaccessible border infrastructures, such as fortifications, refugee camps, and asylum centers.

This experimentation culminated in a multimedia feature about the high-security asylum center on the Greek island of Samos, published by the Swiss daily Neue Zürcher Zeitung. Following two migrants, Mina and Fazlullah, through their time at the center, the story uses 3D reconstructions, photographs, text, and maps to examine a place that remains largely hidden from public view. The research project was supported by the Innovation Fund for Multimedia Journalism.

Below, Jon Cohrs, the technical lead, and Adina Renner, the project lead, take you through the collaborative process behind the 3D reconstructions: which reconstruction techniques the team tested, how we gathered source material under difficult conditions, how we produced the final models and brought them to the web, and how we ultimately used them to tell a journalistic story.

Research: Approaches to 3D Reconstruction

Starting out, we had three core research questions:

  1. How can journalists create spatial representations of locations that are difficult to access?
  2. What are the limitations for creating 3D models when the source imagery is of poor quality?
  3. Finally, can AI be used to improve the source material or subsequent 3D models?

Because the field of 3D reconstruction is growing so fast, we decided to first create an overview over possible approaches and research areas:

Ongoing research areas in the field of 3D reconstruction.

Experimenting: Approaches to 3D Reconstruction

Having gained an overview of the different techniques, we set out to test three approaches: Gaussian splatting, satellite-imagery-based reconstruction, and generative 3D modeling.

We decided to focus the story on the high-security asylum camps on the Greek Aegean islands. Built in 2021 and funded by the European Union, these facilities are strictly controlled and closed to the media and the public. Migrants arriving from Turkey and north Africa via the Mediterranean are processed there before either being granted asylum and permitted to travel onward to mainland Europe, or being denied asylum. Three islands currently host such camps, and a fourth is under construction.

Gaussian Splatting: 3D Models from Publicly Available Footage

Press enter or click to view image in full size
A Gaussian splat of the center on Leros created from a promotional video.

In our first experiment, we set out to create 3D models from publicly available footage. Published on the Ministry of Asylum and Migration’s website, promotional videos produced by the Greek government documented the construction of the camps, including drone footage of the newly completed facilities. From footage on the island of Leros, we extracted around 600 images of the camp, which we then aligned and used to create our first Gaussian splat using PostShot.

The process was relatively successful, though the results depended heavily on the quality and coverage of the source video. While higher-resolution footage would have produced a better model, the experiment demonstrated that found footage could be a viable source for creating publishable Gaussian splats.

Satellite Imagery-Based Reconstruction

Press enter or click to view image in full size
A 3D model of the Leros camp created from satellite imagery.

We also attempted to create 3D models from satellite images. This approach would allow us to access areas from above that have flight restrictions and therefore cannot be captured by a drone. Recent advances in the resolution of satellite imagery and the number of passes over the same location might provide enough parallax and detail to extract 3D data.

We explored several techniques for generating 3D models from satellite imagery, including the commercial tool BrightEarth. While it could reconstruct the camp from satellite data alone, the dense arrangement of containers proved challenging, and the resulting grey-and-white model lacked the photorealism we wanted for the story.

We also tested a pipelines exploring satellite structure from motion, SatSfM. Their approach requires multiple overlapping, high-resolution satellite images captured from different angles under similar lighting conditions, along with detailed camera metadata. While we successfully reproduced the workflow using the researchers’ dataset, we struggled to obtain comparable satellite images for our area of interest. There was insufficient commercial satellite coverage, and the required metadata was prohibitively expensive, making the approach impractical for newsroom use.

This experiment revealed a broader challenge. Many methods developed in academic research are novel and innovative. But in practice, they are often not reliable enough or too cost-intensive, to integrate into everyday journalistic work.

Image Extrapolation using 3D Generative AI

Press enter or click to view image in full size
A 3D reconstruction of the camp based on satellite imagery and photos using generative AI.

We also dabbled in a third research area which uses three to four photos to extrapolate a 3D model, a technique that is starting to be used in generating 3D objects for games such as Trellis and Tripo3D. This approach, while interesting and novel, works for singular, low poly shapes and is not successful for more complex models. Additionally, because of its reliance on generative AI, it can lead to inaccuracies that are unacceptable in journalism so we did not pursue this further.

Based on the success of our experiments in Gaussian splats with low quality source footage, this was the approach we pursued further as the story developed.

Gathering Images from Inaccessible Places

Alongside our technical exploration, we decided to focus our story on the camp on the island of Samos. It was the first facility of its kind to open and remains the largest to this day. As with the Leros camp, a promotional video was available, but it lacked enough angles to create a complete Gaussian splat. We therefore decided to visit the camp in hopes of photographing it ourselves.

All official access requests to the Greek authorities were denied. Despite this, reporter Katharina Bracher and photographer Ilir Tsouko traveled to Samos, hoping to meet residents permitted to leave the camp and obtain visual material of the site through them. They had two goals in mind: First, to document personal stories and produce classical photojournalistic work. Second, to gather visual material of the camp that could be used for 3D reconstruction.

Photography and access was difficult so we experimented with several approaches.

Drone Capture

Press enter or click to view image in full size
Left: The ideal flight path for a drone to capture the entire camp on the island of Samos for a 3D reconstruction. Right: The drone flight path that was possible given the restrictions and circumstances.

Drones are an obvious approach, providing aerial access and the ability to follow predetermined flight paths. However, flight restrictions can limit their use. Because they capture images primarily from above, it can also be difficult to obtain all the perspectives required for a detailed 3D model. It’s a great method for capturing roofs, for example, but very difficult if you want to take photos or create a 3D model of a wall and door and so forth.

In this case, an anonymous source provided us with new drone footage of the camp. The area to the west of the facility is a military zone and the camp itself is classified as a special exclusion zone, prohibiting flights directly over the site. However, the drone could be flown outside the perimeter, filming the camp from the outside. In addition to these restrictions, the strong winds on the island made flying the drone very challenging. All in all, this meant that the capture had to be done quickly and that not all angles could be covered.

Social Media Images

The second option is to source pictures from social media taken by a range of different photographers and cell phone users. This approach can work well when there are hundreds of people photographing the same place.

The Samos camp is sparsely documented on social media. After long and difficult journeys and often fraught encounters with authorities, few migrants post material for fear it could affect their asylum process, a concern reinforced by the camp’s guards, barbed-wire fences, and checkpoints. Even if more material were available, the camp spans roughly 37 acres, making it unlikely that enough images could be gathered to reconstruct the entire site.

Sourcing images from residents

Press enter or click to view image in full size
The instructions given to the migrants living in the camp for capturing their living quarters.

Another option is to work with people living inside restricted areas and ask them to document their surroundings using their cell phones. From a technical perspective, even inexpensive smartphones today can produce images of sufficient quality for 3D reconstruction. The greater challenge lies in the capture process itself which must be simple and clearly structured so that people with varying levels of technical experience can follow it.

Filming and photography are not formally prohibited inside the camp on Samos. Residents must pass through airport-style security checks when entering and leaving the premises, but electronic devices are not systematically searched. While unofficial repercussions appear to be rare, they are not unheard of. Given these circumstances, we considered it acceptable for residents to document their living quarters from inside, but not other parts of the camp. To further protect them, fake names were published and no specific information about where they reside within the camp was disclosed.

Press enter or click to view image in full size
Left: Mina, one of the migrants whose story we told, is 16 years old and grew up in Iran. Right: The silhouette of Fazlullah, his wife, and their two children, on a wall just outside the camp. To protect people’s identities, we did not show any faces. Photos: Ilir Tsouko

Two migrants agreed to capture their container units. Beforehand, we tested different capture patterns in a room similar in size to a shipping container. Moving slowly along the walls while changing viewing angles proved more effective than filming from a fixed position. Adina Renner, story lead, documented our findings in written instructions, including simple drawings of the capture pattern but this format proved to be too complex to share via text message, so we created short instructional videos. The participants returned the following day with the footage, and followed up with additional material for a second round. This approach ultimately allowed us to gain visual insight into an area rarely seen by anyone beyond the camp’s residents.

We also considered video versus still photographs for 3D reconstruction. Video is faster but can introduce lower resolution and motion blur, while stills generally produce better models but take longer to capture, increasing exposure in high-risk settings.

Producing the Splats

When creating Gaussian splats from less-than-ideal source material, we explored a range of different techniques to optimize the output, from image selection, automatic alignment, hand alignment, up-resing AI, color correction, image replacement, and a series of other approaches.

One common approach in photogrammetry to improved data sets is to ensure that color is consistent across all the images, and to decrease the image white and black saturation — in other words, to bring down the highs and bring down the whites, decrease the blacks so that there’s more detail in either range. Another useful tactic is to delete or remove images that are unhelpful for alignment, such as those with motion blur. This is particularly important with extracting images from videos. There are some helpful tools to extract motion blur from images, such as SharpFrames, to help automate this process by choosing the top percentage of sharp images.

Almost every approach to building a 3D asset includes an alignment step, which is particularly important for Gaussian splats, satellite imagery, as well as other techniques that we explored. Many cloud-based programs, such as Polycam and Kiri handle this process internally, which is fast when there is a good data set.

Press enter or click to view image in full size
The final gaussian splat of the camp exterior.

Here’s a quick summary of our steps. For the sake of brevity, we’re assuming some level of proficiency with the referenced software.

Prep Assets
Software:
SharpFrames

  1. Import videos or photos in SharpFrames and select the sharpest images
  2. Adjust color in Adobe Lightroom. Reduce highs and lows to have greater dynamic range and a bit of sharpness

NOTE: Avoid AI up-resing because it can introduce unwanted detail that reduces alignment quality.

Press enter or click to view image in full size
Culling images using SharpFrames

Align Photos
Software:
Reality Scan

  1. Align images in Reality Scan, using at least 3 alignment points per component. Use manual control points if necessary
  2. Export the registration (photo alignment data) and sparse point cloud which is necessary to open the alignment in another software program

NOTE: For registration export as colmap, with all images in the same directory as colmap file.

SETTINGS: Export pointcloud, Export vertex colors: True, Export ascii: False

Press enter or click to view image in full size
Photo alignment using Reality Scan

Create Gaussian Splat
Software:
PostShot

  1. Import registration and 4k images to Post Shot 3DGS creator.
  2. Create a 3000 splat count 3DGS model as a master
  3. Attempt a lower splat count for web optimization and compare quality. In the end, we chose 3000 splat count because 1500 had too much quality loss for the level of zoom we needed
  4. Export as a .ply
Press enter or click to view image in full size
Gaussian Splat rendering using Postshot

Optimize Splats for Web
Software:
SuperSplat, SOGS, Spark.js

  1. Cleanup Splat to reduce size and unnecessary splats, using a tool such as SuperSplat Editor
  2. Compress splat to SOGS for the web using Splat-Transform
  3. Upload to webviewer, such as Spark.js
Press enter or click to view image in full size
Splat-transform to SOG

Final Models

For our story, Jon Cohrs, technical lead, created three gaussian splat models: One model was an aerial view of the camp, and two interior models of living quarters inside containers. Each had it’s unique challenges, with the interior models having more blurry shots that needed to be removed and a fair amount of hand alignment to create a cohesive image. In each case, we started out with over a thousand images which we edited down to around 600–700 images to create each splat.

Press enter or click to view image in full size
The final gaussian splat of interior of Mina’s container. The data set was not ideal so you can see some holes and ghosting.

The models are available on Supersplat at:

In the story, the Gaussian splat models were used in three scrollytellings elements. These narrative sequences allow the reader to scroll through the space of the model along a predefined path. As they scroll, additional textboxes move across the screen, explaining the model. The textboxes are sometimes expanded with smartphone photos taken inside the camp, providing readers with a view from the ground. In the scrollytelling, the model is also enhanced with further annotations. These kinds of scrollytelling elements with 3D assets often require custom code and a unique production pipeline and raise special performance concerns.

Get Jon Cohrs’s stories in your inbox

Join Medium for free to get updates from this writer.

Michel Grautstück, software developer, built an editing tool as a Svelte application using:

  • Svelte for the scrolly app to keep the application lightweight and fast.
  • Hosting, asset management, and article integration on NZZ’s Q platform
  • Three.js for 3D rendering, cameras, lighting, materials, and scene structure.
  • SparkJS to load, render, and manipulate Gaussian splats.

One challenge is making the experience editable by journalists and editors with less technical expertise. We built tooling that gave developers full control over the rendering pipeline while exposing a JSON-based configuration that editors could adjust directly through an integrated development pane in the app. Editors could adjust camera positions, toggle objects per story step, and tweak transitions across screen sizes, all without touching code which enabled the story to evolve more organically.

Press enter or click to view image in full size
The tool’s free camera mode allowed us to change the camera position by interacting with the model. The changes were automatically saved in the browser, enabling us to view them directly in the scrollytelling element.

The core workflow looked like this:

Development

  1. Build and test the app locally with hot reloading and an example configuration
  2. Push updates to the Q platform test environment

Editorial

  1. Adjust camera positions, text content, and overlay positioning via the development pane
  2. Export the adjusted configuration as JSON and update the test article
  3. No code changes required for content updates

Deployment

  1. Single command publishes to test or production
  2. Environment-specific bundles keep file sizes minimal

Performance Considerations

Stories must feel performant on a range of devices. Building graphics-heavy stories means designing for the average reader on a midrange phone, not a high-end desktop. Since accurately detecting hardware on the web is near impossible, we ran a quick benchmark at startup: a Three.js scene had to hit 60fps, combined with a bandwidth test requiring a steady 8 Mbps. As a backup, devices that failed were served a video scroller synced to scroll position instead. For devices that passed, we applied several optimizations:

The text in the text boxes, as well as any annotations on the model, could also be changed directly in the tool.

  • Frame rate capping at 60fps to prevent unnecessary battery drain and heat buildup.
  • Pixel ratio limited to 2x to keep rendering crisp without the performance penalty of 3x displays.
  • Conditional rendering so post-processing effects and unused renderers are disabled when not needed.
  • Preloading assets so splat files are ready before scrolling begins, avoiding stutters at critical moments.
  • Texture caching so loaded textures are reused rather than fetched multiple times.
Press enter or click to view image in full size
The text in the text boxes, as well as any annotations on the model, could also be changed directly in the tool.

Special Effects and Techniques

The story begins with the arrival of a young migrant, Mina, at the shores of the island Samos. It follows her as she enters the camp, undergoes registration and is finally assigned a container that will serve as her living quarters during her asylum process.

The visual storytelling echoes this approach. It begins with a wide-angle view of the camp and the surrounding landscape of Samos. The second large visual element offers a close view of the structure of the camp, highlighting different areas and their function. Finally, we take the reader inside Mina’s container. Besides fulfilling a narrative purpose, each scrollytellling element demonstrates a different way in which Gaussian splats can be used.

Combining the splat with a Blender landscape animation

Press enter or click to view image in full size
In the first visual element of the story, the 3D reconstruction is embedded into a 3D map of the landscape.

For the title of the article, we wanted to create a cinematic camera flight across the landscape of the refugee camp so that the distance of the camp to local communities was more apparent, and the character of the dry landscape shaped by vineyards and olive groves visible.

Cian Jochem, 3D-modeler, solved this by recreating the landscape in Blender using this muli-step process:

  1. Aggregated elevation data and satellite imagery in QGIS
  2. Created a custom orthographic projection centered on Samos to maintain accurate distances across the island
  3. Imported the geospatial data into Blender at the correct scale using BlenderGIS
  4. Integrated the refugee camp Gaussian splat using the 3DGS plugin
  5. Manually positioned and aligned the splat, since it contained no georeferencing data
  6. Added volumetric mist for depth and color-corrected the satellite imagery to create the final look

Highlighting Effects

Press enter or click to view image in full size
The second scrollytelling element explains the structure of the camp.

In the second scrollytelling element, it felt important to be able to highlight specific parts of a Gaussian splat to be able to explain the camp’s architecture. Unlike traditional 3D models where one can select faces or apply materials to meshes, splats function like point clouds with no inherent structure and lack the ability to be able to target specific components.

We explored three approaches to highlighting.

  1. SparkJS’s built-in SplatEdit tools can sculpt and mask splats. This required breaking the model into isolated components and didn’t support the more advanced highlighting techniques we had in mind.
  2. SparkJS’s lower-level Dyno API, which allows custom GLSL shaders to be injected directly into the splat rendering pipeline. Gaussian splats are already GPU-intensive and the additional shader overhead proved too costly for mobile performance.
  3. Using 2D-image overlays that were fixed to the viewport and appeared with each scroll step.
Press enter or click to view image in full size
Experiment with highlights using the SparkJS’s Dyno API.

In the end, we opted for a more low-tech solution, using 2D-image overlays locked to the viewport. The overlays masked certain areas with a semi-transparent fill, highlighting the unmasked areas with white outlines for clarity, while smoothing out irregularities in the Splat rendering. We also added a 3D world image plane that was placed within the model and moved with the splat in the scrollytelling, actig as a kind of passe-partout that hid artifacts at the edges of the splat and gave the whole scene a soft fade-out. Overall, Joana Kelén, visual journalist, designed a simple, minimal approach focused on the essentials. The choice of white overlays and a white background also helped emphasize the sparse environment of the camp and the harsh midday light.

Press enter or click to view image in full size
The 3D world image plane could be added to the story and manipulated using the scroller tool.

Combining Gaussian Splats and Low-Poly Objects

Press enter or click to view image in full size
Here, the Gaussian splat of the camp was combined with a traditional 3D model of a container.

For the third scrollytelling element, we wanted to show the reader the outside of Mina’s container first, and then bring them inside to her living quarters. While we did have a detailed Gaussian splat of the interior, the exterior view lacked the needed resolution so we modeled the container conventionally in Blender, sourcing reference images from the manufacturer and public photographs. For realistic representation, we added visible signs of wear and everyday use. Unlike splats, a traditionally modeled object can be individually lit, shaded, and animated, giving us the control to isolate elements like walls and roof independently.

Look-Around Effect (aka The Gyro Effect)

Press enter or click to view image in full size
We added an effect to the Gaussian splat inside the container that allowed readers to “look around” by moving their mouse.

To make readers feel present inside Mina’s container, we implimented a gyro effect that subtly shifts the camera in response to user input. On desktop, moving the mouse rotates the viewpoint, letting readers look around as if standing in the space. Mobile phones have sensors which track user’s phone rotation. This could be used to let users explore a space by moving their phone, but this was unstable across mobile browsers and operating systems, so rotation was limited to desktop only.

Journalistic Considerations

Gaussians splats and 3d models in general can be very effective tools in offering readers a deeper spatial understanding of space or environment. As was the case with “Grenzenräume”, we were able to work in collaboration with contributors who lived in the camp who had limited technical experience in creating gaussian splats, but who had unique access to the space and with a little training and guidance, could photograph an interior living situation. From these photos we were able to train a 3D gaussian splat model and embed it into a visual story to offer a unique perspective into her life within the camp.

There are several journalistic considerations that arose during our research that are important to highlight.

  1. Gaussian splat models are photo realistic reconstructions, rather than photo equivalents. The 3DGS process can create models with incomplete data because it uses an inferential model-based form of AI to interpolate shape. While this makes 3DGS a more forgiving process it can infer incorrectly.
  2. Unlike generative AI, 3DGS doesn’t create new shapes or images, it just tries to infer the shape and may leave holes or fuzzy clouds around the areas of incomplete reconstruction.
  3. 3DGS has a fuzzy cloud-like texture (splats), which means that they are less than ideal for measurements and quantitative analysis. Photogrammetry and Lidar are better suited to measurements.

In general, Gaussian splats can be useful method to communicate a sense of scale, orientation and reflections to offer a unique 3D perspective. In addition they offer perspective through windows, mirror and other reflection of transparent materials that often fail to render correctly using photogrammetry. The technology is growing rapidly, so it’s an exciting space to watch. Since publishing the story in February, many new developments have become available to make this process more efficient.

If you’ve made it this far, we hope you’ve found some of our approaches inspiring! We welcome all comments and questions and looking forward to seeing more journalists exploring gaussian splats.

Research and Development
Jon Cohrs,
technical lead: research, Gaussian splats.
Michel Grautstück, developer: web development.
Cian Jochem, visual journalist: 3D-modeling.
Joana Kelén, visual journalistin: design.
Adina Renner, story lead: text, maps.

Reporting
Katharina Bracher,
reporter: text.
Ilir Tsouko, photographer: photos.

Contributing Reporters
Anja Troelenberg, journalist, Andreas Ernst, Editor; Jessica Eberhart, osint-reporter; Linda Koponen, editor.

--

--