具体实施方式
以下结合附图,对本发明上述的和另外的技术特征和优点作更详细的说明。
本发明是一种图像及视频的放大方法,请参阅图1所示,所述方法是应用在一图像处理装置1上,以在一数字图像被输入所述图像处理装置1后,所述图像处理装置1能依预定的放大比例,输出一放大的数字图像,使得一解析度较低的输入图像及视频被放大,且被显示在一解析度较高的视频设备上时,仍能呈现出清晰且有利于辨识相关特征的数字图像。在本发明的一较佳实施例中,参阅图1所示,所述方法包括提供一预处理模块(preprocess module)10及一复合放大模块(compositeup-scaling module)30,参阅图2所示,其中所述预处理模块10是对一输入图像执行一高通滤波处理11,提取所述输入图像的高频部分,以在后续处理过程中,利用所述高频部分对所述输入图像的放大结果进行高频补偿,且对所述输入图像执行一图像分解处理12,利用梯度运算元,将所述输入图像分解成平坦区域和边缘区域,所述复合放大模块30是对原输入图像、平坦区域、边缘区域及高频部分,分别进行放大处理,其中对于原输入图像及平坦区域是使用简单插值运算,对于边缘区域及高频部分则同时使用复杂插值运算与简单插值运算,最后,对原输入图像、平坦区域、边缘区域及高频部分的放大结果,进行一融合处理33,即能依预定的放大比例,产生一输出图像。
由于,目前使用的传统插值放大技术都具有低通滤波的特性,输入图像被放大后,放大的输出图像必然会损失掉输入图像中的高频信息,在所述实施例中,复参阅图1所示,所述预处理模块10为了防止高频信息的过分损失,以为后续处理做好准备工作,会对输入图像先进行所述高通滤波处理11,参阅图2所示,以提取输入图像中高频成分,在输入图像的放大处理过程中,所述高频部分与所述边缘区域是使用相同的插值运算法被放大,当原输入图像、平坦区域、边缘区域及高频部分都完成放大后,再对其进行所述融合处理(fusion)33,以补偿输入图像在放大过程中损失的高频部分。
此外,由于人眼往往对图像中梯度较强的边缘区域特别敏感,因此,在所述实施例中,为了减少后续插值放大处理的运算量,以简化及加速整体的运算效能,仅对图像中人眼特别敏感的边缘区域使用复杂插值运算(如:方向插值运算(directional interpolation)),进行高精确度的放大处理,对于图像中平坦区域则使用简单插值运算,如:双立方插值运算(bicubic interpolation),进行放大处理,此一权宜作法,最终仍能在不影响视觉效果的前提下,获得清晰的放大图像。另,由于图像中较为杂乱的边缘区域(如:草地等),其边缘方向不易准确判断,且人眼对于所述这些杂乱的边缘区域的放大处理是否准确,也不会太感兴趣,所以,在所述实施例中,对于所述这些杂乱的边缘区域也同时使用简单插值运算,以简化插值放大处理的复杂度及运算量。为了实现前述目的,参阅图3所示,所述实施例在对输入图像执行所述图像分解处理12时,是先针对输入图像进行一图像分解121,以分解出平坦区域和边缘区域,其作法是利用梯度运算元,提取高频成分的梯度Grd(x),在所述实施例中是使用sobel运算元(operator),提取高频成分的梯度Grd(x),然后,根据人眼对梯度变化的敏感程度,使用固定门限ThreshD为16,根据下列公式(1)分解出平坦区域(plane)和边缘区域(edge),并对高频成分的图元(pixel)进行标记Label(x):
复参阅图3所示,再针对所述边缘区域内较为杂乱的边缘图元,进行一去杂乱处理122,去掉杂乱的边缘图元,其作法是先提取某一边缘图元的一预定范围的邻域M×N,再统计所述邻域内边缘图元的数目Nedge,且根据下列公式(2),在判断出所述邻域内边缘图元的数目超过一预定数目(太多或太少)时,即删除所述边缘图元:
if(Nedge>ThrH or Nedge<ThrL)remove the edge;………………….(2),
其中ThrL=min(M,N),ThrH=0.8·M·N。最后,为了扩大边缘区域,复参阅图3所示,所述实施例乃对边缘图元向四周进行一形态学膨胀处理(dilation)123,在所述实施例中是使用十字结构元(Cross structure element),对边缘图元进行所述形态学膨胀处理123,以扩大边缘区域。
在所述实施例中,参阅图1及3所示,所述复合放大模块30是对原输入图像、平坦区域、边缘区域及高频部分,分别进行放大处理,其中对于边缘区域及高频部分是使用第一复合插值放大模块31,进行插值放大及增益处理,对于原输入图像及平坦区域是使用第二复合插值放大模块32进行插值放大处理,第一复合插值放大模块31和第二复合插值放大模块32中所使用的插值放大运算法可为相同,且在实际运算过程中,第一复合插值放大模块31和第二复合插值放大模块32中的插值放大运算可同时进行,以节省整体的运算量,最后,再对所述第一复合插值放大模块31及第二复合插值放大模块32输出的图像,进行融合(fusion)处理33,整个计算过程依下列公式(3),即能依预定的放大比例,产生一高解析度的输出图像:
HR(x)=LR(x)*Hp(x)*CUp(x)·Gain+LR(x)*CUp(x)…………….(3),
其中HR(x)是高解析度的输出图像,LR(x)是低解析度的输入图像,Hp(x)是预处理模块10使用的高通滤波函数,CUp(x)是所述第一复合插值放大模块31和第二复合插值放大模块32中使用的插值放大函数,Gain是所述第一复合插值放大模块31中使用的常数增益因数。
一般言,所述这些复合插值放大模块31及32主要是执行输入图像的放大功能,目前使用的插值放大技术只能将输入图像放大成偶数倍,若要放大成任意倍,则要结合使用降采样(down sample)技术。现在以放大两倍为例,说明所述这些复合插值放大模块31及32的功能,参阅图4所示为一幅经过插值放大得到的高解析度的图像,其中标记为黑色的图元是直接从低解析度的输入图像中拷贝而来的图元,其他图元则是根据黑色图元插值而来的图元,在本发明的插值放大运算过程中,是先计算标记为灰色的图元,最后,再计算白色图元,且本发明针对由原输入图像分解出的边缘区域及平坦区域,是使用不同的插值放大运算,其中对于边缘区域使用复杂插值运算(smart interpolation),如:方向插值运算,对于平坦区域则使用简单插值运算(simple interpolation)如:双立方插值运算。
在所述实施例中,所述第一复合插值放大模块31分别对预处理模块10输出的边缘区域及高频部分进行插值放大处理,所述第二复合插值放大模块32分别对预处理模块10输出的原输入图像及平坦区域进行插值放大处理,第一复合插值放大模块31和第二复合插值放大模块32可使用相同的插值放大运算法,参阅图5所示,唯一不同的地方在于第一复合插值放大模块31的放大结果要做增益处理。由于,所述预处理模块10已经在原输入图像上标记了边缘区域和平坦区域,根据所述这些标记,第一复合插值放大模块31和第二复合插值放大模块32会针对图像中的图元进行边缘区域的判断处理51,若被标记为边缘区域,即采用复杂插值运算52但是对于其中的所述杂乱的边缘区域则使用简单插值运算,若被标记为平坦区域,则采用简单插值运算(如:双立方插值运算)53,其中所述复杂插值运算52的运算结构,参阅图6所示,是针对处于边缘区域的当前图元,同时进行方向插值运算521(directional interpolation)和简单插值运算53(如:双立方插值运算),然后,针对方向插值运算521的结果,执行可信度(confidence)及权重(weight)计算522,可信度计算的原则是边缘方向愈明确,方向插值运算521结果的可信度愈高,否则,可信度愈低;最后,根据可信度及权重计算522得到的可信度,再对方向插值运算521的结果和简单插值运算53的结果,进行加权求和(weighted sum)处理523,并予输出。
在所述实施例中,方向插值运算521是先根据处于边缘区域的当前图元的梯度值,估算出其边缘方向,然后,沿着其边缘方向获取其他图元,以进行插值放大运算,以下是以图7所示的灰色点x为例,说明如何使用方向插值运算521,将灰色图元x的插值范本旋转45度,而得到图7所示白色图元的运算过程:
首先,复参阅图7所示,使用所述灰色图元x邻域的12个图元P0~P11,依照下列公式(4),对其进行插值计算DPx,由于其插值计算是从六个方向进行判断,而所述等图元P0~P11的排列更接近于圆形,故具有更高的精确度:
其中ai为所述这些邻域图元P0~P11的加权系统,依照下列公式(5),计算其六个方向上的梯度值:
Dir0=|P0-P3|,Dir1=|P1-P2|,Dir2=|P4-P7|,
Dir3=|P5-P6|,Dir4=|P8-P11|,Dir5=|P9-P10|……………….(5),
若公式(5)中有些邻域图元P0~P11还未计算出,可先用简单插值运算53(如:双立方插值运算)估算出替代值。然后,使用所述等梯度值,依照下列公式(6),计算各图元的权重ai:
计算出所述这些加权系统ai后,便可根据公式(4),再对方向插值运算521的结果和简单插值运算53的结果,进行加权求和(weighted sum)处理523,计算出复杂插值运算52的结果DPx,并予输出。
此外,本发明为了提高方向插值运算521的鲁棒性(robustness),以防止在边缘方向不明显的边缘区域,产生错误的鬼(Ghost)点,参阅图2所示,乃针对所述第一复合插值放大模块31和第二复合插值放大模块32中简单插值运算及方向插值运算的放大结果,采用下列公式(7),进行融合处理33,以依预定的放大比例,产生一高解析度的输出图像:
HPx=(1-fMix)·SPx+fMix·DPx…………………………(7),
其中HPx是最终输出图像的图元值,SPx是针对所述输入图像图元的简单插值运算的放大结果,DPx是针对所述输入图像的方向插值运算的放大结果,fMix是采用下列公式(8)获得的融合系统:
另外,由于,在前述插值放大运算过程中所使用的插值放大函数均具有低通滤波的特性,会导致放大图像的边缘发生模糊的问题,因此,本发明为了提高放大图像边缘的清晰度,乃需要对图像进行一锐化处理34,复参阅图2所示,且为了避免在锐化过程中在边缘产生过冲(overshoot)现象,本发明特别使用下列公式(9)所示的非线性高通滤波器,如:有限脉波响应(Finite Impulse Response,简称FIR)的高通滤波器:
SHP(x)=Medain(LocMax(x).LocMin(x),Fir(x))…………………(9),
其中SHP(x)是锐化的结果,Medain()函数是取中值操作,LocMax(x)和LocMin(x)是当前图元邻域内的最大和最小值,Fir(x)是具有非线性高通特性的FIR滤波器。如此,将高通滤波的结果限制在局部邻域内的最大及最小值之间,即能有效防止锐化过程中的边缘过冲现象。
如此,使用本发明的方法对低解析度的输入图像进行放大,以显示在高解析度的视频设备上时,不仅能使放大运算量较其他基于边缘的方法为小,且在复杂度较低及速度较高的情形下,使放大的输出图像仍具有抗锯齿、边缘锐利、细节丰富及对比度强等特点,以在对数字图像进行放大时,能有效降低图像失真,提供高解析度且有利于辨识相关特征的数字图像。
当前述的图像及视频的放大方法以软件实施时,可通过硬件的协助来加速执行。具体来说,图1的预处理模块10与复合放大模块30以软件的程序实施,而所述程序可通过一硬件的图像处理器(graphics processing unit,GPU)来执行。若所述图像处理器支援通用平行计算,也即通用图像处理器(General Purpose GPU,GPGPU),便可以更快的速度执行所述程序,提升图像及视频的放大效率。例如,若使用有支援CUDA技术(Compute Unified Device Architecture,由NVIDIA公司所开发的并行运算技术)的图像处理器,则可将预处理模块10与复合放大模块30所执行的前述各项运算,如高通滤波处理11、简单插值运算53、复杂插值运算52、融合处理33、锐化处理34等等,编写为CUDA核函数(kernel function)的程序,而有支援CUDA技术的图像处理器在执行这些CUDA核函数时,可产生多个执行绪(thread)来同时执行同一个CUDA核函数,此种并行运算的方式可大幅提高效率。
前述的图像及视频的放大方法可应用于影像后处理(post processing)领域,例如,应用于视频播放软件中,如图8A所示。图8A是显示一视频播放软件的架构,其中,视频播放器(video player)80包含视频解码器(video decoder)81、预处理模块10、复合放大模块30以及视频渲染器(video renderer)82。视频解码器81可从各种视频来源取得影像数据,以对其进行解码;预处理模块10与复合放大模块30则将解码后的影像数据予以放大;视频渲染器82则利用影像渲染(rendering)技术,如微软(Microsoft)的Direct3D技术,将所放大的影像数据绘制显示。
一般而言,当图8A的架构置在电脑中运作时,视频解码器81是将解码后的影像数据存在电脑的系统存储器中,而预处理模块10与复合放大模块30则对于系统存储器所储存的解码影像数据进行放大。预处理模块10与复合放大模块30也可整合于视频解码器81中。然而,若电脑具有支援CUDA技术的图像处理器,且预处理模块10与复合放大模块30是以CUDA核函数的程序来实施,则将预处理模块10与复合放大模块30整合于视频渲染器82中,如图8B所示,可进一步提升硬件加速的效果。这是因为,当视频解码器81将解码后的影像数据传递到视频渲染器82时,视频渲染器82会建立Direct3D表面(surface)(此处是以Direct3D技术为例说明),用以显示所述影像数据,而这些表面是储存于显示存储器中。另一方面,CUDA技术有支援Direct3D互用性(interoperability)机制,使得预处理模块10与复合放大模块30可直接对Direct3D表面进行处理,因此,将预处理模块10与复合放大模块30整合于视频渲染器82中,使其可直接对储存于显示存储器的Direct3D表面进行放大,有助于提升效率,而避免浪费时间于系统存储器与显示存储器间的数据传输。
图9是图8B的视频播放软件架构的一具体实施例的方块图,其中,视频播放器90包含视频解码器91及视频渲染器92,而视频渲染器92包含放大模块921及融合器与呈现器(mixer and presenter)922。图9的架构是通过有支援CUDA技术的图像处理器来实现,而放大模块921是以CUDA核函数的程序来实施。视频渲染器92从视频解码器91接收解码后的影像数据后,会建立Direct3D表面存于显示存储器中,而放大模块921会从显示存储器中的Direct3D表面提取影像纹理(texture)(即方块9210),将其区分为亮度分量(即Y分量)与色度分量(即U/V分量),以分别执行不同的放大处理:亮度分量依序经过去噪点9211(de-noising)、去块9212(de-blocking)、边缘插值运算9213(edge interpolation)、抗锯齿9214(anti-aliasing)、边缘锐化9215(edge sharpening)等处理;色度分量则经过双线性插值运算9216(bilinear interpolation)。最后,放大模块921依据放大后的亮度分量与色度分量,设定所要显示的影像纹理9217,再送至融合器与呈现器922进行绘制显示。对于前述的方块9211~9216,可分别编写适当的CUDA核函数来实施,如此,当图像处理器在执行这些CUDA核函数时,便可以并行运算的方式执行,以大幅提升放大模块921的运作效率。
以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离权利要求所限定的精神和范围的情况下,可作出许多修改、变化或等效,但都将落入本发明的保护范围之内。