【阅读笔记】Bayer阵列坏点校正-《Adaptive pixel defect correction》

一、背景

本文提出了一种相对简单的缺陷校正算法,仅需7×7的原始彩色滤光片阵列数据核即可有效校正多种缺陷类型。该自适应边缘算法具有高质量、占用图像行数少、适应性强且独立于其他板载DSP算法的特点。实验结果表明,相较于传统一维校正方法,该算法在高频图像区域的校正效果显著提升

二、原理:

由于相邻像素能为缺陷像素的插值提供最佳信息,希望先确定该区域的边缘方向,再利用该方向上的两个相邻像素来估算缺失像素值。bayer结构下与缺陷颜色相同且最近的已知信息至少相隔两个像素,插值精度会随着与缺陷位置距离的增加而急剧下降

三、算法整体流程(在 7×7 Bayer 原始窗口内完成)

1、方向向量提取

以缺陷像素 dm0,n0 为中心,按 4 个方向抽 7 点向量: d1:垂直 d2:主对角 d3:水平 d4:副对角

d 1 ( n ) = a ( m 0 , n 0 − 3 ) , . . . . a ( m 0 , n 0 ) , . . . , a ( m 0 , n 0 + 3 ) d_1(n)=a(m_0,n_0-3),....a(m_0,n_0),...,a(m_0,n_0+3) d1(n)=a(m0,n0−3),....a(m0,n0),...,a(m0,n0+3)

d 2 ( n ) = a ( m 0 − 3 , n 0 + 3 ) , . . . . a ( m 0 , n 0 ) , . . . , a ( m 0 + 3 , n 0 − 3 ) d_2(n)=a(m_0-3,n_0+3),....a(m_0,n_0),...,a(m_0+3,n_0-3) d2(n)=a(m0−3,n0+3),....a(m0,n0),...,a(m0+3,n0−3)

d 3 ( n ) = a ( m 0 − 3 , n 0 ) , . . . . a ( m 0 , n 0 ) , . . . , a ( m 0 + 3 , n 0 ) d_3(n)=a(m_0-3,n_0),....a(m_0,n_0),...,a(m_0+3,n_0) d3(n)=a(m0−3,n0),....a(m0,n0),...,a(m0+3,n0)

d 4 ( n ) = a ( m 0 − 3 , n 0 − 3 ) , . . . . a ( m 0 , n 0 ) , . . . , a ( m 0 + 3 , n 0 + 3 ) d_4(n)=a(m_0-3,n_0-3),....a(m_0,n_0),...,a(m_0+3,n_0+3) d4(n)=a(m0−3,n0−3),....a(m0,n0),...,a(m0+3,n0+3)

备注: 如果缺陷是整列缺陷,则不使用垂直向量 d1。

2、向量内部坏点处理

若某位置仍是坏点,用"隔 2 点镜像"快速插值补全,避免把台阶平均掉。 4 条向量全部变为"无坏点"的连续信号。确保向量一侧的阶跃函数不会被平均到另一侧。这可确保在算法后续阶段,该向量不会被错误地选为边缘方向

3、跨颜色平面归一化(核心)

对每条向量取最近同色点 d i − 2 d_i-2 di−2d_i\[+2\] 做基准;向量点 做基准; 向量点 做基准;向量点di\[−1\] 和 和 和di\[+1\](即距离缺陷最近的点,计算异色平面在缺陷两侧的一阶导数 σ i ( − 1 ) \sigma_{i}(-1) σi(−1), σ i ( 1 ) \sigma_{i}(1) σi(1);

σ i ( − 1 ) = d i ( − 1 ) − d i ( − 3 ) 2 \sigma_{i}(-1)=\frac{d_{i}(-1)-d_{i}(-3)}{2} σi(−1)=2di(−1)−di(−3)

σ ( 1 ) = d i ( 1 ) − d i ( 3 ) 2 \sigma(1)=\frac{d_{i}(1)-d_{i}(3)}{2} σ(1)=2di(1)−di(3)

方向导数用于关联缺陷颜色平面附近的点,定义新的向量来估计样本点相对于缺陷颜色平面的位置,把异色点 d i ^ ( − 1 ) \hat{d_{i}}(-1) di^(−1), d i ^ ( 1 ) \hat{d_{i}}(1) di^(1)按导数偏移量"搬"到缺陷颜色平面,得到归一化值

d i ^ ( − 1 ) = d i ( − 2 ) + σ i ( − 1 ) \hat{d_{i}}(-1)={d_{i}(-2)+\sigma_{i}(-1)} di^(−1)=di(−2)+σi(−1)

d i ^ ( 1 ) = d i ( 2 ) + σ i ( 1 ) \hat{d_{i}}(1)={d_{i}(2)+\sigma_{i}(1)} di^(1)=di(2)+σi(1)

该算法无需知晓特定像素的实际滤色值------它仅需知道拜耳模式在任意方向上会采样两种颜色。

4、 边缘加权融合

加权融合公式如下:

β i = 1 − σ i k ∑ σ i k I − 1 \beta_{i}=\frac{1-\frac{\sigma_{i}^{k}}{\sum\sigma_{i}^{k}}}{I-1} βi=I−11−∑σikσik

其中,计算向量灰度差

σ i = ∣ d i ( − 1 ) − d i ( 1 ) ∣ \sigma_{i}=|d_i(-1)-d_i(1)| σi=∣di(−1)−di(1)∣

指数k可调节以改变算法对din差异的敏感度,敏感度随k增大而增强。使用向量的数量用I表示。与边缘方向对齐最接近的向量(即|di−1−di+1|最小值)将具有最大 ξi 权重。

缺陷补偿

a ^ ( m 0 , n 0 ) = ∑ β i ( ∣ d i ( − 1 ) − d i ( 1 ) ∣ 2 ) \hat{a}(m_0,n_0)=\sum\beta_i(\frac{|d_i(-1)-d_i(1)|}{2}) a^(m0,n0)=∑βi(2∣di(−1)−di(1)∣)

最后,校正数据修正,满足以下条件校正,否则保留原始缺陷值,防止高频区"修坏"

a ( m 0 , n 0 ) = a ^ ( m 0 , n 0 ) , i f ∣ a ^ ( m 0 , n 0 ) − a ( m 0 , n 0 ) ∣ < e C + t C a(m_0,n_0)=\hat{a}(m_0,n_0),if|\hat{a}(m_0,n_0)-{a}(m_0,n_0)|<eC+tC a(m0,n0)=a^(m0,n0),if∣a^(m0,n0)−a(m0,n0)∣<eC+tC

e是工厂标定最大偏差,t是 混叠容限

5、处理效果


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

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

相关推荐
一隅论数智19 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
深圳老胡21 小时前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
彧azz1 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
陈卫军老师1 天前
陈卫军:把口味写在一张纸上,店才稳得住
经验分享·笔记·流量运营
`流年づ1 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
qeen871 天前
【Linux】操作系统之进程介绍(二)
linux·笔记·学习·进程
从零开始的嵌入式之旅1 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
陈年老古董1 天前
MediaPipe 姿态检测与脸部关键点检测
笔记·python·opencv·学习·dlib
彧azz1 天前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构