图像处理装置和方法、图像拾取装置和方法

文档序号:7654096阅读:150来源:国知局
专利名称:图像处理装置和方法、图像拾取装置和方法
技术领域
本发明涉及图像处理装置、图像处理方法、图像拾取装置、以及图像拾取方法,其可以校正在诸如数码照相机和摄像机的图像拾取装置中通过图像拾取获得的图像信息中包含的所谓的手抖分量(hand movement component),从而获得不存在手抖分量的图像。
背景技术
通常,当通过诸如数码照相机、摄像机等的手持图像拾取装置执行拍摄时,由于拍摄时的手抖所引起的图像拾取装置的振动表现为拾取图像画面单位的振动。
作为用于校正由于这种手抖而引起的拾取图像振动的方法,通过降低成本、改善性能、以及减小陀螺传感器的尺寸,使得使用陀螺(角速度)传感器的光学手抖校正系统在近期市场中占据主流。
然而,在过去的几年里,由于数码照相机的迅速普及同时像素数量的急剧增加,产生了新的问题。该问题是尽管对于低照度(长曝光时间)时的静止图像同样强烈需要手抖校正,但是只存在使用诸如陀螺传感器等的传感器的解决方案,暴露出陀螺传感器的弱点和其它问题(例如,陀螺传感器自身的低检测精确度)。
目前市场上可买到的消费者使用的装置中用于静止图像的手抖校正全部使用陀螺传感器或加速度传感器来测量手抖矢量,并将手抖矢量反馈到机构系统以执行高速控制,从而防止投射到诸如CCD(电荷耦合器件)成像器、CMOS(互补金属氧化物半导体)成像器等的图像传感器上的图像模糊。
这里所提出的机构系统是指透镜、棱镜、或成像器(或集成有成像器的模块),以及透镜、棱镜、或成像器的控制分别是指透镜移动、棱镜移动、或成像器移动。
只要通过这种方法进行手抖校正,就完全不可能进行像素精度的校正,这是因为不仅累加了上述陀螺传感器本身的精度误差,而且也累加了对机构系统反馈的延迟,或用于避免反馈延迟的预测误差和机构系统的控制误差。
虽然如上所述在当前的情况下使用传感器的手抖校正原理上具有不能够提高精度的严重问题,但市场上手抖校正也获得了好评,这是因为虽然手抖校正不能完全校正手抖但可以减小手抖。
然而,随着今后期望像素数的大幅增加以及像素尺寸的减小,市场意识到校正界限与像素精度之间的缺口将必然日益变宽只是时间问题。
另一方面,作为用于校正由于手抖所引起的拾取图像振动的其它方法,已知一种无传感器手抖校正方法,其计算拾取图像的画面单位的运动矢量,并基于该运动矢量移动存储在图像存储器中的拾取图像数据的读取位置,从而进行手抖校正。
作为用于从拾取图像信息本身中检测拾取图像的画面单位的运动矢量的方法,用于确定两个画面的拾取图像之间相关性的块匹配是已知的。使用这种块匹配的无传感器手抖校正方法还具有原理上能够通过包括在滚轴方向上的旋转分量的像素精度来检测手抖矢量,以及由于消除了对诸如陀螺传感器等的机械部分的需要从而可以减小图像拾取装置的尺寸和重量的优点。
图71和图72示出了块匹配概略图的示意性表示。图73是块匹配过程的流程图的一般实例。
例如,块匹配是这样一种方法,其中,通过计算在预定大小的矩形区域的块中作为关注画面的来自图像拾取装置单元的拾取图像的参考画面与作为在参考画面先前一个画面的拾取图像画面的原始画面之间的相关性,来计算参考画面与原始画面之间以一个画面为单位的矢量运动。
顺便提及,虽然这种情况下的画面是指由一帧或一场图像数据所形成的图像,但在本说明书中为了描述方便,假设画面是通过一帧来形成的,并将画面称作帧。因此,将参考画面称作参考帧,并将原始画面称作原始帧(目标帧)。
例如,参考帧的图像数据是来自图像拾取装置单元的当前帧的图像数据,或者是通过将当前帧的图像数据存储在帧存储器中并将该图像数据延迟一帧所获得的图像数据。原始帧的图像数据是通过将参考帧的图像数据进一步存储在帧存储器中并将该图像数据延迟一帧所获得的图像数据。
如图71所示,在块匹配中,由包括水平方向上的多个像素和垂直方向上的多条线的预定尺寸的矩形区域形成的目标块103被设置在原始帧101中的任意预定位置处。
另一方面,在参考帧102中,假设目标块的射影图像块104(参见图71中的虚线)位于与原始帧中目标块103相同的位置处,通过将目标块的射影图像块104作为中心来设置搜索范围105(参见图71中的长短交替的虚线),并认为参考块106具有与目标块103相同的大小。
然后,将参考块106移至参考帧102中搜索范围105内的位置处。确定每个位置处包括在参考块106中的图像内容与目标块103的图像内容之间的相关性。将相关性最强位置处的参考块106的位置测定为原始帧中目标块103被移动到的参考帧102中的位置。然后,将参考块106的检测位置与目标块位置之间的位置偏移量测定为运动矢量,作为包括方向分量的量。
在这种情况下,例如,以水平方向或垂直方向上的一个像素或多个像素为单位,在搜索范围105中移动参考块106。因此,在搜索范围105内设置多个参考块。
通过获得目标块103中所有像素的照度值与参考块106中对应像素的照度值之间差分的绝对值的总和(差分的绝对值的总和将被称作差分绝对值和,并且下文中将差分绝对值和描述为SAD(绝对差分的和)值),来检测目标块103与在搜索范围105内移动的参考块106之间的相关性。即,在最小SAD值的位置处的参考块106被测定为具有最强相关性的参考块,并将相对于目标块103的位置的检测参考块106的位置偏移量测定为运动矢量。
在块匹配中,通过作为包括方向分量的量的参考矢量107(参见图71)表示设置在搜索范围105中的多个参考块106中的每一个相对于目标块103的位置的位置偏移量。每个参考块106的参考矢量107均具有对应于参考帧102中参考块106位置的值。在现有的块匹配中,从其中获得最小SAD值的参考块106的参考矢量被测定为对应于目标块103的运动矢量。
通常,如图72所示,在块匹配中,将设置在搜索范围105内的多个相应参考块106中的每一个与目标块103之间的SAD值(为了简化描述,SAD值在下文中被称作参考块的SAD值)存储到对应于相应参考矢量107存储到存储器中,其中,参考矢量107对应于搜索范围105内相应参考块106的位置。检测SAD值被存储在存储器中的所有参考块106的SAD值中的具有最小SAD值的参考块106。从而,检测对应于目标块103的运动矢量110。
对应于各个参考矢量107来存储各个参考块106的SAD值的表格被称为差分绝对值和表(下文中称作SAD表),其中,各个参考矢量107对应于设置在搜索范围105内的多个参考块106的位置。图72中的SAD表108示出了这种表格。SAD表108中各个参考块106的SAD值被称作SAD表元素109。
顺便提及,在上面的描述中,目标块103和参考块106的位置是指任意指定位置,例如,块的中心位置。参考矢量107表示目标块103的射影图像块104的位置与参考帧102中参考块106的位置之间的偏移量(包括方向)。在图71和图72的实例中,目标块103位于帧的中心位置。
对应于各个参考块106的参考矢量107表示各个参考块106相对于与参考帧102中目标块103相对应的位置的位置偏移。因此,当指定参考块106的位置时,也指定了对应于该位置的参考矢量的值。因此,当指定SAD表108存储器中的参考块的SAD表元素的地址时,就指定了对应的参考矢量。
下面,将参照图73的流程图描述上述现有块匹配的处理。
首先,指定搜索范围105内的一个参考块Ii。这相当于指定了对应于参考块Ii的参考矢量(步骤S1)。在图73中,当将帧中目标块的位置设置为基准位置(0,0)时,(vx,vy)表示由指定参考矢量所表示的位置。vx是水平方向上基于基准位置的指定参考矢量的偏移量的分量。vy是垂直方向上基于基准位置的指定参考矢量的偏移量的分量。
在这种情况下,偏移量vx和vy是以像素为单位的值。例如,vx=+1表示相对于基准位置(0,0)在水平方向上向右移动一个像素的位置。vx=-1表示相对于基准位置(0,0)在水平方向上向左移动一个像素的位置。例如,vy=+1表示相对于基准位置(0,0)在垂直方向上向下移动一个像素的位置。vy=-1表示相对于基准位置(0,0)在垂直方向上向上移动一个像素的位置。
如上所述,(vx,vy)表示相对于基准位置由参考矢量所表示的位置(为了简明,在下文中称作由参考矢量表示的位置),并与每个参考矢量相对应。即,假设vx和vy是整数,(vx,vy)表示每个参考矢量。因此,在下面的描述中,可将表示位置的参考矢量(vx,vy)描述为参考矢量(vx,vy)。
通过将搜索范围的中心位置设置为目标块的位置,即,基准位置(0,0),当在水平方向上通过±Rx限定搜索范围,以及在垂直方向上通过±Ry限定搜索范围时,搜索范围被表示为-Rx≤vx≤+Rx, -Ry≤vy≤+Ry接下来,指定目标块Io内一个像素的坐标(x,y)(步骤S2)。然后,计算目标块Io内指定坐标(x,y)处的像素值Io(x,y)与参考块Ii内对应像素位置处的像素值Ii(x+vx,y+vy)之间差分的绝对值α(步骤S3)。即,通过下式计算差分绝对值α
α=|Io(x,y)-Ii(x+vx,y+vy)|...(等式1)然后,将算出的差分绝对值α与由参考块Ii的参考矢量(vx,vy)表示的地址(表元素)处的先前SAD值相加,并将作为相加结果的SAD值写回到该地址(步骤S4)。即,当将对应于参考矢量(vx,vy)的SAD值表示为SAD(vx,vy)时,通过下式SAD值SAD(vx,vy)=Σα=Σ|Io(x,y)-Ii(x+vx,y+vy)|... (等式2)然后,将SAD值写入由参考矢量(vx,vy)表示的地址。
接下来,确定是否已对目标块Io内的所有坐标(x,y)处的像素执行了上述操作(步骤S5)。当确定还没有对目标块Io内所有坐标(x,y)处的像素完成该操作时,过程返回到步骤S2,以指定目标块Io内下一个坐标(x,y)处的像素位置,并重复步骤S2以下的处理。
当在步骤S5中确定已对目标块Io内所有坐标(x,y)处的像素执行了上述操作时,确定完成了上述对参考块的SAD值的计算。然后,确定是否已完成了对所有参考块(即,搜索范围内的所有参考矢量(vx,vy))的上述操作处理(步骤S6)。
当在步骤S6中确定存在还未完成上述操作处理的参考矢量(vx,vy)时,处理返回到步骤S1,以设置未完成上述操作处理的下一参考矢量(vx,vy),并重复步骤S1以下的处理。
然后,当在步骤S6中确定搜索范围内不存在未完成上述操作处理的参考矢量(vx,vy)时,确定已完成SAD表。在完成的SAD表中检测最小SAD值(步骤S7)。然后,对应于最小SAD值的地址的参考矢量被测定为对应于目标块Io的运动矢量(步骤S8)。当最小SAD值被写作SAD(mx,my)时,计算预期的运动矢量,作为表示位置(mx,my)的矢量(mx,my)。
于是,通过块匹配检测对应于一个目标块的运动矢量的过程结束。
实际上,难以从对应于一个目标块的运动矢量中获得参考帧相对于原始帧的高精度手抖矢量。因此,在原始帧中,设置多个目标块,以覆盖原始帧的整个范围。另一方面,如图74所示,在参考帧中,对多个目标块的射影图像104、104、...分别设置搜索范围105、105、...,并在各个搜索范围中检测对应于目标块的运动矢量110、110、...。
然后,从多个检测的运动矢量110、110、...中检测相对于原始帧的参考帧的手抖矢量(整体运动矢量)。
作为用于从多个运动矢量110中检测手抖矢量(整体运动矢量)的主要方法,提出了基于多个运动矢量进行多数决定的方法,即,将多个运动矢量110中方向和大小彼此相同的运动矢量的最大数设置为整体运动矢量。此外,提出了一种将多数决定法与基于时间轴方向上运动矢量的改变量(频率)的可靠性评估相结合的方法。
以专利文献1(日本专利公开第2003-78807号)为代表的现有技术的大多数无传感器手抖校正都是以运动图像为目标。很少提出针对用于实现对静止图像的无传感器手抖校正的方法,包括专利文献2(日本专利公开第Hei 7-283999号)。该专利文献2是在较短的曝光时间内连续拍摄静止图像的算法,以使其不产生手抖分量,获得静止图像之间的手抖矢量,将根据手抖矢量移动静止图像时连续拍摄的多个静止图像相加,以及最终获得没有手抖分量且低照度噪声的高画质(高分辨率)静止图像。
专利文献3(日本专利公开第2005-38396号)可被看作处于可行水平的现实方案。专利文献3中公开的装置包括用于获得由于图像缩小变换所引起的对于尺寸的运动矢量的装置,以及用于在多个块之间共享同一SAD表的装置。图像的缩小变换以及在多个块之间共享SAD表是实现SAD表尺寸减小的非常好的方法,并被用于其它领域,例如,MPEG(运动图像专家组)图像压缩系统中的运动矢量检测和场景变化检测。
然而,专利文献3的算法存在以下问题图像的缩小变换以及在缩小变换时的存储器(DRAM(动态RAM(随机存取存储器)))访问消耗时间和存储器空间,并且由于多个块对SAD表进行时分访问,所以存储器访问大量增加且该处理也占用时间。对于运动图像的手抖校正需要实时性能以及系统延迟时间的减小,因此,处理时间成为问题。
此外,原始图像的缩小变换需要实现用于去除混叠(折叠失真)和低照度噪声的低通滤波器,作为缩小处理的预处理。然而,低通滤波器的特性根据缩小比例因数而改变,尤其当低通滤波器在垂直方向上为多抽头数字滤波器时,需要多个线路存储器和操作逻辑,因此,出现电路规模增加的问题。

发明内容
在用于运动图像的手抖校正系统中,期望重点在于处理时间而不是精度的粗略的手抖矢量实时检测,即使是根据现有技术的无传感器手抖检测方法在多数场合下也能提供满意的结果。
另一方面,用于静止图像的手抖校正系统中的现有技术通常只是想法上的提案,且通常没有假设像素数量是今天的一千万等级。因此,没有考虑手抖的旋转分量,或者即使考虑了手抖的旋转分量,但也需要例如大量的计算。因此,缺少以诸如数码照相机等的现有移动装置为目标的现实考虑。
然而,如上所述,可预料将来诸如数码照相机等的图像拾取装置的像素密度将日益提高,且需要更高的性能。在这种情况下,在拍摄静止图像时实现不使用陀螺(角速度)传感器的无传感器手抖校正的意义非常重大。
因此,如上所述,希望使用块匹配基于无传感器来计算手抖运动矢量,并且使用检测到的运动矢量进行手抖校正。此外,解决上述问题是很重要的。
鉴于上述情况,期望提供一种用于图像处理的方法和装置,其可以解决上述现有无传感器手抖校正系统的问题,并提供高画质图像。
根据本发明的实施例,提供了一种图像处理装置,包括每块(per-block)运动矢量计算装置,用于计算以画面为单位顺序输入的图像的两个画面之间的运动矢量,在通过将一个画面划分为多个区域所获得的每个划分区域中执行块匹配,并计算各个划分区域的每块运动矢量;平移量计算装置,用于根据由每块运动矢量计算装置计算的多个每块运动矢量,相对于两个画面中的一个来计算两个画面中另一个的平移量;旋转角计算装置,用于根据由每块运动矢量计算装置计算的多个每块运动矢量,相对于两个画面中的一个来计算两个画面中另一个的旋转角;以及旋转和平移相加装置,用于使用由平移量计算装置计算的平移量以及由旋转角计算装置计算的旋转角将多个画面相互叠加。
在根据本发明前述实施例的图像处理装置中,根据通过每块运动矢量计算装置计算的多个每块运动矢量来计算参考画面相对于原始画面的平移量和旋转角。然后,使用计算的平移量和计算的旋转角,顺序叠加多个画面。当图像是例如拾取图像时,作为叠加结果的图像是从中去除了手抖分量的高画质图像。
根据本发明前述实施例的图像处理装置进一步包括整体运动矢量计算装置,用于相对于两个画面中的一个来计算两个画面中另一个的全部整体运动矢量;以及评估装置,用于使用整体运动矢量,评估由每块运动矢量计算装置获得的多个每块运动矢量中的每一个;其中,由评估装置给出高评估值的每块运动矢量的数量小于预定阈值的两个画面中的另一个被从由旋转和平移相加装置相互叠加的画面中去除。
根据本发明的前述实施例,使用参考画面相对于原始画面的全部整体运动矢量评估多个每块运动矢量中的每一个,并从由旋转和平移相加装置彼此叠加的画面中去除给出高评估值的每块运动矢量的数值小于预定阈值的低可靠性的参考画面。
因此,通过旋转和平移相加装置仅彼此叠加高可靠性的参考画面。可以期望获得没有手抖分量的高画质图像。
根据本发明前述实施例的图像处理装置进一步包括整体运动矢量计算装置,用于相对于两个画面中的一个计算两个画面中另一个的全部整体运动矢量;以及评估装置,用于使用整体运动矢量评估通过每块运动矢量计算装置获得的多个每块运动矢量中的每一个;其中,平移量计算装置和旋转角计算装置仅根据由评估装置给出高评估值的多个每块运动矢量来计算平移量和旋转角。
根据本发明的前述实施例,仅使用由每块运动矢量计算装置计算的每块运动矢量中高可靠性的每块运动矢量来计算平移量和旋转角,从而计算了精确的平移量和精确的旋转角。
因此,旋转和平移相加装置使用精确的平移量和精确的旋转角将参考画面彼此叠加。可以期望获得没有手抖分量的高画质图像。
在本发明的前述实施例中,根据参考画面的多个每块运动矢量来计算参考画面相对于原始画面的平移量和旋转角,通过每块运动矢量计算装置来计算每块运动矢量。使用计算的平移量和计算的旋转角,可以顺序叠加多个画面。例如,当图像是拾取图像时,作为叠加结果的图像是从中去除手抖分量的高画质图像。


图1是示出了根据本发明的图像处理装置的第一实施例的结构实例的方框图;图2是辅助说明根据本发明的图像处理方法实施例概要的示图;图3是辅助说明根据本发明的图像处理方法实施例概要的示图;图4是辅助说明根据本发明的图像处理方法实施例概要的示图;图5是辅助说明在根据本发明的图像处理方法实施例中计算帧的手抖平移分量的过程的示图;
图6是辅助说明在根据本发明的图像处理方法实施例中计算帧的手抖平移分量的过程的示图;图7A、图7B、图7C、和图7D是辅助说明在根据本发明的图像处理方法实施例中计算帧的手抖旋转分量的过程的示图;图8(A)、图8(B)、图8(C)、图8(D)、和图8(E)是辅助说明在根据本发明的图像处理方法实施例中计算帧的手抖旋转分量的过程的示图;图9A和图9B是辅助说明根据本发明的图像处理方法实施例概要的示图;图10是辅助说明根据本发明的图像处理方法实施例概要的示图;图11是辅助说明根据本发明的图像处理方法实施例概要的流程图;图12A和图12B是辅助说明在根据本发明图像处理方法的实施例中计算多个阶段中的每块运动矢量的处理实例的示图;图13是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图14A和图14B是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图15是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;
图16A和图16B是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图17是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图18是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图19是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图20A和图20B是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图21是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图22是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图23A和图23B是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图24A、图24B、图24C、和图24D是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图25是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;
图26是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图27A和图27B是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图28是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图29是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图30A、图30B、图30C、和图30D是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的示图;图31是辅助说明在根据本发明的图像处理方法实施例中计算每块运动矢量的处理实例的处理性能的示图;图32是辅助说明根据本发明的图像处理方法实施例概要的示图;图33是通过与现有方法进行比较辅助说明根据本发明的图像处理方法实施例的特征的示图;图34是通过与现有方法进行比较辅助说明根据本发明的图像处理方法实施例的特征的示图;图35是通过与现有方法进行比较辅助说明根据本发明的图像处理方法实施例的特征的示图;
图36是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的处理实例的部分流程图;图37是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的处理实例的部分流程图;图38是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的处理实例的部分流程图;图39是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的处理实例的部分流程图;图40是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的另一处理实例的部分流程图;图41是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的其它处理实例的部分流程图;图42是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的其它处理实例的部分流程图;图43是辅助说明在根据本发明的图像处理装置的第一实施例中检测手抖的平移分量和旋转分量的其它处理实例的示图;图44是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第一实例的部分流程图;图45是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第一实例的部分流程图;
图46是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第二实例的部分流程图;图47是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第二实例的部分流程图;图48是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第三实例的部分流程图;图49是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第三实例的部分流程图;图50是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第三实例的部分流程图;图51是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第三实例的部分流程图;图52是辅助说明根据本发明的图像处理装置的第一实施例中的每块运动矢量检测处理的第三实例的示图;图53是示出根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的方框图;图54是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的示图;图55是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的处理实例的流程图;
图56是示出根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的方框图;图57是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的示图;图58是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的处理实例的流程图;图59是示出根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的方框图;图60是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的示图;图61是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的结构实例的示图;图62是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的处理实例的部分流程图;图63是辅助说明根据本发明的图像处理装置的第一实施例中的旋转和平移相加单元19的处理实例的部分流程图;图64是示出根据本发明的图像处理装置的第二实施例的结构实例的方框图;图65是辅助说明根据本发明的图像处理装置的第二实施例中的每块运动矢量检测处理的示图;
图66是辅助说明根据本发明的图像处理装置的第二实施例中的每块运动矢量检测处理的示图;图67是辅助说明根据本发明的图像处理装置的第二实施例中的每块运动矢量检测处理实例的部分流程图;图68是辅助说明根据本发明的图像处理装置的第二实施例中的每块运动矢量检测处理实例的部分流程图;图69是示出根据本发明的图像处理装置的第三实施例的结构实例的方框图;图70是辅助说明根据本发明的图像处理方法的另一实例的示图;图71是辅助说明通过块匹配计算运动矢量的过程的示图;图72是辅助说明通过块匹配计算运动矢量的过程的示图;图73是辅助说明通过块匹配计算运动矢量的过程的示图;以及图74是辅助说明通过块匹配计算运动矢量的过程的示图。
具体实施例方式
下文中,通过以将根据本发明的图像处理方法和图像处理装置的实施例应用于图像拾取装置和图像拾取方法为例,参照附图描述根据本发明的图像处理方法和图像处理装置的优选实施例。

在下面将描述的实施例中,本发明应用于主要针对静止图像的手抖校正系统。
该实施例将输入图像帧设置为参考帧,并检测输入图像帧与先于输入图像帧的原始帧(例如,延迟一个帧的原始帧)之间的运动矢量。然后,当进行手抖校正时,通过顺序彼此叠加拍摄的多个图像(例如,3-fps图像)来执行本实施例中针对静止图像的手抖校正。
因此,当对拍摄的静止图像进行手抖校正时,本实施例顺序叠加多个拍摄的图像,从而提供接近像素精度(一个像素精度)的精度。本实施例不仅检测框之间水平方向和垂直方向上的平移分量,还检测框之间的旋转分量,作为手抖运动矢量,并在平移和旋转移动帧之后使多个帧彼此叠加。
应当注意,下面将描述的实施例不限于用于静止图像,并且本质上也可以用于运动图像。在运动图像的情况下,由于实时性,因此,存在将相加帧的数量上限(将要叠加的帧数),稍后将作描述。然而,通过对每个帧使用本实施例的方法,本实施例可将相同的装置应用于生成由高等级降噪效果所产生的运动图像的系统。
此外,在下面将描述的实施例中,如上所述,在使用上述块匹配计算两帧之间的运动矢量的过程中,在原始帧中设置多个目标块,并对多个目标块中的每一个执行块匹配。
例如,如图2所示,下面将描述的本实施例在原始帧中设置16个目标块TGi(i=0、1、2、...、15),并在参考帧102中设置对应于原始帧中16个目标块TGi的16个射影图像104i(i=0、1、2、...15)。然后,设置对应于每个射影图像的搜索范围105i(i=0、1、2、...15),并在每个搜索范围105i(i=0、1、2、...15)中创建对应目标块的SAD表TBLi(i=0、1、2、...15)。
然后,本实施例由每个创建的SAD表TBLi检测每个目标块的运动矢量,即,每块运动矢量BLK_Vi。
然后,基本上根据多个每块运动矢量BLK_Vi来计算参考帧相对于原始帧的平移分量和旋转角,并使用计算的平移分量和计算的旋转角将参考帧叠加到原始帧上。当在每个帧周期中将原始帧顺序更新为下一帧时,重复上述过程,以使帧彼此顺序叠加,从而可以获得消除了手抖影响的高质量图像。
在这种情况下,如图3中所示,当将两个或以上的帧相互叠加时,实际上将第一帧设置为基准,并且后续帧被叠加在第一帧上。因此,要被叠加的第二及后续帧与要被叠加的第二及后续帧的紧前帧之间的平移量和旋转角顺序相加,以得到相对于第一帧的平移量和旋转角。
使用块匹配(在本说明书中,块匹配将被称作检测)确定原始帧与参考帧之间的平移量和旋转角的一种方法是总体上根据参考帧相对于原始帧的整体运动矢量确定平移量和旋转角的方法。即,整体运动矢量表示所讨论的帧相对于先前帧的移动,因而可被原样用作平移量。
具体地,整体运动矢量的水平方向(x方向)上的分量是水平方向上的平移量,而整体运动矢量的垂直方向(y方向)上的分量是垂直方向上的平移量。
相对于针对先前帧获得的整体运动矢量,针对此时关注的帧(参考帧)所获得的整体运动矢量的相对旋转角是此时关注帧相对于先前帧的相对旋转角。
作为在这种情况下计算整体运动矢量的方法,可以采用这样一种方法,其中,如在现有块匹配的情况下,基于对16个目标块检测的每块运动矢量BLK_Vi进行多数决定,并计算多数决定最大值(top)(大小和方向彼此相同或等同的每块运动矢量的最大数)的每块运动矢量,作为整体运动矢量。
然而,计算多数决定最大值的每块运动矢量作为整体运动矢量的这种方法存在下列问题,其中,当拍摄对象的运动图像时以及拍摄运动图像期间的对象是例如有波纹的水面或刮风时弯曲的树或草时,会检测到错误的整体运动矢量(手抖矢量)。由于目前的数码照相机不仅拾取和记录静止图像,还拾取和记录运动图像,所以不期望通过多数决定系统计算整体运动矢量的方法来实现。
因此,本实施例根据使用接下来将描述的合计SAD值的合计SAD表来计算整体运动矢量。
具体地,当将如上所述创建的16个目标块的16个SAD表TBLi在垂直方向上排列以使其如图2所示的互相叠加时,本实施例合计在获得每个SAD表TBLi的搜索范围内其值彼此对应的参考块位置处的SAD值,从而获得合计差分绝对值的合计和(称作合计SAD值)。然后,创建一个搜索范围内的多个参考块位置的合计SAD表,作为包括合计SAD值的SAD表。
在这种情况下,在合计SAD表SUM_TBL中的坐标位置(x,y)处的合计SAD值SUM_TBL(x,y)是使TBLi(x,y)为每个SAD表TBLi中的相应坐标(x,y)处的SAD值,SUM_TBL(x,y)=TBL1(x,y)+TBL1(x,y)+...+TBL16(x,y)=∑TBLi(x,y)(参见图4中的(等式3))。
然后,本实施例从合计SAD表SUM_TBL中检测参考画面相对于原始画面的运动矢量(作为图像拾取装置中手抖矢量的整体运动矢量)。
作为用于根据合计SAD表SUM_TBL计算整体运动矢量的方法,可以使用检测合计SAD表SUM_TBL中合计SAD值的最小值的位置以及检测与所检测的合计SAD值的最小值的检测位置相对应的参考矢量作为整体运动矢量的现有方法。
然而,使用合计SAD值作为最小值的这种方法仅提供了具有一个像素单位精度的运动矢量。本实施例通过使用合计SAD值的最小值位置处的合计SAD值以及合计SAD值的最小值位置处的合计SAD值附近的多个合计SAD值执行近似曲面内插,来计算整体运动矢量。即,可以通过使用合计SAD值的最小值位置处的合计SAD值以及合计SAD值的最小值位置处的合计SAD值附近的多个合计SAD值生成近似高次曲面并检测近似高次曲面的最小值的位置,以小于一个像素单位的精度来计算整体运动矢量。稍后将详细描述近似曲面内插的过程。
因此,由于包括合计SAD值的合计SAD表等同于全部帧的全部块匹配的结果,所以即使在上述运动图像的对象难以处理多数确定系统的情况下,从合计SAD表中获得的整体运动矢量仍很精确。
因此,可以根据从合计SAD表中获得的整体运动矢量获得相对于原始帧的平移量和旋转角,并且如上所述将多个帧彼此叠加。
顺便提及,此时获得的整体运动矢量不限于从合计SAD表中获得的合计运动矢量;例如,可将通过多数决定系统获得的多数决定最大值的每块运动矢量设置为整体运动矢量。然而,期望获得合计运动矢量的理由如上所述。
作为计算平移量和旋转角的方法,可以采用这样一种方法,其根据对参考帧计算的多个每块运动矢量确定帧的平移量和旋转角,而不是计算整体运动矢量以及使用计算的整体运动矢量来计算平移量和旋转角。
理论上获得帧的平移量,作为在16个每块运动矢量的水平方向和垂直方向上移动量的平均值。当对应于多个目标块的多个射影图像的搜索范围被称作检测框时,在如图5所示,可在一个参考帧中给出检测框号i(=0、1、2、...、15)。
然后,使Vxi为检测框号i的每块运动矢量的水平方向分量,使Vyi为检测框号i的每块运动矢量的垂直方向分量,并将每块运动矢量表达为(Vxi,Vyi),如图6的(等式4)和(等式5)所示,可以获得作为16个每块运动矢量的水平方向分量和垂直方向分量的平均值的水平方向(x方向)上的平移量α和垂直方向(y方向)上的平移量β。
原则上可使用16个每块运动矢量获得帧的旋转角γ,如下所示。
首先,如图5,将一个参考帧的检测框号定义为如图7A所示。此时,如图7A所示,假设一个检测框的大小是2a(水平方向)×2b(垂直方向),其中,a=(一个参考块的水平像素数)+(与相邻参考块的水平间隔(像素数))b=(一个参考块的垂直像素数)+(与相邻参考块的垂直间隔(像素数))
接下来,获得如图7B所示的坐标系统,以检测框号0~15的所有检测框的中心Oc作为原点。然后,如图7C和7D所示,定义对应于检测框号i的值Pxi和值Pyi。值Pxi和值Pyi表示从所有检测框的中心Oc到各个检测框的中心在水平方向(x方向)和垂直方向(y方向)上的距离的权重。
使用值Pxi和值Pyi,可由(Pxi·a,Pyi·b)来表示每个检测匡号i的检测框中心坐标。
因此,使得(α,β)为帧的平移量,γ为帧的旋转角,检测框号i的理论每块运动矢量可表示为图8(A)所示的(等式6)。
顺便提及,在3 fps情况下由多个对象的手抖所产生的测量旋转角γ为γ[rad]=arctan1/64=0.0156237...
因此,可以假设cosγ≈1且sinγ≈γ。所以,理论每块运动矢量Wi可表示为(等式6)。
将检测框号i的实际检测的每块运动矢量BLK_Vi缩写为Vi,理论每块运动矢量Wi与实际检测的每块运动矢量Vi之间的误差εi2表示为图8(B)中的(等式7)。如图8(C)中的(等式8)执行误差对于旋转角γ的偏微分。
顺便提及,在图8(C)中,“δF/δγ”表示函数F(γ)关于旋转角γ的偏微分。
假设参考帧的实际检测的每块运动矢量恰好包括实际旋转角γ,则通过参考帧的所有多个单块运动矢量Vi的误差总和∑εi2关于旋转角γ的偏微分所获得的值应当为零。因此,旋转角γ表示为图8(D)中的(等式9)。
因此,通过图8(E)所示的(等式10)可以确定参考帧的将确定的旋转角γ。
在静止图像的情况下,即使通过整体运动矢量或多个每块运动矢量获得的平移量和旋转角的精度仍旧不足。
因此,考虑到这点,本实施例以更高精度来计算平移量和旋转角,并使用高精度的平移量和高精度的旋转角来叠加帧图像。
如上所述,由于移动的对象等,从手抖矢量检测的观点来看,不是对一个参考帧获得的所有多个每块运动矢量都是高度可靠的。
因此,本发明如下确定对一个参考帧获得的多个每块运动矢量的可靠性,并且仅使用被判定为高度可靠的每块运动矢量来计算平移量和旋转角。从而,改进了计算的平移量和计算的旋转角的精度。
即,本实施例尽可能多地消除移动对象的运动矢量分量,其分量将不包括在其运动矢量由手抖所产生的画面整体的运动矢量中,使得能够以更高的精度来计算平移量和旋转角。
为此,本实施例使针对所讨论的参考帧计算的整体运动矢量,即,从本实例中的合计SAD表获得的整体运动矢量(下文中,该整体运动矢量将被称作合计运动矢量)SUM_V与从每个目标块的SAD表TBLi(i=1、2、...、15)获得的每块运动矢量BLK_Vi进行比较,并搜索与整体运动矢量相同或近似的高度可靠的每块运动矢量。
当高度可靠的每块运动矢量的数值小于预定阈值时,在本实施例中确定不将所讨论的帧用作将叠加的帧。跳过本实施例中对所讨论的帧的静止图像处理,以对下一帧进行处理。
当高度可靠的每块运动矢量的数值高于预定阈值时,根据与计算出的高度可靠的每块运动矢量相对应的目标块的SAD表来计算稍后描述的具有小于一个像素精度的高精度每块运动矢量。然后,仅使用计算出的高精度每块运动矢量执行上述平移量的计算和旋转角的检测。
在这种情况下,可将上述第一实例和第二实例用于计算平移量。
例如,当使用上述第二实例时,使用仅对图5中所示的16个检测框中高度可靠的检测框编号i的检测框获得的高精度每块运动矢量来计算平移量。然而,在计算平移量的过程中,本实施例不仅从计算平移量的对象中去除低可靠度的检测框号为q的检测框,而且去除相对于所有检测框的中心点Oc与去除的检测框号q对称的位置处的检测框号为(15-q)的检测框中的每块运动矢量。
这是因为在本实施例中,考虑了帧旋转,因此,当位于相对于中心点Oc的对称位置处的一个检测框中的每块运动矢量被判定为可靠性低,从而将其从计算平移量的对象中去除时,除非从计算平移量的对象中去除处于相对于该点与一个检测框对称的位置处的其它每块运动矢量,否则将产生平移量计算结果的误差。
另一方面,在计算旋转角时,仅从计算旋转角的对象中去除判定为低可靠性的检测框中的每块运动矢量,而位于相对于该点与去除的检测框对称的位置处的检测框中的高精度每块运动矢量包括在计算旋转角的对象中。
如上所述,仅使用高度可靠的检测框计算帧的平移量和旋转角。因此,可以期望以高精度计算平移量和旋转角。
如下所述,执行上述以帧为单位的可靠性确定,即,帧内多个每块运动矢量可靠性的确定。
首先,获得与作为设置在原始帧中的块的多个目标块(该实例中为16个目标块TGi(i=1、2、...15))中每一个相对应的SAD表TBLi,并从SAD表中最小SAD值MINi的坐标位置获得每块运动矢量BLK_Vi(参见图9A)。接下来,根据上述(等式3)通过16个SAD表TBLi获得合计SAD表SUM_TBL,以及通过合计SAD表SUM_TBL中的最小SAD值MINs的坐标位置获得合计运动矢量SUM_V(参见图9B)。
接下来,在本实施例中,通过合计运动矢量BLK_V,即,作为基准的合计SAD表SUM_TBL中的最小SAD值MINs的坐标位置,基于每块运动矢量BLK_Vi(即,合计SAD表SUM_TBL中最小SAD值MINs的坐标位置)和16个目标块中的每一个的SAD值,对16个目标块中的每一个执行图10所示的条件判断,并执行图10所示的分数(评估分数)标记和计算。
图11是表示标记和分数计算的过程实例的流程图。图11的处理是针对一个参考帧的,因此,对每个帧重复图11的过程。
首先,进行关于将执行标记和分数计算的对象目标块获得的运动矢量BLK_Vi是否等于合计运动矢量SUM_V的第一条件的确定(步骤S11)。这相当于确定在对象目标块的SAD表TBLi中最小SAD值MINi的坐标位置是否等于在合计SAD表格SUM_TBL中的最小SAD值MINs的坐标位置。
当确定对象目标块满足第一条件时,向对象目标块给出“TOP”的标记,并在本实施例中为对象目标块分配最大分数值“4”(步骤S12)。
当确定对象目标块不满足第一条件时,确定对象目标块是否满足第二条件(步骤S13)。第二条件为尽管运动矢量BLK_Vi与合计运动矢量SUM_V彼此不同但对对象目标块获得的运动矢量BLK_Vi与合计运动矢量SUM_V是否是在SAD表上是最邻近的矢量。具体地,第二条件为对象目标块的SAD表TBLi中的最小SAD值MINi的坐标位置是否与合计SAD表SUM_TBL中的最小SAD值MINs的坐标位置彼此相邻,并在垂直方向、水平方向、或对角线方向上彼此相差一个坐标值。
当确定对象目标块满足第二条件时,向对象目标块给出“NEXT_TOP”的标记,并在本实施例中为对象目标块分配分数值“2”(步骤S14)。
当确定对象目标块不满足第二条件时,确定对象目标块是否满足第三条件(步骤S15)。第三条件为在对象目标块的SAD表中,由每块运动矢量BLK_Vi表示的坐标位置处的SAD值(最小SAD值MINi)与对应于由合计SAD表上的合计运动矢量SUM_V表示的坐标位置(最小SAD值MINs的坐标位置)的坐标位置处的SAD值之差是否等于或小于预定阈值。在这种情况下,期望将预定阈值转换为每个像素的阈值。这是因为本实施例假定以一个像素的精度校正手抖。
当确定对象目标块满足第三条件时,向对象目标块给出“NEAR_TOP”的标记,并在本实施例中为对象目标块分配分数值“1”(步骤S16)。
当确定对象目标块不满足第三条件时,向对象目标块给出“OTHERS”的标记,并在本实施例中为对象目标块分配分数值“0”(步骤S17)。
在完成步骤S12、步骤S14、步骤S16、和步骤S17中的标记和分数分配之后,累加分配的分数,以计算总分数sum_score(步骤S18)。
接下来,确定是否已对一个内所有的16个目标块完成了上述过程(步骤S19)。当没有对所有的16个目标块完成上述处理时,给出对下一目标块进行标记和分数计算的指令(步骤S20)。之后,返回到步骤S11以重复上述过程。
当确定已对一帧内所有的16个目标块完成了上述处理时,结束对一帧内所有的16个目标块的标记和分数计算的处理程序。此时,在步骤S18中计算的总分数sum_score作为所有16个目标块的总分数。
顺便提及,图11的流程图是一个实例;可以随机的顺序进行是否满足第一条件的确定、是否满足第二条件的确定、以及是否满足第三条件的确定,并且可首先执行任一个确定。
在结束了上述对一帧内所有的16个目标块的标记和分数计算的处理程序之后,将计算的总分数sum_score与可靠性的阈值进行相互比较。此时,当总分数sum_score低于阈值时,可以确定对于整体运动矢量的检测,在所述帧中获得的运动矢量可靠性很低。
可选地,计算满足第一条件和第二条件从而被判断为高可靠性且给出“TOP”和“NEXT_TOP”标记的目标块的每块运动矢量的数值。当该数值低于预定阈值时,可以确定对于整体运动矢量的检测,在所述帧中获得的运动矢量可靠性很低。
当总分数sum_score为阈值或更高时,或者当标记为“TOP”和“NEXT_TOP”的目标块的每块运动矢量的数值为预定阈值或更大时,可以确定在所述帧中获得的整体运动矢量的检测具有一定程度的可靠性。
所以,当总分数sum_score为阈值或更高时,或者当标记为“TOP”和“NEXT_TOP”的目标块的每块运动矢量的数值为预定阈值或更大时,仅使用满足第一条件和第二条件的高度可靠的目标块(标注为“TOP”和“NEXT_TOP”)的SAD表的SAD值来重新生成合计SAD表。基于重新生成的合计SAD表重新计算作为整体运动矢量的合计运动矢量。通过重新计算的合计运动矢量可以计算帧的平移量和旋转角。
此时获得的整体运动矢量不限于通过合计SAD表获得的合计运动矢量,并且例如可以是基于高可靠性的每块运动矢量通过多数决定来获得的。
此外,代替通过整体运动矢量计算平移量和旋转角,基于参照图6~图8E描述的(等式4)~(等式10),可以仅使用具有表示高可靠性的“TOP”标记和“NEXT_TOP”标记的每块运动矢量来确定平移量(α,β)和旋转角γ。
如上所述,本实施例采用了仅使用具有表示高可靠性的“TOP”标记和“NEXT_TOP”标记的每块运动矢量来计算平移量(α,β)和旋转角γ的方法。
然而,为了获得更高的可靠性,本实施例执行以下处理。
本实施例逐渐缩小每个目标块的搜索范围,并在多阶段中执行块匹配处理(下文中,对于全部帧的块匹配将被称作检测)。在下面的实施例中,在两个阶段中执行块匹配(检测)。
如图12A所示,将第一检测中对于每个目标块TGi的搜索范围SR_1设置为最大,并获得上述多个每块运动矢量BLK_Vi。在结束第一检测并计算了多个目标块的每块运动矢量之后,评估多个每块运动矢量,并对具有高评估值的每块运动矢量进行搜索。仅使用具有高评估值的每块运动矢量执行上述(等式4)和(等式5),以获得第一检测的平移量(α,β)。然后,通过第一检测的平移量确定第二检测中对每个目标块的搜索范围。
可选的,可通过具有高评估值的块计算整体运动矢量(手抖矢量),使得通过整体运动矢量计算第一检测的平移量,然后通过第一检测的平移量确定第二检测中对每个目标块的搜索范围。
如图12A所示,当在第一过程中设置的搜索范围SR_1中计算每个目标块的每块运动矢量BLK_Vi,以及通过多个每块运动矢量计算平移量或通过整体运动矢量计算平移量时,可以根据计算的平移量粗略检测在参考帧与原始帧之间存在相关性的块范围。
因此,如图12B所示,将比第一检测中的搜索范围更窄的搜索范围设置为第二检测处理中每个目标块的搜索范围SR_2,其以参考帧与原始帧之间存在相关性的块范围作为中心。在这种情况下,如图12B所示,第一检测中搜索范围SR_1的中心位置Poi_1与第二检测中搜索范围SR_2的中心位置Poi_2之间的位置偏移(搜索范围偏移)对应于在第一检测中检测的平移量(对应于整体运动矢量)。
因此,使用对每个目标块的变窄搜索范围SR_2的检测过程提供了具有比第一级检测过程更高精度的块匹配结果,作为第二检测的结果。
因此,本实施例使用在第二检测中获得的每块运动矢量中具有高评估值的每块运动矢量来如上所述地计算帧的平移量和旋转角。从而,可以获得具有高精度的平移量和旋转角。
本实施例中使用的合计SAD表基本等同于全体帧的全部块匹配的结果而不是对每个块的SAD表。在通常对象的情况下,在现有技术中描述的多数决定之后仍然存在的运动矢量(即,多数决定最大值的运动矢量)与从合计SAD表中获得的合计运动矢量彼此相等。然而,在多个帧相互叠加的情况下,当帧由于另一个人打开闪光灯而整体闪动时,或当对象是水面波纹等时,多数决定的结果是低可靠性的接近随机的运动矢量。另一方面,作为比较接近正解的结果导出合计运动矢量的可能性很大。
因此,通过将根据合计SAD表获得的合计运动矢量的结果与通过多数决定法确定的整体运动矢量相互进行比较,至少可以定量地确定当前帧结果的可靠性。现有提案主要针对确定每块的运动矢量的可靠性。另一方面,本实施例的特征在于实现稳定的手抖校正系统,该系统在重视全体帧的原则下提供更加自然的图像,并从将要相互叠加的帧中去除不可靠的帧。
考虑到这点,如在现有块匹配的情况下,本实施例的一种方法基于对16个目标块检测的每块运动矢量BLK_Vi进行多数决定,并计算运动矢量的多数决定最大值(大小和方向彼此相同或相等的每块运动矢量的最大数)。
然后,使用检测运动矢量的多数决定最大值取代图10中的合计运动矢量作为基准,基于对16个目标块检测的每块运动矢量以及各个每块运动矢量BLK_Vi的SAD值执行如图10所示的标记和分数分配。
这相当于使用多数决定最大值的运动矢量来取代图10中的合计运动矢量SUM_V。
具体地,第一条件为对将执行标记和分数计算的目标块获得的每块运动矢量BLK_Vi与多数决定最大值的运动矢量是否彼此相等。即,确定对象目标块的SAD表TBLi中的最小SAD值MINi的坐标位置是否等于多数决定最大值的运动矢量的坐标位置。
第二条件为即使运动矢量BLK_Vi与多数决定最大值的运动矢量彼此不同但对对象目标块获得的运动矢量BLK_Vi与多数决定最大值的运动矢量是否是在SAD表格上最邻近的矢量。具体地,第二条件为对象目标块的SAD表TBLi中的最小SAD值MINi的坐标位置是否与对应于多数决定最大值的运动矢量的坐标位置彼此相邻,并在垂直方向、水平方向、或对角线方向上彼此相差一个坐标值。
第三条件为在对象目标块的SAD表中,由每块运动矢量BLK_Vi表示的坐标位置处的SAD值(最小SAD值MINi)与其位置对应于多数决定最大值的运动矢量的SAD表上的坐标位置处的SAD值之差是否等于或小于预定阈值。
如上所述,对一帧的16个目标块的运动矢量执行以多数决定最大值的运动矢量作为基准的标记和分数分配。然后,计算分配分数的总分数many_score。
然后,当对应于合计运动矢量SUM_V的最小SAD值的坐标位置与对应于多数决定最大值的运动矢量的SAD值的坐标位置之差在预定值内时(例如,当差在一个相邻像素内时),当总分数sum_score等于或高于预定阈值,以及当总分数many_score等于或高于预定阈值时,本实施例确定对所述帧获得的运动矢量具有高可靠性。
另一方面,当对应于合计运动矢量SUM V的最小SAD值的坐标位置与对应于多数决定最大值的运动矢量的SAD值的坐标位置之差不在预定值内时(例如,当差不在一个相邻像素内时),确定不能从所述帧中获得高可靠度的手抖矢量,并从相互叠加的多个帧中去除所述帧。
此外,当总分数sum_score低于预定阈值时,或总分数many_score低于预定阈值时,确定不能从所述帧中获得高可靠度的手抖矢量,并从相互叠加的多个帧中去除所述帧。
然后,仅当如上所述确定可靠性较高时,在该实例中,仅使用以合计运动矢量作为基准进行标记的目标块的标记中给出“TOP”和“NEXT_TOP”标记的目标块的SAD值的SAD表来生成重新合计SAD表RSUM_TBL。
然后,通过将近似曲面内插应用到最小SAD值以及重新合计SAD表RSUM_TBL中与最小SAD值相邻的坐标位置处的SAD值,来计算整体运动矢量(合计运动矢量)。然后,使用计算的合计运动矢量,确定第二检测时的搜索范围,或计算平移量和旋转角。
可选地,仅使用给出“TOP”和“NEXT_TOP”标记的目标块的每块运动矢量以及使用上述(等式4)和(等式5),计算平移量,确定第二检测时的搜索范围,或者基于上述(等式4)~(等式10)执行计算,并计算平移量和旋转角。
顺便提及,可将现在提出的根据时间轴方向上的运动矢量频率预测运动矢量(整体运动矢量)的方法与根据本发明的上述实施例的方法互相结合,以进一步改进可靠性和精度。
如上所述,本实施例对一帧内多个目标块中的每一个生成SAD表并计算每块运动矢量。在这种情况下,当将本实施例应用于使用具有超过5百万像素的现存图像拾取元件的图像拾取装置时,难以在实际电路规模上实现本实施例,这是因为SAD表的规模与一个画面的像素数成比例地增加。
可行的实际提议包括上述专利文献3(日本专利公开第2005-38396号)。专利文献3中公开的装置包括用于获得由图像的缩小变换产生的大小的运动矢量的装置,以及用于在多个块之间共享相同SAD表的装置。图像的缩小变换和在多个块之间共享相同SAD表是用于实现减小SAD表大小的非常好的方法,并被用在例如MPEG(运动图像专家组)图像压缩系统中的运动矢量检测和场景变化检测的其它领域中。
然而,专利文献3的算法存在下列问题图像的缩小变换以及缩小变换时的存储器(DRAM(动态RAM(随机存取存储器)))访问消耗时间和存储空间,并且由于多个时分访问SAD表,所以大大增加了存储器访问且该处理也占用时间。对运动图像的手抖校正同时需要实时性能和系统延迟时间的减少,因此处理时间成为问题。
多人评估的结果表示在例如三帧/秒(3fps)的静止图像的情况下手抖范围是以整个帧作为100的±10%左右。假设可以从市场上得到一千二百万像素的高端装置,则估计目前提出的技术所需的SAD表的大小约为80兆。此外,当满足实际处理速度时,存储SAD表信息的存储器需要为内置SRAM(静态RAM(随机存取存储器))。尽管半导体工艺规则得到了发展,但是该大小背离实际等级大约3个数位。
此外,图像的缩小变换需要用于执行作为缩小处理的预处理的去除混叠(折叠失真)和低照度噪声的低通滤波器。然而,根据缩小比例因数改变低通滤波器的特性,尤其是当低通滤波器在垂直方向上是多抽头数字滤波器时,需要许多线路存储器和操作逻辑,因此,出现了电路规模增加的问题。
因此,考虑到以上问题,本实施例使用用于当使用块匹配计算两帧之间的整体运动矢量时可以大大缩小SAD表大小的图像处理的方法和装置。
此外,关于通过如专利文献3所述的图像的缩小变换来缩小SAD表的方法,产生了两个问题图像的缩小变换中涉及的处理时间和存储空间消耗的增加,以及实现用于避免伴随图像缩小变换而出现的混叠的适当低通滤波器所涉及的电路增加。本实施例可以解决这些问题。
具体地,替代对应于参考块的参考矢量存储目标块与参考块之间的SAD值,本实施例缩小参考矢量,分配SAD值并使其与对应缩小的参考矢量并与缩小的参考矢量邻接的多个参考矢量相加,从而存储SAD值。
由此,与现有SAD表相比,本实施例大大缩小了SAD表的大小,并解决了两个问题,这两个问题包括图像的缩小变换中所涉及的处理时间和存储器空间消耗增加的问题以及实现用于避免伴随图像缩小变换而出现的混叠的适当低通滤波器所涉及的电路增加的问题。
图13~图15是辅助说明用于本实施例的新块匹配概要的示图。图13示出了现有SAD表TBLo与本实施例的图像处理方法中生成的缩小SAD表TBLs之间的关系。
在本实施例中,如图74所示的现有实例,以原始帧中设置的多个目标块(在该实例中为16个目标块)的位置作为各个中心,在参考帧中设置多个搜索范围。然后,如上所述,将多个参考块设置在多个搜索范围的每一个中,并获得每个参考块内像素的照度值与目标块内对应像素的照度值之差的绝对值的和,即,SAD值。
现有地,如图13所示,将获得的SAD值写入在对应于所述参考块的参考矢量RV的地址处的SAD表TBLo中,作为表元素tb1。
因此,在现有的块匹配中,表示目标块和参考块之间帧图像中的位置偏移的参考矢量RV与作为SAD表TBLo的每个表元素的参考块的SAD值彼此一一对应。即,现有的SAD表TBLo具有其数目等于可在搜索范围内获得的参考矢量RV的数目的多个SAD值表元素。
另一方面,如图13、图14A和图14B所示,在根据本发明的块匹配中,将所述参考块的参考矢量RV以1/n(n为自然数)的缩小率缩小为缩小的参考矢量CV。
在下面的描述中,为了描述方便,水平方向缩小比例因数与垂直方向缩小比例因数相同。然而,水平方向缩小比例因数与垂直方向缩小比例因数可以是彼此独立的不同值。此外,如稍后将要描述的,彼此独立地设置为任意自然数分之一的水平方向缩小比例因数与垂直方向缩小比例因数更加灵活和方便。
此外,在本实施例中,如上文现有实例所述的,作为搜索范围中心的目标块的位置被设置为基准位置(0,0),参考矢量表示从基准位置开始的以像素为单位在水平方向和垂直方向上的偏移(vx,vy)(vx和vy是整数),并将每个参考矢量RV表达为参考矢量(vx,vy)。
通过在水平方向和垂直方向的每一个方向上将参考矢量(vx,vy)缩小1/n获得的缩小参考矢量(vx/n,vy/n)所表示的位置(vx/n,vy/n)可以不是整数,并可以包括小数部分。因此,在本实施例中,当将对应于缩小之前的原始参考矢量RV获得的SAD值存储为对应于与缩小参考矢量CV最接近的一个参考矢量的表元素时,产生误差。
因此,在本实施例中,首先检测在由参考缩小矢量CV表示的位置(vx/n,vy/n)附近的多个参考矢量表示的多个位置(表元素)。然后,分配对参考矢量RV的参考块获得的SAD值并使其与表示检测位置的多个相邻参考矢量相对应的SAD值相加。
在这种情况下,在本实施例中,作为将被写入表元素tb1(对应于在由缩小参考矢量CV表示的位置周围的多个相邻参考矢量表示的位置)的分量的将被分配并相加的值,使用由缩小参考矢量与每个相邻参考矢量表示的位置之间的关系,通过对应于缩小之前的原始参考矢量RV获得的SAD值来计算对应于相邻参考矢量将被分配并相加的SAD值。使每个计算的SAD值作为对应参考矢量的表元素分量相加。
在这种情况下,不仅分配并且相加SAD值是指对多个不同的缩小参考矢量重复检测邻近缩小参考矢量的多个参考矢量,从而对于一个参考矢量将多个SAD值相加在一起。
顺便提及,当由缩小参考矢量CV表示的位置(vx/n,vy/n)与由参考矢量表示的位置相匹配时,即,当vx/n和vy/n的值为整数时,不需要检测多个相邻参考矢量,并对应于表示位置(vx/n,vy/n)的参考矢量存储对应于缩小之前的原始参考矢量RV获得的SAD值。
接下来,将结合具体实例描述上述处理。例如,当将目标块的位置设置为基准(0,0)时,通过将表示图14A所示的位置(-3,-5)的参考矢量RV在水平方向和垂直方向上缩小至1/n=1/4所获得的缩小参考缩小矢量CV表示图14B所示的位置(-0.75,-1.25)。
因此,由缩小参考矢量CV表示的位置包括小数部分,并且与通过参考矢量表示的位置不匹配。
因此,在这种情况下,如图15所示,检测表示与由缩小参考矢量CV表示的位置相邻的位置的多个相邻参考矢量。在图15的实例中,对一个缩小参考矢量CV检测4个相邻参考矢量NV1、NV2、NV3、和NV4。
然后,如上所述,在本实施例中,分配对参考块的参考矢量RV获得的SAD值并使其作为对应于4个相邻参考矢量NV1、NV2、NV3、和NV4的SAD值相加。
在这种情况下,在本实施例中,使用由缩小参考矢量CV表示,的位置P0(图15中的十字标记)与分别由4个相邻参考矢量NV1、NV2、NV3、和NV4表示的位置P1、P2、P3、和P4(图15中的圆圈标记)之间的位置关系,计算将被分配并相加至4个相邻参考矢量NV1、NV2、NV3、和NV4的SAD值,作为线性加权分布。
在位置P0周围水平方向上以1∶3以及垂直方向上以3∶1,将图15的实例中由缩小参考矢量CV表示的位置P0内分由分别由4个相邻参考矢量NV1、NV2、NV3、和NV4表示的位置P1、P2、P3、和P4所限定的线段。
因此,使Sα作为缩小之前对应于参考矢量RV获得的SAD值,将被分配并相加至与分别在位置P0周围的4个相邻参考矢量NV1、NV2、NV3、和NV4表示的位置P1、P2、P3、和P4相对应的SAD表元素的值SADp1、SADp2、SADp3、和SADp4为SADp1=Sα×9/16SADp2=Sα×3/16SADp3=Sα×3/16SADp4=Sα×1/16然后,在本实施例中,将获得的值SADp1、SADp2、SADp3、和SADp4相加至对应于分别由4个相邻参考矢量NV1、NV2、NV3、和NV4表示的位置P1、P2、P3、和P4的SAD表元素。
在本实施例中,对搜索范围内的所有参考块执行以上处理。
因此,在本实施例中,当参考矢量RV缩小至1/n时,足以准备通过将具有与所有参考矢量一一对应的现有大小的SAD表TBLo在水平方向上缩小至1/n且在垂直方向上缩小至1/n所获得的缩小SAD表TBLs,并将对应于与参考矢量RV相邻的参考矢量的SAD值确定为缩小SAD表TBLs中表元素(参见图13)。
因此,本实施例中缩小SAD表TBLs的表元素数是现有SAD表TBLo的表元素数的1/n2,从而可以大大减小表的大小。
顺便提及,在本实施例的以上描述中,检测与缩小参考矢量CV相邻的4个参考矢量,并将对所述参考块(参考矢量RV)计算的SAD值作为线性加权分布值加至对应于4个相邻参考矢量的SAD表元素。然而,用于选择邻近缩小参考矢量CV的多个参考矢量的方法,以及对应于相邻参考矢量的SAD表元素的分配和相加方法不限于上述实例。
例如,通过检测邻近缩小参考矢量CV的9个或16个参考矢量,并基于所谓的三次插值执行对应于9个或16个相邻参考矢量的SAD表元素的分配和相加,可以获得更高的精度。当着重于实时性能和操作电路的减小时,上述对应于4个相邻参考矢量的表元素的线性加权分配和相加更加有效。
在本实施例中,与现有方法相同,将参考块移至搜索范围内的所有位置,并且将所有参考块的SAD值分配给SAD表(本实施例中为缩小SAD表)。
然而,现有地,参考矢量与SAD表元素的地址彼此一一对应,因此,足够对其简单分配SAD表。在根据本实施例的方法中,分配并相加对参考块计算的SAD值,因此,在缩小SAD表中,参考矢量(缩小参考矢量)与表格地址不是彼此一一对应的。因此,根据本实施例的方法需要通过相加执行分配的所谓分配相加(assignment addition),而不是简单分配SAD值的表地址。此外,对于这点,首先需要对SAD表(缩小SAD表)中的每个表元素进行初始化(清零)。
在现有的块匹配中,当在如上完成的SAD表中搜索具有最小SAD值的表元素以及将具有最小值的表元素的地址转换为参考矢量时,运动矢量的检测完成。
另一方面,在根据本实施例的方法中的SAD表是对应于通过缩小参考矢量获得的缩小参考矢量的缩小SAD表,因此,实际上缩小SAD表中的最小值不对应于精确的运动矢量。
当然,通过将缩小SAD表中具有最小值的表元素的表地址转换为参考矢量,并使该参考矢量与缩小率1/n的倒数相乘(即,与n相乘),允许一定程度误差的装置可计算运动矢量。
然而,当要计算更精确的运动矢量时,通过如下所述对缩小SAD表的表元素执行内插处理,以原始矢量的精度检测精确运动矢量(每块运动矢量)。
顺便提及,在上面的描述中,使用采用现有参考矢量而不是缩小参考矢量的块匹配的方法,为多个目标块获得SAD表,通过合计在多个获得的SAD表中对应坐标位置处的SAD值来获得合计SAD表,以及通过对合计SAD表进行近似曲面内插来计算整体运动矢量。下面将要描述的内插处理同样可以用作这种情况下的近似曲面内插。
用于计算更加精确的运动矢量的内插处理的第一实例是通过二次曲面近似缩小SAD表中的多个SAD表元素值(SAD值)的方法。
具体地,在缩小SAD表中获得具有最小SAD值(整数精度最小值表元素(整数精度表地址))的表元素以及在整数精度的最小值表元素的中心周围的多个整数精度表元素。使用这些表元素的SAD值,通过最小二乘法确定SAD值的二次曲面。检测二次曲面的最小SAD值。检测对应于检测的最小SAD值的位置(从参考帧中的参考位置移动的位置)。将检测位置设置为小数精度的最小数值表地址(对应于表示缩小SAD表中最小SAD值的矢量(最小值矢量))。
在这种情况下,如图16A或16B所示,为了设置唯一的二次曲面,至少需要一个整数精度最小值表元素tm以及与表元素tm相邻的四个整数精度表元素t1、t2、t3、和t4,定位这四个整数精度表元素t1、t2、t3、和t4,使表元素tm的两侧均被整数精度表元素夹置。
然后,如图17所示,在对应于参考帧的搜索范围内的缩小SAD表的缩小参考矢量的范围内,通过作为基准位置的目标帧的位置(0,0),考虑水平方向和垂直方向上的偏移量(对应于参考缩小矢量)的轴vx/n和轴vy/n,SAD值轴被认为是垂直于轴vx/n和轴vy/n的轴,并且假设由三个轴形成坐标空间。
然后,例如,在图17的坐标空间中,通过整数精度最小值表元素tm的SAD值以及介于整数精度最小值表元素tm之间的两个表元素t1和t3的SAD值生成一条二次曲线。在图17的坐标空间中,通过整数精度最小值表元素tm的SAD值以及介于最小值表元素tm之间的其它两个表元素t2和t4的SAD值生成另一条二次曲线。然后,通过最小二乘法获得包括两条二次曲线的二次曲面201。在图17所示的坐标空间中生成二次曲面201。
然后,检测生成二次曲面201的SAD值的最小值202。检测对应于最小SAD值的位置(vx/n,vy/n)(图17中的位置203)。检测位置(vx/n,vy/n)被测定为小数精度表元素(表地址)。然后,如图18中所示,使对应于检测的小数精度表元素的矢量(最小值矢量204)乘以n,由此获得具有原始幅值精度的运动矢量205。
例如,如图18所示,在当参考矢量缩小至1/4时根据缩小SAD表TBLs中的小数精度表元素的最小值地址获得的最小值矢量204为(-0.777,-1.492)的情况下,通过使(-0.777,-1.492)乘以4获得的运动矢量205为(-3.108,-5.968)。该运动矢量205是以原始图像比例再生的运动矢量。
虽然上面对使用整数精度最小值表元素tm以及与整数精度最小表格元素tm相邻的四个表元素的情况进行了描述,但为了通过最小二乘法获得SAD值的二次曲面,最好使用更接近的表元素。因此,通常使用在整数精度最小值表元素tm中心周围的m(水平方向)×m(垂直方向)(m是3或以上的整数)表元素的矩形区域中的表元素。
然而,不是相邻表元素数越大越好。使用宽范围的表元素会引起计算量的增加,以及使用根据图像图案的局部最小的假值的可能性的增加。因此,使用在适当数量的相邻表元素的矩形区域中的表元素。
通过以下实例来描述本实施例使用适当数量的相邻表元素的矩形区域中的表元素的实例、使用在整数精度最小值表元素tm中心周围的3(水平方向)×3(垂直方向)表元素的矩形区域中的表元素的实例、以及使用在整数精度最小值表元素tm中心周围的4(水平方向)×4(垂直方向)表元素的矩形区域中的表元素的实例。
图20A和20B表示使用在整数精度最小值表元素tm中心周围的3(水平方向)×3(垂直方向)表元素的矩形区域中的表元素(在图20A中的填充部分)的实例。
在图20A和20B的实例中,使用图20A所示的整数精度最小值表元素tm以及与整数精度最小值表元素tm相邻的8个表元素的SAD值,通过最小二乘法生成图20B所示的二次曲面201。然后,检测SAD值的生成二次曲面201的最小值202。检测对应于最小SAD值的位置(vx/n,vy/n)(图20B中的位置203)。检测位置203被测定为小数精度最小值表元素的位置(小数精度最小值表地址)。
然后,如图18所示,使对应于小数精度表元素的检测位置203的矢量(最小值矢量)204乘以n,从而获得具有原始幅值精度的运动矢量205。
计算对应于SAD值二次曲面201的最小值202的位置203的方法如下。如图21所示,认为整数精度最小值表元素tm的坐标(x,y)为原点坐标(0,0)。在这种情况下,通过x轴方向上的三个位置(即,x=-1、x=0、和x=1)与y轴方向上的三个位置(即,y=-1、y=0、和y=1)的组合来表示8个周围表元素的位置,因此,这8个位置为(-1,-1)、(0,-1)、(1,-1)、(-1,0)、(1,0)、(-1,1)、(0,1)、和(1,1)。
假设图21的表中每个表元素的SAD值为Sxy。因此,例如,将整数精度最小值表元素tm(位置(0,0))的SAD值表示为S00,以及将右下方位置(1,1)处的表元素的SAD值表示为S11。
然后,可通过图22所示的(等式A)和(等式B)获得具有整数精度最小值表元素tm的位置作为原点(0,0)的(x,y)坐标上的小数精度位置(dx,dy)。
在图22的(等式A)和(等式B)中,当x=-1,Kx=-1当x=0,Kx=0当x=0,Kx=1此外,当y=-1,Ky=-1当y=0,Ky=0当y=0,Ky=1因此,通过作为原点(0,0)的整数精度最小值表元素tm的位置获得小数精度位置(dx,dy)。从而,可根据小数精度位置(dx,dy)和整数精度最小值表元素tm的位置来检测相对于搜索范围中心位置的位置203。
图23A和23B表示使用在中心处具有整数精度最小值表元素tm的4(水平方向)×4(垂直方向)表元素的矩形区域中的表元素(在图23A中的填充部分)的实例。
如在整数精度最小值表元素tm和与整数精度最小值表元素tm相邻的8个表元素(3×3)的情况下,或者在整数精度最小值表元素tm和与整数精度最小值表元素tm相邻的24个表元素(5×5)的情况下,当m值为奇数时,由于整数精度最小值表元素tm总是位于使用的矩形区域的多个表元素的中心,所以简单地确定将被使用的表范围。
另一方面,如在整数精确度最小值表元素tm和与整数精度最小值表元素tm相邻的15个表元素(4×4)的情况下,当m值为偶数时,由于整数精度最小值表元素tm并不是位于使用的矩形区域的多个表元素的中心,所以需要一些装置。
具体地,将从整数精度最小值表元素tm看的水平方向上的左侧相邻表元素和右侧相邻表元素的SAD值相互进行比较。将在具有较低值的相邻表元素的方向上与具有较低值的表元素相邻的表元素被用作第四列中的相邻表元素。类似地,将从整数精度最小值表元素tm看的垂直方向上的上方相邻表元素和下方相邻表元素的SAD值相互进行比较。将在具有较低值的相邻表元素的方向上与具有较低值的表元素相邻的表元素被用作第四行中的相邻表元素。
在图23A的实例中,在整数精度最小值表元素tm的水平方向上的左侧相邻表元素和右侧相邻表元素的SAD值为“177”和“173”。因此,将与具有较低SAD值“173”的右侧相邻表元素的右侧相邻的列用作第四列。在整数精度最小值表元素tm的垂直方向上的上方相邻表元素和下方相邻表元素的SAD值为“168”和“182”。因此,将与具有较低SAD值“168”的上方相邻表元素的上方相邻的行用作第四行。
在图23A和23B的实例中,使用整数精度最小值表元素tm以及与整数精度最小值表元素tm相邻的15个表元素的SAD值,通过最小二乘法生成二次曲面201。然后,检测SAD值的生成二次曲面201的最小值202。检测对应于最小SAD值的位置(vx/n,vy/n)(图23B中的位置203)。检测位置203被测定为小数精度最小值表元素的位置(小数精确度最小值表地址)。
然后,如上述图18所示,使对应于小数精度表元素的检测位置203的矢量(最小值矢量)204乘以n,从而获得具有原始幅值精度的运动矢量205。
在该实例中,计算对应于SAD值二次曲面201的最小值202的位置203的方法如下。如图24A、图24B、图24C、和图24D所示,认为整数精度最小值表元素tm的(x,y)坐标是原点(0,0)。
在该实例中,需要根据16个表元素的矩形区域中整数精度最小值表元素tm的位置考虑如图24A、图24B、图24C、和图24D所示的四个表元素配置。
在这种情况下,从图24A、图24B、图24C、和图24D可以理解,15个周围表元素的位置是通过x轴方向上四个位置(即,x=-1、x=0、x=1、和x=2或x=-2)与y轴方向上的四个位置(即,y=-1、y=0、y=1、和y=2或y=-2)的组合表示的15个位置。
假设图24A、图24B、图24C、和图24D中每个表元素的SAD值为Sxy。因此,例如,将整数精度最小值表元素tm(位置(0,0))的SAD值表示为S00,以及将位置(1,1)处的表元素的SAD值表示为S11。
然后,可通过图25所示的(等式C)和(等式D)获得在整数精度最小值表元素tm以及整数精度最小值表元素tm周围的15个表元素的矩形区域中的中心位置作为原点(0,0)的(x,y)坐标上的小数精度位置(dx,dy)。
如图26所示,当认为(Kx,Ky)坐标具有整数精度最小值表元素tm以及整数精度最小值表元素tm周围的15个表元素的矩形区域中的中心位置作为原点(0,0)时,图25的(等式C)和(等式D)中的Kx和Ky是对应于图24A、图24B、图24C、和图24D中所示的四个表元素配置的值。
具体地,在对应于图24A的情况下,当x=-2,Kx=-1.5当x=-1,Kx=-0.5当x=0,Kx=0.5当x=1,Kx=1.5此外,当y=-2,Ky=-1.5当y=-1,Ky=-0.5当y=0,Ky=0.5当y=1,Ky=1.5在对应于图24B的情况下,当x=-2,Kx=-1.5
当x=-1,Kx=-0.5当x=0,Kx=0.5当x=1,Kx=1.5此外,当y=-1,Ky=-1.5当y=0,Ky=-0.5当y=1,Ky=0.5当y=2,Ky=1.5在对应于图24C的情况下,当x=-1,Kx=-1.5当x=0,Kx=-0.5当x=1,Kx=0.5当x=2,Kx=1.5此外,当y=-2,Ky=-1.5当y=-1,Ky=-0.5当y=0,Ky=0.5
当y=1,Ky=1.5在对应于图24D的情况下,当x=-1,Kx=-1.5当x=0,Kx=-0.5当x=1,Kx=0.5当x=2,Kx=1.5此外,当y=-1,Ky=-1.5当y=0,Ky=-0.5当y=1,Ky=0.5当y=2,Ky=1.5此外,图25中所示的(等式C)和(等式D)中Δx和Δy表示相对于图24Δ、图24B、图24C、和图24D的每个表元素配置中(x,y)坐标的(Kx,Ky)坐标的偏移量。从图26中可以理解,在对应于图24A的情况下,Δx=-0.5,Δy=-0.5,在对应于图24B的情况下,Δx=-0.5,Δy=0.5,在对应于图24C的情况下,Δx=0.5,Δy=-0.5,以及在对应于图24D的情况下,Δx=0.5,Δy=0.5。
因此,通过作为原点(0,0)的整数精度最小值表元素tm的位置获得小数精度位置(dx,dy)。从而,可以根据小数精度位置(dx,dy)和整数精度最小值表元素tm的位置来检测相对于搜索范围中心位置的位置203。
用于计算更精确的运动矢量的内插处理的第二实例使用包括缩小SAD表中整数精度最小值表元素的水平方向上的多个表元素的SAD值在水平方向上生成三次曲线,并使用包括整数精度最小值表元素的垂直方向上的多个表元素的SAD值在垂直方向上生成三次曲线,检测每个三次曲线的最小值位置(vx,vy),以及将检测位置设置为小数精度最小值地址。
图27A和图27B是解释第二实例的辅助图。在上述第一实例中,获得整数精度最小值表元素tm以及以整数精度最小值表元素为中心的多个整数精度表格元素,例如,图27A和27B的实例中的4×4=16个表元素(参见图27A中的填充部分)。
然后,如图27B所示,如第一实例,在与参考帧的搜索范围内的缩小SAD表相对应的缩小参考矢量的范围内,以目标帧的位置为基准位置(0,0),考虑水平方向和垂直方向(对应于缩小参考矢量)上偏移量的轴vx/n和轴vy/n,SAD值轴被认为是与轴vx/n和轴vy/n垂直的轴,并且假设由三个轴形成坐标空间。
接下来,使用16个表元素中包括整数精度最小值表元素tm的水平方向上的四个表元素的SAD值,在坐标空间中生成水平方向上的三次曲线206,其中,16个表元素为整数精度最小值表元素tm以及整数精度最小值表元素tm周围的表元素。小数精度最小值表元素位置的水平方向位置被测定为对应于水平方向上三次曲线206的最小值的水平方向位置vx/n。
接下来,使用16个表元素中包括整数精度最小值表元素tm的垂直方向上的四个表元素的SAD值,在坐标空间中生成垂直方向上的三次曲线207,其中,16个表元素为整数精度最小值表元素tm以及整数精度最小值表元素tm周围的表元素。小数精度最小值表元素位置的垂直方向位置被测定为对应于垂直方向上三次曲线207的最小值的垂直方向位置vy/n。
根据通过上述小数精度最小值表元素位置的上述处理获得的水平方向位置和垂直方向位置检测小数精度最小值表元素位置(小数精度最小值表地址)208。然后,如上述图18所示,使对应于检测小数精度表元素位置208的矢量(最小值矢量)209乘以n,从而获得具有原始幅值精度的运动矢量。
即,第二实例是通过第一实例中所述的方法确定水平方向和垂直方向中的每一个上的四个表元素,并唯一地确定图27B所示的水平方向和垂直方向中的每一个上的三次曲线的方法。
在这种情况下,计算对应于SAD值三次曲线206和207的最小值202的位置208的方法如下。使水平方向和垂直方向其中之一上的三次曲线最小值附近的四个点处的SAD值为以沿水平方向或垂直方向其中之一的顺序的S0、S1、S2、和S3,用于计算小数分量u以获得最小值的等式根据图28所示的三个区间Ra、Rb、和Rc的哪一个包括小数精度最小值而不同。
在这种情况下,区间Ra是SAD值S0的位置与SAD值S1的位置之间的间隔。区间Rb是SAD值S1的位置与SAD值S2的位置之间的间隔。区间Rc是SAD值S2的位置与SAD值S3的位置之间的间隔。
当小数精度最小值出现在图28所示的区间Ra中时,通过图29中的(等式E)计算作为从最小值到整数精度最小值的偏移的小数分量u。
类似地,当小数精度最小值出现在图28所示的区间Rb中时,通过图29中的(等式F)计算作为从最小值到整数精度最小值的偏移的小数分量u。
此外,当小数精度最小值出现在图28所示的区间Rc中时,通过图29中的(等式G)计算作为从最小值到整数精度最小值的偏移的小数分量u。
确定图28所示的三个区间Ra、Rb、和Rc中的哪一个包括小数精度最小值如下。
图30A、图30B、图30C、和图30D是辅助说明该确定的示图。首先,如图30A、图30B、和图30C所示,检测整数精度SAD值的最小值Smin以及次小整数精度SAD值Sn2,并且小数精度最小值被测定为整数精度SAD值的检测最小值Smin的位置与次小整数精度SAD值Sn2的位置之间出现的值。接下来,根据图28所示SAD值S0、S1、S2、和S3的位置中的整数精度最小SAD值Smin和次小整数精度SAD值Sn2所占的位置,来确定区间Ra、Rb、和Rc中的哪一个为检测区间。
顺便提及,在整数精度最小SAD值Smin在SAD值的位置处,并位于如图30D所示的四个表元素值末端的情况下,确定不能评估最小位置。在本实施例中,这种情况被视为错误,并且不执行最小值位置的计算。当然,即使在图30D的情况下仍可以计算最小值位置。
如上所述,根据本实施例,可使用其表按比例缩小为1/n2的小尺寸的缩小SAD表来计算原始图像比例的运动矢量。图31示出了在即使使用其表按比例缩小为1/n2的小尺寸的缩小SAD表的情况下也获得了与现有结果基本类似的矢量检测结果。
图31的横轴表示在水平方向和垂直方向其中之一的一维方向上的缩小比例因数。纵轴表示检测运动矢量的误差(矢量误差)。图31中矢量误差的数值表示为像素数。
在图31中,曲线301表示相对于缩小比例因数的矢量误差平均值。曲线302表示相对于缩小比例因数的矢量误差方差σ的3倍值(3σ(99.7%))。曲线303是近似于曲线302的近似曲线。
图31示出了相对于一维方向上的缩小比例因数n的矢量误差。由于SAD表是二维表,因此以缩小比例因数的平方来缩小表的大小(表元素数)。另一方面,矢量误差基本仅线性地增加。所以,可以理解根据本实施例的方法的有用性。
此外,即使缩小比例因数n=64(缩小率为1/64),矢量误差也很小,并且不会出现计算并输出完全不同的运动矢量的错误。因此,可以认为能够将SAD表的大小有效地缩小至1/4096。
此外,如上所述,在用于运动图像的手抖校正中,非常需要实时性能和系统延时的减小,而对于精度,除非检测失败的完全不同的运动矢量,否则可以容忍一定程度的矢量检测误差。因此,可以认为,可以大大缩小SAD表的大小而不会引起错误的本实施例非常有用。
如上所述,本实施例将参考帧102划分为多个区域(在该实例中为16个区域),并检测每个划分区域中的运动矢量(每块运动矢量)205。如上所述,这是因为运动对象包括在帧中的可能性非常大,使得例如在如图32的一个参考帧102内的16个运动矢量205被检测并被统计处理,同时考虑过去帧中这种运动矢量205的改变,从而可以检测一帧的一个整体运动矢量(即,该帧的手抖矢量)。
在这种情况下,如图32所示,在第一检测中,设置具有期望作为搜索范围SR1、SR2、....、和SR16的各个中心检测的16个运动矢量205的基准位置PO1至PO16的搜索范围SR1、SR2、....、和SR16,并在各个搜索范围中假设目标块的射影图像块IB1、IB2、...、和IB16。
然后,设置具有与射影图像块IB1、IB2、...、和IB16相同大小的参考块,在各个搜索范围SR1、SR2、....、和SR16内移动设置的参考块,如上所述生成缩小SAD表,并检测各个搜索范围SR1、SR2、....、和SR16内的运动矢量205。因此,在本实施例中,SAD表TBLi具有缩小SAD表的结构。
然后,如图2所示,在本实施例中,排列在16个搜索范围中对目标块获得的16个缩小SAD表以使其彼此堆叠。将搜索范围内彼此对应的参考块位置(即,缩小SAD表中相同的坐标位置)处的SAD值合计,以获得合计SAD值。然后,生成对于一个搜索范围内多个参考块位置的合计缩小SAD表,作为包括合计SAD值的SAD表。因此,在本实施例中,合计SAD表SUM_TBL具有合计缩小SAD表的结构。
然后,在本实施例中,使用缩小SAD表TBLi、通过将缩小SAD表TBLi用于上述近似内插处理获得的运动矢量205、以及合计SAD表SUM_TBL,来执行如图10和图11所示的可靠性确定处理、获得高可靠性每块运动矢量的目标块的重新合计SAD表RSUM_TBL的生成、以及使用在生成的重新合计SAD表格RSUM_TBL中的最小SAD值和与最小SAD值相邻的多个SAD值的曲线近似内插处理,从而计算高精度的整体运动矢量。
相比于描述为现有方法的专利文献3中描述的计算以图像的缩小变换所产生的大小的运动矢量的方法,根据上述本实施例的使用缩小SAD表的图像处理方法具有以下两个明显不同的优点。
首先,与专利文献3中描述的现有方法不同,根据本实施例的方法完全不需要图像缩小变换的处理。在根据本实施例的方法中,当对参考块计算的SAD值被分配并使其与SAD表(缩小SAD表)相加时,同时执行对应于缩小比例因数的地址变换。
因此,根据本实施例的方法具有以下优点消除了如在专利文献3中描述的现有方法中用于图像缩小变换的逻辑需求、用于将缩小图像存储到存储器中的时间和带宽消耗、以及确保粘贴了缩小图像的存储器中的区域。
如上所述,专利文献3中描述的现有技术的另一重要问题是存在用于在图像缩小变换时去除混叠(折叠失真)和低照度噪声的低通滤波器。即,当缩小图像时,需要在图像通过适当低通滤波器之后对图像进行重新采样。否则会出现不期望的混叠,其大大减小了使用缩小图像计算运动矢量的精度。
理论上已经示出缩小变换中理想低通滤波器的特性是类似于sinc函数的函数。sinc函数本身是具有f/2截止频率的无限抽头(tap)FIR(有限脉冲响应)滤波器,该滤波器可以表示为sin(xπ)/(xπ)。在缩小比例因数1/n处具有理想截止频率f/(2n)的低通滤波器被表示为sin(xπ/n)/(xπ/n)。然而,可以将其认为是sinc函数的一种形式。
图33~图35的上部分别示出了当缩小比例因数为1/2、1/4、和1/8时的sinc函数(低通滤波器的理想特性)的形式。从图33至图35中明显看出,函数随着缩小比例因数的增加在抽头轴的方向上扩展。即,可以认为即使当仅通过主要系数近似无限抽头sinc函数时,也需要增加FIR滤波器的抽头数。
此外,通常已知的在较低频带内实现截止频率的滤波器的抽头数而不是滤波器形式具有对滤波器性能的主导影响。
因此,作为专利文献3中描述的现有方法,使用缩小图像计算运动矢量的方法还包括折中(trade-off),尽管图像的缩小比例因数越大,该方法SAD表的缩小效果越好,但图像的缩小比例因数越大,作为用于生成图像的预处理的滤波器的低通滤波器的成本越高。
通常,当实现高阶抽头FIR滤波器时,操作逻辑的成本与抽头数的平方成比例地增加,因此出现问题;然而,更大的问题在于用于实现垂直滤波器的线路存储器数量的增加。在近年的数码照相机中,随着像素数的增加,执行所谓条纹处理以减小作为像素数的线路存储器的尺寸。即使减小了每条线的尺寸,但是线路存储器本身数目的增加仍会大大增加在物理布局面积方面计算的总成本。
从上面的描述可以理解,专利文献3中描述的现有方法的图像缩小方法尤其在垂直低通滤波器的实现上面临很大障碍。另一方面,根据本实施例的方法以完全不同的方式简单地解决了该问题。
图33~图35的下部示出了根据本实施例的方法中低通滤波器的图像。根据本实施例的方法不包括图像缩小处理。然而,在图33~图35中示出了缩小SAD表生成和操作的处理中低通滤波器的图像。
如图33~图35的下部所示,低通滤波器的特性是简单滤波器的特性,其中,线性近似了sinc函数的主要系数部分,抽头数以与缩小比例因数连动的方式增加。如上所述,与事实相符地,随着截止频率的降低,抽头数对低通滤波器的性能具有更主导的影响。即,本实施例中分配和相加SAD值的处理(例如,根据本实施例的执行线性加权分配和相加的处理)本身等同于通过简单电路实现的与比例因数连动的高性能低通滤波器。
低通滤波器具有另一个优点。专利文献3中描述的现有方法通过使图像经过低通滤波器并重新采样图像来缩小图像。此时,丢失了相当大量的图像信息。即,在低通滤波器的操作中,对图像信息照度值的字长进行四舍五入,然后将其存储在存储器中,并且在缩小之后,大多数图像信息的不重要比特对图像没有影响。
另一方面,根据本实施例的方法使用所有像素照度值的所有比特信息同等地计算SAD值,确定SAD值的分配和相加值,并将该分配和相加值加至缩小SAD表。如果仅增加缩小SAD表中每个表元素值的字长,则可以对最终SAD值输出执行一直不包括四舍五入误差的计算。因为缩小SAD表的面积小于帧存储器的面积,所以增加缩小SAD表的字长不存在大的问题。结果,可以高精度实现缩小SAD表和运动矢量的检测。

接下来,参照附图以图像拾取装置作为实例描述使用根据本实施例的图像图像处理方法的图像处理装置的第一实施例。图1是示出作为根据本发明的图像处理装置实施例的图像拾取装置实例的方框图。
在图1的第一实施例中,将本发明应用于静止图像的手抖校正系统。顺便提及,本发明不限于用于静止图像,本质上也适用于运动图像。在运动图像的情况下,由于实时性能,存在彼此相加的帧数上限。然而,通过将本方法用于每帧,可以相同方法将本实施例应用于生成由高级降噪效应产生的运动图像的系统。
第一实施例将输入图像帧设置为参考帧,并检测输入图像帧与通过将帧存储器中的输入图像帧延迟一帧所获得的图像帧之间的运动矢量。然后,通过将连续拍摄的多个图像(例如,3fps图像)彼此叠加同时进行手抖校正来执行第一实施例中用于静止图像的手抖校正。
因此,第一实施例叠加了多个连续拍摄的图像,同时对拍摄的静止图像进行手抖校正,从而提供了接近于像素精度(一个像素精度)的精度。如上所述,第一实施例不仅检测作为手抖运动矢量的帧之间的水平方向和垂直方向上的平移分量,还检测帧之间的旋转分量。
如图1所示,通过将CPU(中央处理单元)1连接至系统总线2,以及将图像拾取信号处理系统10、用户操作输入单元3、图像存储单元4、记录和再生装置单元5等连接至系统总线2,来形成根据本发明实施例的图像拾取装置。顺便提及,假设在本说明书中,CPU 1包括用于存储执行各种软件处理的程序的ROM(只读存储器)、用于工作区的RAM(随机存取存储器)等。
如稍后将要描述的,响应于通过用户操作输入单元3的图像拾取记录开始操作,图1实例中的图像拾取装置记录拾取的图像数据。此外,响应于用于开始通过用户操作输入单元3执行的再生拾取和记录图像的操作,图1实例中的图像拾取装置再生在记录和再生装置单元5的记录介质上记录的拾取图像数据。
如图1所示,通过具有图像拾取透镜10L的相机光学系统(未示出)以来自对象的入射光照射图像拾取元件11,从而执行图像拾取。在该实例中,由CCD(电荷耦合器件)成像器形成图像拾取元件11。顺便提及,可由CMOS(互补金属氧化物半导体)成像器形成图像拾取元件11。
在该实例的图像拾取装置中,当执行图像拾取和记录开始操作时,根据来自定时信号生成单元12的定时信号执行采样,从而从图像拾取元件11输出作为三原色(即,红色(R)、绿色(G)、和蓝色(B))的Bayer配置中的RAW信号的模拟图像拾取信号。将输出模拟图像拾取信号提供给将执行预处理(例如,缺陷校正、γ校正等)的预处理单元13,然后将结果提供给数据转换单元14。
数据转换单元14将输入至数据转换单元14的模拟图像拾取信号转换为包括照度信号分量Y和色差分量Cb/Cr的数字图像拾取信号(YC数据)。然后,数据转换单元14通过系统总线2将数字图像拾取信号提供给图像存储单元4。
图1实例中的图像存储单元4包括三个帧存储器41、42、和43。首先,将来自数据转换单元14的数字图像拾取信号存储到帧存储器41中。然后,在经过一个帧之后,将存储在帧存储器41中的数字图像拾取信号转移至帧存储器42,并将来自数据转换单元14的新帧的数字图像拾取信号写入帧存储器41。因此,帧存储器42存储在帧存储器41中存储的帧图像之前一个帧的帧图像。
然后,手抖矢量检测单元15通过系统总线2访问两个帧存储器41和42,以读取存储在两个帧存储器41和42中的数据。例如,如上所述,手抖矢量检测单元15执行对一帧生成16个SAD表的处理、检测每块运动矢量的处理、生成合计SAD表的处理、生成重新合计SAD表的处理、以及检测整体运动矢量的处理,并执行计算帧的平移量和旋转角的处理。
在这种情况下,存储在帧存储器42中的帧图像为原始帧的图像,并且存储在帧存储器41中的帧图像为参考帧的图像。顺便提及,实际上,帧存储器41和42轮流作为双缓冲器。
如上所述,第一实施例中的手抖矢量检测单元15在两个或多个阶段中使用缩小SAD表和合计SAD表重复运动矢量检测处理,同时根据需要变窄搜索范围并改变缩小比例因数。
实际上,在检测静止图像的手抖矢量的和手抖校正处理中,对实时性能很少存在严格限制,像素数较大,并且需要检测高精度的运动矢量,因此,多个阶段中的分级运动矢量检测处理非常有效。
第一实施例中的图像存储单元4设置有帧存储器43,用于存储旋转和平移多个帧之后将多个帧相互叠加的结果。如上所述,图像帧叠加在第一基准图像上(参见图3中的图像帧120)。
如图1中虚线所表示的,也将旋转和平移之后叠加有多个帧的第一参考帧的图像数据写至帧存储器43。
在将第二图像帧和后续图像帧存储在帧存储器41中之后,使用存储在帧存储器41中的图像数据,手抖矢量检测单元15检测第二图像帧或后续图像帧与总是在该图像帧之前一个帧的图像之间的相对手抖矢量。此时,结合之前的手抖矢量来计算相对于第一基准图像的手抖矢量。此外,手抖矢量检测单元15检测相对于第一基准图像帧的第二图像帧或后续图像帧的相对旋转角。
手抖矢量检测单元15向CPU 1提供相对于第一图像帧的第二或后续图像帧中的每一个的检测相对手抖矢量以及检测相对旋转角的信息。
在CPU 1的控制下,从帧存储器42中读取存储在帧存储器42中的第二和后续图像,使得消除了相对于第一帧的基准图像的计算相对手抖分量(平移量分量)。然后,将存储在帧存储器42中的第二和后续图像提供给旋转和平移相加单元19。将根据相对手抖分量通过截止(cutout)而去除手抖平移量的第二和后续图像从帧存储器42提供给旋转和平移相加单元19。
根据来自CPU 1的控制信号,旋转和平移相加单元19根据相对于第一基准图像帧的相对旋转角旋转从帧存储器42读取的第二和后续每个图像帧中的每一个,并将第二和后续图像帧中的每一个加至从帧存储器43中读取的图像帧或对图像帧求平均。将作为相加或取平均结果的图像帧写回至帧存储器43。
然后,根据CPU 1的控制指令,帧存储器43中的图像帧数据被截止,以使其具有预定分辨率和预定图像尺寸。将结果提供至分辨率转换单元16。在CPU 1的控制下,根据CPU 1的控制指令,分辨率转换单元16生成并输出具有预定分辨率和预定图像尺寸的图像数据。
NTSC(国家电视系统委员会)编码器18将来自分辨率转换单元16的图像数据(已去除手抖分量)转换为NTSC系统的标准彩色视频信号。将视频信号提供给形成电子取景器的监控显示器6,从而将拍摄的图像显示在监控器的显示屏幕上。
与监控显示并行地,使来自分辨率转换单元16的图像数据(已去除手抖分量)进行编码处理,例如,在编码解码器单元17中的编码调制,然后将其提供给记录和再生装置单元5,以使其记录在记录介质(例如,包括例如DVD(数字通用盘)的光盘、硬盘等)上。
根据通过用户操作输入单元3的再生开始操作,读取记录在记录和再生装置单元5的记录介质上的拾取图像数据,然后将其提供给编码解码器17以进行再生解码。通过NTSC编码器18将再生解码图像数据提供给监控显示器6,从而将再生图像显示在监控显示器6的显示屏幕上。顺便提及,尽管图1中未示出,但可将来自NTSC编码器18的视频信号通过视频输出端向外输出。
上述手抖矢量检测单元15可通过硬件形成或通过使用DSP(数字信号处理器)形成。另外,手抖矢量检测单元15可以是通过CPU1的软件处理。此外,手抖矢量检测单元15可以是硬件、DSP处理、和CPU 1的软件处理的组合。
手抖矢量检测单元15可以仅计算帧与整体运动矢量之间的相对每块运动矢量,并且可以通过CPU 1执行计算相对高精度整体运动矢量、平移量、和旋转角以及计算相对于第一帧的平移量和旋转角。
顺便提及,本实施例中旋转和平移相加单元19可以执行三种帧相加处理方法,即,如稍后描述的“简单相加”、“平均相加”、和“竞赛相加(tournament addition)”。用户操作输入单元3具有选择和指定操作装置(图1中未示出),用于指定三种帧相加处理方法中的一种。CPU 1通过选择和指定操作装置将对应于用户的选择和指定的选择控制信号提供给旋转和平移相加单元19。旋转和平移相加单元19执行由来自CPU 1的选择控制信号指定的三种帧相加处理方法中的帧相加处理方法。
[第一实例]下面将参照图36~图39的流程图描述本实施例中的手抖矢量检测单元15中处理操作流程的第一实例。在第一实例中,根据参考帧的整体运动矢量计算平移量和旋转角。
顺便提及,图36~图39表示对一个参考帧的处理,并对每个帧都执行图36~图39的处理过程。在这种情况下,在对第一参考帧在步骤S31中执行在第一检测中设置搜索范围的处理之后,可以省略对之后参考帧的处理。
下面将描述第一检测。通过将目标块的中心位置设置为各个搜索范围的中心,将上述图32中所示的16个目标块的16个搜索范围的搜索范围偏移设置为零,并将搜索范围设置为本实施例中假设的最大范围(图36中的步骤S31)。
接下来,在对16个目标块分别设置的搜索范围中执行上述计算缩小SAD表和单块运动矢量的处理(步骤S32)。将在后面描述步骤S32的处理流程的细节。
在完成生成16个目标块缩小SAD表之后,在16个缩小SAD表格中,通过图4中所示的(等式3)将在搜索范围中彼此对应的参考块位置处的SAD值合计,从而生成其表具有如缩小SAD表的相同大小的一个搜索范围内的多个参考块位置的合计缩小SAD表(步骤S33)。
接下来,在生成的合计缩小SAD表中检测最小SAD值。使用检测的最小SAD值和临近最小SAD值的多个SAD值,通过执行上述近似曲面内插处理计算合计运动矢量(步骤S34)。
接着,通过步骤S34中计算的合计运动矢量作为基准,基于16个缩小SAD表的SAD值和单块运动矢量,进行图10中所示的条件确定。如上所述,从而对16个目标块每一个的缩小SAD表标记“TOP”、“NEXT_TOP”、“NEAR_TOP”、或“OTHERS”。此外,计算所述参考帧的总分数sum_score。然后,保持标记和计算的总分数sum_score的结果(步骤S35)。顺便提及,此时,对标记“NEAR_TOP”和“OTHERS”的目标块设置中断屏蔽标识(maskflag),中断屏蔽标识表示标记“NEAR_TOP”和“OTHERS”的目标块可靠性较低因此其不被使用。
接下来,基于在步骤S32中计算的16个单块运动矢量进行多数决定(步骤S36)。通过多数决定最大值的单块运动矢量作为基准,基于16个缩小SAD表的SAD值和单块运动矢量进行图10中所示的条件确定。如上所述,从而对16个目标块的每一个的缩小SAD表标记“TOP”、“NEXT_TOP”、“NEAR_TOP”、或“OTHERS”。此外,计算所述参考帧的总分数sum_score。然后,保持标记和计算的总分数sum_score的结果(步骤S37)。
然后,将在步骤S34中计算的合计运动矢量与作为步骤S36中的多数决定处理结果的所检测的多数决定最大值的运动矢量彼此进行比较,以确定在两个运动矢量的缩小SAD表中的坐标位置是否彼此一致或彼此直接相邻(在垂直方向、水平方向、或对角线方向上坐标位置彼此直接相邻)(步骤S38)。
当在步骤S38中确定合计运动矢量与多数决定最大值的运动矢量彼此不一致或彼此不直接相邻时,确定所述参考帧的整体运动矢量不可靠,从将要受到用于静止图像手抖校正的叠加处理的帧中去除所述参考帧,并跳过下面的处理(步骤S39)。然后,处理过程结束。
当在步骤S38中确定合计运动矢量与多数决定最大值的运动矢量彼此一致或彼此直接相邻时,则确定在步骤S35中获得的总分数sum_score是否等于或大于预先设置的预定阈值θth1以及在步骤S37中获得的总分数many_score是否等于或大于预先设置的预定阈值θth2(图37中的步骤S41)。
当在步骤S41中总分数sum_score等于或大于阈值θth1以及总分many_score等于或大于阈值θth2中的一个或两个条件都不满足时,处理进行至步骤S39,其中,从将要受到用于静止图像手抖校正的叠加处理的帧中去除所述参考帧,并跳过下面的处理。然后,处理过程结束。
当在步骤S41中均满足总分数sum_score等于或大于阈值θth1以及总分数many_score等于或大于阈值θth2的两个条件时,仅使用对应于目标块并在步骤S35中标记的SAD表中给出“TOP”和“NEXT_TOP”标记的SAD表的SAD值重新计算合计SAD值,并重新计算合计缩小SAD表(步骤S42)。
然后,使用最小SAD值的坐标位置以及通过重新计算获得的重新合计SAD表中与最小SAD值的坐标位置相邻的坐标位置处的SAD值,执行近似曲面内插的处理(步骤S43)。在该实例中,使用上面参照图20A所述的3×3的矩形区域中的表元素,执行步骤S43中的近似曲面内插处理。
然后,作为近似曲面内插处理结果检测的运动矢量被确保为将在第二检测中用于设置范围偏移的整体运动矢量(步骤S44)。
接下来,手抖校正检测单元15继续执行图38和图39中所示的第二检测。
如图12B中所示,将16个目标块的16个搜索范围设置为在第一检测中获得并在在步骤S39中保持的整体运动矢量的位置偏移(即,通过平移量)作为其中心的范围,并且该范围小于第一检测中的范围(图38中的步骤S51)。
接下来,在分别为16个目标块设置的搜索范围中执行上述计算缩小SAD表和单块运动矢量的处理(步骤S52)。
在步骤S52中完成多个目标块的缩小SAD表的生成之后,在具有标记“TOP”和“NEXT_TOP”的目标块的缩小SAD表中,通过图4所示的(等式3)合计搜索范围中彼此对应的参考块位置处的SAD值,去除第一检测中设置有中断屏蔽标识的目标块,从而生成其表格具有与缩小SAD表相同的大小的一个搜索范围内的多个参考块位置的合计缩小SAD表(步骤S53)。顺便提及,去除在第一检测中设置中断屏蔽标识的目标块,可以仅对具有“TOP”和“NEXT_TOP”标记的目标块执行步骤S52中计算缩小SAD表和单块运动矢量的处理。
接下来,在步骤S53中生成在合计缩小SAD表中检测的最小SAD值。使用检测的最小SAD值和与最小SAD值相邻的多个SAD值,通过执行上述近似曲面内插处理计算小数精度合计运动矢量(步骤S54)。
接下来,通过将在步骤S54中计算的合计运动矢量作为基准,基于在第一检测中未设置中断屏蔽标识的目标块的缩小SAD表的SAD值和单块运动矢量,进行图10中所示的条件确定。如上所述,从而对上述每个目标块的缩小SAD表标记“TOP”、“NEXT_TOP”、“NEAR_TOP”、或“OTHERS”。此外,重新计算所述参考帧的总分数sum_score。然后,保持标记和计算总分sum_score的结果(步骤S55)。顺便提及,同样在此时,对新标记了“NEAR_TOP”和“OTHERS”的目标块设置中断屏蔽标识,中断屏蔽标识表示标记了“NEAR_TOP”和“OTHERS”的目标块的可靠性很低,因此将不会使用该目标块。
接下来,基于步骤S52中所计算的单块运动矢量中的在第一检测中未设置中断屏蔽标识的目标块的单块运动矢量进行多数决定(步骤S56)。通过将作为多数决定结构的多数决定最大值的单块运动矢量作为基准,基于未设置中断屏蔽标识的目标块的缩小SAD表的SAD值和单块运动矢量,进行图10中所示的条件确定。如上所述,从而为上述每个目标块的缩小SAD表标记“TOP”、“NEXT_TOP”、“NEAR_TOP”、或“OTHERS”。此外,计算所述参考帧的总分数many_score。保持标记和计算的总分数many_score的结果(步骤S57)。
然后,将在步骤S54中计算的合计运动矢量与作为步骤S56中多数决定处理结果检测的多数决定最大值的运动矢量彼此进行比较,以确定两个运动矢量在缩小SAD表中的坐标位置是否彼此一致或彼此直接相邻(在垂直方向、水平方向、或对角线方向上坐标位置彼此直接相邻)(步骤S58)。
当在步骤S58中确定合计运动矢量与多数决定最大值的运动矢量彼此不一致或彼此不直接邻近时,确定所述参考帧的整体运动矢量不可靠,从将用于静止图像手抖校正的叠加处理的帧中去除所述参考帧,并且跳过下面的处理(步骤S59)。然后,处理过程结束。
当在步骤S58中确定合计运动矢量与多数决定最大值的运动矢量彼此一致或彼此直接邻近时,确定在步骤S55中获得的总分数sum_score是否等于或大于预先设置的预定阈值θth3以及在步骤S57中获得的总分数many_score是否等于或大于预先设置的预定阈值θth4(图39中的步骤S61)。
当在步骤S61中总分数sum_score等于或大于阈值θth3以及总分数many score等于或大于阈值θth4中的一个或两个条件都不满足时,处理进行至步骤S59,其中,从将用于静止图像手抖校正的叠加处理的帧中去除所述参考帧,并跳过下面的处理。然后,处理过程结束。
当在步骤S61中均满足总分数sum_score等于或大于阈值θth3以及总分数many_score等于或大于阈值θth4的两个条件时,仅使用对应于目标块并在步骤S55中标记的SAD表中给出“TOP”和“NEXT_TOP”标记的SAD表的SAD值重新计算合计SAD值,并重新计算合计缩小SAD表(步骤S62)。
然后,使用最小SAD值的坐标位置以及通过重新计算获得的重新合计SAD表中与最小SAD值的坐标位置相邻的坐标位置处的SAD值,执行近似曲面内插的处理,并计算和保持作为整体运动矢量的合计运动矢量(步骤S63)。在该实例中,使用上面参照图20A所述的3×3的矩形区域中的表元素,执行步骤S63中近似曲面内插处理。
然后,基于计算的合计运动矢量,确定相对于紧前帧的所述帧的静止图像的相对平移量,并通过相加确定的平移量来计算所述帧相对于第一帧的平移量(步骤S64)。
接下来,将相对于紧前帧的所述帧的静止图像的相对旋转角计算为对紧前帧类似检测并保持的合计运动矢量与合计运动矢量在步骤S63中检测的所述帧的合计运动矢量之间的旋转角,并通过相加计算的旋转角计算所述帧相对于第一帧的旋转角(步骤S65)。
通过完成上述处理,手抖矢量检测单元15结束由于手抖所引起的以帧为单元计算平移量和旋转角的处理,然后,将作为计算结果的平移量和旋转角提供给CPU1。然后,使用作为计算结果的平移量和旋转角,旋转和平移相加单元19将所述帧叠加在第一帧上。
顺便提及,在之前的描述中,在步骤S64和步骤S65中还计算相对于第一帧的平移量和旋转角。然而,可在步骤S64和步骤S65中执行仅相对于紧前帧的相对平移量和相对旋转角的计算,并且CPU1可计算相对于第一帧的平移量和旋转角。
当已经完成上述处理时,手抖矢量检测单元15中对一个参考帧的处理操作结束。
顺便提及,图36和图37的流程图中以及图38和图39的流程图中的步骤S31至步骤S34的处理以及步骤S51至步骤S54的处理可以由手抖矢量检测单元15执行,以及随后的处理可由CPU1通过软件执行。
此外,在检测手抖矢量(整体运动矢量)的过程中,可将上述确保整体运动矢量的处理方法与现有提议的从时间轴方向上的运动矢量的频率预测整体运动矢量的方法彼此组合,以进一步改进可靠性和精度。
此外,在上述实例中,仅使用在步骤S35或步骤S55中标记块中给出“TOP”和“NEXT_TOP”标记的块的缩小SAD表的SAD值生成重新合计SAD表。然而,可仅使用在步骤S37或步骤S57中标记块中给出“TOP”和“NEXT_TOP”标记的块的缩小SAD表的SAD值生成重新合计SAD表。此外,可使用在步骤S35或步骤S55以及步骤S37或步骤S57中标记块中给出“TOP”和“NEXT_TOP”标记的块的缩小SAD表的SAD值生成重新合计SAD表。
此外,在上述实例中,对应于对单块运动矢量给出的标记的总分数sum_score和总分数many_score被用作用于确定计算运动矢量的参考帧的整体运动矢量评估的一个标准。然而,代替总分数,可将给出“TOP”和“NEXT_TOP”标记的单块运动矢量的数目是否等于或大于预定阈值用作确定评估的标准,因此当具有“TOP”和“NEXT_TOP”标记的单块运动矢量数等于或大于预定阈值时,确定对整体运动矢量给出高评估值。
下面将参照图40~图42的流程图描述本实施例中手抖矢量检测单元15中的处理操作流程的第二实例。在第二实例中,仅使用参考帧的单块运动矢量中高可靠性的单块运动矢量,通过上面参照图5~图8E描述的方法来计算参考帧的平移量和旋转角。
图40~图42的处理同样是对于一个参考帧的处理,并且对每个参考帧执行图40~图42的处理过程。在这种情况下,在对一个参考帧执行了步骤S71中的在第一检测中设置搜索范围的处理之后,可以身略对之后参考帧的处理。
下面将描述第一检测。通过将目标块的中心位置设置为各个搜索范围的中心,将如上述图32所示的16个目标块的16个搜索范围的搜索范围偏移设置为零,并将搜索范围设置为本实施例中假设的最大范围(图40中的步骤S71)。
接下来,在分别对16个目标块设置的搜索范围中执行上述计算缩小SAD表和单块运动矢量的处理(步骤S72)。稍后将描述步骤S72处理流程的细节。
在完成对16个目标块生成缩小SAD表之后,在16个缩小SAD表中,通过图4所示的(等式3)合计搜索范围中彼此对应的参考块位置处的SAD值,从而,生成其表与缩小SAD表具有相同大小的一个搜索范围内的多个参考块位置的合计缩小SAD表(步骤S73)。
接下来,在生成的合计缩小SAD表中检测最小SAD值。使用检测的最小SAD值和相邻最小SAD值的多个SAD值,通过执行上述近似曲面内插处理来计算合计运动矢量(步骤S74)。
接下来,通过将在步骤S74中计算的合计运动矢量作为基准,基于16个缩小SAD表的SAD值和单块运动矢量,进行图10中所示的条件确定。如上所述,从而对16个目标块每一个的缩小SAD表标记“TOP”、“NEXT_TOP”、“NEAR_TOP”、或“OTHERS”。此时,对标记有NEAR_TOP”和“OTHERS”的目标块设置中断屏蔽标识,中断屏蔽标识表示标记有“NEAR_TOP”和“OTHERS”的目标块是低可靠性的,因此其不被使用(步骤S75)。
接下来,确定给出“TOP”标记的目标块的数目是否小于预先设置的预定阈值θth5(步骤S76)。当确定给出“TOP”标记的目标块的数目小于阈值θth5时,确定给出“NEXT_TOP”标记的目标块的数目是否小于预先设置的预定阈值θth6(步骤S77)。
当在步骤S77中确定给出“NEXT_TOP”标记的目标块的数目小于阈值θth6时,从将用于静止图像手抖校正的叠加处理的帧中去除所述参考帧,并跳过下面的处理(步骤S78)。然后,处理过程结束。
当在步骤S76中确定给出“TOP”标记的目标块的数目等于或大于阈值θth5时,或者当在步骤S77中确定给出“NEXT TOP”标记的目标块的数目等于或大于阈值θth6时,对标记有“TOP”和“NEXT_TOP”的目标块(未设置中断屏蔽标识)的缩小SAD表执行之前参照图17、图20A和图20B、图23A和图23B、或图27A和图27B描述的近似曲面内插处理,从而计算高精度(小数精度)的单块运动矢量(步骤S79)。
接下来,如上面参照图5和图6所描述的,仅使用在步骤S79中计算的高可靠单块运动矢量来计算相对于之前帧的所述帧的平移量(步骤S80)。步骤中计算的平移量对应于之前第一实例中的整体运动矢量。该平移量被用于设置第二检测中的搜索范围偏移。因此,第一检测处理结束。
接下来,手抖校正检测单元15继续执行图41和图42中所示的第二检测。
如图12B所示,将16个目标块的16个搜索范围设置为具有将步骤S80中第一检测中获得并保持的平移量的偏移作为其中心的范围,该范围窄于第一检测的范围(图4 1中的步骤S81)。
接下来,在分别对16个目标块设置的搜索范围中执行上述计算缩小SAD表和单块运动矢量的处理(步骤S82)。
在完成步骤S82中对多个目标块生成缩小SAD表之后,在具有标记“TOP”和“NEXT_TOP”的目标块的缩小SAD表(去除第一检测中设置中断屏蔽标识的目标块)中,通过图4中所示的(等式3)合计搜索范围中彼此对应的参考块位置处的SAD值,从而生成其表与缩小SAD表具有相同大小的一个搜索范围内的多个参考块位置的合计缩小SAD表(步骤S83)。顺便提及,去除第一检测中设置中断屏蔽标识的目标块,可以仅对具有“TOP”和“NEXT_TOP”标记的目标块执行步骤S82中的缩小SAD表和单块运动矢量的计算处理。
接下来,在步骤S83中生成的合计缩小SAD表中检测最小SAD值。使用检测的最小SAD值和与最小SAD值相邻的多个SAD值,通过执行上述近似曲面内插处理计算小数精度合计运动矢量(步骤S84)。
接下来,通过将步骤S84中计算的合计运动矢量作为基准,基于第一检测中未设置中断屏蔽标识的目标块的缩小SAD表的SAD值和单块运动矢量,进行图10中所示的条件确定。由此,如上所述,对上述每个目标块的缩小SAD表标记“TOP”、“NEXT_TOP”、“NEAR_TOP”、或“OTHERS”。此外,对标记“NEAR_TOP”和“OTHERS”的目标块设置中断屏蔽标识,中断屏蔽标识表示标记“NEAR_TOP”和“OTHERS”的目标块的可靠性很低,因此其将不被使用(步骤S85)。
接下来,确定未设置中断屏蔽标识的目标块的数目是否小于预先设置的预定阈值θth7(步骤S86)。当未设置中断屏蔽标识的目标块的数目小于预定阈值θth7时,从将用于静止图像手抖校正的叠加处理的帧中去除所述参考帧,并跳过下面的处理(步骤S87)。然后,处理过程结束。
当在步骤S86中确定未设置中断屏蔽标识的目标块的数目等于或大于预先设置确定的预定阈值θth7时,对标记“TOP”和“NEXT_TOP”的目标块(未对块设置中断屏蔽标识)的缩小SAD表执行之前参照图17、图20A和图20B、图23A和图23B、或图27A和图27B所述的近似曲面内插处理,从而计算高精度(小数精度)单块运动矢量(步骤S88)。
接下来,如之前参照图5和图6所述,仅使用在步骤S88中计算的高可靠单块运动矢量计算相对于之前帧的所述帧的平移量(α,β)(图42中的步骤S91)。
此外,如之前参照图6~图8E所述,仅使用在步骤S88中计算的高可靠单块运动矢量计算相对于之前帧的所述帧的旋转角(γ)(步骤S92)。
接下来,基于在步骤S91中获得的平移量(α,β)以及在步骤S92中获得的旋转角(γ),计算每个目标块的理想单块运动矢量。计算理想单块运动矢量与实际对各个目标块计算的单块运动矢量Vi之间的误差ERRi,并计算误差的总和∑ERRi(步骤S93)。可通过图43中的(等式H)计算误差的总和ERRi。误差的总和∑ERRi是所述帧的误差的总和。
顺便提及,如之前关于(等式6)所述,确认由多个对象的手抖分量所产生的旋转角的测量值很低,使得对于旋转矩阵R,cosγ≈1且sinγ≈γ。因此,可如图43所示表示误差ERRi。
接下来,确定在步骤S93中计算的误差总和ΣERRi是否小于预先设置的预定阈值θth8(步骤S94)。当确定总和不小于预定阈值θth8时,对在步骤S93中计算了误差的每个目标块的具有单块运动矢量Vi的误差ERRi最大值的目标块设置中断屏蔽标识(步骤S95)。
然后,在步骤S95之后,处理返回图41中的步骤S83,其中,在去除设置中断屏蔽标识的目标块的目标块的缩小SAD表中,通过图4中所示的(等式3)合计搜索范围中彼此对应的参考块位置处的SAD值,从而生成其表与缩小SAD表具有相同大小的一个搜索范围内的多个参考块位置的合计缩小SAD表。然后,重复步骤S84以下的处理。
当在步骤S94中确定在步骤S93中计算的误差总和∑ERRi小于预定阈值θth8时,将步骤S91和步骤S92中计算的平移量(α,β)和旋转角(γ)设置为手抖分量。然后,第二检测处理结束。
然后,手抖矢量检测单元15将作为计算结果的平移量和旋转角提供给CPU1。CPU1根据作为接收的计算结果的平移量和旋转角计算相对于第一帧的平移量和旋转角。CPU1将平移量和旋转角发送至旋转和平移相加单元19。然后,旋转和平移相加单元19使用接收到的平移量和旋转角执行叠加在第一帧上的处理。
顺便提及,同样在第二实例中,手抖矢量检测单元15可计算相对于第一帧的平移量和旋转角。
此外,同样在该实例中,可通过手抖矢量检测单元15执行图40中的步骤S71~步骤S74的处理以及图41中的步骤S81~步骤S84的处理,以及可通过CPU1利用软件执行随后的处理。
此外,在上述实例中,将合计运动矢量用作整体运动矢量,以确定单块运动矢量的可靠性。然而,可将多数决定最大值的运动矢量用作基准。
顺便提及,可在第一检测中使用上述图35中表示的第一实例的方法,以基于作为整体运动矢量的合计运动矢量设置第二检测的搜索范围偏移,并且可将图41和图42中表示的第二实例的方法用在第二检测中。
即,由于基本上不能期望第一检测中的每个单块运动矢量都具有很高的精度,所以可基于从对具有标记“TOP”和“NEXT_TOP”的对象块的块匹配的结果中获得的整体运动矢量确定第二检测的搜索范围的偏移,而不使用之前参照图5和图6描述的获得平移量的方法。
通常,当手抖包括旋转分量时,上面参照图5和图6描述的方法与以高精度计算手抖的平移分量的方法同样有效。然而,本方法的最佳使用是第二或之后的检测中进行,其中,获得高精度单块运动矢量。
顺便提及,优于在第一检测之后基于整体运动矢量或平移量设置第二检测的搜索范围偏移,在第一检测之后还可以计算整体运动矢量与之前帧的整体运动矢量之间的旋转角或通过上面参照图7A~图8E描述的旋转角计算方法获得的旋转角,使得在还考虑旋转角的情况下为每个目标块独立地设置了第二检测的搜索范围偏移。在这种情况下,可以更多地限制搜索范围,因此,可以期望精度和处理速度的改进。
在上面的描述中,在第一检测和第二检测中,将接近合计运动矢量的单块运动矢量视为有效的单块运动矢量。然而,在第二检测中,可将除在第一检测中设置中断屏蔽标识的目标块之外的所有目标块的单块运动矢量视为有效的单块运动矢量。这是因为第二检测提供了具有高精度的单块运动矢量,并且甚至可以检测手抖的旋转分量,因此,这些单块运动矢量不需要与平均合计运动矢量类似。
上述手抖矢量检测处理对静止图像是非常有效的,这是因为在静止图像的情况下,与运动图像相比,提供了充足的处理时间但要求较高的精度。为了更高的精度,代替上述两次检测,可以执行三次或更多次检测。在这种情况下,在最后一次检测之前执行具有搜索偏移的搜索范围的缩小、以及对高可靠单块运动矢量的搜索,并在最后的检测中,例如,如图41和图42所示计算平移量和旋转角。
下面将对图36中的步骤S32、图38中的步骤S52、图40中的步骤S72、以及图41中的步骤S82中用于生成缩小SAD表以及计算每个目标块中单块运动矢量的处理过程实例进行描述。
<第一实例>
图44和图45示出了步骤S32、S52、S73、和S83中用于计算缩小SAD表和每个目标块中单块运动矢量的处理过程的第一实例。
首先,指定对应于上述图32中所示的搜索范围SR内的一个参考块位置的参考矢量(vx,vy)。如上所述,当帧中的目标块的位置(搜索范围的中心位置)设置为基准位置(0,0)时,(vx,vy)表示由指定参考矢量所表示的位置。vx是水平方向上指定参考矢量距离基准位置的位移量分量。yx是垂直方向上指定参考矢量距离基准位置的位移量分量。与上述现有实例,位移量vx和vy是以像素为单位的值。
通过将搜索范围的中心位置作为基准位置(0,0),当通过±Rx限定水平方向上的搜索范围,并通过±Ry限定垂直方向上的搜索范围时,可将搜索范围表示为-Rx≤vx≤+Rx,-Ry≤vy≤+Ry接下来,指定目标块Io内一个像素的坐标(x,y)(步骤S102)。接着,如上述(等式1)所示计算目标块内指定坐标(x,y)处的像素值Io(x,y)与参考块Ii内相应位置处的像素值Ii(x+vx,y+vy)之间的差分绝对值α(步骤S103)。
然后,在由参考块Ii的参考矢量(vx,vy)表示的地址(表格元素)处将计算的差分绝对值α与先前SAD值进行相加,并将相加所得的SAD值写回至该地址(步骤S104)。即,使SAD(vx,vy)为对应于参考矢量(vx,vy)的SAD值,通过上述(等式2)计算该SAD值,即,SAD(vx,vy)=∑α=∑|Io(x,y)-Ii(x+vx,y+vy)|......(2)然后,将该SAD值写入由参考矢量(vx,vy)表示的地址。
接下来,确定是否已经对目标块Io内的所有坐标(x,y)处的像素执行了步骤S102~步骤S104中的上述操作(步骤S105)。当确定还未对目标块Io内的所有坐标(x,y)处的像素完成操作时,处理返回到步骤S102,以指定目标块Io内下个坐标(x,y)处的像素,并且重复步骤S102以下的处理。
步骤S101~S105的上述处理与图73的流程图中步骤S1~S5的处理完全相同。
在本实施例中,当在步骤S105中确定已经对目标块Io内的所有坐标(x,y)处的像素执行了上述操作时,将缩小率设置为1/n,并且计算通过将参考矢量(vx,vy)缩小至1/n所获得的参考缩小矢量(vx/n,vy/n)(步骤S106)。
接下来,检测与参考缩小矢量(vx/n,vy/n)相邻的多个参考矢量(如上所述在该实例中为四个相邻参考矢量)(步骤S107)。然后,如上所述,基于由参考缩小矢量表示的位置与分别由相邻参考矢量表示的位置之间的关系,根据在步骤S104中获得的SAD值将作为对应于四个检测相邻参考矢量的表元素的分配和相加值计算为线性加权分布值(步骤S108)。然后,将获得的四个线性加权分布值分别与对应于相邻参考矢量的SAD表元素的值相加(步骤S109)。
当步骤S109完成时,确定是否完成关注参考块的SAD值的计算。然后,确定是否对所有参考块,即,搜索范围内的所有参考矢量(vx,vy)完成了步骤S101至步骤S109中的上述操作处理(图45中的步骤S111)。
当在步骤S111中确定存在还未完成上述操作处理的参考矢量(vx,vy)时,处理返回到步骤S101,以设置未完成上述操作处理的下个参考矢量(vx,vy),并重复步骤S101以下的处理。
然后,当在步骤S111中确定搜索范围内不存在还未完成上述操作处理的参考矢量(vx,vy)时,确定完成缩小SAD表。在完成的缩小SAD表中检测最小SAD值(步骤S112)。
接下来,使用在表元素地址(mx,my)处的最小SAD值(最小值)以及多个相邻表元素(如上所述在该实例中为15个相邻表格素)的SAD值生成二次曲面(步骤S113)。计算表示对应于二次曲面的最小SAD值的小数精度位置的最小值矢量(px,py)(步骤S114)。该最小值矢量(px,py)对应于小数精度最小值表元素地址。
然后,通过将表示小数精度位置的计算最小值矢量(px,py)与n相乘,计算将要获得的运动矢量(px×n,py×n)(步骤S115)。
因此,结束本实施例中对一个目标块的通过块匹配执行的运动矢量检测的处理。在计算为一个帧设置的多个目标块(该情况下为16个目标块)的缩小SAD表和运动矢量的情况下,每次对象目标块改变都要重新设置搜索范围和缩小比例因数1/n,并对每个划分区域重复图44和图45中所示的上述处理。
顺便提及,不必说明,可将上述使用水平方向和垂直方向上的二次曲线的方法用作用于计算表示小数精度位置的最小值矢量(px,py)的方法。
顺便提及,可通过手抖矢量检测单元15执行图44和图45中的步骤S101至S111的处理,并且可由CPU1通过软件执行随后的处理。
<第二实例>
在之前的第一实例中,为一个参考块(参考矢量)获得SAD值,根据SAD值获得相邻于参考缩小矢量的多个参考矢量的分配和相加值,并且执行分配和相加处理。
另一方面,在第二实例中,当已经检测到参考块内的每个像素与目标块中的像素之间的差时,根据差分值获得与参考缩小矢量相邻的多个参考矢量的分配和相加值(差分值而不是SAD值),并执行分配和相加所获得差分值的处理。根据第二实例,当对一个参考块内的所有像素完成差分操作时,生成缩小SAD表。
图46和图47是根据第二实例的运动矢量检测处理的流程图。
图46中步骤S121~步骤S123的处理与图44中步骤S101~步骤S103的处理完全相同,因此将省略其详细描述。
在第二实例中,在步骤S123中计算参考块与目标块之间坐标(x,y)处像素的差分值α之后,将缩小比例因数设置为1/n,并且计算通过将参考矢量(vx,vy)缩小至1/n所获得的参考缩小矢量(vx/n,vy/n)(步骤S124)。
接下来,检测与参考缩小矢量(vx/n,vy/n)相邻的多个参考矢量(如上所述在本实例中为四个相邻参考矢量)(步骤S125)。然后,如上所述,基于由参考缩小矢量表示的位置与分别由相邻参考矢量表示的位置之间的关系,根据在步骤S123中获得的差分值α将作为对应于四个检测相邻参考矢量的表元素的分配和相加差分值作为线性加权分布值(差分值)(步骤S126)。
然后,将获得的四个线性加权分布值分别与对应于相邻参考矢量的表元素的值相加(步骤S127)。
在步骤S127完成之后,确定是否已经对目标块Io内的所有坐标(x,y)处的像素执行了步骤S122~步骤S127中的上述操作(步骤S128)。当确定还未对目标块Io内的所有坐标(x,y)处的像素完成操作时,处理返回到步骤S122,以指定目标块Io内下个坐标(x,y)处的像素位置,并重复步骤S122以下的处理。
当在步骤S128中确定已经对目标块Io内的所有坐标(x,y)处的像素执行了上述操作时,确定是否完成对关注参考块的SAD值的计算。然后,确定是否已经对搜索范围内所有参考块(即,所有参考矢量(vx,vy))完成了上述操作处理(图47中的步骤S131)。
当在步骤S131中确定存在还没有执行上述操作处理的参考矢量(vx,vy)时,处理返回到步骤S121,以对没有完成上述操作处理的参考矢量设置下个参考矢量(vx,vy),并重复步骤S121以下的处理。
然后,当在步骤S121中确定在搜索范围内不存在还未完成上述操作处理的参考矢量(vx,vy)时,确定完成缩小SAD表。在完成的缩小表中检测最小SAD值(步骤S132)。
接下来,使用表元素地址(mx,my)处的最小SAD值(最小值)以及多个相邻表元素(如上所述在该实例中为15个相邻表元素)的SAD值,生成二次曲面(步骤S133)。计算表示对应于二次曲面最小SAD值的小数精度位置的最小值矢量(px,py)(步骤S134)。该最小值矢量(px,py)对应于小数精度最小值表元素地址。
然后,通过将表示小数精度位置的计算最小值矢量(px,py)与n相乘,计算将要获得的运动矢量(px×n,py×n)(步骤S135)。
因此,结束第二实例中对一个目标块通过块匹配进行运动矢量检测的处理。在计算为一个帧设置的缩小SAD表和多个目标块(或该情况下为16个目标块)的运动矢量的情况下,每次改变对象目标块都要重新设置搜索范围和缩小比例因数1/n,并对每个划分区域重复图46和图47中所示的上述处理。
顺便提及,不必说明,可将上述使用水平方向和垂直方向上的二次曲线的方法用作用于计算表示小数精度位置的最小值矢量(px,py)的方法。
顺便提及,可通过手抖矢量检测单元15执行图46和图47中的步骤S121~S131的处理,并可由CPU1通过软件执行随后的处理。
<第三实例>
如图31所示,在使用根据本发明实施例的运动矢量检测方法的情况下,即使当参考矢量的缩小比例因数为1/64时,也不会出现输出完全不同的运动矢量的失效。因此,可有效地将SAD表的大小缩小至1/4096。
具体地,准备缩小至1/4096的缩小SAD表,并且以1/64的缩小比例因数计算第一检测中的运动矢量。接下来,通过将在第一检测中检测的运动矢量表示的位置作为搜索范围的中心来缩小搜索范围,并且以例如低于第一检测中的缩小比例因数的1/8的缩小比例因数执行第二检测。即,当使得第一检测与第二检测的缩小比例因数彼此不同时,设置第二检测的缩小比例因数,使其落入第一检测的矢量误差范围内,可以以很高的精度检测运动矢量。
下面将参照图48~图51的流程图描述第三实例中的运动矢量检测处理。
图48~图51中所示的第三实例使用上述第一实例作为基本运动矢量检测处理。因此,图48中的处理步骤S141~S149以及图49中的处理步骤S151~S155与图44中的处理步骤S101~S109以及图45中的处理步骤S111~S115完全相同。
在第三实例中,替代在图49的步骤S155中当计算运动矢量时结束处理,而是使用在步骤S155中计算的运动矢量作为第一检测的运动矢量,在下面的步骤S156中,基于在第一检测中计算的运动矢量,将搜索范围缩小至相同的参考帧内,并且将参考矢量的缩小比例因数改变为小于第一检测的缩小比例因数1/na的缩小比例因数1/nb(其中na>nb)。
具体地,如图52所示,当在第一处理中设置的搜索范围SR_1中计算目标块TB的运动矢量BLK_Vi时,可以根据计算的运动矢量BLK_Vi粗略地检测其中存在参考帧与原始帧之间相关性的块范围。因此,如图52的下部所示,可将具有其间存在参考帧与原始帧之间相关性的块范围作为中心的更窄搜索范围设置为第二检测中的搜索范围SR_2。在这种情况下,如图52所示,第一处理中搜索范围SR_1的中心位置Poi_1与第二处理中搜索范围SR_2的中心位置Poi_2之间的位移(搜索范围偏移)对应于第一处理中检测的运动矢量BLK_Vi。
此外,在本实施例中,使第二检测中参考块的缩小比例因数小于第一检测中的缩小比例因数。因此,期望可以更小的误差在第二检测中检测运动矢量。
在步骤S156中如此设置教窄的搜索范围和新的缩小比例因数之后,在步骤S157和S158、图50中的步骤S161~S168、以及图51中的步骤S171~174中,以与第一检测中完全相同的方式执行第二检测的运动矢量检测处理。这些步骤的处理与图44中的处理步骤S101~109以及与图45中的处理步骤S111~115完全相同。
因此,最终在步骤S174中获得作为第二检测的运动矢量的预期单块运动矢量。
以上实例使用上述第一实例作为单块运动矢量检测方法,并且在第二阶段中重复该方法。然而,当然可以在第二和之后的阶段中重复该方法,同时进一步缩小搜索范围并根据需要改变缩小比例因数。
此外,不必说明,可替代前述第一实例将前述第二实例用作单块运动矢量检测方法。此外,在前述实例中,可将上述使用水平方向和垂直方向上三次曲面的方法用作用于计算表示小数精度位置的最小值矢量(px,py)的方法。
顺便提及,可通过手抖矢量检测单元15执行图48~图51的流程图中步骤S141~步骤S148的处理,并且可通过CPU1执行随后的处理。
在以静止图像的帧为单位由此获得由手抖引起的平移分量(帧的平移量)和旋转分量(帧的旋转角)之后,旋转和平移相加单元19执行相加(叠加)处理。
在本实施例中,如上所述,为了使得用户对用户期望的各种对象执行所谓的绘画(picture making),在该实例中,在图像拾取装置中预先准备三种相加方法,使得用户可以通过经由用户操作输入单元3执行选择操作,根据预期的绘画从三种相加方法中选择相加方法。
注意,如上所述,为了描述简单仅将本实施例应用于静止图像的对象,但本实施例本质上还可应用于运动图像。在运动图像的情况下,由于实时性能,所以存在相加的帧数上限。然而,通过将本实施例的方法应用于每个帧,本实施例可应用有生成由高级降噪效果所产生的运动图像的系统的相同装置。
在本实施例中,对图1实例中的图像拾取装置的旋转和平移相加单元19进行配置,使得可以选择性地实现作为相加(叠加)方法的三种方法,即,简单相加法、平均相加法、和竞赛相加法。下面将顺序描述该方法的细节。顺便提及,在本实施例中,例如,要被叠加的图像帧数为八。
图53是在简单相加法的情况下考虑旋转和平移相加单元19与图像存储器4之间关系的框图。在这种情况下,旋转和平移相加单元19具有旋转和平移处理单元191、增益放大器192和193、以及相加器194。
如上所述,图像存储器4中的帧存储器43存储相加后的图像帧Fm。然而,当顺序输入图像帧时,将第一图像帧F1作为基准,因此,直接将第一帧F1写入帧存储器43中。另一方面,将第二和之后的图像帧Fj(j=2、3、4...)存储在图像存储器4的帧存储器42中,然后将其提供给旋转和平移相加单元19。顺便提及,由于需要对允许位移量(对应于平移量(α,β)和旋转角(γ))的图像帧的相加结果假设图像帧尺寸,所以至少图像存储器4中的帧存储器43具有大于一帧区域所允许的位移量(对应于平移量(α,β)和旋转角(γ))的区域。
从CPU1接收相对于第一图像帧F1的第二或之后的图像帧Fj的关于平移量(α,β)和旋转角(γ)的信息,旋转和平移处理单元191平移并旋转第二或之后的图像帧Fj。通过以相对于第一图像帧F1取消相对手抖的方式从帧存储器42中读取第二或之后的图像帧Fj,旋转和平移处理单元191平移并旋转第二或之后的图像帧Fj。
具体地,旋转和平移处理单元191根据来自CPU1的关于图像帧Fj相对于第一图像帧的平移量(α,β)和旋转角(γ)的信息计算像素将被叠加在存储器43的第一图像帧或相加之后的图像帧Fm中的像素之上的来自帧存储器42的第二或之后的图像帧Fj中的像素地址。旋转和平移处理单元191从帧存储器42的地址中读取图像帧Fj的像素数据,该地址为计算结果。
顺便提及,在本实施例中,当相加来自帧存储器42的第二和之后的图像帧时,将写入第一图像帧的地址位置处的像素数据顺序从帧存储器43中读出。然后,旋转和平移处理单元191对第二或之后的图像帧顺序计算帧存储器42中的像素地址,该像素地址对应于帧存储器43中读取地址位置。
增益放大器192将增益(乘法系数)w1与来自旋转和平移处理单元191的平移和旋转的第二或之后的帧图像Fj的每片像素数据(照度信号分量和色差分量)相乘。增益放大器192将结果提供给加法器194。增益放大器193将增益(乘法因数)w2与来自帧存储器43的第一图像帧或相加后的图像帧Fm的每片像素数据相乘。增益放大器193将结果提供给加法器194。
加法器194将相加后的图像帧Fm的每片像素数据写回(重写)到帧存储器43中的相同地址。
在本实施例中,增益放大器192对于读取的第二或之后的图像帧Fj(称作相加图像)的像素数据的增益w1始终为w1=1。
另一方面,增益放大器193对于来自帧存储器43的第一图像帧或作为相加结果的图像帧Fj(称作相加图像)的像素数据的增益w2在第二或之后的图像帧Fj具有将被相加的相应像素的情况下与在第二或之后的图像帧Fj不具有将被相加(作为平移和旋转结果两个图像帧不会彼此叠加的区域)的相应像素的情况下不同。
即,由于相加图像的旋转和平移,总会出现没有其像素将与被加图像相加的相加图像的像素的区域。当存在将被相加的像素时,增益w2为w2=1。当不存在将被相加的像素时,假设增益w2根据将叠加的相加图像帧Fj的帧数,而采用不同的值,并且对第j个图像帧的增益w2为w2=j/(j-1)。
由此,本实施例减小了作为相加结果的图像中具有将被相加的像素的区域与不具有将被相加的像素的区域之间的边界部分可察觉的差别。
为了控制这种增益,本实施例中的旋转和平移处理单元191对CPU1提供表示像素将被叠加在第一图像帧Fm中像素上的帧存储器42是否具有第二或之后的图像帧中像素地址,即,帧存储器42是否具有将被相加的像素的信息EX。接收该信息,CPU1控制增益放大器193的增益w2。
顺便提及,替代控制增益放大器193的增益w2的CPU1,根据像素将被叠加在图像帧Fm中像素上的帧存储器42是否具有第二或之后的图像帧中的像素地址,旋转和平移处理单元191可对增益放大器193提供增益w2。
图54示出了在简单相加法的情况下第j个图像帧中每一个的相加。图54示出重复使用加法器194和帧存储器43以彼此叠加多个图像帧(在图54的实例中为八个图像帧)。在图54中,圆圈内的数字表示图像帧数,增益(乘法系数)w2的值用于被加图像,括号中的值对应于没有相加像素的情况。
图55是辅助说明当通过根据本发明实施例的图像拾取装置中的旋转和平移相加单元19执行简单相加法时的处理步骤的流程图。顺便提及,图55流程图中的每个步骤主要在CPU1的控制下执行。
首先,CPU1执行控制,以将第一图像帧存储至帧存储器43中(步骤S181)。接下来,CPU1将表示将被处理的图像帧数的变量j(表示第二帧)设置为j=2,其表示第二帧(步骤S182)。
然后,CPU1执行控制,以将第j个图像帧存储在帧存储器42中(步骤S183)。接下来,如上所述,在CPU1的控制和指示下,手抖矢量检测单元15计算第j个图像帧相对于第一图像帧的整体运动矢量或平移量和旋转角,然后,将计算的平移量和旋转角发送至CPU1(步骤S184)。
接下来,从CPU1接收平移量和旋转角,旋转和平移相加单元19从帧存储器42中读取第j个图像帧,同时旋转并平移第j个图像帧。同时,旋转和平移相加单元19从帧存储器43中读取第一图像帧或作为相加结果的图像帧(步骤S185)。顺便提及,将从帧存储器42中读取的图像称为相加图像,并将从帧存储器43中读取的图像称为被加图像。
接下来,旋转和平移相加单元19将具有均设为“1”的增益w1和w2的相加图像的像素数据与被加图像的像素数据相加在一起。然而,对于其上没有叠加相加图像的被加图像的区域,即,当不存在像素数据将与被加图像的像素数据相加的相加图像的像素数据时,将相加图像的像素数据的增益w1设置为w1=0,并将被加图像的像素数据的增益w2设置为w2=j/(j-1)(步骤S186)。
然后,旋转和平移相加单元19将作为相加结果的图像数据写回至帧存储器43(步骤S187)。
接下来,CPU1确定是否预定数目的图像帧彼此叠加(步骤S188)。当CPU1确定没有完成预定数目图像帧的叠加时,CPU1增加表示将被处理的图像帧数的变量j为j=j+1(步骤S189)。然后,处理返回到步骤S183,以重复步骤S183以下的处理。
当在步骤S188中,CPU1确定完成预定数目的图像帧的叠加时,CPU1结束图55的处理过程。
简单相加法将被加图像与附加图像以彼此相加,其中,除不存在相加像素的区域(照度信号与色差信号之间没有区别)之外,将被加图像和相加图像的增益始终设置为“1”。因此,相加产生的图像逐渐变亮。
因此,当使用简单相加法时,可以实现拍摄模式,其中,在执行连续拍摄时将途中相加的结果(被加图像)显示在监控器上,当图像达到期望照度时,用户停止连续拍摄。
由于在连续拍摄基本上需要长曝光时间的低照度对象的同时将照相机的ISO速率保持很低,用户可以检查相加产生的图像逐渐变亮。这对应于长时间曝光的图像。更好地,不仅能够监控途中相加所产生的图像,而且能监控其直方图。此外,当然,图像拾取装置可自动确定相加在一起的帧数。
(2)平均相加法这种平均相加法类似于上述简单相加法,但在对相加图像和被加图像的增益w1和w2方面不同于简单相加法。具体地,在平均相加法中,当第二图像与第一图像相加时,将第一图像和第二图像与具有1/2值的增益w1和w2相乘,然后相加在一起,同时在相加图像的增益w1设为w1=1/j以及被加图像的增益w2设为w2=(j-1)/j的情况下相加第j个图像。
即,无论相加在一起的帧数是多少,都将作为相加结果的相加图像的照度保持不变,并使j个被加图像各自的权重彼此相等。当由于平移和旋转使得不存在像素将被与被加图像的像素相加的相加图像的像素时,将被加图像的像素数据的增益w2设置为1,从而在整个帧上保持相加结果的照度。
图56是在考虑平均值相加法情况下的旋转和平移相加单元19与图像存储器4之间关系的框图。在这种情况下,如在图53中所示的简单相加法的情况,旋转和平移相加单元19具有旋转和相加处理单元191、增益放大器192和193、以及加法器194。平均值相加法与简单相加法之处在于增益放大器192和193的增益w1和w2根据将被相加的图像帧数的不同而不同,因此,从CPU1提供增益w1和w2的值。
图57示出了在平均相加法情况下的每个第j个图像帧的相加。图57示出了重复使用加法器194和帧存储器43以彼此叠加多个图像帧(在图57的实例中为八个图像帧)。在图57中,圆圈内的数字表示图像帧数,增益(乘法系数)w2的值用于被加图像,括号中的值对应于没有相加像素的情况。
如图57所示,第j个相加图像的增益w1为w1=1/j,以及除第j个图像的被加图像的增益w2为w2=(j-1)/j。
图58是辅助说明当通过根据本发明实施例的图像拾取装置中的旋转和平移相加单元19执行平均相加法时的处理步骤的流程图。顺便提及,图58的流程图中的每个步骤主要在CPU1的控制下执行。
首先,CPU1执行控制,以将第一图像帧存储至帧存储器43中(步骤S191)。接下来,CPU1将表示将被处理的图像帧数的变量j设置为j=2,其表示第二帧(步骤S192)。
然后,CPU1执行控制,以将第j个图像帧存储在帧存储器42中(步骤S193)。接下来,如上所述,在CPU1的控制和指示下,手抖矢量检测单元15计算第j个图像帧相对于第一图像帧的整体运动矢量或平移量和旋转角,然后,将计算的平移量和旋转角发送至CPU1(步骤S194)。
接下来,从CPU1接收平移量和旋转角,旋转和平移相加单元19从帧存储器42中读取第j个图像帧,同时旋转并平移第j个图像帧。同时,旋转和平移相加单元19从帧存储器43中读取第一图像帧或作为相加结果的图像帧(步骤S195)。顺便提及,将从帧存储器42中读取的图像称为相加图像,并将从帧存储器43中读取的图像称为被加图像。
接下来,在相加图像的像素数据的增益w1设为w1=0且被加图像的像素数据的增益w2设为w2=j/(j-1)的情况下,旋转和平移相加单元19将相加图像的像素数据与被加图像的像素数据相加在一起。然而,对于其上没有叠加相加图像的被加图像的区域,即,当不存在像素数据将与被加图像的像素数据相加的相加图像的像素数据时,将相加图像的像素数据的增益w1设置为w1=0,并将被加图像的像素数据的增益w2设置为w2=1(步骤S186)。
然后,旋转和平移相加单元19将作为相加结果的图像数据写回至帧存储器43(步骤S197)。
接下来,CPU1确定是否将预定数目的图像帧彼此叠加(步骤S198)。当CPU1确定没有完成预定数目的图像帧的叠加时,CPU1增加表示将被处理的图像帧数的变量j为j=j+1(步骤S199)。然后,处理返回到步骤S193,以重复步骤S193以下的处理。
当在步骤S198中,CPU1确定完成预定数目的图像帧的叠加时,CPU1结束图58的处理过程。
作为使用平均相加法的应用,根据本实施例的图像拾取装置具有运动对象逐渐消失的多种(gimmick)功能(特殊效果)。即,平均相加法可以实现新的拍摄模式,其中,尽管在相加第一帧时图像的照度不变,但是随着连续拍摄的执行,图像帧内的运动部分逐渐模糊并消失。顺便提及,每次相加图像帧时,作为相加效果,图像帧内的噪声同样逐渐消失,这是次要效果。
(3)竞赛相加法简单相加法和平均相加法始终将第一帧设置为基准图像,第二图像和之后的图像的位置相对于第一图像,然后将第二和之后的图像与第一图像相加。另一方面,竞赛相加法等同地对待所有图像。因此,设置的基准图像不限于第一图像,并且可以是任何图像。然而,需要平移和旋转每两个相加在一起的图像。
图59是在考虑竞赛相加法情况下的旋转和平移相加单元19与图像存储器4之间关系的框图。在这种情况下,旋转和平移相加单元19具有两个旋转和平移处理单元195和196、增益放大器197和198、以及加法器199。
如上所述,图像存储器4具有用于在手抖矢量检测单元15中检测手抖矢量的处理的至少两个帧存储器41和42以及用于存储作为图像相加结果的图像帧的帧存储器43。对于这种竞赛相加法,帧存储器43可以进一步存储将被相加的图像帧数。
即,当选择了竞赛相加法时,图像拾取装置连续获取多个将要相加到一起的图像帧,并将所有图像帧存储在图像存储器4中。然后,图像拾取装置将一个图像帧设置为基准图像,并开始相加处理。
在下面将要描述的实例中,使用八个图像帧执行竞赛相加。图59中图像存储器4内圆圈中的符号F1至F8表示连续获得并存储的的图像帧。
假设在开始相加处理时,已经由手抖矢量检测单元15计算了所有的八个图像帧的单块运动矢量、整体运动矢量等。
然而,如上所述,手抖矢量检测单元15仅可以检测相对于紧前帧的相对运动矢量或将第一帧作为基准的运动矢量。因此,需要允许累计误差或使用设置的基准图像再次执行检测。
图60示出了竞赛相加法的概要。图60圆圈中的数字对应于八个图像帧F1~F8。在该实例中,作为第一阶段中的相加,将图像帧F1和F2、图像帧F3和F4、图像帧F5和F6、以及图像帧F7和F8彼此相加。
在第一阶段中的相加中,旋转和平移处理单元195和196以对应于相对于设置的基准图像的相对手抖量,平移和旋转将要彼此相加的每两个图像帧。
在完成第一阶段中的相加之后,作为第一阶段中相加结果的图像经受第二阶段中的相加。作为第二阶段中的相加,在图60的实例中,将图像帧F1和F2的相加结果与图像帧F3和F4的相加结果彼此相加,以及将图像帧F5和F6的相加结果与图像帧F7和F8的相加结果彼此相加。在第二阶段的相加中,每个将要相加的图像帧与基准图像一致,因此,旋转和平移处理单元195和196中的平移和旋转处理是不必要的。
在完成第二阶段中的相加之后,作为第二阶段中相加结果的图像经受第三阶段中的相加。作为第三阶段中的相加,在图60的实例中,将图像帧F1、F2、F3、和F4的相加结果与图像帧F5、F6、F7和F8的相加结果彼此相加。在第三阶段的相加中,每个将要相加的图像帧与基准图像一致,因此,旋转和平移处理单元195和196中的平移和旋转处理是不必要的。
返回到图59,当相加处理开始时,CPU1首先设置第一阶段中两个将要彼此相加的图像帧,并将设置的图像帧相对于基准图像的平移量和旋转角提供给例如旋转和平移处理单元195和196。
旋转和平移处理单元195和196分别从图像存储器4中读取两个相应图像帧的图像数据同时使用从CPU1接收的图像帧的平移量和旋转角平移和旋转图像帧,因此,消除相对于基准图像的相对手抖。
然后,通过增益放大器197和198将来自旋转和平移处理单元195和196的两个图像帧与增益w3和增益w4相乘,之后,在加法器199中彼此相加。然后,将相加之后的图像数据写入图像存储器4的缓冲存储器中。
CPU1执行如上所述使其它两个图像帧经受图60中所示的第一阶段中的相加的相同处理。因此,对应相同,旋转和平移处理单元195和196将其它两个指定的图像帧彼此相加,同时以上述相同的方式平移和旋转图像帧。将相加结果存储在图像存储器4中。
在完成第一阶段中的相加之后,为了执行第二阶段中的相加,CPU1将作为第一阶段中相加结果的图像帧设置作为将要从图像存储器4中读取的图像帧,将平移量和旋转角设置为零,并向旋转和平移处理单元195和196给出读出图像帧的指令。
旋转和平移处理单元195和196根据来自CPU1的信息和指示,读取作为第一阶段中相加结果的图像帧的图像数据,并执行图60中所示第二阶段中的相加处理。
在完成第二阶段中的相加之后,为了执行第三阶段中的相加,CPU1将作为第二阶段中相加结果的图像帧设置为将要从图像存储器4中读取的图像帧,将平移量和旋转角度设置为零,并向旋转和平移处理单元195和196给出读出图像帧的指令。
旋转和平移处理单元195和196根据来自CPU1的信息和指示,读取作为第二阶段中相加结果的图像帧的图像数据,并执行图60中所示第三阶段中的相加处理。因此,该实例中的竞赛相加结束。
图61示出了在竞赛相加方法情况下的八个图像帧相加中的增益放大器197和198的增益(乘法系数)w3和w4以及相加处理的流程。
图61所示的乘法系数w3和w4是基于上述平均相加法的实例。在两个图像彼此叠加的区域中,乘法系数为w3=w4=1/2,以及在两个图像不彼此叠加的区域中,乘法系数为w3=1以及w4=1。
顺便提及,乘法系数w3和w4不限于基于平均相加法的值,并且可以使用基于简单相加法的值。
尽管在上面的描述中省略,但因为相对于基准图像平移和旋转将在第一层中相加的两个图像,所以根据本实施例的竞赛相加法具有用于确定像素位置的机构,其中,在该像素位置处,两个图像都不具有第二和之后的层中相加中的基准图像区域中的相应像素。
具体地,在第一层中的相加时,用值“1”替代作为相加结果的照度分量Y的像素值的“0”。然后,替换地,将像素位置处(第一阶段中彼此相加的两个图像均具有作为平移和旋转结果的对应像素)的相加结果的照度分量Y的像素值设置为“0”。
然后,在第二和之后的层的相加中,当两个帧的照度分量Y的像素值均为“0”时,将相加之后的照度分量Y也设置为“0”。当将所有图像彼此相加在一起时,所有像素总是包括有效像素(基准图像的像素),因此,以基准图像的像素值替代具有“0”照度值的像素。
因此,通过使用照度分量Y的像素值“0”作为无效像素标识,可以在维持容量没有增加的图像数据格式的同时提供用于确定叠加时不存在有效像素的像素位置的标识。
当然,可以分别对上述叠加时不存在有效像素的像素位置设置1比特作为无效像素标识,不管像素值是否是照度分量Y或色差分量Cb/Cr的表示,都可以将任意像素值用作标识。以对成本和画面质量影响的观点来看,将上述根据本实施例使用无效像素标识的方法认为是最佳方法。
图62和图63是辅助说明当在根据本实施例的图像拾取装置中通过旋转和平移相加单元19执行上述竞赛相加法时的处理过程的流程图。顺便提及,图62和图63的流程图中的每个步骤主要在CPU1的控制下执行。
首先,CPU1顺序将第一至第八图像帧的图像数据写入并存储在图像存储器4的帧存储器中(步骤S201)。接下来,CUP1在第一至第八图像帧中设置一个基准图像(步骤S202)。然后,CPU1相对于预先作为基准图像的图像帧计算第一~第八图像帧的平移量和旋转角(步骤S203)。
然后,CPU1开始第一阶段中的相加处理。CPU1对旋转和平移相加单元19提供关于第一图像帧和第二图像帧相对于基准图像帧的平移量和旋转角的信息。旋转和平移相加单元19基于来自CPU1的关于两个图像的平移量和旋转角的信息,以相对于作为基准图像的图像帧消除第一图像帧和第二图像帧的平移量和旋转角的方式,从图像存储器4的相应帧存储器中同时读取第一图像帧和第二图像帧的图像数据(步骤S204)。
然后,在CPU1的控制下,旋转和平移相加单元19在读出第一图像帧的图像数据和第二图像帧的图像数据的同时以增益w3=1/2和增益w4=1/2将第一图像帧的图像数据与第二图像帧的图像数据相加在一起,然后将相加结果写入图像存储器4的帧存储器(步骤S205)。
在步骤S205中,顺序设置基准图像的图像帧内的像素位置(写入相加后的像素数据的像素位置),为对应于每个设置的像素位置的像素搜索第一图像帧和第二图像帧的图像数据,以及读取像素并相加在一起。当第一图像帧和第二图像帧的一个像素不存在时,将不存在像素的图像帧的图像数据的增益设置为“0”,并将存在像素的图像帧的图像数据的增益设置为“1”。
此外,在步骤S205中,当第一图像帧和第二图像帧都不具有相应像素时,将作为相加结果的照度分量Y的像素值设置为“0”。此外,在当存在相应像素时的图像数据的相加结果为“0”的情况下,将像素值改变为“1”。
接下来,CPU1为旋转和平移相加单元19提供指示以对第三图像帧和第四图像帧、第五图像帧和第六图像帧、以及第七图像帧和第八图像帧执行步骤S204和步骤S205的处理,并且旋转和平移相加单元19执行该处理(图63中的步骤S211)。
接下来,CPU1为旋转和平移相加单元19提供指示以开始第二阶段中的相加处理。根据来自CPU1的指示,旋转和平移相加单元19从图像存储器4中读取作为第一图像与第二图像相加结果的图像数据以及作为第三图像与第四图像相加结果的图像数据,而不执行平移和旋转。然后,以均设置为1/2的增益w3和w4,将两片图像彼此相加(步骤S212)。
在步骤S212中,当像素数据将要相加在一起的第一图像与第二图像的相加结果的像素数据的照度分量Y以及第三图像与第四图像的相加结果的像素数据的照度分量Y中的一个为“0”时,将具有用于相加的两个图像的照度分量Y为“0”的图像的像素数据的增益设置为“0”,并将其它图像的像素数据的增益设置为“1”。
此外,在步骤S212中,当将要相加在一起的两个图像的像素数据的照度分量Y均为“0”时,也将作为相加结果的照度分量Y的像素值设置为“0”。
接下来,CPU1为旋转和平移相加单元19提供指示以对作为第五图像与第六图像相加结果的图像数据以及作为第七图像与第八图像相加结果的图像数据执行步骤S212的上述处理,并且旋转和平移相加单元19执行该处理(步骤S213)。
接下来,CPU1为旋转和平移相加单元19提供指示以执行第三阶段中的相加处理,即,对第一至第四图像的相加结果以及第五至第八图像的相加结果执行步骤S212的上述处理,并且旋转和平移相加单元19执行该处理(步骤S214)。
因此,通过根据本实施例的竞赛相加法将多个图像帧相加在一起的处理结束。
根据本实施例的上述竞赛相加法有两点。一点是在竞赛相加法的第一阶段中除基准图像之外每两个相加图像相加的同时被平移和旋转,而在第二和之后的阶段中将每两个图像相加而不进行平移或旋转。第一阶段中的相加对应于图62中A的处理,以及第二和之后阶段中的相加对应于图63中B的处理。
根据本实施例的竞赛相加法的另一点是设置了能够确定第一阶段中的两个图像都不具有在第二和之后的阶段中相加的像素的像素位置的机构。
顺便提及,在上述实例中,对八个图像帧进行竞赛相加。在根据本实施例的竞赛相加法中,将预先连续获得的图像存储在图像存储器4中是很重要的,但是预先连续获得的图像数目是不重要的。然而,考虑到竞赛相加法的性质,期望将要彼此相加在一起的图像数目表示为2的幂。
根据本实施例的竞赛相加法具有两个优点。如上所述,一个优点是可以在获得将被相加在一起的所有图像之后选择任意的基准图像。当执行连续拍摄的同时确定运动矢量时,将连续拍摄期间位于手抖轨迹中心处的帧选择为基准图像,可以使相加结果图像的有效区域最宽。
另一个优点是可以完全等同地对待每个帧图像。例如,在已经说明的平均相加法的情况下,相加系数根据帧数而改变,使得相加结果中的各个帧的权重彼此相等,但是不可避免地出现了数字舍入误差。结果,各个帧的权重并不是完全相同。另一方面,在根据本实施例的竞赛相加法中,在帧与完全相同的系数相乘之后将帧相加,使得舍入误差的影响不会失调。
然而,在竞赛相加法中,由于预先将所有图像都存储在存储器中,所以需要大量的存储器,因此,存在连续获取的帧数上限,使得不可能像之前所述的简单相加法与平均相加法中那样无限地进行连续相加。
然而,当采用将连续获得的图像临时存储在外部存储器的结构时(比特单元的价格很低,例如,硬盘)时,可以避免上述问题。
最近,作为不仅用于防止手抖影响而且防止运动对象模糊的方法已经引起了市场的注意,该方法在大约1/60秒的短曝光时间中以高速执行高速拍摄,并且不允许手抖的影响以及运动对象模糊的轻易出现。
这种情况下的问题是可以在噪声级保持很低的同时设置ISO速率的值。由于改善速率通常同时使图像噪声更加明显,所以数码相机的制造商通过使用各种方法来减小噪声,并扩大(boast)可以保持特定等级的S/N等级的作为性能的最高ISO速率的数值。
本实施例的用于作为对象的静止图像的手抖校正的一个目的是降噪。当将多个图像相加在一起时,通过检测运动对象的一部分并不执行相加、或仅单独对部分进行搜索并执行跟踪相加,可以以很高的速率实现降噪,对于运动对象同样如此。
在随机噪声的情况下,当将N个图像相加在一起时,噪声分量以N的平方根的比率统计地减小。即,通过对运动对象的设置,当具有对应于ISO3200的实时性能值的数码相机将16个图像相加在一起时,设置的ISO速率可将该值扩大为4倍,即,ISO12800。
即使将固定数目的图像相加在一起,这种情况下期望的相加系统也会占用特定的处理时间,但是其提供了尽可能高的画面质量。根据本实施例的竞赛相加法满足这种要求。换句话说,适于竞赛相加法的应用包括高速拍摄时ISO速率的改进。
如上所述,根据本实施例的图像拾取装置具有三种相加法,即,简单相加法、平均相加法、和竞赛相加法。如上所述,三种相加法中的每一种都具有最佳的数码相机应用。
根据本实施例的图像拾取装置允许用户通过用户操作输入单元3选择使用三种相加法中的那一种。因此,用户可根据用户期望的相加结果选择相加法。
顺便提及,替代用户直接选择三种相加法中的一种,可将图像拾取装置配置为具有作为可选功能的三种相加法的最佳应用,使得当用户选择一种应用时,CPU1自动选择用于该应用的最佳方法。
然后,一个数码相机可同时实现三种新的手持长曝光拍摄的应用、运动对象逐渐消失的花样、以及以超出真实性能值的高速进行拍摄。
作为上述图像处理装置第一实施例的图像拾取装置中的手抖矢量检测单元15假设两个图像(即,原始帧的图像和参考帧的图像)均存储在图1中所示的帧存储单元4的帧存储器中。因此,运动矢量的检测定时延迟一帧。
另一方面,第二实施例使用来自图像拾取元件11的流图像数据作为参考帧,并且能够对光栅扫描流数据执行SAD值的实时计算。
图64是示出根据第二实施例的图像拾取装置的结构实例的框图。从图64中可以看出,图像拾取信号处理系统10的结构块和其它结构块与图1中所示第一实施例的完全相同。然而,第二实施例中的图像存储单元4有两个帧存储器44和45形成。帧存储器44用于运动矢量检测。帧存储器45用于帧图像叠加。
顺便提及,实际上众所周知地,当使用不能同时写入和读取的帧存储器时,帧存储器44在每帧中交替地在写入和读取之间切换两个帧存储器并使用两个帧存储器。
如稍后将要描述的,使用来自数据转换单元14的输入像素数据作为参考帧的像素数据,并使用存储在帧存储器44中的数据作为原始帧的数据,手抖矢量检测单元15执行生成缩小SAD表的处理、检测单块运动矢量的处理、生成合计SAD表的处理、以及生成整体运动矢量(手抖矢量)的处理。在第二实施例中,与之前相同,除整体运动矢量(手抖的平移分量)和平移量(α,β)之外,手抖运动矢量检测单元15还检测参考帧相对于原始帧的旋转角γ。
顺便提及,在该实例中,手抖矢量检测单元15总是获得相对于紧前图像的相对手抖矢量。因此,为了计算相对于第一基准图像(参见图3中的图像帧120)相对手抖,对从第一图像到当前图像的手抖分量进行积分。
然后,在一帧延迟之后,旋转和平移相加单元19以与上述第一实施例中完全相同的方式根据检测的手抖平移分量和检测的旋转角在将存储在帧存储器44中的图像帧切除并同时旋转的同时减将其与存储在帧存储器45中的图像相加或对该图像帧求平均。通过重复该处理,在帧存储器45中生成具有更高的S/N比和更高分辨率而没有手抖分量影响的静止图像的图像帧120(参见图3)。
然后,分辨率转换单元16根据来自CPU1的控制指示从帧存储器45中的图像帧中切除具有预定分辨率个预定图像尺寸的图像。如上所述,分辨率转换单元16将作为记录拾取图像数据的图像提供给编码解码单元17,并将作为监控图像的图像提供给NTSC编码器18。
在第二实施例中,将原始帧存储在帧存储器44中,并从数据转换单元14输入作为流的参考帧。第一实施例中的手抖矢量检测单元15使用存储在两个帧存储器41和42中的两片图像数据确定参考块的SAD值。另一方面,如图64所示,第二实施例中的手抖矢量检测单元15使用来自数据转换单元14的流图像数据作为参考帧的图像数据以及存储在帧存储器44中的图像数据作为原始帧的图像数据来确定参考块的SAD值。
如上所述,第二实施例使用来自数据转换单元14的流图像数据作为参考帧的图像数据。因此,具有作为元素的输入像素的多个参考块同时出现在参考帧中。图65是辅助说明该情况的示图。
具体地,图65示出了参考帧102中搜索范围105内的输入像素Din例如为位于对应于参考矢量1071的参考块1061左侧的像素和位于对应于参考矢量1072的参考块1062右上侧的像素。
因此,当认为输入像素Din属于参考块1061时,需要读取目标块103中的像素D1,并计算像素D1的差分。当认为输入像素Din属于参考块1062时,需要读取目标块103中的像素D2,并计算像素D2的差分。
尽管为了简单,在图65和稍后描述的图66中仅示出了两个参考块,但实际上存在具有作为参考块内元素的输入像素Din的大量参考块。
通过计算输入像素Din的照度值γ与像素对应于各个参考块内输入像素位置的目标块内像素的照度值γ之间差分绝对值,并根据对应于各个参考块的参考矢量将计算的差分绝对值与SAD表相加来执行第二实施例中的SAD计算。
例如,如图66所示,当认为输入像素Din属于参考块1061时,通过将目标块103内像素D1与输入像素Din之间的差分绝对值与对应于SAD表108的参考矢量1071的SAD表元素1091的SAD值相加来写入。如图66所示,当认为输入像素Din属于参考块1062时,通过将目标块103内像素D2与输入像素Din之间的差分绝对值与对应于SAD表108的参考矢量1072的SAD表元素1092的SAD值相加来写入。
因此,当输入搜索范围内所有区域的输入像素时完成SAD表,并且处理结束。
图66是辅助说明将实时SAD计算处理应用于现有方法情况的示图。在第二实施例中,在图65中,替代相加并写入作为对应于SAD表108的参考矢量1071或1072的SAD表1091或1092的SAD值计算的差分绝对值,与第一实施例相同,计算以缩小比例因数1/n缩小参考缩小矢量1071或1072获得的参考缩小矢量,从计算的差分绝对值中确定将要分配和相加至SAD值(对应于与参考缩小矢量相邻的多个参考矢量)的分配和相加值,并将获得的分配和相加值与对应于多个相邻参考矢量的SAD值相加。
为了在SAD表(缩小SAD表)完成之后计算精确的运动矢量,第二实施例还可以采用在水平方向和垂直方向上使用二次曲面和三次曲线的方法,该方法与之前的第一实施例中描述的完全相同。
图67和图68是在第二实施例的情况下在手抖矢量检测单元15中的图36中的步骤S32、图38中的步骤S52、图40中的步骤S72、以及图41中的步骤S82中对每个目标块的缩小SAD表生成处理和单块运动矢量检测处理的流程图。
首先,手抖矢量检测单元15在输入图像帧(参考帧)的任意位置处(x,y)结束像素数据Din(x,y)(步骤S221)。接下来,设置对应于包括像素位置(x,y)的多个参考块中的一个的参考矢量(vx,vy)(步骤S222)。
接下来,计算设置的参考矢量(vx,vy)的参考块Ii中的像素值Ii(x,y)与目标块Io内的像素值Io(x-vx,y-vy)之间的差分绝对值α,其中,像素值Io(x-vx,y-vy)对应于像素值Ii(x,y)(步骤S223)。即,将差分绝对值α计算为A=|Io(x-vx,y-vy)-Ii(x,y)|...(等式4)接下来,将缩小比例因数设置为1/n,并计算通过将参考矢量(vx,vy)缩小至1/n所获得的参考缩小矢量(vx/n,vy/n)(步骤S224)。
接下来,检测与参考缩小矢量(vx/n,vy/n)相邻的多个参考矢量(在该实例中为上述四个相邻参考矢量)(步骤S225)。然后,如上所述,基于由参考缩小矢量表示的位置与分别由相邻参考矢量表示的位置之间的关系,根据在步骤S223中获得的差分绝对值α将被作为对应于四个检测相邻参考矢量的表元素分布和相加的值(差分绝对值)计算为线性加权分布值(步骤S226)。然后,将获得的四个线性加权分布值分别与对应于相邻参考矢量的SAD表元素的值相加(步骤S227)。
接下来,确定是否已经对包括像素数据Din(x,y)的所有参考块执行了步骤S222~S227的操作(步骤S228)。当确定未对包括像素数据Din(x,y)的另一参考块执行该操作时,处理返回到步骤S222以设置包括像素数据Din的另一参考块(vx,vy),并重复步骤S222~S227的处理。
当在步骤S228中确定已经对包括像素数据Din(x,y)的所有参考块执行了步骤S222~S227的操作时,确定是否已经对搜索范围内的所有输入像素Din完成以上操作步骤的处理(图68中的步骤S231)。当确定未对搜索范围内的所有输入像素Din完成以上操作步骤的处理时,处理返回到步骤S221,以捕获搜索范围内的下个输入像素Din,并重复步骤S221以下的处理。
当在步骤S231中确定已经对搜索范围内的所有输入像素Din完成以上操作步骤的处理时,确定完成缩小SAD表。在完成的缩小SAD表中检测最小SAD值(步骤S232)。
接下来,使用表元素地址(mx,my)处的最小SAD值(最小值)以及多个相邻表元素(在本实例中为上述15个相邻表元素)的SAD值生成二次曲面(步骤S233)。计算表示对应于二次曲面的最小SAD值对应的小数精度位置的最小值矢量(px,py)。
然后,通过将表示小数精度位置的最小值矢量(px,py)与n相乘来计算将要获得的运动矢量(px×n,py×n)(步骤S235)。
顺便提及,同样在该实例中,与上述实例相同,可将上述在水平方向和垂直方向上使用三次曲线的方法用作用于计算表示小数精度位置的最小值矢量(px,py)的方法。
此外,同样在第二实施例中,与之前的第一实施例中参照图48至图51的流程图描述的第三实例相同,当然可以在两个或多个阶段中重复使用缩小SAD表的运动矢量检测处理,同时缩小搜索范围并根据需要改变缩小比例因数。
与第一实施例相比,第二实施例具有可以以对应于一帧的量缩小帧存储器,并且可以缩短将输入图像存储在帧存储器中所占用的时间的优点。不用说存储器减小的效果,近来引起注意的缩短处理时间是更重要的。
上述第二实施例通过总是将输入图像与紧前图像进行比较来确定输入图像的手抖矢量和旋转角。如上所述,实际上,如图3所示,将第一帧设置为基准,并将之后的帧与第一帧相加,使得当将第一帧设置为基准时,减小运动矢量检测的误差。在第三实施例中考虑到这一点。
图69是示出根据本发明第三实施例的图像拾取装置的结构实例的框图。
在图69的实例中,除图64的第二实施例中的帧存储器44和帧存储器45之外,图像存储器单元4还具有帧存储器46。将来自数据转换单元14的图像数据写入帧存储器44和帧存储器46。
在第三实施例中,示出了将帧存储器46用作存储作为目标(原始帧和基准图像帧)的第一帧的存储器以及总是计算相对于第一图像的输入图像的参考矢量的系统结构。此外,在该结构中,将相加图像结果存储在帧存储器45中。
此外,在该实例中,如图69中的虚线所示,还将作为基准的第一帧的图像数据写入帧存储器45。
然后,将第二图像帧和之后的图像帧写入帧存储器44,并提供给手抖矢量检测单元15。手抖矢量检测单元15检测来自数据转换单元14的第二和之后的图像帧的每一个与从帧存储器46读取的第一帧的图像数据之间的相对手抖矢量和旋转角。
手抖矢量检测单元15为CPU1提供相对于第一图像帧的关于第二和之后的图像帧的检测相对手抖矢量和检测旋转角的信息。
在CPU1的控制下,从帧存储器44中读取存储在帧存储器44中的第二和之后的图像,因此消除计算的第二和之后的图像与第一帧的基准图像之间的相对手抖分量。然后,将第二和之后的图像提供给旋转和平移相加单元19。根据来自CPU1的控制信号,旋转和平移相加单元19根据相对于第一基准图像帧的相对旋转角来旋转第二和之后的图像帧的每一个,并将第二和之后的图像帧的每一个与从帧存储器46中读取的图像帧相加,或对该图像帧求平均。将作为相加或平均结果的图像帧写入帧存储器45。
然后,根据CPU1的控制指示,切除帧存储器45中的图像帧的数据,以具有预定分辨率和预定图像大小。将结果提供给分辨率转换单元16。然后,如上所述,分辨率转换单元16将作为记录的拾取图像数据的图像提供给编码解码器单元17,并将作为监控图像数据的图像提供给NTSC编码器18。
顺便提及,在上述第三实施例中,描述了允许与作为基准图像的输入图像的第一帧的无限相加或无限平均相加的系统。然而,当存在充足的存储器容量或者当允许将图像临时存储在记录和再生装置单元5中时,可以采用预先存储所有将要相加在一起的图像,并通过竞赛相加法或平均相加法将图像相加在一起的方法。
通过将根据上述第一至第三实施例的无传感器手抖校正与现有技术的光学手抖校正结合,获得进一步增强的效果。
这是因为,如开始所述的,使用陀螺传感器的光学手抖校正在粗校正方面具有优势,但是难以校正旋转,而使用块匹配的无传感器手抖校正(包括旋转校正)具有高精度,但是即使当使用根据本实施例的方法时,当搜索范围变宽时,SAD表的成本会急剧增加,并且在多个阶段中运动矢量检测处理的情况下占用处理时间。
因此,通过光学手抖校正进行粗校正以缩小无传感器手抖校正的运动矢量检测的搜索范围,并且计算搜索范围内的运动矢量然后进行无传感器手抖校正,可以实现低成本、高精度、以及高速的手抖校正系统。
根据之前第一至第三实施例的使用块匹配的无传感器手抖校正方法在成本、精度、处理时间、和稳定性方面都优于迄今为止所提出的无传感器静止图像手抖校正技术。
目前在市场可买到的所有静止图像手抖校正都提供了使用陀螺传感器与光学校正(例如,透镜移动等)的组合的系统,但是引起了很大的误差,并且不能提供满意的画面质量。另一方面,根据本实施例的方法通过移除传感器和机械部分实现了低成本和高精度手抖校正。
虽然在之前实施例的描述中,参考矢量的水平方向和垂直方向上的缩小比例因数相同,但如上所述,水平方向和垂直方向上的缩小比例因数可以彼此不同。
此外,虽然在之前的实施例中,对参考块和目标块内的所有像素获得SAD值,但是例如,可以仅使用每第k(k是自然数)个像素获得SAD值。
用于通过实时处理的运动矢量检测的系统通常执行SAD操作,其中,为了减少操作成本和处理时间,仅对目标块内的代表点在参考块内进行搜索。
具体地,如图70所示,将目标块103划分为多个单元,每个单元均由例如多个n(水平方向)×m(垂直方向)像素(n和m为1以上的整数)形成,并将作为划分单元的多个像素中的一个像素设置为代表点TP。然后,在SAD操作中,仅使用对目标块103如此设置的多个代表点TP。
另一方面,使参考块106中所有的像素经受SAD值操作。对于目标块103中一个代表TP,使用包括在由作为划分单元的多个n×m像素形成的范围AR中的所有像素,其中,代表点TP设置在一个参考块106中。
然后,在目标块103与一个参考块106之间,获得参考帧102中每个代表点TP的像素值与包含在对应于参考块106中每个代表点的每个范围AR中的多个n×m的像素的像素值之间的差的总和。然后,将目标块103中对所有代表点TP获得的差分总和相加在一起。该结果是SAD表中的一个元素值。
然后,对目标块103搜索范围内的所有参考块执行与上述类似的使用代表点TP的差分计算,从而生成SAD表。然而,在该实例中,通过上述作为划分单元的多个n×m的像素或通过多个像素的整数倍将设置在搜索范围中的多个参考块彼此隔开。
如上所述,当将代表点用于目标块时,在SAD值的计算中仅有一个存储器访问满足目标块中的一个代表点TP,同时对参考块中范围AR中的多个像素进行存储器访问。因此,可以大大减小存储器访问数。
此外,当仅使用代表点TP时,足以仅存储作为目标块数据的目标块内所有像素中的代表性点TP的像素数据。因此,可以减小存储原始帧(目标帧)目标块的数据的帧存储器容量。
此外,通过将小尺寸代表点存储器(SRAM)作为与帧存储器分离的本地存储器并将原始帧(目标帧)的目标块的数据保持在本地存储器中,可减小存储器4(DRAM)的频带。
虽然使用目标块的代表点的处理的以上描述基于参照图71至图73所描述的方法,但是不需说明,以上描述还适用于根据参照图65至图68描述的第二实施例的方法。
当在根据第二实施例的方法中仅使用目标块的代表点TP时,对于参考帧的每个输入像素,在整个搜索范围内检测具有包括输入像素(像素位置在范围AR中不同)的范围AR的所有参考块,并确定代表点对应于所有检测参考块中每一个的范围AR的目标块中的代表点。
然后,将作为确定结果获得的多个代表点的像素值分别从存储原始帧(目标帧)的图像数据的存储器中读出,分别计算代表点的像素值与输入像素之间的差,并将计算结果累积在SAD表中相应参考块(参考矢量)的坐标位置处。
在这种情况下,进行存储器访问以仅读取目标块中的代表点,因此,可以大大减小存储器访问数。
顺便提及,不需说明,可将使用代表点的处理应用于使用上述缩小SAD表的情况。
顺便提及,在之前的实施例中,仅使用像素的照度值Y计算像素的差分值和SAD值。然而,不仅照度值Y可用于运动矢量检测,而且还可以将色差分量Cb/Cr应用于运动矢量检测。此外,可以在RAW数据被转换为照度值Y和色差分量Cb/Cr之前,通过数据转换单元14执行对RAW数据的运动矢量检测处理。
此外,如上所述,手抖矢量检测单元15不限于基于硬件处理的结构,还可以通过软件实现。
本领域的技术人员应该理解,根据设计要求和其他因素,可以有多种修改、组合、再组合和改进,均应包含在本发明的权利要求或等同物的范围之内。
权利要求
1.一种图像处理装置,包括每块运动矢量计算装置,用于计算以画面为单位顺序输入的图像的两个画面之间的运动矢量,在通过将一个画面划分为多个区域所获得的划分区域的每一个中执行块匹配,并计算所述划分区域中的每一个的每块运动矢量;平移量计算装置,用于根据由所述每块运动矢量计算装置计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的平移量;旋转角计算装置,用于根据由所述每块运动矢量计算装置计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的旋转角;以及旋转和平移相加装置,用于使用由所述平移量计算装置计算的平移量和由所述旋转角计算装置计算的旋转角将多个画面相互叠加。
2.根据权利要求1所述的图像处理装置,其中,以矩阵形式划分所述一个画面。
3.根据权利要求1所述的图像处理装置,其中,所述平移量计算装置通过在获得所述平移量的方向上的所述多个每块运动矢量分量进行简单的平均来计算所述平移量。
4.根据权利要求1所述的图像处理装置,其中,使用由所述每块运动矢量计算装置计算的所述每块运动矢量以及根据所述每块运动矢量获得的每个所述划分区域的所述平移量,所述旋转角计算装置计算所述旋转角,作为使所述每块运动矢量与作为所述多个划分区域的未知旋转角函数来计算的理论每块运动矢量之间的误差总和最小化的所述旋转角。
5.根据权利要求1所述的图像处理装置,进一步包括整体运动矢量计算装置,用于相对于所述两个画面中的一个来计算所述两个画面中另一个全部的整体运动矢量;以及评估装置,用于使用所述整体运动矢量,评估由所述每块运动矢量计算装置求得的所述多个每块运动矢量中的每一个;其中,由所述评估装置给出高评估值的所述每块运动矢量的数量小于预定阈值的所述两个画面中的另一个被从由所述旋转和平移相加装置相互叠加的画面中去除。
6.根据权利要求1所述的图像处理装置,进一步包括整体运动矢量计算装置,用于相对于所述两个画面中的一个计算所述两个画面中另一个全部的整体运动矢量;以及评估装置,用于使用所述整体运动矢量,评估由所述每块运动矢量计算装置求得的所述多个每块运动矢量中的每一个;其中,所述平移量计算装置和所述旋转角计算装置仅根据由所述评估装置给出高评估值的多个所述每块运动矢量计算所述平移量和所述旋转角。
7.根据权利要求1所述的图像处理装置,进一步包括整体运动矢量计算装置,用于根据所述每块运动矢量计算装置的所述块匹配的结果计算所述两个画面中另一个全部的整体运动矢量,其中,所述每块运动矢量计算装置执行多次所述两个画面中另一个的所述块匹配的处理,每一次的搜索范围根据由前一次块匹配的结果获得的所述整体运动矢量偏移,所述整体运动矢量由所述整体运动矢量计算装置计算得到,并且每次的所述搜索范围都窄于前一次的搜索范围,以及所述平移量计算装置和所述旋转角计算装置根据所述每块运动矢量计算装置最后一次块匹配所获得的多个每块运动矢量计算所述平移量和所述旋转角。
8.根据权利要求7所述的图像处理装置,进一步包括评估装置,用于使用由每次块匹配的结果获得的、所述两个画面中另一个全部的整体运动矢量,评估通过该次块匹配所获得的每块运动矢量中的每一个;其中,在下次计算整体运动矢量的过程中,所述整体运动矢量计算装置从计算对象中去除获得了由所述评估装置的评估判断为低可靠性的每块运动矢量的目标块;以及所述平移量计算装置和所述旋转角计算装置仅根据通过所述每块运动矢量计算装置的最后一次块匹配所获得的多个每块运动矢量中、除了从所述计算对象中去除的目标块之外的目标块的每块运动矢量计算所述平移量和所述旋转角。
9.根据权利要求7所述的图像处理装置,进一步包括评估装置,用于使用由每次块匹配的结果获得的、所述两个画面中另一个全部的整体运动矢量,评估通过该次块匹配获得的多个每块运动矢量中的每一个;其中,由所述评估装置给出高评估值的所述每块运动矢量的数量小于预定阈值的所述两个画面中的另一个被从由所述旋转和平移相加装置相互叠加的画面中去除。
10.根据权利要求7所述的图像处理装置,进一步包括评估装置,用于使用由每次块匹配的结果获得的、所述两个画面中另一个全部的整体运动矢量,评估通过该次块匹配获得的多个每块运动矢量中的每一个;其中,当由所述评估装置给出高评估值的所述每块运动矢量的数目等于或大于预定数目时,根据被给出高评估值的所述每块运动矢量重新计算该次的整体运动矢量,并基于重新计算的整体运动矢量来确定下次搜索范围的所述偏移。
11.根据权利要求1所述的图像处理装置,进一步包括误差计算装置,用于获得由所述每块运动矢量中的每一个表示的平移量和旋转角相对于由所述平移量计算装置计算的所述平移量和由所述旋转角计算装置计算的所述旋转角的误差;确定装置,用于确定由所述误差计算装置获得的所述多个每块运动矢量的所述误差的总和是否小于预定阈值;以及控制装置,用于执行控制,使得当所述确定装置确定所述多个每块运动矢量的所述误差总和小于所述预定阈值时,执行所述旋转和平移相加装置中的处理。
12.根据权利要求11所述的图像处理装置,其中,当所述确定装置确定所述多个每块运动矢量的总和等于或大于所述预定阈值时,去除对应于由所述误差计算装置获得的最大误差的所述每块运动矢量,并重新计算由所述平移量计算装置计算的所述平移量和由所述旋转角计算装置计算的所述旋转角。
13.根据权利要求1所述的图像处理装置,其中,所述旋转和平移相加装置使所述多个画面进行简单相加。
14.根据权利要求1所述的图像处理装置,其中,所述旋转和平移相加装置使所述多个画面进行平均值相加。
15.根据权利要求1所述的图像处理装置,其中,所述旋转和平移相加装置使所述多个画面进行竞赛相加。
16.一种图像拾取装置,包括图像拾取单元;每块运动矢量计算装置,用于计算来自所述图像拾取单元的拾取图像的两个画面之间的运动矢量,在通过将一个画面划分为多个区域所获得的划分区域的每一个中执行块匹配,并计算所述划分区域中的每一个的每块运动矢量;平移量计算装置,用于根据由所述每块运动矢量计算装置计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的平移量;旋转角计算装置,用于根据由所述每块运动矢量计算装置计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的旋转角;旋转和平移相加装置,用于使用由所述平移量计算装置计算的平移量和由所述旋转角计算装置计算的旋转角,将来自所述图像拾取单元的所述拾取图像的多个画面相互叠加;以及记录装置,用于将通过所述旋转和平移相加装置使多个画面相互叠加所获得的所述拾取图像的数据记录在记录介质上。
17.根据权利要求16所述的图像拾取装置,其中,所述旋转和平移相加装置包括简单相加装置,用于使所述多个画面进行简单相加;平均值相加装置,用于使所述多个画面进行平均值相加;竞赛相加装置,用于使所述多个画面进行竞赛相加;以及选择装置,用于选择所述简单相加装置、所述平均值相加装置、所述竞赛相加装置中的一个,以及所述图像拾取装置进一步包括用户输入接收装置,用于接收用来指定所述简单相加装置、所述平均值相加装置、和所述竞赛相加装置中的哪一个将被所述旋转和平移相加装置使用的用户选择操作输入;以及控制装置,用于根据由所述用户输入接收装置接收的用户选择操作输入来控制所述选择装置。
18.一种图像处理方法,包括以下步骤计算以画面为单位顺序输入的图像的两个画面之间的运动矢量,在通过将一个画面划分为多个区域所获得的划分区域的每一个中执行块匹配,并计算所述划分区域中的每一个的每块运动矢量;根据在所述每块运动矢量计算步骤中计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的平移量;根据在所述每块运动矢量计算步骤中计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的旋转角;以及使用在所述平移量计算步骤中计算的平移量和在所述旋转角计算步骤中计算的旋转角使多个画面相互叠加。
19.一种图像拾取方法,包括以下步骤计算来自图像拾取单元的拾取图像的两个画面之间的运动矢量,在通过将一个画面划分为多个区域所获得的划分区域的每一个中执行块匹配,并计算所述划分区域中的每一个的每块运动矢量;根据在所述每块运动矢量计算步骤中计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的平移量;根据在所述每块运动矢量计算步骤中计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的旋转角;以及使用在所述平移量计算步骤中计算的平移量和在所述旋转角计算步骤中计算的旋转角,将来自所述图像拾取单元的所述拾取图像的多个画面相互叠加;以及将在所述旋转和平移相加步骤中使多个画面相互叠加所获得的所述拾取图像的数据记录在记录介质上。
20.一种图像处理装置,包括每块运动矢量计算部,被配置为计算以画面为单位顺序输入的图像的两个画面之间的运动矢量,在通过将一个画面划分为多个区域所获得的划分区域的每一个中执行块匹配,并计算所述划分区域中的每一个的每块运动矢量;平移量计算部,被配置为根据由所述每块运动矢量计算部计算的多个所述每块运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的平移量;旋转角度计算部,被配置为根据由所述每块运动矢量计算部计算的所述每块多个运动矢量,相对于所述两个画面中的一个计算所述两个画面中另一个的旋转角;以及旋转和平移相加部,被配置为使用由所述平移量计算部计算的平移量和由所述旋转角计算部计算的旋转角将多个画面相互叠加。
全文摘要
本发明公开了一种图像处理装置,包括每块运动矢量计算装置,用于计算以画面为单位顺序输入的图像的两个画面之间的运动矢量,在将一个画面划分为多个区域所获得的划分区域的每一个中执行块匹配,并计算每个划分区域的每块运动矢量;平移量计算装置,用于根据每块运动矢量计算装置计算的多个每块运动矢量相对于两个画面中的一个来计算两个画面中另一个的平移量;旋转角计算装置,用于根据由每块运动矢量计算装置计算的多个每块运动矢量相对于两个画面中的一个来计算两个画面中另一个的旋转角;以及旋转和平移相加装置,用于使用由平移量计算装置计算的平移量和由旋转角计算装置计算的旋转角将多个画面相互叠加。
文档编号H04N5/225GK101090456SQ200710108658
公开日2007年12月19日 申请日期2007年6月14日 优先权日2006年6月14日
发明者仓田徹 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1