Vasu-Nandan20/sentinel-surveillance-system
GitHub: Vasu-Nandan20/sentinel-surveillance-system
一个基于 Java 17 和 JavaFX 21 构建的实时智能监控与威胁检测模拟系统,展示多线程检测引擎、四级告警分类和防御级仪表盘的完整架构。
Stars: 0 | Forks: 0
🛡️ SENTINEL
实时智能监控与威胁检测系统
一个防御级的多摄像头监控平台,具备 AI 模拟威胁检测、
实时警报、PDF 报告和战术地图可视化功能。
UI + Rendering
60fps] -->|Platform.runLater| B[AlertManager
ObservableList] C[Detection Pool
2 threads
every 3s] -->|addAlert| B D[ThreatSimulator
daemon thread
every 15s] -->|addAlert| B B -->|write| E[CSVLogger
ReentrantLock] B -->|notify| F[Email/SMS
Simulation] A -->|read entities| G[CameraSimulator
CopyOnWriteArrayList] C -->|read positions| G ``` ## 📁 项目结构 ``` src/main/java/com/sentinel/surveillance/ │ ├── MainApp.java # Application entry point │ ├── controller/ │ ├── LoginController.java # Animated login with SHA-256 auth │ ├── MainController.java # Dashboard orchestrator (450 lines) │ └── AlertController.java # Custom ListView cell renderer │ ├── detection/ │ ├── MotionDetector.java # Frame differencing + polygon zones │ ├── FaceRecognizer.java # Watchlist matching (5 suspects) │ ├── ObjectDetector.java # Simulated YOLO detection │ └── BehaviorAnalyzer.java # Loitering / running / crowd │ ├── alert/ │ ├── ThreatLevel.java # Enum: LOW, MEDIUM, HIGH, CRITICAL │ ├── Alert.java # Immutable alert data model │ └── AlertManager.java # Thread-safe central event hub │ ├── simulation/ │ ├── CameraSimulator.java # 3 virtual cameras + entity physics │ └── ThreatSimulator.java # Background scenario generator │ ├── database/ │ ├── CSVLogger.java # Thread-safe CSV persistence │ └── UserAuth.java # Authentication + RBAC │ ├── ui/ │ └── MapView.java # Tactical map Canvas │ └── utils/ ├── ReportGenerator.java # PDF report builder (OpenPDF) └── VoiceCommandSimulator.java # Command terminal processor ``` ## 🚀 快速开始 ### 前置条件 - **Java 17+** (JDK,非 JRE) — [下载 Adoptium](https://adoptium.net/) - 首次运行时会**自动下载** Maven ### 运行 ``` # Clone 仓库 git clone https://github.com/Vasu-Nandan20/sentinel-surveillance-system.git cd sentinel-surveillance-system # Option 1: Windows batch 脚本 run.bat # Option 2: 直接使用 Maven 命令 .maven\apache-maven-3.9.6\bin\mvn.cmd javafx:run # Option 3: 如果 Maven 在 PATH 中 mvn javafx:run ``` ### 登录凭据 | 用户名 | 密码 | 角色 | 访问级别 | |----------|----------|------|-------------| | `admin` | `admin` | ADMIN | 完全访问权限 — 报告、配置、所有面板 | | `operator` | `operator` | OPERATOR | 仅查看 — 警报和摄像头源 | | `commander` | `sentinel2024` | ADMIN | 完全访问权限 | ## 🎮 使用指南 ### 仪表盘控制 | 控件 | 操作 | |---------|--------| | **摄像头下拉菜单** | 在 1 号门、东侧外围、2 号瞭望塔之间切换 | | **🔲 绘制区域** | 在视频源上进入多边形绘制模式 | | **清除区域** | 移除当前摄像头的所有限制区域 | | **⚡ 模拟威胁** | 触发戏剧性的 CRITICAL 级联场景 | | **📄 报告** | 生成 PDF 事件报告(仅限管理员) | ### 键盘快捷键 | 快捷键 | 操作 | |----------|--------| | `Ctrl+L` | 显示上一个警报详情 | | `Ctrl+R` | 生成 PDF 报告 | | `Ctrl+A` | 列出关键警报 | ### 指令终端 ``` > help → List all commands > show last alert → Display most recent alert > show critical alerts → Filter CRITICAL alerts > generate report → Create PDF report > system status → System health overview > show camera gate → Switch to Gate 1 > show camera perimeter → Switch to Perimeter East ``` ## 🔧 技术深度解析 ### 并发与线程安全 - 摄像头实体使用 **`CopyOnWriteArrayList`** — 安全支持 FX 线程和检测线程的并发读取 - **`volatile String currentCameraName`** — UI 和检测之间无锁同步 - AlertManager 中的 **`ConcurrentLinkedQueue`** — 支持来自多个线程的非阻塞警报摄取 - CSVLogger 中的 **`ReentrantLock`** — 支持来自任何线程的安全文件 I/O - **`Platform.runLater()`** — 将所有 UI 更新提交至 JavaFX Application Thread ### 检测算法 - **运动**:连续帧位置之间的欧几里得距离,阈值可配置 - **人脸识别**:概率匹配,带有每个嫌疑人的冷却计时器 (15秒) - **物体检测**:随机事件生成,带有基于网格的时间跟踪,用于检测遗留物体 - **行为**:位置历史跟踪,带有基于半径的逗留检测 (50px/10s) 和基于速度的奔跑检测 (>15px/帧) ### 威胁升级逻辑 ``` if (recentCriticalCount > 0) → CRITICAL else if (recentHighCount >= 3) → CRITICAL (auto-escalation) else if (recentHighCount > 0) → HIGH else if (recentMediumCount > 0) → MEDIUM else → LOW ``` ## 📋 输出文件 | 文件 | 位置 | 描述 | |------|----------|-------------| | 警报 CSV | `logs/alerts_log.csv` | 包含 ID、时间戳、摄像头、类型、级别、置信度、坐标的所有警报 | | PDF 报告 | `reports/SENTINEL_Report_*.pdf` | 执行摘要、警报时间线、摄像头细分 | | 控制台 | `stdout` | 电子邮件/短信模拟输出 | ## 🛠️ 技术栈 | 技术 | 版本 | 用途 | |-----------|---------|---------| | Java | 17+ | 核心语言 | | JavaFX | 21 | GUI 框架 (Canvas、控件、CSS、动画) | | OpenPDF | 1.3.30 | PDF 报告生成 | | Maven | 3.9.6 | 构建系统和依赖管理 | | SHA-256 | JDK 内置 | 密码哈希 | ## 🗺️ 路线图 - [ ] 通过 OpenCV `VideoCapture` 集成真实摄像头 - [ ] 连接到 Python YOLO 推理服务器的 REST API 桥接 - [ ] 用于警报持久化的数据库后端 (MySQL/PostgreSQL) - [ ] 基于 WebSocket 的远程监控仪表盘 - [ ] 带有区域层级结构的多楼层设施地图 - [ ] 带有审计跟踪的警报确认工作流 ## 👤 作者 **Vasu Nandan** ## 📄 许可证 本项目基于 MIT 许可证授权 — 详见 [LICENSE](LICENSE) 文件。
由 ☕ Java 17 + JavaFX 21 提供支持
防御级监控。实时情报。
标签:AMSI绕过, JavaFX, Maven, Mutation, OPA, PDF报告生成, 事件驱动架构, 人工智能检测, 企业级安全, 可视化, 域名枚举, 多引擎聚合, 多摄像头监控, 多线程架构, 威胁检测, 安全仪表盘, 实时报警, 并发编程, 战术地图, 智能安防, 桌面应用开发, 漏洞验证, 监控系统, 视频监控, 防御系统, 靶场