# flicker-simulation-program **Repository Path**: qrmgitee/flicker-simulation-program ## Basic Information - **Project Name**: flicker-simulation-program - **Description**: 相机工频干扰模拟器 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-10 - **Last Updated**: 2026-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 相机工频干扰模拟程序 模拟不同工频光源在不同sensor参数下的成像效果,用于研究工频干扰条纹的形成原理。 ## 功能特性 ### 光源模拟 - **正弦波光源**:模拟50Hz/60Hz交流电驱动的光源(如日光灯) - **方波光源**:可配置频率(50-4000Hz)和占空比(0-100%)的PWM调光光源 ### Sensor模拟 - 固定分辨率:1280 × 720 - 可配置曝光时间:10 ~ 10000 μs - 可配置行间隔时间:1 ~ 100 μs - 可配置帧率:25fps / 30fps - 可配置帧偏差:-5000 ~ +5000 μs(模拟帧率不同步) ### 界面功能 - 实时波形显示:显示光源波形和当前帧扫描窗口 - 实时图像显示:显示模拟生成的灰度图像 - 截图保存:PNG格式 - 视频录制:AVI格式 - 调试信息输出 ## 安装 ### 环境要求 - Python 3.8+ - Windows 系统 ### 安装依赖 ```bash pip install -r requirements.txt ``` 依赖包: - PyQt5 >= 5.15.0 - numpy >= 1.20.0 - opencv-python >= 4.5.0 - pyqtgraph >= 0.12.0 ## 使用方法 ### 启动程序 ```bash python main.py ``` ### 操作步骤 1. **配置光源参数** - 选择光源类型(正弦波/方波) - 设置频率和占空比(方波) 2. **配置Sensor参数** - 设置曝光时间 - 设置行间隔时间 - 选择帧率 - 设置帧偏差(可选,用于模拟滚动条纹) 3. **开始模拟** - 点击"开始模拟"按钮 - 观察图像和波形变化 4. **保存结果** - 点击"截图"保存当前帧 - 点击"开始录制"录制视频 ## 原理说明 ### 卷帘快门模型 ``` 行N的曝光开始时间 = 帧开始时间 + N × 行间隔 行N的曝光结束时间 = 行N的曝光开始时间 + 曝光时间 ``` ### 亮度计算 - 每行的亮度 = 曝光时间窗口内光源波形的积分面积 - 基准:电源半周期(10ms for 50Hz)的面积对应亮度值255 ### 条纹形成原因 当sensor的行间隔时间与光源周期不匹配时,不同行采集到的光能量不同,形成明暗条纹。 ## 项目结构 ``` flicker/ ├── main.py # 程序入口 ├── requirements.txt # 依赖包 ├── README.md # 说明文档 ├── design_doc.md # 设计文档 │ ├── core/ # 核心算法 │ ├── light_source.py # 光源模拟 │ └── sensor_simulator.py # Sensor模拟 │ ├── ui/ # 界面模块 │ ├── main_window.py # 主窗口 │ ├── parameter_panel.py # 参数面板 │ ├── waveform_widget.py # 波形显示 │ └── image_widget.py # 图像显示 │ ├── threads/ # 线程模块 │ └── simulation_thread.py # 模拟线程 │ ├── utils/ # 工具模块 │ └── video_recorder.py # 视频录制 │ └── output/ # 输出目录 ``` ## 界面预览 ``` ┌────────────────────────────────────────────────────────────┐ │ 相机工频干扰模拟器 │ ├────────────────────────────────────────────────────────────┤ │ ┌──────────────┐ ┌──────────────────────────────────────┐ │ │ │ 光源设置 │ │ │ │ │ │ ○正弦波 ○方波 │ │ 图像显示区域 │ │ │ │ 频率: 50 Hz │ │ 1280 × 720 │ │ │ ├──────────────┤ │ │ │ │ │ Sensor设置 │ └──────────────────────────────────────┘ │ │ │ 曝光: 1000μs │ ┌──────────────────────────────────────┐ │ │ │ 行间隔: 30μs │ │ 波形显示区域 │ │ │ │ 帧率: 30fps │ │ ∿∿∿∿∿∿∿∿∿∿∿ │ │ │ │ 帧偏差: 0μs │ └──────────────────────────────────────┘ │ │ ├──────────────┤ ┌──────────────────────────────────────┐ │ │ │ [开始] [停止]│ │ 调试信息 │ │ │ │ [截图] [录制]│ │ [INFO] 帧: 100, 亮度: 128 │ │ │ └──────────────┘ └──────────────────────────────────────┘ │ └────────────────────────────────────────────────────────────┘ ``` ## License MIT License