Urban Compliance Monitoring System
Height change detection for unauthorized structure identification using depth-based analysis
Overview
Developed an end-to-end surveillance system to identify unauthorized urban structures by analyzing height variations rather than just visual differences. The study area was Mertzig, Luxembourg, utilizing aerial imagery and point cloud data provided by the Government of the Grand Duchy of Luxembourg — specifically the Cadastre and Topography Administration, Territorial Information Department, and Geodata Management Service.
Problem Statement
Conventional change detection methods primarily utilize RGB data, making them vulnerable to radiometric inconsistencies such as:
- varying illumination
- cast shadows
- seasonal contrast
These artifacts often obscure actual physical changes on the ground.
Our Approach: We address this limitation by converting 2D images into depth-derived height maps. This approach decouples structural information from visual appearance, allowing the system to robustly detect vertical displacement caused by unauthorized construction, regardless of lighting or weather conditions.
Technical Pipeline
graph TD
%% Define Styles
classDef input fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#000000;
classDef process fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#000000;
classDef result fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000000;
subgraph Reference_Period ["Reference Period (Historical)"]
direction TB
A(["Point Clouds"]) --> B["DSM Generation<br/>(Rasterization via PDAL)"]
B --> C["Reference DSM"]
end
subgraph Current_Period ["Current Period (Monitoring)"]
direction TB
D(["RGB Images"]) --> E["Depth Estimation Model<br/>(Depth-Anything)"]
E --> F["Height Map Generation"]
end
%% Merging the flows
C --> G
F --> G
G["Height Difference Analysis"] --> H["Segmentation<br/>(OpenCV Connected Components)"]
H --> I(["Unauthorized Structure<br/>Detection"])
%% Apply Styles
class A,D input;
class B,E,G,H process;
class C,F,I result;
Process Breakdown
1. Reference Flow (Left Branch):
- Input: Point Clouds (e.g., historical LiDAR or Photogrammetry data).
- Process: DSM Generation (Rasterization) - Converting massive point cloud data into a grid-based Raster format to align with the current period’s data format for subtraction.
- Output: Reference DSM (Digital Surface Model) representing the baseline surface including structures.
2. Current Flow (Right Branch):
- Input: RGB Images (Current monitoring photos).
- Process: Depth Estimation Model (utilizing Depth-Anything) to predict depth from 2D images.
- Output: Height Map (AI-predicted DSM).
3. Analysis Flow (Integration):
- Height Difference: Calculating the differential between the Reference DSM and the Current Height Map.
- Segmentation: Utilizing OpenCV Connected Components (Blob detection) to identify clusters of pixels with anomalous height differences, distinguishing actual structural objects from random noise.
- Result: Precise localization of Unauthorized Structures.
Detection Capabilities
| Type | Description | Example |
|---|---|---|
| Vertical Extensions | Additional floors | Rooftop structures |
| Horizontal Extensions | Building expansion | Side annexes |
| New Structures | Completely new builds | Warehouses, Sheds |
| Height Violations | Exceeding limits | Antenna, Tank installations |
Key Results
- Quantitative Analysis: Fine-grained height estimation enabling precise unauthorized structure identification
- False Positive Reduction: 80% reduction by eliminating visual noise (shadows/seasons)
- Automated Pipeline: End-to-end processing with autonomous anomaly detection
Technologies Used
| Category | Tools |
|---|---|
| Depth Estimation | Depth-Anything, OpenCV |
| Point Cloud & 3D Processing | Open3D, PDAL, NumPy |
| Geospatial Analysis | GDAL, Rasterio, GeoPandas |
| Visualization | Three.js, QGIS, Matplotlib |
| Languages | Python |