Approved by Ursula Addison on 2026-05-15

Authors: Linas Vepstas + Adrian Borucki (two-author)

Repo: opencog/vision @ dbaf2fe (main, last commit 2025-06-10)

Status: [SCAFFOLDING-NOT-PIPELINE]. Minimal AtomSpace-OpenCV type-wrapper layer; demonstrates the wrapping pattern but is not an end-to-end perception pipeline. ~38 commits. Identified by the Perception/Neural-Symbolic cluster pilot Source 4 (2026-04-30).

What Vision Is

opencog/vision is a thin type-wrapper layer that exposes selected OpenCV image operations as AtomSpace atom types. It provides the smallest sufficient surface to call OpenCV from Atomese -- two support types and four operation Links -- plus end-to-end runner glue for the simplest use case (blur an image, write it to disk). It is NOT a perception pipeline: there is no controller, no learning loop, no temporal-sequence handling, no integration with downstream reasoners. The repo positions itself as an experimental scaffolding effort.

Wired Types (verified at dbaf2fe)

Six atom-types are wired into the build at opencog/atoms/vision/CMakeLists.txt:48-64:

TypeCategoryRole
ImageNodeSupportAtomspace handle for an image (file-path or in-memory).
ImageValueSupportCarries the OpenCV cv::Mat through Atomese evaluation.
ImageBlurLinkOperationGaussian blur / box blur.
ImageWriteLinkOperationWrite image to disk.
ImageFilter2DLinkOperation2D convolution with arbitrary kernel.
ImageHalfSizeLinkOperationDownsample by 2x.

Stub Not Wired (1)

ImageRectangleLink -- IMAGE_RECTANGLE_LINK is declared at atom_types.script:13 and the implementation files ImageRectangleLink.cpp/.hpp exist in opencog/atoms/vision/, but the type is excluded from the CMake source/header lists at CMakeLists.txt:48-64. The class compiles in isolation but is not part of any built target. [STUB-NOT-WIRED] per the cluster-pilot 3-state classification.

Unimplemented "More Plans and Ideas"

README.md:45-69 lists planned but unimplemented future operations: thresholding, HaarWaveletLink, and additional filter/edge-detection types. None have source files; none have atom_types.script entries. [UNIMPLEMENTED].

End-to-End Demo

The single end-to-end demo is examples/blur_and_write.py:24-35: load an image into an ImageNode, apply ImageBlurLink, route through ImageWriteLink to save. This demo verifies the AtomSpace ↔ OpenCV bridge works at all -- it does not demonstrate any nontrivial perception pipeline.

(Note: the Perception cluster pilot resolved a phantom-file claim against this demo. Gemini's reviewer initially cited examples/python/vision_example.py -- that file does not exist; the actual demo is at examples/blur_and_write.py:24-35 as Codex correctly cited. See V4-3 in the cluster-pilot reconciliation for details.)

Stack Identity: AtomSpace-Scheme/Python

opencog/vision sits on the AtomSpace-Scheme/Python stack -- C++ atom-type implementations + Python demo glue. No .metta files; no hyperon-experimental bindings. It is part of the broader Vepstas Hyperon-era research portfolio (sensory + agents + motor + evidence + atomese-simd are sole-authored by Vepstas; vision is co-authored with Adrian Borucki, ~25 of 38 commits).

What It Is NOT

  • NOT a perception pipeline. No camera capture loop, no temporal frame sequence, no downstream reasoner integration. Each operation is invoked imperatively per-call.
  • NOT a perception controller. No attention/gaze model, no salience, no foveation. It is an Atomese view onto OpenCV operations.
  • NOT a ECAN consumer. Pickaxe verification: zero STI/LTI/AttentionValue/AttentionBank token references. No attention-allocation hooks.
  • NOT a 2013 DeSTIN-FISHGRAM revival. Pickaxe verification: zero fishgram/sushigram/DeSTIN tokens at HEAD or in git history.
  • NOT wired to opencog/sensory. Bidirectional cross-grep confirmed zero references between vision and sensory at the cluster-pilot snapshot.

Cluster-Narrative Position

opencog/vision is a thin scaffolding within the broader Hyperon-era perception/embodiment tradition (Tradition 8 candidate per Sensory's trilateral framing). It demonstrates the AtomSpace-OpenCV wrapping pattern but does not build out a complete vision system. The cluster-pilot 2013 DeSTIN-FISHGRAM-PLN architecture revival check returned [PARTIAL-FRAGMENTED-REVIVAL]: vision contributes a perception fragment that is not connected to any downstream miner or reasoner.

Quick Start

# Build (requires AtomSpace + cogutil + OpenCV)
cd vision && mkdir build && cd build && cmake .. && make && sudo make install

# Run the blur+write demo (Python; requires opencog Python bindings)
python examples/blur_and_write.py

Open Questions

  • Does the scaffolding pattern generalize? The 6 wired types validate the AtomSpace-OpenCV wrapping pattern but cover only the simplest OpenCV operations. Whether the pattern scales to the broader OpenCV API (multi-frame, machine-learning pipelines, calibration) is not yet demonstrated.
  • Why is ImageRectangleLink stubbed? The [STUB-NOT-WIRED] state suggests in-progress work; whether this is a deliberate hold or simply abandoned scaffolding is not documented in the repo.
  • Bridge to opencog/sensory? Vision and sensory both belong to the Vepstas portfolio but operate independently. Whether they should be unified -- ImageValue flowing through OllamaNode, or sensor inputs producing ImageValues -- is an open architectural question.

References

  • Cluster-pilot extraction archive: scripts/archive/perception_pilot/source4_hyperon_neural_perception/ (Surface B reconciliation, R4.6).
  • Sister cards: Sensory (broader Hyperon-era perception bridge); Neural Pattern Mining (Tradition 7 candidate); Attention and Motivation (Vepstas role upgrade context).
  • Editorial-terminology context: 2013 FISHGRAM paper.



Discussion