Photography / Data visualization

Photo Node-Gallery

A force-directed photo archive that uses colour similarity to surface unexpected visual neighbours, then tests those relationships against human review.

Stack
Next.js · D3 · Supabase

Model selection

Browsing photographs by colour.

Photo archives are usually organised by time, place, or subject. This experiment asks whether colour can offer another route through the work: moving from one photograph to another through light, tone, and palette.

An initial CIE76 graph was visually dense yet still split natural neighbours apart. I tested five models against seven reviewed query sets; Mean LAB with CIEDE2000 gave the strongest result using the existing image features, so it drives the live graph.

Reviewed set
100 photographs / 7 queries
Selected model
Mean LAB / CIEDE2000
Reviewed top four
89% relevant / 263 edges / 0 isolates

Select a query photograph

Human-reviewed affinity set

Active query / ID 14

Snow / pale neutral

“Relevant” marks a reviewed match. P@4 is the share of the first four results judged relevant; pair agreement measures how closely a model follows the reviewed ranking. Unmarked results are unjudged, not automatically wrong.

Model 01

Mean LAB / CIE76

Query 14: Snow / pale neutralQuery / 14
  1. Rank 1, photo 20
    1. ID 202.18
  2. Rank 2, photo 12
    2. ID 122.79
  3. Rank 3, photo 11
    3. ID 113.08
  4. Rank 4, photo 45
    4. ID 454.24
  5. Rank 5, photo 94
    5. ID 944.83
    Relevant
  6. Rank 6, photo 16
    6. ID 165.43
Relevant in top four
86%
Ranking agreement
82%
Graph
246 edges / 7 components
Build time
3.7 ms

Model 02

Mean LAB / CIEDE2000

Best reviewed P@4
Query 14: Snow / pale neutralQuery / 14
  1. Rank 1, photo 20
    1. ID 202.14
  2. Rank 2, photo 12
    2. ID 122.74
  3. Rank 3, photo 45
    3. ID 453.40
  4. Rank 4, photo 11
    4. ID 113.70
  5. Rank 5, photo 94
    5. ID 945.16
    Relevant
  6. Rank 6, photo 16
    6. ID 165.25
Relevant in top four
89%
Ranking agreement
82%
Graph
263 edges / 1 component
Build time
9.5 ms

Model 03

Mean Oklab

Query 14: Snow / pale neutralQuery / 14
  1. Rank 1, photo 20
    1. ID 200.010
  2. Rank 2, photo 45
    2. ID 450.015
  3. Rank 3, photo 11
    3. ID 110.019
  4. Rank 4, photo 103
    4. ID 1030.028
  5. Rank 5, photo 39
    5. ID 390.029
  6. Rank 6, photo 94
    6. ID 940.032
    Relevant
Relevant in top four
75%
Ranking agreement
66%
Graph
260 edges / 2 components
Build time
2.5 ms

Model 04

Oklab Distribution / Hellinger

Query 14: Snow / pale neutralQuery / 14
  1. Rank 1, photo 11
    1. ID 110.039
  2. Rank 2, photo 94
    2. ID 940.067
    Relevant
  3. Rank 3, photo 20
    3. ID 200.086
  4. Rank 4, photo 15
    4. ID 150.089
    Relevant
  5. Rank 5, photo 29
    5. ID 290.095
  6. Rank 6, photo 45
    6. ID 450.108
Relevant in top four
82%
Ranking agreement
76%
Graph
291 edges / 1 component
Build time
3.6 ms

Model 05

Oklab Palette / Earth Mover

Query 14: Snow / pale neutralQuery / 14
  1. Rank 1, photo 94
    1. ID 940.065
    Relevant
  2. Rank 2, photo 15
    2. ID 150.069
    Relevant
  3. Rank 3, photo 11
    3. ID 110.072
  4. Rank 4, photo 103
    4. ID 1030.073
  5. Rank 5, photo 29
    5. ID 290.075
  6. Rank 6, photo 20
    6. ID 200.079
Relevant in top four
71%
Ranking agreement
65%
Graph
274 edges / 2 components
Build time
152 ms

Broad dominant-colour and tonal affinity, judged from the generated contact sheet. These are editorial judgments, not semantic labels or exhaustive relevance sets.

Exact all-pairs benchmark / 4,950 pairs / generated 26 Aug 2026

Project readout

A different way through the archive.

The graph does not try to identify what a photograph depicts. Instead, it turns 100 photographs into a field of visual neighbours, then tests that field against 7 deliberately different reference images before anyone is asked to browse it.

  1. 01 / Index

    Photograph set

    The archive remains image-first. A feature pass records colour signals for every photograph, while the original image stays at the centre of the experience.

  2. 02 / Review

    Similarity test

    Seven query images define the kind of visual relationship worth preserving. Five colour models are checked against those judgments instead of assuming numerical closeness matches the eye.

  3. 03 / Browse

    Living graph

    The selected model becomes a force-directed gallery. It makes colour clusters and surprising near-neighbours available to browse as a field, rather than a fixed list of results.