背景技术
人类的视觉系统具有三种视锥:长视锥、中视锥以及短视锥。该等视锥系分别可感应对应至红色、绿色以及蓝色光的波长。人类脑中的视觉皮质可从这三种的视锥中得到讯号,然后再将实行补插值(interpolation)以形成一个成形的影像。人类视觉系统的生物结构的重要性在于:可将要进行处理的大量的、全部的可见光谱戏剧性地转换成只有红、蓝和绿三原色。
因此,在数字相机中的数字影像感应器也设计成类似于人类视觉系统的视锥。一种最常用的影像感应器数组是由贝尔博士(Bryce E.Bayer)于美国专利公告号:3,971,065所揭示,称之为贝尔(Bayer)滤光片感应器数组100,该贝尔滤光片感应器数组位于一贝尔样态影像感应器10中,如图1所示。一贝尔滤光片数组100具有放置于该影像感应器上的红、绿、和蓝三种彩色过滤小透镜,以分别获取长、中和短波长的光谱信息。此外,该贝尔滤光片数组即为将绿色信息取样为梅花状,而红色和蓝色资料则取样为矩形状。该绿色数据是在一较高频率下取样,这是因为人类的视觉系统对于中波长有较高的敏锐度。在一单一的影像感应器中,其它二色(红和蓝)所缺少的彩色信息就会使用邻近像素的彩色值来进行补插值的动作。
图2是显示了用于该3×3贝尔滤光片数组的彩色补插值的例子。例子中的第1种和第4种数组是以绿色为中心,所以要被进行补插值的彩色元素有红色和蓝色。例子中的第2种是以红色为中心,所以要被进行补插值的彩色元素有绿色和蓝色。例子中的第3种数组是以蓝色为中心,所以要被进行补插值的彩色元素有绿色和红色。
为了方便说明,每一个位于贝尔3×3数组例子中的像素被指定为图3中的数字。
在习知技术中,一种贝尔数组补插值的方法使用所谓的线性补插值法,而每一个贝尔数组中所缺少的像素是以下列方式进行补插值:
例子1中:
R=(a3+a5)/2
B=(a1+a7)/2
例子2中:
G=(a1+a3+a5+a7)/4
B=(a0+a2+a6+a8)/4
例子3中:
G=(a1+a3+a5+a7)/4
R=(a0+a2+a6+a8)/4
例子4中:
R=(a1+a7)/2
B=(a3+a5)/2
另一种习知的贝尔数组补插值法公开于美国专利公告号5,382,976以及5,373,322。上述所公开的内容是使用边缘信息来决定待用来补插值的相邻像素。所述的方法如图4所示。所述方法的过程首先输入一3×3贝尔样态区块(步骤S10)。在步骤S12中,依据图2所显示的4种数组来决定所输入的贝尔区块是属于那图2的那一种。在步骤S14中,贝尔数组的范例被分成二种:以绿色像素为中心的以及非以绿色像素为中心的。如果中心像素不是绿色像素,则属于第2种和第3种的贝尔数组,因此,在步骤16中,计算绿色像素的差异值,即:
H_diff=|a3-a5|以及
V_diff=|a1-a7|.
在步骤S20中,对该缺少的绿色像素进行补插值,即:
如果H_diff<V_diff
G=(a3+a5)/2
否则,如果V_diff<H_diff
G=(a1+a7)/2
否则
G=(a1+a3+a5+a7)/4.
在步骤S22中,对该缺少的红色或蓝色像素进行补插值,即:
如果是例子II
B=(a0+a2+a6+a8)/4
否则,如果是例子III
R=(a0+a2+a6+a8)/4.
另一方面,如果中心像素是绿色,则在步骤S18中,对缺少的红色和绿色进行补插值,即:
如果是例子I
R=(a3+a5)/2
B=(a1+a7)/2
否则,如果是例子IV
R=(a1+a7)/2
B=(a3+a5)/2
然而,如果藉由使用上述的方法进行贝尔彩色滤光片数组所缺少的彩色像素补插值的话,在所有三元的像素的色彩差异就会变得很大,并且会在高变动的边缘造成不舒适的色差。此外,为了要重新建构较佳的缺少的像素,美国专利公告号5,373,322和6,549,233都教示了一种较宽的贝尔滤光片数组,其具有更多相邻的像素,但使用上述专利的方法将会大幅地增加施行于硬件上的成本。D.Alleysson,S.Susstrunk以及J.Herault等人是在2005年四月号IEEE影像处理会刊第十四卷第四号第439-449页教示「人类视觉系统所造成的线性译码赛克(Linear Demosaicing)」。D.Alleysson等人所公开的内容为更复杂的贝尔滤光片数组补插值法,其需要可在频域中施行的补插值处理。Endo等人在美国专利公告案US 6,853,748号以及Acharya在美国专利公告案US6,917,381中,教示了用于该贝尔数组补插值法的乘法和除法,但其亦会增加施行于硬件上的成本。
具体实施方式
本发明是公开一种用于贝尔滤光片数组的影像的彩色补插值法,该方法不但只有使用一3×3像素区域,而且还藉由同时实行边缘以及彩色差异信息来改善重建的正确性。
图5A和图5B是显示本发明用于一贝尔数组补插值法的步骤流程图。该步骤首先输入一具有中心像素在(x,y)位置的一3×3贝尔样态区块,如步骤S110所示。
在步骤S112中,依据该中心像素的种类来决定一彩色滤光片补插值的例子。该贝尔补插值的例子就如同在图2所显示的一般。
在步骤S114中,计算该彩色滤光片补插值例子在水平以及垂直方向的贝尔像素差异值(difference)。
在步骤S116中,获得该彩色滤光片补插值例子的贝尔像素平均。有关用于计算贝尔像素差异值以及平均的方法将在下述的较佳实施例中进一步讨论。
在步骤S118中,对于该中心像素的缺少的彩色元素进行水平以及垂直方向的补插值。
在步骤S120中,依据该已补插值的结果(包括了该贝尔像素差异值和平均),计算在水平以及垂直方向的彩色差异值。
在步骤S122中,决定该3×3像素区域的一像素活动。
在步骤S124中,如果有一较高的像素活动,则该方法进行步骤S126;否则该方法进行步骤S128。
在步骤S126中,选择在较低彩色差异值的方向的已补插值彩色元素。
反之,如果有一个较低的像素活动,则决定在水平以及垂直方向的贝尔像素差异值,如步骤S128所示。
在步骤S130中,如果在一方向的差异值是远大于另一个的话,则该方法进行步骤S132;否则该方法进行步骤S134。
在步骤S132中,选择在该贝尔像素差异值中较低的贝尔像素差异值方向的该彩色补插值的结果。
然而,如果在水平以及垂直方向的像素差异值没有非常大的话,则使用像素平均值作为该已补插值彩色,即步骤S134。
实施例1
图6A和图6B是显示本发明贝尔数组补插值方法的一较佳实施例的流程图。如步骤S200所示,输入一贝尔样态影像,并且该3×3像素区域的中心像素的一起始坐标设定成如步骤S202的y=1以及步骤S204的x=1。
图7为用于说明一贝尔影像以及该彩色补插值的顺序的示意图。如图7所示,该贝尔影像700的尺寸是寛乘高。图7是进一步显示一3×3像素区域710以及其中心像素711为灰阶。该彩色补插值的顺序是如箭头所示的雷射方向。
在步骤S206中,基于如图2所示的内容,决定该贝尔补插值的例子。
在步骤S208中,一绿色像素差异值、水平像素差异值以及垂直像素差异值是藉由参考图3中的3×3像素区域来计算之。该水平像素差异值(h-diff)以及垂直像素差异值(v-diff)分别如下所示:
h_diff=|a0+2×a3+a6-a2-2×a5-a8|,以及
v_diff=|a0+2×a1+a2-a6-2×a7-a8|。
然而,依据该贝尔例子的不同,来获得该绿色像素差异值(g_diff)。如果该贝尔例子是例子1或例子4,则该绿色像素差异值(g_diff)为如下所示:
g_diff=|a4-(a0+a2+a6+a8)/4|
反之,如果该贝尔例子是例子2或例子3,则g_diff为如下所示:
g_diff=|a1+a7-a3-a5|/2
在步骤S210中,分别计算一水平像素平均h_ave、垂直像素平均v_ave以及中心像素平均corner_ave,如下所示:
h_ave=(a3+a5)/2,
v_ave=(a1+a7)/2,以及
corner_ave=(a0+a2+a6+a8)/4
在步骤S212中,依据该贝尔例子,该中心像素缺少的彩色元素在水平方向进行插值,如下所示:
例子I:在红色列中,绿色为中心
R_h=h_ave
B_h=clip(a4+v_ave-corner_ave)
例子II:红色为中心
G_h=h_ave
B_h=clip(G_h+corner_ave-v_ave)
例子III:蓝色为中心
G_h=h_ave
R_h=clip(G_h+corner_ave-v_ave)
例子IV:蓝色列中,绿色为中心
R_h=clip(a4+v_ave-corner_ave)
B_h=h_ave
在上述方程式中,该括号(x)(clip(x))是用来确定在括号内的值限制在0-255之间,如果每一个值是用8bit来表示的话。该括号(x)如下所示:
如果x<0,则X=0;
如果x>255,则X=255;
否则x=x
在步骤S214中,是从在步骤S212的水平补插值彩色元素中,计算该水平彩色差异值,如下所示:
例子I:
h_color_diff=|a4-R_h|+|a4-B_h|
例子II:
h_color_diff=|G_h-a4|+|G_h-B_h|
例子III:
h_color_diff=|G_h-R_h|+|G_h-a4|
例子IV:
h_color_diff=|a4-R_h|+|a4-B_h|
同样地,在步骤S216中,是垂直地插值该中心像素的缺少彩色元素,为:
例子I:在红色列中,绿色为中心
R_v=clip(a4+h_ave-corner_ave)
B_v=v_ave
例子II:红色为中心
G_v=v_ave
B_v=clip(G_v+corner_ave-h_ave)
例子III:蓝色为中心
G_v=v_ave
R_v=clip(G_v+corner_ave-h_ave)
例子IV:在蓝色列中,绿色为中心
R_v=v_ave
B_v=clip(a4+h_ave-corner_ave)
在步骤S218中,是从在步骤S216的垂直补插值彩色元素中,计算该垂直彩色差异值,如下所示:
例子I:
v_color_diff=|a4-R_v|+|a4-B_v|
例子II:
v_color_diff=|G_v-a4|+|G_v-B_v|
例子III:
v_color_diff=|G_v-R_v|+|G_v-a4|
例子IV:
v_color_diff=|a4-R_v|+|a4-B_v|
在计算该像素差异值以及对水平和垂直方向的缺少的彩色进行补插值后,该被选择为缺少的彩色值的已插值结果是由下述所决定。
在步骤S222中,该绿色像素差异值g_diff是与该水平像素差异值h_diff以及垂直差异值v_diff比较,以决定该像素活动。
如果g_diff是同时大于h_diff以及v_diff,则该水平彩色差异值h_color_diff以及垂直彩色差异v_color_diff被相互的比较,如步骤S224所示。
如果h_color_diff是小于该v_color_diff,则在步骤S226中选择步骤S212中的水平补插值彩色值。反之,如果h_color_diff并没有大于v_diff,则在步骤S228中选择步骤S216的垂直补插值彩色值。然后,该补插值的程序直接跳到步骤S236。
然而,如果没有满足在步骤S222中的条件比较,则在步骤S230以及步骤S232中,进一步比较h_diff以及v_diff。如果h_diff是小于v_diff(步骤S230),则在步骤S226中选择步骤S212的水平补插值彩色值。反之,如果v_diff是小于该h_diff(步骤S232),则在步骤S228中选择步骤216的垂直补插值彩色值。不过,如果该条件比较并没有同时满足S230以及S232时,该缺少的彩色值将会进行如下的线性补插值:
例子I:在红色列中,绿色为中心
R_v=h_ave
B_v=v_ave
例子II:红色为中心
G_v=(h_ave+v_ave)/2
B_v=corner_ave
例子III:蓝色为中心
G_v=(h_ave+v_ave)/2
R_v=corner_ave
例子IV:蓝色列中,绿色为中心
R_v=v_ave
B_v=h_ave
如果v_diff等于h_diff,则使用线性已补插值的彩色。在对于中心像素在坐标(x,y)进行该缺少的彩色元素补插值后,该水平坐标x以x=x+1方式来增加(步骤236)。如果x仍然是小于寛-1(步骤S238),则该补插值程序回到步骤S206。然而,如果在步骤S238的条件没有满足的话,则垂直坐标y以y=y+1方式来增加,且在步骤S242中,y与高-1(hight-1)进行比较。如果满足步骤S242的条件,则补插值程序回到步骤S204;反之,如果没有满足步骤S242的条件,则完成贝尔影像的缺少的彩色补插值。