ISP中去马赛克-demosiac入门

时间:2024-03-06 15:08:30

Demosiac是整个ISP imaging pipeline的核心算法,将bayer pattern的图像转换成RGB。

 

那么我们这篇博文呢,希望从以下几个角度,对Demosiac做一个入门,给大家一些基本的概念。

0 什么Bayer pattern,他是怎么产生的

1 什么是去马赛克,为什么需要去马赛克

2 如何去马赛克,基本依据是什么

3 去马赛克中的难点

4 any other choices?

 

==========================

0 什么Bayer pattern,他是怎么产生的

==========================

我们知道,CMOS其实只能记录光子的能量,并不能记录光波的波长(即色彩信息),所以,为了得到图像的颜色信息,前人们想到了一种办法,就是在每一个像素面前加带颜色的滤光片,这样就知道某一颜色分量的光强了,柯达的工程师提出了下面这种pattern,也叫CFA(color filter array)

BGBGBGBGBGBGBGB

GRGRGRGRGRGRGR

这样就可以记录色彩信息了

背后的逻辑当然是这样的

1.绿色pixel为什么比其他两种颜色多呢?      因为人眼对绿色(550nm左右)最敏感啊

2.为什么是这三种颜色呢?三原色嘛

3.那么这样每个像素还是只有一种色彩呀,怎么能得到每个像素的所有色彩呢?      真聪明,这个就是我们做demosiac的目的了

 

好啦,知道了为什么需要做demosiac,我们就可以继续了

 

==========================

1 什么是去马赛克,为什么需要去马赛克

===========================

看了上面关于bayer的介绍,其实很好理解我们为什么需要去马赛克了,这是我们色彩恢复的重要的一步。将bayer模式的raw图像转换成为RGB的图像。 

 

===========================

2 如何去马赛克,基本依据是什么

===========================

 简单来说就是插值,邻域像素的色彩都有了,我们肯定是可以插值出本像素的值的。不过简单的双线性插值的方法总是在IQ上面有缺陷的。

在图像的边缘,会产生伪彩色,这一点不难理解。

 

下面介绍一种目前常用的demosiac插值方法。

demosiac的插值一般遵循以下几个原则:

1.先对G分量进行插值,因为G的像素个数是GB的两倍

2.插值时采用方向性插值,即如果是垂直的边缘,则采用上下的像素进行插值,而不选用左右

3.Hamilton提出的patent奠定了基础,基本原理就是色差恒定,即相邻点的R(i,j)-G(i,j) = R(i, j+1)-G(i, j+1)

4.另外各个颜色分量在同一像素点处的高频分量可认为是相同的

 

一个简单的实现demoisac的流程是这样的

A.先获取图像中的物体的边缘

B.根据边缘信息重建G分量

C.根据哈密尔顿提出的色差恒定理论,重建R和B

D.一些后处理,包括伪彩色抑制和zipper cancelling等

 

这两年也出现了基于deep learning的demosiac方法,以后有机会可以跟写一篇文章来解析一下。

===========================

3 去马赛克中的难点

===========================

 去马赛克算法会产生两种缺陷,色彩混叠和拉链效应。就是上面D这个步骤要解决的两个问题。

关于色彩混叠,在后文中我们会介绍他的形成,而色彩混叠的解决方法也很多,其中一种就是中值滤波,对

U = R-G

V = B-G

U和V进行中值滤波,可以保证在边界处抑制色彩混叠

 

 ==========================

4 any other cholces?

===========================

讲了半天去马赛克,其实就是因为最初我们用了bayer pattern,不能够在一个像素处拿到所有的RGB三种色彩的值,所以才有了这么多的处理。

其实很多人对Bayer这种pattern颇有微词,它至少有以下两点不足

1.G和RB的采样率不同,导致色彩混叠。G的采样率比RB都要高,这样,RB不能像G那样准确的恢复出原始被采样图像的色彩,就会有假的色彩花纹在图像的高频部分产生。

典型的色彩混叠的例子,注意图中的白色栅栏

 

2.滤光片的存在导致光能的丢失

 

那么有公司提出了全彩色CMOS的概念,每一个像素可以拿到RGB三种色彩强度信息,无需demosiac插值,基本原理如下图

当然造价之类的肯定是比bayer的要高,所以目前普遍使用的还是bayer的sensor。

 

 

最后向大家推荐一本书《image processing for embeded devices》,非常棒,ISP中用到的各种基本算法都有涉及,类似于文献综述。里面有一章专门讲去马赛克和抗混叠的。

 

参考文献

1. https://www.dpreview.com/articles/3560214217/resolution-aliasing-and-light-loss-why-we-love-bryce-bayers-baby-anyway 

2. image pricessing for embeded devices

3. 基于bayer格式的去马赛克算法研究及硬件实现 浙大 丁文