【ISP】暗角阴影校正-Radial Shading

一、镜头阴影

当镜头与sensor匹配,因为Sensor感光区的边缘区域接收的光强比中心区域小,所造成的中心和四角亮度不一致的现象。镜头本身就是一个凸透镜,由于凸透镜原理,中心的感光必然比周边多。

镜头阴影不利于后期的画面分析,关键的信息可能就隐藏在这些阴影当中。许多工程师被这个问题困扰过,一般是解决方法是通过修改复杂的后期算法来解决"镜头阴影"。

二、阴影校正

2.1 增益校正-Radial Shading(径向校正)

镜头从中心到边缘的亮度衰减符合用"cos⁴θ"规律,再反过来以图像中心为原点,按半径划分同心圆区域,存储不同半径对应的增益值,给每个像素乘一个半径相关的增益,把暗下去的边角重新拉亮。

为了节省存储资源,增益表格也是缩放处理,例如保存16x16,实际校正时通过插值计算各像素的增益。

2.2 增益校正-Mesh Shading(网格校正)

将图像划分为多个网格(如16×16),计算每个网格顶点的增益值并存储,其他像素通过双线性插值动态计算增益。此方法更灵活,适用于非对称阴影,存储数据更少。

2.3 增益校正-Point Shading(逐点校正)

计算均匀场景下每个像素与图像均值或者最大值的增益值并存储,适用于任何场景阴影,存储数据与分辨率对应,数据很多。

三、增益校正-Radial Shading

3.1 校正原理

数学模型:用半径 r r r 代替 θ θ θ

对无畸变针孔模型, θ ≈ a r c t a n ( r / d ) θ ≈ arctan(r/d) θ≈arctan(r/d), d d d 为像距。在小角度下

c o s 4 θ ≈ ( d / √ ( d 2 + r 2 ) ) 4 ≈ 1 -- 2 ( r / d ) 2 + cos⁴θ ≈ (d / √(d²+r²))⁴ ≈ 1 -- 2(r/d)² + cos4θ≈(d/√(d2+r2))4≈1--2(r/d)2+

下图是 c o s 4 θ cos⁴θ cos4θ增益数值趋势

于是可把增益写成径向多项式

G ( r ) = 1 / c o s 4 θ ≈ 1 + k 1 r 2 + k 2 r 4 + ...   ( k i > 0 ) G(r) = 1 / cos⁴θ ≈ 1 + k₁r² + k₂r⁴ + ... (kᵢ>0) G(r)=1/cos4θ≈1+k1r2+k2r4+... (ki>0)

3.2 校正流程

1、标定:拍均匀白场,算出每个半径 r 的平均亮度 I®。

2、求增益: G ( r ) = I c e n t e r / I ( r ) G(r)=I_center / I(r) G(r)=Icenter/I(r)。

3、降采样:只存 16~32 个"特征半径"的增益,节省内存。

4、在线矫正:对任意像素,先算 r=√(x²+y²),再插值得到 G ( r ) G(r) G(r),最后把 RAW 值乘以 即可。

3.3 校正效果

左图是校正前的原始图,受到光学系统影响暗角比较明显。右图校正后可以一定情况改善四周的暗角。

觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。


我的个人博客主页,欢迎访问

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

相关推荐
没学上了1 天前
多相机协同拍照原理底层刨析
数码相机
一直在想名2 天前
Flutter 框架跨平台鸿蒙开发 - 胶片相机模拟
数码相机·flutter·华为·harmonyos
CoderIsArt2 天前
半导体加工平台的视觉定位方案
数码相机
格林威2 天前
GigE Vision 多相机同步终极检查清单(可直接用于项目部署)
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·工业相机
Utopia^2 天前
Flutter 框架跨平台鸿蒙开发 - 闪回相机
数码相机·flutter·华为·harmonyos
宇卿.2 天前
机器视觉硬件【相机篇】
数码相机·计算机视觉
格林威3 天前
SSD 写入速度测试命令(Linux)(基于工业相机高速存储)
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
格林威4 天前
工业相机异常处理实战:断连重连、丢帧检测、超时恢复状态机
开发语言·人工智能·数码相机·计算机视觉·视觉检测·机器视觉·工业相机
_李小白5 天前
【OSG学习笔记】Day 31: 渲染到纹理(RTT)
笔记·数码相机·学习
双翌视觉6 天前
基于机器视觉实现开口卡簧自动化装配
运维·数码相机·自动化