Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SpectraScan

Experimental real-time computer-vision scanner and target tracker for Android.

SpectraScan turns an Android phone into a local, offline visual tracking system. It combines YOLO object detection, motion analysis, lightweight semantic tracking, Kalman prediction and a tactical-style HUD to detect and follow objects directly from the camera feed.

The project is currently an experimental prototype. It is intended for computer-vision experiments, sky observation, wildlife/traffic observation and repurposing spare Android devices as standalone camera nodes.

Highlights

  • YOLO11n / COCO detection running locally with ONNX Runtime
  • Real-time tracking with stable target IDs
  • Kalman-based motion prediction
  • Lightweight semantic flow between YOLO passes
  • Motion trail and motion lock
  • Center lock and target zoom panel
  • Automatic reacquisition after temporary target loss
  • Independent motion detection channel
  • Target filters: people, animals, objects, screens and sky
  • Pinch-to-zoom using the camera's reported zoom range
  • Exposure compensation and digital gain
  • B/W mode and automatic Night Vision
  • Low-light detection and adaptive detector throttling
  • Camera sharpen, noise reduction and stabilization where supported
  • Portrait and landscape support
  • Offline operation after installation

SkyWatch

SpectraScan 0.10 introduces an experimental SKY profile aimed at fixed-camera observation.

In this mode the application combines a high-resolution motion grid with YOLO classification. A moving object that cannot be classified by the current COCO model is displayed as:

UNKNOWN

UNKNOWN means unclassified motion target. It does not imply that the object is unidentified in any extraordinary sense.

The current SkyWatch implementation works best when the phone is mounted or otherwise kept still. Handheld micro-movements can create transient motion candidates; camera-stability filtering and separate handheld/stationary profiles are planned.

How it works

CameraX
│
├── Luma / Motion analysis ───────► MOTION / UNKNOWN
│
├── YOLO11n (adaptive rate) ──────► semantic detections
│ │
└──────────────────────────────────────┤
▼
Hybrid Tracker
/ | \
Kalman Flow memory TTL
\ | /
▼
Tracking HUD

YOLO is intentionally not run at the maximum camera frame rate. Between neural-network passes, SpectraScan uses lightweight tracking and prediction. If local tracking becomes uncertain, YOLO is scheduled earlier to validate or reacquire the target.

This reduces sustained CPU usage compared with running full-frame inference continuously.

Tracking states

StateMeaning
TRACKINGTarget is currently confirmed
PREDICTEDTarget position is temporarily predicted between confirmations
LOSTTarget has not been confirmed within the allowed time
UNKNOWNMotion target detected in SkyWatch but not classified by YOLO

Flow/Kalman prediction is never treated as permanent semantic truth. Classes such as PERSON, CAR or DOG must periodically be validated by YOLO.

Camera controls

SpectraScan currently supports:

  • two-finger pinch zoom;
  • camera-reported zoom range where exposed by CameraX;
  • exposure compensation;
  • digital brightness gain;
  • monochrome mode;
  • automatic low-light / Night Vision mode;
  • hardware sharpen and noise reduction where available;
  • preview stabilization where supported by the device.

The zoom range exposed to third-party CameraX applications may differ from the range shown by the manufacturer's stock camera. Extreme zoom values in OEM camera apps may combine multiple physical lenses and proprietary processing.

Installation

There is currently no Play Store release.

GitHub Actions APK

  1. Open the repository's Actions tab.
  2. Select Build Android APK.
  3. Open the latest successful run.
  4. Download the APK artifact.
  5. Extract the artifact ZIP and install the APK on Android.

The CI debug builds use a persistent signing key, so newer builds should install over previous SpectraScan builds as normal updates as long as the signing configuration is unchanged.

Build from source

Requirements:

  • Android Studio / Android SDK
  • JDK 17
  • Android API 36 toolchain

The app uses Kotlin, Jetpack Compose, CameraX and ONNX Runtime for Android.

The CI workflow downloads the YOLO11n ONNX model during the build and packages it into the APK.

Main technology

ComponentTechnology
UIJetpack Compose
CameraCameraX / Camera2 interop
Object detectionYOLO11n, COCO-80
InferenceONNX Runtime Android
Trackingcustom HybridTracker + Kalman prediction
Local visual trackingluma template / semantic flow
Motion detectionframe differencing with camera-motion compensation
BuildGradle + GitHub Actions

Current limitations

SpectraScan is still under active development.

  • Detection quality depends heavily on lighting, camera quality and object size.
  • YOLO11n uses COCO classes and therefore cannot identify arbitrary object types.
  • Small distant aircraft, drones and birds may appear only as motion targets.
  • SkyWatch currently assumes a mostly stationary camera and can be sensitive to handheld shake.
  • Heavy rain, fog, reflections, foliage and low contrast can significantly reduce tracking quality.
  • Digital zoom cannot recover detail that the camera sensor did not capture.
  • Object classification confidence is not proof of identity.
  • UNKNOWN is simply a motion target without a successful supported classification.

Planned work

The short-term roadmap includes:

  • SkyWatch handheld/stationary profiles;
  • camera stability gate and calibration period;
  • temporal confirmation for UNKNOWN targets;
  • event-based video recording with pre/post detection buffer;
  • richer Lock Engine and local reacquisition;
  • performance profiles (ECO, BALANCED, PERFORMANCE);
  • observation presets such as Sky, Road, Wildlife and Security;
  • optional camera-node / remote-viewer architecture.

See ROADMAP.md for more detail.

Privacy

SpectraScan performs detection locally on the device. The current tracking pipeline does not require uploading camera frames to a remote AI service.

Future network or remote-viewer features, if added, should remain optional and clearly separated from local processing.

Disclaimer

SpectraScan is an experimental computer-vision project, not a safety, aviation, security, surveillance, navigation or scientific identification system. Detection and tracking results can be wrong. Do not rely on the application for safety-critical decisions or identification claims.

Use cameras responsibly and comply with local privacy and recording laws.

Project status

Current development line: 0.10.x — SkyWatch

The project evolves quickly and development APKs may contain regressions. Stable behavior is prioritized before major new tracking features are merged.

Русский

SpectraScan — экспериментальный Android-проект для локального распознавания и сопровождения объектов с камеры. Все основные вычисления выполняются на устройстве. Текущий режим SkyWatch предназначен в первую очередь для наблюдения с закреплённого телефона; UNKNOWN означает только движущийся объект, который модель не смогла классифицировать.

Подробности по будущим версиям находятся в ROADMAP.md.

License

A project license has not been selected yet. Until a license file is added, the source code remains subject to the repository author's default copyright rights.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages