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

一、背景

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

二、原理:

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

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

1、方向向量提取

以缺陷像素 d[m0,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[−2]、d_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可调节以改变算法对di[n]差异的敏感度,敏感度随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主页,欢迎访问

我的知乎主页,欢迎访问

相关推荐
yewq-cn4 小时前
Joplin 客户端与服务端
笔记
佑白雪乐4 小时前
<王道操作系统第1集>1.1.1~1.3.1
笔记
bodybo4 小时前
搭建内网穿透服务器NPS
笔记
强子感冒了5 小时前
Java IO流学习笔记:从字节流到字符流
java·笔记·学习
saoys13 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
电子小白12314 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
clorisqqq16 小时前
人工智能现代方法笔记 第1章 绪论(1/2)
人工智能·笔记
charlie11451419116 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
wdfk_prog17 小时前
[Linux]学习笔记系列 -- [fs]seq_file
linux·笔记·学习