惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Engineering at Meta
Engineering at Meta
美团技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
I
InfoQ
S
SegmentFault 最新的问题
博客园 - 叶小钗
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
IT之家
IT之家
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
月光博客
月光博客
The Cloudflare Blog
U
Unit 42
GbyAI
GbyAI
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
图像平场校正(Flat-field correction)
Yiwei Zhang · 2023-02-06 · via 又见苍岚

理想情况下, 当相机对均匀的目标成像时, 得到图像中所有像素点的灰度值理论上应该是相同的. 然而, 实际上图像中各像素的值往往会有较大差异,此时就需要对图像进行平场校正。

简介

  • 平场校正(Flat-field correction, FFC)是提高数字成像质量的一种技术。它消除了由探测器像素对像素灵敏度的变化和光路畸变引起的图像伪影的影响。从个人数码相机到大型望远镜,这都是标准的校准程序。

  • 理想情况下, 当相机对均匀的目标成像时, 得到图像中所有像素点的灰度值理论上应该是相同的. 然而, 实际上图像中各像素的值往往会有较大差异。

  • 这一般是由以下几个原因造成:

    1. 光照不均匀;
    2. 镜片中心和镜片边缘的响应不一致;
    3. 成像器件各像元响应不一致;
    4. 固定的图像背景噪声等等。
  • 所谓的平场校正就是校正传感器芯片上这些不一致性。 目标是校正捕获的(Raw)图像的像素,以便当系统(相机和镜头)捕获统一的背景时,生成的输出图像是统一的。

校正思路

数字图像是成像系统输出的产物,过程中可能受到各种影响,导致在相同光照、相同材质情况下拍出图像的像素值发生变化。

既然已经发生了系统性的失真,首先进行系统性矫正。平场矫正中假设该材质在光照强度线性变化的情况下像素值也线性变化,那么对于图像每一个位置上的像素来说,仅需两个标准亮度下产生的灰度值即可对该像素进行平场校正。

校正方法

通过两个步骤来进行校正:暗信号非均匀性(DSNU)校正和光响应非均匀性(PRNU)校正。要校准 DSNU,必须在黑暗中记录参考图像,而对于 PRNU,必须用均匀的照明记录参考图像。因此,平场校正中的这两个单独的步骤分别称为暗场校正和亮场校正。

采集校正图像

  • 暗场图像采集

    暗场图像采集方法比较简单,我们记采集到的暗场图像为 $D$:

  1. 用盖子盖住透镜。

  2. 获取多个图像,并计算阵列每个像素的平均响应

  • 亮场图像采集

    亮场图像是覆盖整个视野的材质反光均匀一致的目标图像(注意:此处强调均匀,没有强调白色,实际使用时可以尽量亮,但核心需求是材质、光照均匀),一般来说要求这部分图像像素值大于 128,不可以过曝(会丢失信息)。记亮场图像为 $F$:

  1. 放置一个宽度足以覆盖整个视野的一致性(反光材质均匀)目标(彩色相机为白色)

  2. 调整镜头光圈和照明强度,以获得可能最亮的图像(前提是没有像素饱和)。

  3. 获取多个图像,并计算阵列每个像素的平均响应

平场校正

我们已经获取了校正所需的暗场、亮场基准图像,我们认为暗场图像为相机没有获取任何光信号时自己产生的噪声;亮场图像为光照、反光材质均匀情况下相机拍出的数字图像。

根据我们像素灰度值随光照线性变化的假设,我们需要对每个像素位置进行线性归一化,记待校正的图像为 $R$,归一化后的图像为 $C’$:
$$
C’= \frac{R-D}{F-D}
$$

其中所谓的除法表示的是图像矩阵逐像素相除,之后的计算均为矩阵逐像素运算

此时的 $C’$ 为归一化后的图像,值在 0 - 1 左右,为什么说左右呢,因为有可能小于0 (相机噪声),也有可能大于1(当前图像亮度大于亮场图像亮度),我们还需要将归一化后的图像调整回 0 - 255 的灰阶中,那就需要一个放大系数。

​ 放大数字应该由两张校正基准图像决定,记该系数为 $m$,差值的均值是最合适的了:
$$
m = \sum(F-D)/N
$$

$N$ 表示图像像素个数

记最终校正结果为 $C$,则整个对 $R$ 的校正过程为:
$$
C =\frac{R-D}{F-D}m
$$
有说法将平场校正描述为求解偏置增益的过程,此处偏置即为 $D$,增益即为 $\frac{m}{F-D}$。

如果对校正图像要求较高,你会发现不同波长的光线照射下产生的图像需要相同的波长光线产生的校正基准图像校正才能使得误差最小。

校正评估

平场校正后,需要对校正的图像进行评估,常用的方法是使用平均后的校正基准图作为校正使用的图像,回头去校准产生这张基准图像的单张数据。

我们期望校正后的图像所有位置的灰度均为同一个值,但事实上并不可能,那么就需要评估和这个值有多么接近。

简单的方法可以查看方差是否足够小,精度要求不高的话已经可以满足大部分需求了;

如果需要更高精度的评估,那就需要度量每个灰阶的像素点是否展示了在该二维平面上足够的均匀程度,也就是相同像素值的像素如果类似二维均匀分布产生的样本,那么就说明平场足够有效。

这个评估本质上是在度量一个数据集描述的分布与二维已知的均匀分布直接的距离,如果计算二者之间的 KL 散度你会发现落脚点会在度量数据集的熵上面,然而这看似简单的需求并不容易计算。

为了计算在已知二维平面上的均匀程度,需要将这些数据集转化为真正的分布,我的实践经验是将这些数据在二维平面上分块统计数量,形成二维平面上的统计直方图,归一化后就得到了他们的二维分布,之后就可以计算这个分布和均匀分布之间的距离了。

参考资料

文章链接:
https://www.zywvvd.com/notes/study/camera-imaging/flat-field-corr/flat-field-corr/