本章节介绍 GK7206 的 FPN(Fixed Pattern Noise,固定模式噪声)校正应用示例 —— sample_fpn。该应用演示了 FPN 校正功能,用于消除传感器图像中的固定模式噪声。
应用源码位于 SDK 目录 sample/fpn/,是开发图像质量优化相关应用的参考模板。
| 参数 | 值 |
|---|---|
work_mode |
0(vi offline fpn calibrate) |
依赖 |
sensor |
sample/fpn/
├── Makefile # 构建脚本
└── sample_fpn.c # 主程序
在编译本应用之前,请确保已完成以下准备工作:
# 进入 sample 目录
cd <SDK_PATH>/sample
# 编译 fpn 示例
make -C fpn clean && make -C fpn
# 挂载 SD 卡(推荐)
mkdir -p /sd_card
mount -t vfat /dev/mmcblk1p1 /sd_card
# 使用 SCP 传输到开发板
scp sample/fpn/sample_fpn root@<板端IP>:/sd_card/
# 添加执行权限
chmod +x /sd_card/sample_fpn
# 进入 SD 卡目录
cd /sd_card
# 运行(work_mode 0)
./sample_fpn 0
# 交互输入校准帧数
按提示输入校准帧数(1-256,必须是2的幂次)
# 退出
Ctrl+C
成功运行后,终端会输出类似以下信息:
sample_fpn running
input number to set calibrate frame and press enter to confirm!
calibrate frame:
输入校准帧数后,会进行FPN校准并输出校准结果。
本应用采用以下架构:
Sensor → VI → FPN 校准 → 校准结果保存
// 步骤 1:系统初始化
sample_comm_sys_init(&sys_config);
// 步骤 2:ISP 初始化
sample_comm_isp_init();
// 步骤 3:VI 启动
sample_comm_vi_start(...);
// 步骤 4:VPSS 启动
sample_comm_vpss_start(...);
// 步骤 5:FPN 初始化
xmedia_fpn_init();
// 步骤 6:配置 FPN
xmedia_fpn_config_t fpn_config;
fpn_config.enable = XMEDIA_TRUE;
fpn_config.strength = 50; // 校正强度
xmedia_fpn_set_config(&fpn_config);
// 步骤 7:VENC 启动
sample_comm_venc_start(...);
// 步骤 8:绑定模块
xmedia_bind_vpss_to_venc(...);
xmedia_fpn_config_t fpn_config;
fpn_config.enable = XMEDIA_TRUE;
fpn_config.strength = 50; // 校正强度(0~100)
fpn_config.mode = XMEDIA_FPN_MODE_AUTO; // 自动模式
xmedia_fpn_set_config(&fpn_config);
// 启用 FPN
xmedia_fpn_enable(XMEDIA_TRUE);
// 禁用 FPN
xmedia_fpn_enable(XMEDIA_FALSE);
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| FPN 效果不明显 | 校正强度设置过低 | 调整 strength 参数到 50~80 |
| 画面过暗或过亮 | FPN 配置错误 | 检查 FPN 配置参数 |
| 初始化失败 | Sensor 不支持 FPN | 检查 Sensor 型号 |