具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本公开,而不能理解为对本公开的限制。相反,本公开的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
其中,需要说明的是,本实施例的图像缝合线确定方法的执行主体可以为图像缝合线确定装置,该装置可以由软件和/或硬件的方式实现,该装置可以配置在电子设备中,电子设备可以包括但不限于终端、服务器端等。
图1是根据本公开一实施例提供的图像缝合线确定方法的流程示意图,如图1所示,该方法包括:
S101:获取当前时刻待拼接的第一图像和第二图像。
本公开实施例中,当前时刻需要进行拼接处理的两个图像可以被称为第一图像和第二图像,其可以分别用
表示。在实际应用中,可以获取多目相机(例如双目相机)在当前时刻(t时刻)采集的两个图像作为该第一图像
和第二图像
其中,第一图像和第二图像可以是任意场景下采集的图像,对此不做限制。
一些实施例,第一图像和第二图像可以左右拼接,或者上下拼接,对此不做限制。本公开实施例将以第一图像作为左图,第二图像为右图为例,对图像缝合线确定方法进行示例性说明。
一些实施例,还可以对第一图像
和第二图像
进行预处理,例如平滑滤波处理,利用预处理后的第一图像
和第二图像
进行后续操作,其中,平滑滤波处理可以采用中值滤波算法或者双边滤波算法,对此不做限制。
S102:确定第一图像和第二图像的重叠区域。
可以理解的是,多目相机采集的相邻图像之间会存在重叠区域,而图像拼接通常在图像重叠区域进行拼接。在这种情况下,本实施例可以确定第一图像和第二图像的重叠区域。图2是根据本公开实施例提供的第一图像和第二图像重叠区域的示意图,如图2所示,第一图像(左图)和第二图像(右图)的重叠区域例如为W×H区域,W为宽度,H为高度。
在实际应用中,双目相机可以预先标定配置参数,配置参数例如双目镜头之间的距离,其可以影响采集的两个图像的重叠区域。因此,本实施例可以根据拼接标定的参数配置,提取第一图像
和第二图像
重叠区域。
S103:在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图。
其中,第一图像和第二图像中移动的目标可以被称为运动目标,运动目标例如行人、车辆以及其它任意可能的目标,对此不做限制。其中,本实施例可以通过任意的方式确定该运动目标,例如采用光流估计确定运动目标,或者采用其它任意可能的方式确定运动目标,对此不做限制。
而本公开实施例在确定重叠区域后,可以判断在重叠区域是否存在该运动目标,在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图。图3a是根据本公开实施例提供的重叠区域无向图的示意图,如图3a所示,本实施例可以根据重叠区域的分辨率WxH创建无向图G=<V,E>,V表示顶点集合{v(x,y)|x∈[0,W-1],y∈[0,H-1]},包含WxH个普通顶点和两个特殊的顶点(源点s、汇点t);E表示边的集合{e(v1,v2)|v1,v2∈V},并且限定只有两个顶点相邻时才允许有最多一条边,每条边关联两个属性参数,容量e和实际流量f,初始时,所有边的实际流量均为f=0,容量e根据重叠区域像素点信息确定,对此不做限制。
S104:基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量。
本公开实施例,可以预先定义代价函数,其中,代价函数例如可以表征像素点颜色差异代价、几何线条不连续的代价以及运动目标被切割的代价。
而像素点信息,例如包括像素点亮度信息、边缘检测算子信息、光流信息(像素点是否属于运动目标)以及其它任意可能的信息,对此不做限制。而第一图像和第二图像在重叠区域的像素点信息可能不同,即:重合像素点信息不同。
本公开实施例,可以将第一图像及第二图像在重叠区域的像素点信息作为代价函数的输入参数,计算无向图中每个边E的容量e。
具体地,首先可以利用代价函数计算无向图中每个普通顶点v的代价值。
一些实施例,代价函数表示为:
C(x,y)=Cc(x,y)+Cg(x,y)+Cof(x,y)
其中,(x,y)表示无向图任一顶点位置,C(x,y)表示该顶点的代价值,Cc(x,y)表示颜色差异代价,Cg(x,y)表示几何线条不连续的代价,Cof(x,y)表示运动目标被切割的代价。
一些实施例,Cc(x,y)=|Y(x′,y′)-Y(x,y)|,Y(x,y)和Y(x′,y′)分别表示第一图像和第二图像在(x,y)位置像素点的亮度分量,即:亮度值。其中,在第一图像和第二图像为三通道图像(即,RGB图像)的情况下,本公开实施例可以将第一图像和第二图像转化为灰度图。具体地,可以采用公式Y=CLIP(0.299*R+0.587*G+0.114*B)将三通道图像转换为灰度图,将色彩值归一化到0..1区间,CLIP()函数的作用是将输出结果限制在0..1区间。从而,根据归一化后的灰度值,确定亮度分量。
一些实施例,Cg(x,y)=|S1(x,y)|+|S2(x,y)|,|S1(x,y)|和|S2(x,y)|分别表示第一图像和第二图像在(x,y)位置像素点边缘检测算子,(x,y)附近的纹理越复杂,得到的Cg值就越大。其中,边缘检测算子例如可以是Sobel边缘检测算子,并且Sobel边缘检测算子为水平分量Gx和垂直分量Gy之和。
一些实施例,Cof(x,y)=ω·B1(x,y)+ω·B2(x,y),B(·)为二值函数,B1(x,y)和B2(x,y)分别第一图像和第二图像在(x,y)位置像素点是否属于运动目标,例如B(·)的值为1或者0,分别表示(x,y)位置像素点属于运动目标或者不属于运动目标;而ω为权重因子,其可以根据实际应用场景灵活设定,对此不做限制。
利用代价函数计算每个顶点的代价值后,进一步地,本公开实施例可以根据相邻顶点的代价值计算相邻顶点之间边的容量e,例如将相邻顶点的代价值相加作为相邻顶点之间边的容量e。
举例而言,v1(x,y)和v2(x+1,y)是无向图中两个水平方向上的相邻顶点,C(x,y)和C(x+1,y)分别为v1(x,y)和v2(x+1,y)的代价值,则v1(x,y)和v2(x+1,y)之间边的容量可以表示为:e(v1,v2)=|C(x,y)+C(x+1,y)|,垂直方向的相邻顶点之间边的计算方式同理,此处不再赘述。
S105:采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线。
上述确定无向图中边的容量后,本公开实施例可以对无向图进行遍历,每次遍历确定一条增广路径,即:s与t之间的增广路径p,此时对p进行增广操作,具体做法是,从源点s出发,在构成路径p的所有边中找到容量最小的一条边Ve,读取其容量值c(e),该值即是路径p可能通过的最大流量。然后,路径p上所有边的实际流量(参数f)都增加c(e),这会导致边Ve饱和(参数c=f),即:增广路径中的饱和边,在这种情况下将其从边集E中删除,并在割集
中增加饱和边Ve。从而,每次遍历到增广路径都可以在割集
中增加饱和边,直至没有增广路径,割集
为无向图的最小割,该最小割即为第一图像和第二图像的最佳缝合线。图3b是根据本公开实施例提供的重叠区域最佳缝合线的示意图,如图3b所示,最佳缝合线两侧的像素点分别为第一图像和第二图像的像素点。
本实施例中,通过获取当前时刻待拼接的第一图像和第二图像,并确定第一图像和第二图像的重叠区域,并在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图,并基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量,其中,代价函数用于计算无向图顶点颜色差异代价、几何线条不连续的代价以及运动目标被切割的代价;以及采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线,能够在代价函数中增加运动目标的代价,因此在重叠区域存在弱纹理的运动目标时也可以使缝合线避开该目标,进而提升图像拼接效果。
图4是根据本公开另一实施例提供的图像缝合线确定方法的流程示意图,如图4所示,该方法包括:
S401:获取当前时刻待拼接的第一图像和第二图像。
S402:确定第一图像和第二图像的重叠区域。
S401-402的说明具体参见上述实施例,此处不再赘述。
S403:获取上一时刻采集的第一历史图像和第二历史图像。
本公开实施例,可以利用光流估计算法确定第一图像和第二图像中是否存在运动目标,进而判断重叠区域中的运动目标。
具体地,获取待拼接的第一图像
和第二图像
后,进一步地,获取上一时刻(t-1时刻)采集两个图像,包括第一历史图像和第二历史图像,其分别可以用
和
表示。
一些实施例,采集的图像对都可以缓存在历史序列中,则本实施例可以从历史序列中获取t-1时刻采集的第一历史图像
和第二历史图像
另一些实施例,还可以将预处理后的第一图像
和第二图像
缓存至该历史序列中,按照先进先出的原则替换掉最老的图像对,以用于后续计算光流信息。
S404:根据第一历史图像和第一图像确定第一光流数据集,并根据第二历史图像和第二图像确定第二光流数据集。
进一步地,根据第一历史图像
和第一图像
确定左图(第一图像)的第一光流数据集,其可以用
表示;同理,根据第二历史图像
和第二图像
确定右图的第二光流数据集,其可以用
表示。其中,每个光流数据集中包括一组特征点,用集合F表示,例如可以使用FAST角点检测算法从图像中提取一组特征点;并且,光流数据集中还包括对特征点跟踪得到的位置坐标,用集合P表示。
一些实施例,可以分别对所述第一历史图像
第二历史图像
第一图像
第二图像
构建图像金字塔;进一步地,根据所述图像金字塔,确定所述第一光流数据集
和所述第二光流数据集
也即是说,借助金字塔计算图像光流,例如LK稀疏光流。
S405:基于第一光流数据集和第二光流数据集,确定运动目标信息。
上述确定第一光流数据集
和所述第二光流数据集
后,进一步地,本公开实施例可以基于第一光流数据集
和所述第二光流数据集
确定运动目标信息。
一些实施例,可以获取多目相机之间的外参矩阵H12,结合外参矩阵H12对第一光流数据集
和所述第二光流数据集
进行聚类分析,以确定运动目标信息,运动目标信息例如包括运动目标的数量、位置、轮廓等信息,对此不做限制。其中,在对光流数据集进行聚类分析时,可以采用凝聚方式的层次聚类方法,从集合F中的单个特征点开始,结合集合P中提供的位置坐标信息,逐次找出距离最接近的同类特征点进行合并,得到运动目标信息。
S406:确定第一图像和第二图像的重叠区域。
S406的具体说明参见上述实施例,此处不再赘述。
S407:根据运动目标信息,判断重叠区域是否存在运动目标。
也即是说,根据运动目标的数量、位置、轮廓等运动目标信息,判断重叠区域是否存在运动目标。
S408:在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图。
S409:基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量。
其中,本实施例在计算无向图中边的容量时,可以基于该运动目标信息计算运动目标被切割的代价。
S410:采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线。
S408-S410的说明具体参见上述实施例,此处不再赘述。
本实施例中,通过获取当前时刻待拼接的第一图像和第二图像,并确定第一图像和第二图像的重叠区域,并在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图,并基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量,其中,代价函数用于计算无向图顶点颜色差异代价、几何线条不连续的代价以及运动目标被切割的代价;以及采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线,能够在代价函数中增加运动目标的代价,因此在重叠区域存在弱纹理的运动目标时也可以使缝合线避开该目标,进而提升图像拼接效果。此外,本公开实施例可以计算第一图像和第二图像的光流信息,根据光流信息判断重叠区域是否存在运动目标,因此提高运动目标判别的准确性。
图5是根据本公开另一实施例提供的图像缝合线确定方法的流程示意图,如图5所示,该方法包括:
S501:获取当前时刻待拼接的第一图像和第二图像。
S502:确定第一图像和第二图像的重叠区域。
S501-S502的说明具体参见上述实施例,此处不再赘述。
S503:在重叠区域存在运动目标的情况下,获取预设的缩小比例,缩小比例包括水平缩小比例和/或垂直缩小比例。
本公开实施例,在根据重叠区域的分辨率创建无向图,可以对重叠区域进行降采样,减少计算量。
具体地,本实施例可以预设的缩小比例,其中,缩小比例包括水平缩小比例Sx,和/或垂直缩小比例Sy。
一些实施例,水平缩小比例Sx和垂直缩小比例Sy可以相等,即Sx=Sy=S,其中,S一般可以取2或4,对此不做限制。
S504:根据缩小比例和分辨率对重叠区域进行比例缩小,以确定无向图。
也即是说,本公开实施例可以利用水平缩小比例S
x对重叠区域的宽度分辨率进行比例缩小,或者利用垂直缩小比例S
y对重叠区域的高度分辨率进行比例缩小,或者利用水平缩小比例S
x和垂直缩小比例S
y对重叠区域宽度和高度分别进行比例缩小。其中,可以分别针对第一图像和第二图像的重叠区域进行缩小,缩小后的两幅图像的重叠区域可以用表示,其中,缩小后的重叠区域的分辨率例如为上述的W×H,W为宽度,H为高度;进一步地,可以根据缩小后重叠区域
和
的分辨率构建无向图。
S505:对无向图的顶点进行迭代遍历,以确定多个增广路径,其中,每次遍历源点和汇点对向增长。
本公开实施例,可以为图G创建两个树结构S和T,初始时S仅包含顶点s,T仅包含顶点t。在每次遍历增广路径时,可以使两个树结构S和T(即,源点和汇点)对向增长。
一些实施例,对于水平拼接的情况,规定第一图像为左图,第二图像为右图,V的第一列固定取左图,最右列固定取右图,S从V的第一列节点出发向右生长,T从V的最右列向生长,S与T东西对进;对于垂直拼接的情况,规定甲为上图,乙为下图,V的第一行固定取上图,最下行固定取下图,S从V的第一行向下生长,T从V的最后一行向上生长,S与T南北对进。
图6是根据本公开实施例提供的树结构增长过程示意图,如图6所示,在增长过程中,将集合V中的顶点划分为自由顶点和归属顶点两类,初始时,除了s,t之外的所有顶点都是自由顶点,如图6所示,自由顶点用A2表示,归属顶点用A1表示。以水平拼接为例S树和T树有初始的归属顶点,即:V的第一列固定取左图作为S树归属顶点A1,最右列固定取右图作为T树归属顶点A1;进一步地,S、T树采用左右对进的方式认领自由顶点,使其归属于S或T,通过认领实现树的生长,对于一个归属顶点,如果其至少拥用有一个近邻为非本树的顶点,则称其为前线顶点,如图6所示,前线顶点可以用A3表示。由于顶点的总数量是有限的,所以S与T必然会在某一个位置处相遇,在生长周期中,分别遍历S、T的所有前线顶点,从每个前线顶点的全部近邻中挑选出容量最大的自由顶点,将其认领为本树的归属顶点。此过程不断迭代,直到触发条件事件A或条件事件B,其中,事件A:如果一次迭代后认领了0个自由顶点,则遍历已经完成,算法结束,即遍历完成;事件B:如果一次迭代后S、T树的某两个前线顶点变为互为近邻,则发现了一条增广路径,算法转入增广周期。进入增广周期后,当S、T树的两个前线顶点首次相遇时,即形成一个s与t之间的增广路径p,此时对p进行增广操作,具体做法是,从源点s出发,在构成路径p的所有边中找到容量最小的一条边Ve,读取其容量值c(e),该值即是路径p可能通过的最大流量。
S506:确定每个增广路径中容量饱和的目标边。
进一步地,确定每个增广路径p上所有边的实际流量(参数f)都增加c(e),这会导致边Ve饱和(参数c=f),即:饱和的边Ve为目标边,将其从边集E中删除,并在割集
中增加饱和边Ve。
一些实施例,边e从E中删除后,可能导致若干个归属顶点从S、T树上脱离,在这种情况下,则调整这些脱离顶点的归属关系,将其重新标记为自由顶点,然后算法转入生长周期。
S507:将多个增广路径对应的多个目标边作为无向图的最小割集,以确定第一图像和第二图像的最佳缝合线。
也即是说,每次遍历到增广路径都可以在割集
中增加饱和边,多个增广路径可以确定多个目标边,从而可以将割集
作为无向图的最小割。
从而,本公开实施例采用对向增长的方式确定增广路径,可以减少增广路径遍历的时间,提高计算效率。
S508:对最佳缝合线上的坐标进行插值。
由于上述步骤对重叠区域进行缩小操作,即:降采样,则本实施例确定最佳缝合线后,还需要进行升采样,使其恢复为原始分辨率下的缝合线。具体地,可以对最佳缝合线上的坐标进行插值,例如:线性插值,并用线段将被插值的顶点连接起来。
本实施例中,通过获取当前时刻待拼接的第一图像和第二图像,并确定第一图像和第二图像的重叠区域,并在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图,并基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量,其中,代价函数用于计算无向图顶点颜色差异代价、几何线条不连续的代价以及运动目标被切割的代价;以及采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线,能够在代价函数中增加运动目标的代价,因此在重叠区域存在弱纹理的运动目标时也可以使缝合线避开该目标,进而提升图像拼接效果。此外,本公开实施例采用对向增长的方式确定增广路径,可以减少增广路径遍历的时间,提高计算效率。并且,可以对重叠区域进行降采样,减少计算量。
在一个具体实例中,图7是本公开实施例提供的图像缝合线确定过程示意图,如图7所示,包括以下步骤:
步骤一:步骤1:获取t时刻(最近)采集的一对输入图像
然后从缓存的历史序列中获取t-1时刻(上一次)采集的一对历史图像
和
其中,下标为1的序列称为甲图,下标为2的序列称为乙图;
步骤二:对步骤1中获取的最近输入图像进行预处理,预处理后的图像仍沿用原符号表示。预处理后的图像加入缓存的历史序列,按照先进先出的原则替换掉最老的图像;
步骤三:分别使用
计算甲图和乙图的光流,得到两个光流数据集
每个光流数据集维护一组特征点,用集合F表示,以及一组正在跟踪的位置坐标,用集合P表示;
步骤四:获取两个相机之间的外参矩阵H
12,结合外参矩阵对光流数据集
进行聚类分析,提取出运动目标的数量、位置、轮廓等信息;
步骤五:根据拼接标定的参数配置,从输入图像
中提取重叠区域,并对重叠区域按照设定的比例进行缩小,令水平缩小比例为S
x,垂直缩小比例为S
y,得到的缩小图像为
和
其分辨率记为WxH,其中W为宽度,H为高度;
步骤六:定义代价函数
(x,y)为像素的坐标,C
c反应颜色差异的代价,C
g反应几何线条不连续的代价,C
of反应运动物体被切割的代价;
其中,Cc(x,y)=|Y(x′,y′)-Y(x,y)|,Y(x,y)和Y(x′,y′)分别表示分别代表(x,y)位置处甲乙两图的亮度值;
Cg(x,y)=|S1(x,y)|+|S2(x,y)|,|S1(x,y)|和|S2(x,y)|分别表示(x,y)位置处甲乙两图的Sobel边缘检测算子,而所述Sobel边缘检测算子可分解为水平分量和垂直分量之和;
Cof(x,y)=ω·B1(x,y)+ω·B2(x,y),B(·)为二值函数,用于根据步骤4中提供的光流信息判断的(x,y)位置是否属于运动物体的一部分,ω是一个权重因子,一般为常数;
步骤七:按照
和
分辨率WxH创建无向图G=<V,E>,V表示顶点集合{v(x,y)|x∈[0,W-1],y∈[0,H-1]},包含WxH个普通顶点和两个特殊的顶点(源点s、汇点t);E表示边的集合{e(v
1,v
2)|v
1,v
2∈V},并且限定只有两个顶点相邻时才允许有最多一条边,每条边关联两个属性参数,容量e和实际流量f,初始时,所有边的实际流量均为f=0,最大容量c需要根据各个顶点的代价函数逐个计算,其中,步骤7中边的容量e可以使用步骤6中定义的代价函数按照以下方法计算e(v
1,v
2)=|C(x,y)+C(x+1,y)|,其中,v
1(x,y)和v
2(x,y)是无向图中两个水平方向上的相邻顶点。
步骤八:为图G创建两个树结构S和T,初始时S仅包含顶点s,T仅包含顶点t,对于水平拼接的情况,规定甲为左图,乙为右图,V的第一列固定取左图,最右列固定取右图,S从V的第一列节点出发向右生长,T从V的最右列向生长,S与T东西对进;对于垂直拼接的情况,规定甲为上图,乙为下图,V的第一行固定取上图,最下行固定取下图,S从V的第一行向下生长,T从V的最后一行向上生长,S与T南北对进;
步骤九:按照优化增广路径算法迭代求解图G的最小割,最终得到的集合
即为最佳缝合线的位置;
其中,步骤9中所定义的优化增广路径算法,具体过程是,
将集合V中的顶点划分为自由顶点和归属顶点两类,初始时,除了s,t之外的所有顶点都是自由顶点;
S、T树支持认领操作,每个树的每次迭代可以认领一个自由顶点,使其归属于S或T,通过认领实现树的生长;
对于一个归属顶点,如果其至少拥用有一个近邻为非本树的顶点,则称其为前线顶点,否则称为后方顶点;
S、T树采用东西对进或南北对进的方式认领自由顶点,由于顶点的总数量是有限的,所以S与T必然会在某一个位置处相遇;
生长周期:在生长周期中,算法分别遍历S、T的所有前线顶点,从每个前线顶点的全部近邻中挑选出容量最大的自由顶点,将其认领为本树的归属顶点。此过程不断迭代,直到触发条件事件A或条件事件B;
条件事件A:如果一次迭代后认领了0个自由顶点,则遍历已经完成,算法结束;
条件事件B:如果一次迭代后S、T树的某两个前线顶点变为互为近邻,则发现了一条增广路径,算法转入增广周期;
增广周期:当S、T树的两个前线顶点首次相遇时,即形成一个s与t之间的增广路径p,此时对p进行增广操作,具体做法是,从源点s出发,在构成路径p的所有边中找到容量最小的一条边Ve,读取其容量值c(e),该值即是路径p可能通过的最大流量。然后,路径p上所有边的实际流量(参数f)都增加c(e),这会导致边Ve饱和(参数c=f),于是将其从边集E中删除,并在割集
中增加边Ve;
重构周期:边Ve从E中删除后,可能导致若干个归属顶点从S、T树上脱离,如确有发生,则调整这些脱离顶点的归属关系,将其重新标记为自由顶点,然后算法转入生长周期。
步骤十:对最佳缝合线的坐标按照比例进行放大,对坐标放大形成的空洞进行插值,即得到原尺度下的最佳缝合线。
图8是根据本公开另一实施例提供的图像缝合线确定装置的示意图。如图8所示,该图像缝合线确定装置80包括:
第一获取模块801,用于获取当前时刻待拼接的第一图像和第二图像;
区域确定模块802,用于确定第一图像和第二图像的重叠区域;
创建模块803,用于在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图;
计算模块804,用于基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量,其中,代价函数用于计算无向图顶点颜色差异代价、几何线条不连续的代价以及运动目标被切割的代价;以及
第一确定模块805,用于采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线。
一些实施例中,装置80还包括:
第二获取模块,用于获取上一时刻采集的第一历史图像和第二历史图像;
第二确定模块,用于根据第一历史图像和第一图像确定第一光流数据集,并根据第二历史图像和第二图像确定第二光流数据集;
第三确定模块,用于基于第一光流数据集和第二光流数据集,确定运动目标信息;以及
判断模块,用于根据运动目标信息,判断重叠区域是否存在运动目标。
一些实施例中,代价函数表示为:C(x,y)=Cc(x,y)+Cg(x,y)+Cof(x,y),其中,(x,y)表示无向图任一顶点位置,Cc(x,y)表示颜色差异代价,Cg(x,y)表示几何线条不连续的代价,Cof(x,y)表示运动目标被切割的代价。
一些实施例中,其中Cc(x,y)=|Y(x′,y′)-Y(x,y)|,其中,Y(x,y)和Y(x′,y′)分别表示第一图像和第二图像在(x,y)位置像素点的亮度分量。
一些实施例中,Cg(x,y)=|S1(x,y)|+|S2(x,y)|,其中,|S1(x,y)|和|S2(x,y)|分别第一图像和第二图像在(x,y)位置像素点边缘检测算子。
一些实施例中,Cof(x,y)=ω·B1(x,y)+ω·B2(x,y),其中,B(·)为二值函数,B1(x,y)和B2(x,y)分别第一图像和第二图像在(x,y)位置像素点是否属于运动目标,ω为权重因子。
一些实施例中,第一确定模块,具体用于:对无向图的顶点进行迭代遍历,以确定多个增广路径,其中,每次遍历源点和汇点对向增长;确定每个增广路径中容量饱和的目标边;以及将多个增广路径对应的多个目标边作为无向图的最小割集。
一些实施例中,装置80还包括:第一处理模块,用于对第一图像和第二图像进行进行预处理,其中,预处理包括平滑滤波处理。
一些实施例中,创建模块,具体用于:获取预设的缩小比例,缩小比例包括水平缩小比例和/或垂直缩小比例;以及根据缩小比例和分辨率对重叠区域进行比例缩小,以确定无向图;并且,装置还包括:插值模块,用于对最佳缝合线上的坐标进行插值。
一些实施例中,第二确定模块,具体用于:分别对第一历史图像、第二历史图像、第一图像、第二图像构建图像金字塔;以及根据图像金字塔,确定第一光流数据集和第二光流数据集。
一些实施例中,装置还包括:第二处理模块,用于在第一图像和第二图像为三通道图像的情况下,将第一图像和第二图像转化为灰度图。
本实施例中,本实施例中,通过获取当前时刻待拼接的第一图像和第二图像,并确定第一图像和第二图像的重叠区域,并在重叠区域存在运动目标的情况下,根据重叠区域的分辨率创建无向图,并基于预先定义的代价函数和第一图像及第二图像在重叠区域的像素点信息,计算无向图中边的容量,其中,代价函数用于计算无向图顶点颜色差异代价、几何线条不连续的代价以及运动目标被切割的代价;以及采用增广路径算法求解无向图的最小割,以确定第一图像和第二图像的最佳缝合线,能够在代价函数中增加运动目标的代价,因此在重叠区域存在弱纹理的运动目标时也可以使缝合线避开该目标,进而提升图像拼接效果。
根据本公开的实施例,本公开还提供了一种计算机设备、一种可读存储介质和一种计算机程序产品。
为了实现上述实施例,本公开还提出一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行如本公开前述实施例提出的图像缝合线确定方法。
图9示出了适于用来实现本公开实施方式的示例性计算机设备的框图。图9显示的计算机设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图9未显示,通常称为“硬盘驱动器”)。
尽管图9中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用,例如实现前述实施例中提及的图像缝合线确定方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
需要说明的是,在本公开的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。