Inspiration
We live in an age where the Milky Way is a myth to 80% of the population. What began as a personal frustration with urban "sky glow" evolved into a technical challenge: How do we make an invisible environmental crisis feel personal? Most people view light pollution as a minor nuisance, but it is actually a biological disruptor and a massive energy waste. We were inspired to build Lumina Sensory to bridge the gap between a simple smartphone photo and the complex ecological data hidden within its pixels.
What it does
Lumina Sensory is an immersive data-visualization tool that turns any night-time photo into a visceral impact report. Users upload an image of their environment, and our engine performs a spectral analysis to identify light "leaks."
- Visualize: It identifies light pollution nodes and "shields" them, revealing a simulated star-field hidden behind the glare.
- Quantify: It calculates the "Stolen Sky" metric—stars lost, trees required to offset the energy waste, and the impact on migratory wildlife.
- Commit: Users can join a global movement, contributing to a live-synced counter of $CO_2$ reduction.
How we built it
The project is built on a modern React stack with a focus on real-time processing:
- The Vision Engine: We used the HTML5 Canvas API to perform per-pixel luminosity analysis. By sampling the color data $(R, G, B)$ of uploaded images, we identify high-intensity sources.
- Real-time Backend: We integrated Firebase (Firestore & Auth) to handle global state. We used
onSnapshotlisteners to ensure that when one user "commits" a saving, every active user sees the "Global Healing" counter tick up instantly. - The Math: We modeled the environmental impact using a weighted algorithm. The estimated carbon footprint $C$ based on detected light sources $L$ and average luminosity $A$ is calculated as:
$$C = \sum_{i=1}^{n} (L_i \cdot \alpha) + (A \cdot \beta)$$
Where:
- $\alpha$ represents the grid intensity coefficient.
- $\beta$ represents the atmospheric scattering factor.
Challenges we ran into
- Spatial Clustering: Distinguishing between a single streetlamp and a cluster of bright pixels was difficult. We wrote a custom clustering algorithm that groups neighboring high-intensity pixels into a single "impact node" to avoid inflated data.
- Browser Performance: Processing high-resolution mobile photos in the browser can hang the main thread. We optimized the analysis loop by implementing a "step-sampling" method, ensuring the analysis finishes in under 200ms without freezing the UI.
- The "Noise" Problem: Reflected light and lens flares often mimic pollution. We had to fine-tune our luminosity thresholds to ensure we were capturing actual light sources rather than just "bright" parts of an image.
Accomplishments that we're proud of
We are incredibly proud of the "Shield The Light" interaction. Successfully creating a transition that feels both scientific and emotional—moving from a cluttered, glaring photo to a clean, star-filled sky—was a major UI achievement. Additionally, building a fully functional, live-synced global database in the short span of a hackathon was a huge win for the team.
What we learned
This project taught us the power of Sensory Data Visualization. We realized that data is most effective when it is interactive. By allowing users to physically "toggle" the pollution away, we transform them from passive observers into active participants. We also deepened our understanding of HTML5 Canvas pixel manipulation and the nuances of Firebase's real-time listeners.
What's next for Lumina Sensory
The future of Lumina Sensory (and our broader "Dark-Matters" initiative) involves:
- ML Classification: Using Computer Vision to automatically identify the type of light (LED vs. Sodium Vapor) to provide more accurate carbon data.
- Geolocation Mapping: Creating a global heat map where users can pin their "reclaimed skies," helping organizations identify the worst areas for light leakage.
- Hardware Integration: Connecting the app to smart-home APIs to allow users to actually dim their outdoor IoT lights directly from the interface.
Log in or sign up for Devpost to join the conversation.