Skip to content

simonCatBot/rustVX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

160 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rustVX

OpenVX Vision Conformance

OpenVX 1.3.1 Vision Conformant Implementation in Rust

Overview

rustVX is a complete, conformant implementation of the Khronos OpenVX 1.3.1 specification written in Rust. It provides a safe, fast, and portable vision processing framework with full Vision Feature Set support.

Features

  • Complete OpenVX 1.3.1 API - All base and vision functions
  • Vision Conformance - Passes Khronos CTS for Vision Feature Set
  • Memory Safe - Rust's ownership model prevents use-after-free, data races
  • SIMD Optimized - SSE2/AVX2/NEON vectorized kernels
  • C API Compatible - Drop-in replacement for existing OpenVX applications
  • Thread Safe - Lock-free graph execution where possible

Vision Feature Set

Color Conversions

  • vxColorConvert (RGB↔YUV, RGB↔NV12, RGB↔IYUV)
  • vxChannelExtract, vxChannelCombine

Filters

  • vxConvolve (generic NxM)
  • vxGaussian3x3, vxGaussian5x5
  • vxMedian3x3
  • vxBox3x3

Morphology

  • vxDilate3x3, vxErode3x3

Gradients

  • vxSobel3x3, vxSobel5x5
  • vxMagnitude, vxPhase

Arithmetic

  • vxAdd, vxSubtract, vxMultiply
  • vxWeightedAverage

Geometric

  • vxScaleImage (bilinear, nearest, area)
  • vxWarpAffine, vxWarpPerspective
  • vxRemap

Optical Flow

  • vxOpticalFlowPyrLK (Lucas-Kanade)

Feature Detection

  • vxHarrisCorners
  • vxFASTCorners
  • vxMinMaxLoc

Building

# Clone repository
git clone https://github.com/yourusername/rustVX.git
cd rustVX

# Build with cargo
cargo build --release --all

# Run tests
cargo test --all

Usage

C API

#include <VX/vx.h>

vx_context context = vxCreateContext();
vx_graph graph = vxCreateGraph(context);

// Create nodes...
vxVerifyGraph(graph);
vxProcessGraph(graph);

vxReleaseGraph(&graph);
vxReleaseContext(&context);

Rust API

use rustVX::prelude::*;

let context = Context::new()?;
let mut graph = context.create_graph()?;

// Create nodes...
graph.verify()?;
graph.execute()?;

Conformance

This implementation passes the Khronos OpenVX Conformance Test Suite for:

  • Base Feature Set
  • Vision Conformance Feature Set

See CONFORMANCE.md for detailed results.

Continuous Integration

This project uses GitHub Actions to automatically build and run OpenVX Vision Conformance tests on every push and pull request.

CI Workflow

  • Build: Compiles rustVX with cargo build --release
  • CTS: Builds the Khronos OpenVX Conformance Test Suite
  • Test: Runs Vision Conformance tests with rustVX implementation
  • Report: Uploads test results and generates summary

Running Tests Locally

# Build rustVX
cargo build --release

# Build and run CTS
cd OpenVX-cts/build
LD_LIBRARY_PATH=../../target/release ./bin/vx_test_conformance

Workflow Status

See Actions tab for latest test results.

License

MIT License - See LICENSE file

Acknowledgements

Based on the Khronos OpenVX specification and reference implementations from:

  • Khronos Group OpenVX Sample Implementation
  • AMD MIVisionX
  • Texas Instruments TIOVX

About

OpenVX 1.3.1 Vision Conformant Implementation in Rust - 217 functions, SIMD optimized, C API compatible

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors