Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a prototype of a giga(tera)pixel image viewer on a screen wall.

The current target screen wall is wilder from univ saclay paris sud, 75 identical square screens in a 15x5 layout. Physical size is about 6x2 meters and definition is 14400x4800

5 computers handle each a single 15x1 row of screens and are not synchronised in any way.

I created a very simple system with:

  • an OSD controller (defines the wall layout)
  • an arbitrary number of OSD clients, each defines a rectangular area in screens space

each OSD instance is hosted in a web page and get its contents from my khufu tile server (khufu also serves the html) you can choose the way you distribute clients and access tiles in the network, my prototype uses a single machine (only one lcoal khufu and all clients / controller are on the same machine) khufu is not mandatory, if you have a working tile source you can use it, and a standard http server can serve html pages.

For performance reasons, on the wider wall there will be one khufu instance per client with data sources duplicated. The controller will be independent and have its own copy of tif files

When change happens on the controller (newimage selected, pan, zoom), a trivial WebSocket server broadcasts all necessary info to all clients, and each updates according to its location on the wall.

It is a very simple but very effective system.

you can use any OSD tile source but khufu allows to serve tiles from a single bigtiff file of unlimited dimensions, this makes things much easier For terapixel images such as my gigantic Mars surface image.

setup: run khufu in a terminal:

# macos
./bin/khufu_0.4_macos_arm64 -d html -f tiff -p 8200
# windows
.\bin\khufu_0.4_win_amd64.exe -d html -f tiff -p 8200

start the websocket server in another terminal:

cd server
npm install
npm run start

open 3 client URLs

# macos
open "http://localhost:8200/client.html?x=0&y=0&w=5&h=5"
open "http://localhost:8200/client.html?x=5&y=0&w=5&h=5"
open "http://localhost:8200/client.html?x=10&y=0&w=5&h=5"

# windows
start "open" "http://localhost:8200/client.html?x=0&y=0&w=5&h=5"
start "open" "http://localhost:8200/client.html?x=5&y=0&w=5&h=5"
start "open" "http://localhost:8200/client.html?x=10&y=0&w=5&h=5"

resize them to match 1 ratio and dispose them horizontaly according to their position

open the controller URL

# macos
open "http://localhost:8200/controller.html?rows=5&cols=15&image=noirlab2424a"
# windows
start "open" "http://localhost:8200/controller.html?rows=5&cols=15&image=noirlab2424a"

ratio is 3 clients now display their part of the wall, and update on controller change (zoom/pan/image)

here is how it should look:

Images must be in pyramidal tiled tif format, as generated by

vips --vips-progress  copy <srcimage> "<dstimage>.tif[tile,tile_width=512,tile_height=512,compression=jpeg,pyramid]" 

and must be described in html/images.js (see tiff2khufu.cpp in khufu repo)

I have yet to see it working on the real wall but I bet it will be spectacular. there are some unknowns such as how to deal with bezels..

Future:

  • describe wall and client layout in size units (millimeters), this will allow:

    • heterogenous screens (size, resolution, ratio)
  • display a virtual wall config in simgle html page

  • handle overlays on arbitrary clents.

  • see hw to deploy arbitrary o§sd applications.

  • experiment with input devices, supported by wilder (3dmouse, gestures. etc..)

  • setup utra low-cost screen walls with raspberry pis attached and driving only one screen. evaluate wifi performance

About

Openseadragon screen wall prototype

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages