当前位置:[北京同好会]>[数字图像]>[数字图像处理:插值]

 

数字图像处理(五):插值算法

在800万像素的CMOS中,400万像素只感受绿光,另外各有200万像素分别对红光和蓝光响应。要最终输出一张800万像素的RGB彩色图片,需要“推导出"另外1600万个颜色点。

这个过程叫做DE-MOSAIC,采用的方法是各式各样的插值算法(Interpolation)。

最直接的方法是称作BILINEAR的双线性插值算法,简述如下:

回忆一下CFA的结构,对于20D来说,RGB像素的排列是:

RGRGRGRG
GBGBGBGB
RGRGRGRG
GBGBGBGB

即除了边缘,每个绿色G象素与2个红色R和2个蓝色B像素相接;每个红色R或蓝色B像素与4个绿色B像素相接 ,并与4个蓝色B或红色R像素相邻(对角线方向)。

因此,做最简单的平均计算:

1)绿色像素上的R,B值分别由相邻的2个R,B像素平均得到

2)红蓝像素上的G值由相邻的4个G像素平均得到

3)红色像素上的B值由对角线上相邻的4个B像素平均得到

4)蓝色像素上的R值由对角线上相邻的4个R像素平均得到

双线性插值法的缺点是可能在对比度很大的边缘附近产生”原本不存在的颜色",同时会在某种程度上模糊图像。针对这点有各式各样的改进方法。其中一个是叫做MEDIAN-BASED INTERPOLATION中值插值法(不知道术语,自己随便翻译的。)

中值插值法可分为四个步骤:

1)执行双线性插值求出红绿兰三个色层

2)求出每个像素上三种基色的亮度差,即红减绿,绿减蓝和蓝减红(这里的减操作为亮度值相除)。

3)分别对三个差值做中值滤波(可选3X3的KERNAL)

4)由原始的单色亮度值加上以上处理的差值求出其他颜色的亮度。例如在R像素点,R的值加上B-R和G-R的值就可得到绿色和蓝色的亮度值。

这两种插值法的输出图像之间的差别是非常细微而可以察觉的: