# 数理综合_数据分析 **Repository Path**: fourzkw/mathematical-synthesis-data ## Basic Information - **Project Name**: 数理综合_数据分析 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-21 - **Last Updated**: 2026-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频分析器 (Video Analyzer) 单摆运动视频分析工具,用于测量和分析运动物体的角度变化、角速度和能量特性。 ## 项目结构 ``` Speed_measurement/ ├── video_player.py # 主视频分析器 ├── video_all.py # 增强型视频处理器(含视频输出) ├── data_process.py # 数据后处理与能量分析 ├── create_trajectory_video.py # 轨迹可视化视频生成 ├── config.json # 配置文件 ├── requirements.txt # 依赖包列表 ├── data/ # 实验数据目录 └── README.md # 项目说明 ``` ## 代码功能说明 ### video_player.py 主视频分析器,提供完整的视频处理和角度测量功能。 **核心功能:** - **卡尔曼滤波器 (`KalmanFilter2D`)**:二维位置平滑,减少几何中心抖动 - 基于匀速运动模型 - 可调节过程噪声和测量噪声参数 - 支持预测和更新操作 - **图像处理**: - 高斯模糊降噪 - 对比度和亮度调整 - 二值化处理 - 实时参数调节 - **轮廓检测与分析**: - 基于面积过滤的轮廓识别 - 多边形近似简化 - 多目标追踪 - 智能点匹配(避免连线相交) - **角度计算**: - 以竖直向上为0°的角度系统 - 实时角度测量和显示 - 角度历史记录 - **数据导出**: - CSV格式保存(时间、角度、坐标等) - 自动生成时间戳文件名 - **交互控制**: - 视频播放控制(暂停、逐帧、快进快退) - 鼠标选点和清除 - 实时图表显示(可选) ### video_all.py 增强型视频处理器,整合视频分析和可视化输出功能。 **核心功能:** - **三画面组合视频输出**: - 原始视频 - 轮廓检测/多边形拟合视频 - 实时数据图表(角度、角速度、能量) - **数据处理**: - CSV数据导出 - Savitzky-Golay滤波平滑 - 卡尔曼滤波几何中心 - **实时图表生成**: - matplotlib动态绘图 - 5个子图:角度、角速度、动能、势能、总机械能 - 使用非交互后端(Agg)避免Qt错误 - **配置管理**: - JSON配置文件支持 - 图像处理参数可调 - 多轨迹支持 ### data_process.py CSV数据后处理和物理量计算工具。 **核心功能:** - **数据读取与清理**: - 读取CSV文件 - 自动清理时间异常数据点 - 数据统计信息输出 - **平滑处理**: - Savitzky-Golay滤波器 - 可调窗口大小和多项式阶数 - 支持多轨迹数据 - **物理量计算**: - 角速度(数值微分) - 动能计算 - 重力势能计算 - 总机械能(动能+势能) - **能量分析**: - 各轨迹总机械能 - 系统总能量守恒检验 - 能量随时间变化趋势 - **可视化输出**: - 生成8子图分析图表: - 原始角度 vs 平滑角度 - 原始角速度 vs 平滑角速度 - 动能、势能 - 总机械能、系统能量守恒 - 保存为PNG图片 - **数据导出**: - 保存处理后的CSV(包含所有计算结果) - 文件命名:`*_smoothed.csv` ### create_trajectory_video.py 生成原始视频与轨迹曲线的组合可视化视频。 **核心功能:** - **视频文件自动查找**: - 支持多种格式(MOV, MP4, AVI等) - 在CSV同目录自动搜索 - **数据处理**: - 自动识别CSV类型(源数据或已平滑数据) - Savitzky-Golay平滑(源数据需要) - 时间异常数据清理 - **实时图表生成**: - matplotlib动态绘图 - 5个子图(有能量数据时)或2个子图(无能量数据) - 随视频播放逐步绘制轨迹 - **视频合成**: - 左右分屏布局(原视频 + 轨迹图) - 可调视频宽度占比 - 自适应分辨率 - 输出MP4格式 - **多轨迹支持**: - 不同颜色区分多条轨迹 - 实时更新所有轨迹数据 - 显示当前数据点标记 - **配置参数**: - 输出帧率 - 平滑窗口和多项式阶数 - 视频宽度比例 - 摆长等物理参数 ### config.json 全局配置文件,存储图像处理和检测参数。 **配置项:** - `threshold_value`:二值化阈值 - `gaussian_kernel`:高斯模糊核大小 - `contrast_alpha`:对比度系数 - `brightness_beta`:亮度调整值 - `target_count`:目标数量 - `contour_epsilon`:轮廓近似精度 - `min_contour_area`:最小轮廓面积 - `show_plot`:是否显示图表 - `plot_colors`:多轨迹颜色列表 ## 技术栈 - **计算机视觉**:OpenCV (cv2) - **数值计算**:NumPy, SciPy - **数据处理**:Pandas - **可视化**:Matplotlib - **图像处理**:PIL/Pillow - **信号处理**:scipy.signal (Savitzky-Golay滤波) - **状态估计**:卡尔曼滤波器 ## 数据流程 ### 方式1:分步处理 ``` 视频输入 → video_player.py ↓ CSV原始数据 ↓ data_process.py ↓ CSV平滑数据 + 分析图表 ↓ create_trajectory_video.py ↓ 可视化视频输出 ``` ### 方式2:一步到位 ``` 视频输入 → video_all.py → CSV数据 + 三画面组合视频 + 实时图表 ```