视频拼接方法与流程

文档序号:11139191阅读:1528来源:国知局
视频拼接方法与制造工艺

本发明涉及图像处理技术领域,特别涉及一种视频拼接方法。



背景技术:

现有技术中,图像拼接方法主要包括:最优缝查找、颜色校正及图像合成三个步骤。

为了较好的理解三个步骤,下面对每个步骤的实现原理及现有手段进行逐一介绍。其中,最优缝查找为在两个图像的重叠区域中找一条曲线,该曲线上的像素的匹配代价之和最小。目前,查找最优缝的方法主要有两种:动态规划法和图割法。但是,这两种方法都需要先扫描完两个图像的重叠区域的所有行,然后得出一条最优缝,因此在硬件实现时需要一帧的存储空间。此外,基于图割法获得最优缝计算复杂度较高,运算量极大。

颜色校正为补偿两个图像的重叠区域的图像因曝光等原因导致的颜色差异。目前,颜色校正的复杂度低的方法主要有两种:在RGB或lαβ空间对两幅图像进行增益补偿、基于直方图匹配。但是,这两种方法都需要先扫描完重叠区域的所有行,然后得出增益补的值或颜色的映射表,因此都需要一帧的存储空间。除此之外的其他现有颜色校正方法计算及校正过程较为复杂。

图像合成为把有重叠区域的图像合并成一张全景图。目前,图像合成复杂度低的方法有羽化、线性或非线性的修改像素权重的方法。但是这两种方法不适用于当输入图像存在少量的对齐误差的情况,这些方法会导致最终合成的全景图模糊或虚影。针对该问题,提出了多频带合成、基于MVC的合成、梯度域合成等加以解决,但是该方法的复杂度稍高一些,且需要一帧的存储空间。

目前,对视频进行拼接时,为了避免出现视频跳变和闪烁的问题,在对视频进行拼接时,还需要考虑让相邻帧之间平滑过渡。现有的视频拼接方法有以下几种:

(1)不进行最优缝查找和颜色校正。

(2)用三维图割法进行最优缝查找。

(3)计算相邻帧之间的光流,并据此对各帧进行形变。

(4)用解三维泊松方程的方法进行梯度域的视频合成。

经方法(1)拼接后的视频存在模糊或虚影的问题,而方法(2)、(3)或(4)的复杂度很高且需要至少一帧的存储空间。

针对上述问题,需要一种新的视频拼接方法,可以保留更多图像细节的同时,使曝光等引起的颜色差异能平滑过渡。



技术实现要素:

本发明的目的在于提供一种视频拼接方法,以降低视频拼接方法的复杂度及存储空间。

为解决上述技术问题,本发明提供一种视频拼接方法,所述视频拼接方法包括:

S1:获取第一视频和第二视频的第k帧的重叠区域,k为帧序号;

S2:利用动态规划法基于第一视频和第二视频的第k帧的重叠区域的第一预设行数为处理单元,查找第一视频和第二视频的第k帧的重叠区域的最优缝;

S3:判断所述重叠区域的宽度是否小于预定阈值,若是,则在YUV空间中每个通道分别以第二预设行数为处理单元,同时满足第一视频和第二视频的第k帧的重叠区域中当前处理单元与上一处理单元保持视觉连续性和第一视频和第二视频的第k帧的重叠区域中当前处理单元与第一视频和第二视频的第k-1帧的重叠区域中同位置处的处理单元保持视觉连续性的条件下,对第一视频和第二视频的第k帧进行颜色校正;其中,所述第二预设行数小于第一预设行数;反之,则直接执行S4;

S4:利用拉普拉斯金字塔图像合成法,对第一视频和第二视频的第k帧的当前第二预设行数的所有行进行合成。

可选的,在所述的视频拼接方法中,S2包括:

以所述第一预设行数为处理单元,计算第一视频和第二视频的第k帧的重叠区域的场景变化程度;

基于所述场景变化程度计算第一视频和第二视频的第k帧的重叠区域的最优缝相对于第一视频和第二视频的第k-1帧的重叠区域的最优缝的最大偏移量;

根据所述最大偏移量及第一视频和第二视频的第k-1帧的重叠区域的最优缝的位置,划定出第一视频和第二视频的第k帧的重叠区域最优缝的候选路径;

计算将第一视频和第二视频的第k帧的重叠区域的当前处理单元中所有像素点的匹配代价,将除所述候选路径外其余像素点的匹配代价修改为最大值;

基于第一视频和第二视频的第k帧的重叠区域中修改好的匹配代价,利用动态规划法确定第一视频和第二视频的第k帧的重叠区域的第一预设行数的最优缝。

可选的,在所述的视频拼接方法中,S2中查找第一视频和第二视频的第k帧的重叠区域的最优缝由保留第一预定行数的前第二预设行数对应的最优缝段构成。

可选的,在所述的视频拼接方法中,计算第一视频和第二视频的第k帧的重叠区域的场景变化程度包括:

将第一视频和第二视频的第k帧的重叠区域均分成N/2块,并计算每块的亮度均值和梯度均值,N大于等于8的偶数;

计算第一视频和第二视频的第k帧的重叠区域和第一视频和第二视频的第k-1帧的重叠区域中相同位置块的亮度均值差和梯度均值差。

可选的,在所述的视频拼接方法中,基于所述场景变化程度计算第一视频和第二视频的第k帧的重叠区域的最优缝相对于第一视频和第二视频的第k-1帧的重叠区域的最优缝的最大偏移量采用公式如下:

maxOffset=Min(p,Max(MaxYDiff,MaxGradDiff)*h);

其中,maxOffset为最大偏移量,p最大偏移量的最大值;h为一参数,0<h<1;MaxYDiff=Max(|(AvgYi(k,j)-AvgYi(k-1,j)|);MaxGradiDiff=Max(|(AvgGradi(k,j)-AvgGradi(k-1,j)|;k为帧序号;j指代当前处理单元;i为块的序号;i=0,1,…N-1,为每个视频第k帧当前处理单元划分的块数,N为大于等于8的偶数;AvgYi(k,j)为第k帧的j位置处第i块的亮度均值,AvgGradi(k,j)为第k帧的j位置处第i块的梯度均值。

可选的,在所述的视频拼接方法中,计算将第一视频和第二视频的第k帧的重叠区域的第一预设行数中所有像素点的匹配代价采用公式如下:

Cost(m,n)=(|(GradYAx-GradYBx)|+|(GradYAy-GradYBy)|)/2;

其中,Cost(m,n)表示像素坐标为(m,n)的像素点的匹配代价;GradYAx、GradYAy分别表示第一视频当前处理单元中坐标为(m,n)的像素点在x、y方向的梯度值;GradYBx、GradYBy分别表示第二视频当前处理单元中坐标为(m,n)的像素点在x、y方向的梯度值。

可选的,在所述的视频拼接方法中,所述第一预定行数为24行或36行。

可选的,在所述的视频拼接方法中,S3中,第一视频和第二视频的第k帧的重叠区域中当前处理单元与第一视频和第二视频的第k-1帧的重叠区域中同位置处的处理单元保持视觉连续性需要满足以下条件:

若(Scale(k,j)-Scale(k-1,j)>T0),令Scale(k,j)=Scale(k-1,j)+T0;

若(Scale(k,j)-Scale(k-1,j)〈-T0),令Scale(k,j)=Scale(k-1,j)-T0;

其中,k为帧序号;j指代当前处理单元;T0为一经验值;A为第一视频第k帧的重叠区域;B为第二视频第k帧的重叠区域;(m,n)为当前处理单元中的像素点坐标。

可选的,在所述的视频拼接方法中,S3中,第一视频和第二视频的第k帧的重叠区域中当前处理单元与上一处理单元保持视觉连续性需要满足以下条件:

若(Scale(k,j)-Scale(k-1,j)>T1),令Scale(k,j)=Scale(k-1,j)+T1;

若(Scale(k,j)-Scale(k-1,j)<-T1),令Scale(k,j)=Scale(k-1,j)-T1;

其中,k为帧序号;j指代当前处理单元;T1为一经验值;A为第一视频第k帧的重叠区域,B为第二视频第k帧的重叠区域,(m,n)为当前处理单元中的像素点坐标。

可选的,在所述的视频拼接方法中,S3中,对第一视频和第二视频的第k帧进行颜色校正包括:对第一视频和第二视频的第k帧的重叠区域进行颜色校正和对第一视频和第二视频的第k帧的非重叠区域进行颜色校正。

可选的,在所述的视频拼接方法中,对第一视频和第二视频的第k帧的重叠区域进行颜色校正的校正系数计算公式如下:

GainA=1-TmpA;

GainB=1+TmpB;

其中,GainA为第一视频第k帧的重叠区域的颜色校正的校正系数;GainB为第二视频第k帧的重叠区域的颜色校正的校正系数;TmpA=Scale(k,j)/(2*(Scale(k,j)+1)),TmpB=Scale(k,j)/2,k为帧序号;j指代当前处理单元;(m,n)为当前处理单元中的像素点坐标。

可选的,在所述的视频拼接方法中,对第一视频和第二视频的第k帧的非重叠区域进行颜色校正的校正系数计算公式如下:

其中,l为像素点列的序号,l=1,2,…,64,GainA(l)为第一视频的第k帧的重叠区域左侧l列的颜色校正系数;GainB(l)为第二视频的第k帧的当前帧的重叠区域右侧l列的颜色校正系数,TmpA=Scale(k,j)/(2*(Scale(k,j)+1)),TmpB=Scale(k,j)/2。

可选的,在所述的视频拼接方法中,S4中包括:

对第一视频和第二视频的第k帧的当前第二预设行数的所有行,以第二预设行数为边长的块为处理单元,求取当前处理单元在对各个视频第k帧的全部重叠区域进行拉普拉斯金字塔分解得到高频分量和低频分量中对应的部分;

对两视频的当前处理单元对应的低频分量和高频分量分别进行合成获得合成后的高频分量和低频分量;

根据合成后的高频分量和低频分量重构出当前处理单元的拉普拉斯金字塔合成结果。

可选的,在所述的视频拼接方法中,对两视频的当前处理单元的低频分量进行阿尔法合成获得合成后的低频分量,对两视频的当前处理单元的高频分量进行沿最优缝的合成获得合成后的高频分量。

可选的,在所述的视频拼接方法中,分别对第一视频和第二视频的当前处理单元进行拉普拉斯金字塔分解时包括,以当前处理单元为中心,边长为第二预设行数加预定尺寸的块进行拉普拉斯金字塔分解,所述预定尺寸根据高斯模板尺寸及金字塔层数设定。

在本发明所提供的视频拼接方法中,利用动态规划法基于第一视频和第二视频的第k帧的重叠区域的第一预设行数为处理单元,查找两视频的第k帧的重叠区域的最优缝;在颜色校正时考虑重叠区域的宽度与预定阈值之间的大小关系,如重叠区域的宽度大于预定阈值,则无需进行颜色校正;反之,则需以第二预设行数为处理单元进行颜色校正;图像合成时对两视频的第k帧的当前第二预设行数的所有行进行合成,对于视频的最优缝查找、颜色校正及图像合成基于的处理单元不同,简化了计算的复杂度的同时减小了所需存储空间大小,能够实现帧与帧之间颜色的平滑过渡,以使合成后的重叠区域保留较多的图像细节,从而有效避免出现视频跳变和闪烁的现象。

附图说明

图1是本发明一实施例中两视频单重叠区域拼接过程示意图;

图2是本发明一实施例中视频拼接方法的流程图;

图3是本发明一实施例中查找两帧的重叠区域中的最优缝的原理示意图;

图4a~4c是本发明一实施例中S2实现过程的相关示意图;

图5是本发明一实施例中拉普拉斯金字塔分解时的结构示意图;

图6是基于图5进行拉普拉斯金字塔重构时的结构示意图。

具体实施方式

以下结合附图和具体实施例对本发明提出的视频拼接方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

请参考图1及图2,其为本发明的视频拼接方法的流程图,如图2所示,所述视频拼接方法主要包括如下步骤:

首先,执行步骤S1,获取第一视频和第二视频的第k帧的重叠区域,k为帧序号;

如图1所示,图1中(a)和(b)分别为第一视频的第k帧和第二视频的第k帧,两者中的重叠区域分别为A、B,图1中(c)为(a)和(b)经过拼接后的结果图,C为A、B拼接后的结果。

接着,执行步骤S2,利用动态规划法基于第一视频和第二视频的第k帧的重叠区域的第一预设行数为处理单元,查找第一视频和第二视频的第k帧的重叠区域的最优缝;本实施例中所述第一预设行数包括但不局限于24行或36行。

步骤S2区别于现有技术中使用动态规划法进行的最优缝查找,现有方法是通过扫描视频中整帧重叠区域的所有行查找最优缝,而本发明中仅需要每次扫描视频中整帧重叠区域中第一预设行数即可,相比现有技术,降低了存储空间的需求。

请参考图3,实际上,为了实现第一视频和第二视频的第k帧的重叠区域的最优缝之间衔接更自然,步骤S2中查找第一视频和第二视频的第k帧的重叠区域的最优缝由保留第一预定行数的前第二预设行数对应的最优缝段构成。以第一预设行数为24(表现为8*j~8*j+23)、此时保留前8行为例进行阐述,此时存储空间仅需要24行即可。查找最优缝的过程如下:先在24行上进行最优缝查找,获得24行的最优缝后,只采用24行中前8行(即8*j~8*j+7)的最优缝线段作为最优缝的构成部分。

接着,执行步骤S3,判断所述重叠区域的宽度是否小于预定阈值,若是,则在YUV空间中每个通道分别以第二预设行数为处理单元,同时满足第一视频和第二视频的第k帧的重叠区域中当前处理单元与上一处理单元保持视觉连续性和第一视频和第二视频的第k帧的重叠区域中当前处理单元与第一视频和第二视频的第k-1帧的重叠区域中同位置处的处理单元保持视觉连续性的条件下,对第一视频和第二视频的第k帧进行颜色校正;其中,所述第二预设行数小于第一预设行数;反之,则直接执行S4;本实施例中预定阈值取为72。

接着,执行步骤S4,利用拉普拉斯金字塔图像合成法,对第一视频和第二视频的第k帧的当前第二预设行数的所有行进行合成。

为了便于对本发明的各个步骤较好的理解,以第一预设行数为24,第二预设行数为8行为例,针对S2、S3及S4分别进行详细的阐述。

【针对步骤S2】

实现S2中的每个步骤均以第一预设行数为处理单元,具体过程如下:

S20:计算第一视频和第二视频的第k帧的重叠区域的场景变化程度;其中,计算相邻两帧的场景变化程度包括:

将第一视频和第二视频的第k帧的重叠区域均分成N/2块,并计算每块的亮度均值和梯度均值,N大于等于8的偶数;

计算第一视频和第二视频的第k帧的重叠区域和第一视频和第二视频的第k-1帧的重叠区域中相同位置块的亮度均值差和梯度均值差。

S21:基于所述场景变化程度计算第一视频和第二视频的第k帧的重叠区域的最优缝相对于第一视频和第二视频的第k-1帧的重叠区域的最优缝的最大偏移量;

具体的,计算最大偏移量采用如下公式:

maxOffset=Min(p,Max(MaxYDiff,MaxGradDiff)*h);

其中,maxOffset为最大偏移量,p最大偏移量的最大值;h为一参数,0<h<1;MaxYDiff=Max(|(AvgYi(k,j)-AvgYi(k-1,j)|);MaxGradiDiff=Max(|(AvgGradi(k,j)-AvgGradi(k-1,j)|;k为帧序号;j指代当前处理单元;i为块的序号;i=0,1,…N-1,为每个视频第k帧当前处理单元划分的块数,N为大于等于8的偶数;AvgYi(k,j)为第k帧的j位置处第i块的亮度均值,AvgGradi(k,j)为第k帧的j位置处第i块的梯度均值。

S22:根据所述最大偏移量及第一视频和第二视频的第k-1帧的重叠区域的最优缝的位置,划定出第一视频和第二视频的第k帧的重叠区域最优缝的候选路径,具体可以参考图4a~4c;

S23:计算将第一视频和第二视频的第k帧的重叠区域的当前处理单元(即当前的第一预设行数)中所有像素点的匹配代价(请参考图4a,图中每个单元格表征一个像素点,每个像素点计算的匹配代价为cost),将除所述候选路径外其余像素点的匹配代价修改为最大值(请参考图4c,图中有些单元格中的匹配代价为max,max分布的位置即为缝不能到达的位置,以实现对最优缝的约束)。

具体的,计算匹配代价采用公式如下:

Cost(m,n)=(|(GradYAx-GradYBx)|+|(GradYAy-GradYBy)|)/2;

其中,Cost(m,n)表示像素坐标为(m,n)的像素点的匹配代价;GradYAx、GradYAy分别表示第一视频当前处理单元中坐标为(m,n)的像素点在x、y方向的梯度值;GradYBx、GradYBy分别表示第二视频当前处理单元中坐标为(m,n)的像素点在x、y方向的梯度值。

通过修改匹配代价的值对最优缝的候选路径进行约束(即把缝不能到达的位置的匹配代价值设为最大值max,如max取值512)。

如图4a~4c所示,主要包括两方面的约束:

1)缝的候选起点需要与上8行的缝的终点相衔接,请参见图4c第一行与上8行的缝SeamPos(k,j-1)的终点相衔接。

2)缝的候选路径相对于前一帧中缝的路径(请参见图4b)的偏移量不能超过maxOffset,本实施例中maxOffset=2,请参见图4b和图4c的第2~24行。

S24:基于第一视频和第二视频的第k帧的重叠区域中修改好的匹配代价(如图4c),利用动态规划法确定第一视频和第二视频的第k帧的重叠区域中当前处理单元的最优缝,仅保留前8行的值,丢弃后面16行的值。

【针对步骤S3】

步骤S3以所述第二预设行数为处理单元,进行颜色校正,颜色校正的过程包括对对应位置的匹配代价Scale的数值进行修改,以便相邻两个预定行数的颜色的差异可以平滑过渡,修改过程需要考虑如下3个方面:

第一方面:第一视频和第二视频的第k帧的重叠区域中当前处理单元与第一视频和第二视频的第k-1帧的重叠区域中同位置处的处理单元保持视觉连续性需要满足以下条件:

若(Scale(k,j)-Scale(k-1,j)>T0),令Scale(k,j)=Scale(k-1,j)+T0;

若(Scale(k,j)-Scale(k-1,j)<-T0),令Scale(k,j)=Scale(k-1,j)-T0;

其中,k为帧序号;j指代当前处理单元;T0为一经验值;A为第一视频第k帧的重叠区域;B为第二视频第k帧的重叠区域;(m,n)为当前处理单元中的像素点坐标。

第二方面:第一视频和第二视频的第k帧的重叠区域中当前处理单元与上一处理单元保持视觉连续性需要满足以下条件:

若(Scale(k,j)-Scale(k-1,j)>T1),令Scale(k,j)=Scale(k-1,j)+T1;

若(Scale(k,j)-Scale(k-1,j)<-T1),令Scale(k,j)=Scale(k-1,j)-T1;

其中,k为帧序号;j指代当前处理单元;T1为一经验值;A为第一视频第k帧的重叠区域,B为第二视频第k帧的重叠区域,(m,n)为当前处理单元中的像素点坐标。

第三方面:若第二视频的第k帧的重叠区域B与第一视频的第k帧的重叠区域A的颜色差别太大,需要进行弱校正,校正时满足条件如下:

若(Scale(k,j)>T2),令Scale(k,j)=T2,

若(Scale(k,j)<T3),令Scale(k,j)=T3,

T2和T3为经验值,本实施例中T2=0.3,T3=-0.242。

对scake(k,j)的数值进行修改后,对相邻两帧进行颜色校正,包括:对相邻两帧的重叠区域的颜色校正和对相邻两帧的非重叠区域的颜色校正。

以图1为例,以第二预算行数为处理单元,进行具体阐述:

1)对第一视频的第k帧的重叠区域A和第二视频的第k帧的重叠区域B分别进行校正:

A中当前处理单元的颜色校正的校正系数为:GainA=1-TmpA;

B中当前处理单元的颜色校正的校正系数为:GainB=1+TmpB;

其中,TmpA=Scale(k,j)/(2*(Scale(k,j)+1)),TmpB=Scale(k,j)/2,k为帧序号;j指代当前处理单元;(m,n)为当前处理单元中的像素点坐标。

2)对第一视频和第二视频的第k帧的非重叠区域的颜色校正:

A中当前处理单元左侧列的颜色校正系数为:

B中当前处理单元右侧l列的颜色校正系数为:

其中,l为像素点列的序号,l=1,2,…,64,TmpA=Scale(k,j)/(2*(Scale(k,j)+1)),TmpB=Scale(k,j)/2。

【针对步骤S4】

步骤S4具体包括如下步骤:

S40:对第一视频和第二视频的第k帧的当前第二预设行数的所有行,以第二预设行数为边长的块为处理单元,求取当前处理单元在对各个视频第k帧的全部重叠区域进行拉普拉斯金字塔分解得到高频分量和低频分量中对应的部分。

对第一视频或第二视频的当前处理单元进行拉普拉斯金字塔分解时,为使得到的高频分量和低频分量完全等同于其在对本视频第k帧的全部重叠区域进行拉普拉斯金字塔分解所得到的高频分量和低频分量中对应的值,需对以当前处理单元为中心,边长为第二预设行数加预定尺寸的块进行拉普拉斯金字塔分解,所述预定尺寸根据高斯模板尺寸及金字塔层数设定。

请参考图5,本实施例以高斯模板尺寸为3x3、三层金字塔为例,此时预定尺寸为7,若第二预设行数为8时,此时实际进行拉普拉斯金字塔分解的块的边长为15。如图5所示,由原图中以当前处理单元为中心的一个15x15的块G0_A,先与高斯核做卷积并下采样得到7x7的块G1_A,再次与高斯核做卷积并下采样得到3x3的块G2_A,把G2_A上采样并与高斯核做卷积得到5x5的块G1'_A,把G1_A中间的5x5块上采样并与高斯核做卷积得到8x8的块G0'_A。则得到的低频分量为:G2_A,高频分量为LP1_A=(G1_A中间的5x5块)-G1'_A,LP0_A=(G0_A中间的8x8块)-G0'_A。

S41:对两视频(第一视频和第二视频)的当前处理单元对应的低频分量和高频分量分别进行合成获得合成后的高频分量和低频分量。具体的,对两视频的当前处理单元的低频分量进行阿尔法合成获得合成后的低频分量,对两视频的当前处理单元的高频分量进行沿最优缝的合成获得合成后的高频分量。

即图5中,把G2_A与G2_B进行阿尔法合成,得到G2。

把LP1_A与LP1_B进行沿最优缝的合成,得到LP1。

把LP0_A与LP0_B进行沿最优缝的合成,得到LP0。

LP0的合成为例,沿最优缝合成的步骤为:对LP0中的每个像素,若其位于最优缝的左边,则取其在LP0_A中的值;若其位于最优缝的右边,则取其在LP0_B中的值;否则,取其在LP0_A中的值与其在LP0_B中的值的平均值。

其中,G2_B,LP1_B,LP0_B为S41方法对第二视频当前处理单元分解后的结果。

S42:根据合成后的高频分量和低频分量重构出当前处理单元的拉普拉斯金字塔合成结果。

如图6所示,若第二预设行数为8,先把G2上采样并与高斯核做卷积得到5x5的块G1',并把G1'与LP1相加得到G1,再对G1上采样并与高斯核做卷积得到8x8的块G0',并把G0'与LP0相加得到G0,G0即为当前处理单元合成的结果。

综上,在本发明所提供的视频拼接方法中,利用动态规划法基于第一视频和第二视频的第k帧的重叠区域的第一预设行数为处理单元,查找两视频的第k帧的重叠区域的最优缝;在颜色校正时考虑重叠区域的宽度与预定阈值之间的大小关系,如重叠区域的宽度大于预定阈值,则无需进行颜色校正;反之,则需以第二预设行数为处理单元进行颜色校正;图像合成时对两视频的第k帧的当前第二预设行数的所有行进行合成,对于视频的最优缝查找、颜色校正及图像合成基于的处理单元不同,简化了计算的复杂度的同时减小了所需存储空间大小,能够实现帧与帧之间颜色的平滑过渡,以使合成后的重叠区域保留较多的图像细节,从而有效避免出现视频跳变和闪烁的现象。

上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1