news 2026/4/13 17:58:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【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 rr代替θ θθ
对无畸变针孔模型,θ ≈ a r c t a n ( r / d ) θ ≈ arctan(r/d)θarctan(r/d)d dd为像距。在小角度下

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))41–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 值乘以 $G® $即可。

3.3 校正效果

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

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


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

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 17:16:31

Cassandra CQL 完全指南:大数据查询语言详解

Cassandra CQL 完全指南:大数据查询语言详解 关键词:Cassandra、CQL、大数据查询、分布式数据库、数据建模、NoSQL、高并发存储 摘要:本文将带你从零开始认识 Cassandra 的查询语言 CQL(Cassandra Query Language)。我…

作者头像 李华
网站建设 2026/4/12 17:09:01

单相动态电压恢复器补偿电压凹陷或过电压研究附Simulink仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/4/13 15:33:33

Compose笔记(六十六)--ModalNavigationDrawer

这一节主要了解一下Compose中的ModalNavigationDrawer,在Jetpack Compose开发中,ModalNavigationDrawer是一个用于实现模态导航抽屉的核心组件,它允许用户通过侧滑手势或点击菜单图标触发一个覆盖在主内容之上的抽屉菜单,提供页面切换、功能导…

作者头像 李华
网站建设 2026/4/11 15:19:40

反激变换器与Buck - boost电路:电力变换的奇妙世界

反激变换器 - Buck-boost电路 在电力电子领域,反激变换器和Buck - boost电路就像两颗璀璨的明星,各自闪耀着独特的光芒,为我们实现各种电源转换需求立下汗马功劳。今天咱们就一起深入这两个神奇电路的世界,探索它们的奥秘。 Buc…

作者头像 李华
网站建设 2026/4/13 16:48:54

继DeepSeek后,量化巨头九坤推40B开源硬刚Claude 4.5,实测结果却反转

00. 引言 说实话,这两年追开源模型,我的心态已经从最初的“卧槽牛逼”变成了现在的“审美疲劳”。 每周都有新模型号称“拳打GPT,脚踢Claude”,结果实测,翻车的不少。但就在昨天,我在刷推特(X)的时候&…

作者头像 李华