|
发布时间: 2018-12-16 |
图像分析和识别 |
|
|
收稿日期: 2018-06-04; 修回日期: 2018-07-23
基金项目: 国家自然科学基金项目(61162023,61772255);航空科学基金项目(2016ZC56005);江西省重点研发计划一般基金项目(20171BBG70052,20161BBE50080)
第一作者简介:
江少锋, 1978年生, 男, 副教授, 博士, 主要研究方向为光流计算、医学图像处理、深度学习等。E-mail:jsphone@163.com;
赵鹏, 男, 研究生, 主要研究方向为光流计算。E-mail:2257071325@qq.com; 杨素华, 女, 讲师, 主要研究方向为图像处理。E-mail:43009@nchu.edu.cn; 陈震, 男, 教授, 主要研究方向为光流计算。E-mail:DR_CHENZHEN@sina.com; 张聪炫, 男, 副教授, 主要研究方向为光流计算。E-mail:zcxdsg@163.com.
中图法分类号: TP391
文献标识码: A
文章编号: 1006-8961(2018)12-1852-12
|
摘要
目的 基于马尔可夫随机场(MRF)的变分光流计算是一种较为鲁棒的光流计算方法,但是计算效率很低。置信传播算法(BP)是一种针对MRF较为高效的全局优化算法。本文提出一种MRF变分光流计算模型并采用并行BP方法实现,极大提高计算效率。方法 提出的MRF变分光流计算模型中的数据项采用了Horn等人根据灰度守恒假设得到的光流基本约束方程,并采用非平方惩罚函数进行调整以平滑边界影响。为在CUDA平台上实现高效并行处理,本文提出了一种优化的基于置信传播的MRF并行光流计算方法。该优化方法在采用置信传播最小化MRF光流能量函数时,采用了一种4层的3维网络结构进行并行计算,每层对应MRF4邻域模型中的一个方向的信息传播,同时在每层中为每个像素分配多个线程采用并行降维法计算所要传递的信息,大大降低单线程计算负荷,大幅度提高计算效率。结果 采用旋转小球图像序列进行实验,计算效率提高314倍;采用旋转小球、Yosemite山谷和RubberWhale 3种不同图像序列,与Horn算法、Weickert算法、Hossen并行Lucas算法、Grauer-Gray并行MRF算法进行对比实验,本文方法得到最低的平均端点误差(AEE),分别为0.13、0.55和0.34。结论 本文提出了一种新的MRF光流计算模型,并在CUDA平台上实现了并行优化计算。实验结果表明,本文提出的并行计算方法在保持计算精度的同时极大提高了计算效率。本文方法对内存需求巨大,在处理高分辨率图像时,限制了采样点数,难以计算大位移。
关键词
光流场; 马尔可夫随机场; CUDA并行计算; 置信传播; 非平方惩罚函数
Abstract
Objective
The Markov random field (MRF) model for variational optical flow computing is a robust one. The MRF variational energy function includes the data and smooth terms. Brief propagation (BP) is a highly effective global method that minimizes the MRF energy function by iteratively transmitting messages from one pixel to the next in four directions. However, its computational cost remains high. The computational complexity of the BP method with a 3-level data pyramid is O(
Key words
optical flow; Markov random field; parallel computing on CUDA; brief propagation method; non-squared penalty function
0 引言
光流不仅包含了被观察物体的运动信息,还携带有被观察物体丰富的3维结构等信息,被广泛地应用于目标识别、分割、跟踪、目标3D结构和形状恢复、视频检测、图像配准、运动估计等计算机视觉和图像处理领域。
在Horn等人[1]和Lucas等人[2]分别提出了全局和局部变分光流计算的两种基本方法后,各种针对变分光流计算的新理论和新方法不断涌现,在计算精度及鲁棒性等方面得到了较大提高。一般光流计算中的变分光流能量函数由数据项和平滑项组成,其中数据项主要包括各种基于图像数据先验知识的守恒假设,是决定光流计算的主要因素。Horn算法中采用了灰度守恒假设,并得到了相应的光流基本约束方程。Zimmer等人[3]在Horn算法的模型中增加了惩罚函数形式的数据项和平滑项,且数据项增加了梯度守恒假设。Papenberg等人[4]证明了光流计算基本约束方程与梯度守恒假设相结合计算精度较高、计算复杂度相对较低、总体性能最优。能量函数中平滑项主要由各种平滑策略构成,决定了在计算时光流扩散的方向和程度。常用的平滑项有各向同性扩散的非线性平滑策略[5]、基于图像结构张量的各向异性扩散策略[6]、将各项同性扩散与各向异性扩散策略相结合的策略[7]和马尔可夫随机场(MRF)策略[8]等。
马尔可夫随机场模型(MRF)假设图像的邻域空间分布具有局部性、一致性,使得MRF光流计算模型具有优良的抗噪能力。早期的MRF能量函数优化算法(ICM算法、模拟退火算法和动态规划等)速度慢,容易陷入局部最优。随着图割(GC)[9]、置信传播(BP)[10]等新的强有力的优化算法的出现,MRF能量函数的优化速度有了质的提升。
虽然图像序列变分光流计算技术在运动检测方面已取得了很大的进展,但由于变分光流计算的时间消耗通常较大,限制了其在实时运动检测中的应用。采用并行计算是提高光流计算效率的一个解决途径。2003年以来,GPU的运算能力就远远超过了CPU。在存储器带宽方面,GPU也优于CPU。由于在并行计算方面的优越性,除了进行传统的图形图像显示外,GPU还被用来进行诸如图像分割[11]、配准[12]、深度学习[13]等通用计算(GPGPU)。为了解决GPU可编程和存储问题,NVIDIA公司于2007年正式发布一种新的统一计算架构CUDA。经过近年来的发展,GPU性能显著提高,CUDA的通用计算能力也在显著提高,而且功能也在不断完善。Cuomo等人[14]在CUDA平台上实现了一个GPU加速的光流场计算方法,该方法将光流变分计算变为两个线性方程的迭代解的问题,其计算速度仍然不够快。Hossen等人[15]在CUDA平台上实现了一种GPU加速的Lucas光流场计算方法。Grauer-Gray等人[16]在CUDA平台上提出了基于马尔可夫能量函数的变分光流并行计算方法,但是该方法只是简单将串行方法并行化,没有针对光流计算特点进行优化,导致单线程计算负荷重,计算效率依然不够高。
本文提出了一种优化的基于马尔可夫模型的光流并行计算方法,该优化方法采用了一种4层的3维网络结构进行并行BP计算,每层负责4邻域MRF中一个方向的BP信息计算及传递,同时为每层中的每个像素点分配多个线程并行计算,大大降低单线程计算负荷,大幅度提高计算效率。
1 MRF光流计算方法
1.1 MRF光流计算能量方程
一般光流计算中的变分光流能量函数由数据项和平滑项组成,其能量函数如下
$ E\left( {u,v} \right) = {E_{{\rm{smooth}}}}\left( {u,v} \right) + \lambda {E_{{\rm{data}}}}\left( {u,v} \right) $ | (1) |
式中,
$ {E_{{\rm{smooth}}}}\left( {u,v} \right) = \sum\limits_{q \in {\mathit{\boldsymbol{\mathcal{N}}}_p}} {V\left( {{u_p} - {u_q},{v_p} - {v_q}} \right)} $ | (2) |
$ {E_{{\rm{data}}}}\left( {u,v} \right) = \sum\limits_{p \in {\cal P}} {{D_p}\left( {{u_p},{v_p}} \right)} $ | (3) |
则变分光流能量模型转化为马尔可夫能量模型
$ \begin{array}{*{20}{c}} {E\left( {u,v} \right) = }\\ {\sum\limits_{q \in {\mathit{\boldsymbol{\mathcal{N}}}_p}} {V\left( {{u_p} - {u_q},{v_p} - {v_q}} \right)} + \sum\limits_{p \in \mathit{\boldsymbol{\mathcal{P}}}} {{D_p}\left( {{u_p},{v_p}} \right)} } \end{array} $ | (4) |
式中,等式右边第1项对应平滑项,
第2项对应数据项,
$ {E_{{\rm{data}}}}\left( {u,v} \right) = \sum\limits_{p \in {\cal P}} {\psi \left( {{D_p}\left( {{u_p},{v_p}} \right)} \right)} $ | (5) |
在计算代价函数
$ \begin{array}{*{20}{c}} {{D_p}\left( {{u_p},{v_p}} \right) = }\\ {\left\| {{I_1}\left( {x + \alpha {u_p},y + \alpha {v_p}} \right) - {I_2}\left( {x,y} \right)} \right\|} \end{array} $ | (6) |
采用该数据项的不足之处在于坐标(
$ \begin{array}{*{20}{c}} {{D_p}\left( {{u_p},{v_p}} \right) = \left\| {{I_1}\left( {x + \alpha {u_p},y + \alpha {v_p}} \right) - {I_2}\left( {x,y} \right)} \right\| + }\\ {\gamma \left\| \begin{array}{l} I_1^x\left( {x,y} \right)\alpha {u_p} + I_1^y\left( {x,y} \right)\alpha {v_p} + \\ {I_2}\left( {x,y} \right) - {I_1}\left( {x,y} \right) \end{array} \right\|} \end{array} $ | (7) |
式中,
1.2 BP算法最小化MRF能量方程
置信传播(BP)算法的主要思想是:对于马尔可夫随机场中的每一个节点,通过信息传播,把该节点的能量状态传递给相邻的节点,从而影响相邻节点的能量状态,经过一定次数的迭代,每个节点的能量将收敛于一个稳态。采用BP算法中的Max-Product方法,节点之间传送的信息定义为
$ \begin{array}{*{20}{c}} {m_{pq}^t\left( {{f_q}} \right) = \mathop {\min }\limits_{{f_p}} \left( {V\left( {{f_p},{f_q}} \right) + {D_p}\left( {{f_p}} \right) + } \right.}\\ {\left. {\sum\limits_{s \in \mathit{\boldsymbol{\mathcal{N}}}\left( p \right)\backslash q} {m_{sp}^{t - 1}\left( {{f_p}} \right)} } \right)} \end{array} $ | (8) |
式中,
$ {b_q}\left( {{f_q}} \right) = {D_q}\left( {{f_q}} \right) + \sum\limits_{p \in \mathit{\boldsymbol{\mathcal{N}}}\left( q \right)} {m_{sp}^T\left( {{f_q}} \right)} $ | (9) |
对节点
1.3 二分法信息传递
BP算法中信息传递的过程是:遍历每个像素点,每个像素点分别从上下左右4个方向将式(8)中计算的信息传递给相邻像素,经过一定次数的迭代后,信息传递收敛,不再进行信息传递。具体传递时为减少计算量,采用二分法每次循环交叉更新一半图像像素点的信息。二分法将整个像素网格分为两个一样大小的集合
1.4 金字塔算法
1.5 采用BP方法计算光流步骤
在阐述了MRF光流计算基本原理及如何采用BP算法最小化MRF光流能量方程之后,下面详细说明采用BP方法计算光流的步骤:
1) 计算数据项:载入连续两帧图像根据式(7)计算数据项,这样每个像素点需进行
2) 计算并传递信息:因为光流计算是2维的,于是将式(8)的
$ \begin{array}{*{20}{c}} {m_{pq}^t\left( {{u_q},{v_q}} \right) = \mathop {\min }\limits_{{u_p},{v_p}} \left( {{{\left( {{u_q} - {u_p}} \right)}^2} + } \right.}\\ {\left. {{{\left( {{v_q} - {v_p}} \right)}^2} + h\left( {{u_p},{v_p}} \right)} \right)} \end{array} $ | (10) |
$ \begin{array}{*{20}{c}} {{u_p},{u_q},{v_q},{v_q} = - \left( {L/2} \right), \cdots ,\left( {L/2} \right) - 1}\\ {h\left( {{u_p},{v_p}} \right) = }\\ {\sum\limits_{s \in \mathit{\boldsymbol{\mathcal{N}}}\left( p \right)\backslash q} {\left( {m_{sp}^{t - 1}\left( {{u_p},{v_p}} \right) + \psi \left( {{D_p}\left( {{u_p},{v_p}} \right)} \right)} \right)} } \end{array} $ | (11) |
如采用常规方法求解式(10),每个像素点的计算复杂度为
$ \begin{array}{l} m_{pq}^t\left( {{u_q},{v_q}} \right) = \mathop {\min }\limits_{{u_p}} \left( {{{\left( {{u_q} - {u_p}} \right)}^2} + \mathop {\min }\limits_{{v_p}} \left( {{{\left( {{v_q} - {v_p}} \right)}^2} + } \right.} \right.\\ \left. {\left. {h\left( {{u_p},{v_p}} \right)} \right)} \right) = \mathop {\min }\limits_{{u_p}} \left( {{{\left( {{u_q} - {u_p}} \right)}^2} + m_{h\left| {{u_p}} \right.}^t\left( {{v_q}} \right)} \right) \end{array} $ | (12) |
$ m_{h\left| {{u_p}} \right.}^t\left( {{v_q}} \right) = \mathop {\min }\limits_{{v_p}} \left( {{{\left( {{v_q} - {v_p}} \right)}^2} + h\left( {{u_p},{v_p}} \right)} \right) $ | (13) |
如果还是采用常规计算,式(13)中对于单个
式(13)中的每一个平方项对应图 4中的一个抛物线,当
$ \begin{array}{l} {s_1} = \frac{{\left( {f\left( r \right) + {r^2}} \right) - \left( {f\left( q \right) + {q^2}} \right)}}{{2r - 2q}}\\ {s_2} = \frac{{\left( {f\left( q \right) + {q^2}} \right) - \left( {f\left( z \right) + {z^2}} \right)}}{{2q - 2z}} \end{array} $ | (14) |
若交点
3) 确定光流:信息传递结束后,对于每个像素点,找到使式(9)最小的那个
1.6 计算复杂度分析
假设金字塔层数为3,每层迭代次数为
常规的并行计算方法用一个线程处理每一个像素点,可以将总体计算复杂度
2 优化的马尔可夫光流并行计算方法
本文主要对最为复杂的信息计算及信息更新部分的并行计算做了创新性设计。由于需要对上下左右4个方向进行信息更新,而每个方向上的更新是独立的,为此本文同时在4个方向进行信息计算和更新,且对于最为复杂的信息计算步骤,采用了计算复杂度只有
2.1 计算过程
本并行计算方法计算过程如图 5所示,和串行方法一样共有3个步骤。CUDA中主要通过分配线程块和线程来实现并行计算,通常在处理图像时,将一幅图像分成由若干个线程块组成的2维网格,每个线程块中再分配若干个线程,每个线程对应一个图像像素点的操作。线程块和线程的划分对并行算法的效率有很大影响。下面分别介绍这3个步骤中并行方法是如何在CUDA中实现的。
1) 并行计算数据项,图像中每个点的数据项的计算都是独立的,只要在并行运算平台CUDA中为每个点分配一个线程,每个线程并行地根据式(7)即可计算完数据项。具体分配线程时采用最简单的2维线程块网格进行线程划分,假设
$ {\rm{Dim3}}\;{\rm{Block}}\left( {{W_b},{H_b}} \right) $ | (15) |
$ {\rm{Dim3}}\;{\rm{Threads}}\left( {{n_{TX}},{n_{TY}}} \right) $ | (16) |
进行线程与像素点映射,即
$ x = blockIdx.x \times blockDim.x + threadIdx.x $ | (17) |
$ y = blockIdx.y \times blockDim.y + threadIdx.y $ | (18) |
式中,
2) 并行计算信息和二分法传递信息,本文主要对最为复杂的信息计算及信息传递部分的并行计算做了创新性设计。由于需要对上下左右4个方向进行信息更新,在分配线程块的时候采用了式(19)在CUDA中分配了如图 6所示的一个3维的线程块结构
$ {\rm{Dim3}}\;{\rm{Blocks}}\left( {{W_b}/2,{H_b},4} \right) $ | (19) |
该结构中共有4层,每一层负责计算一个方向的所有像素点的信息。由于在计算信息的时候每个线程的计算负荷很重,故本文分配多个线程采用并行的降维法计算一个像素点的信息,这样处理大大减少了每个线程的计算负荷,提高了计算效率。为此本文在线程块中分配线程时,在每一层中为每个线程块分配了一个3维线程结构
$ {\rm{Dim3}}\;{\rm{Threads}}\left( {{n_{TX}},{n_{TY}},L} \right) $ | (20) |
同样有
$ y = blockIdx.y \times blockDim.y + threadIdx.y $ | (21) |
$ \begin{array}{*{20}{c}} {x = \left( {blockIdx.x \times blockDim.x + } \right.}\\ {\left. {threadIdx.x} \right) \times 2 + \bmod \left( {t + y,2} \right)} \end{array} $ | (22) |
$ {z_t} = threadIdx.z $ | (23) |
$ {z_b} = blockIdx.z $ | (24) |
图 6中每个小方块中又包含
在降维法计算中,图像的
(1) 计算
(2) 计算
在信息传递时,根据式(24),
3) 并行输出各点光流值(
2.2 线程同步
在并行计算中,不同线程之间的同步至关重要,如果需要同步的地方没有同步,可能会出现随机结果。BP算法中采用的二分法信息传递不仅减少了计算量,还很好地解决了线程同步问题。由图 2和图 6可知一个像素点的信息计算和更新需要周围3个邻域点的信息,采用二分法能够保证信息的读取和更新是严格分离的。举个例子,在某次迭代中,更新白点的信息,则首先要读取邻域3个黑点的信息,而这3个黑点的信息由上次迭代计算得到,在本次迭代中不会被更新,随后在更新白点的信息时,白点的信息不会被任意一个邻域点读取,这样均保证了数据的一致性。于是本并行算法只要在信息更新或读取后插入同步指令即可实现数据同步,而不会出现随机读取及读写冲突现象。
3 实验
本文的实验平台为联想台式计算机,Windows7 64位操作系统,intel i7-4790 CPU,主频3.6 GHz,8 GB内存,Nvidia GTX950显卡,算法均在CUDA3.2平台C语言实现。本文实验中选用的性能评估指标由Barron等人[19]提出,分别是平均角速度误差(AAE)和平均端点误差(AEE)。AAE是计算光流矢量(
$ A = \frac{1}{N}\sum\limits_{i = 1}^N {{\phi _{\rm{e}}}\left( i \right)} $ | (25) |
$ \begin{array}{*{20}{c}} {{\phi _{\rm{e}}}\left( i \right) = }\\ {\arccos \left( {\frac{{u_i^{\rm{c}}u_i^{\rm{e}} + v_i^{\rm{c}}v_i^{\rm{e}} + 1}}{{\sqrt {{{\left( {u_i^{\rm{c}}} \right)}^2} + {{\left( {v_i^{\rm{c}}} \right)}^2} + 1} \sqrt {{{\left( {u_i^{\rm{e}}} \right)}^2} + {{\left( {v_i^{\rm{e}}} \right)}^2} + 1} }}} \right)} \end{array} $ | (26) |
AEE表示(
$ E = \frac{1}{N}\sum\limits_{i = 1}^N {\sqrt {{{\left( {u_i^{\rm{c}} - u_i^{\rm{e}}} \right)}^2} + {{\left( {v_i^{\rm{c}} - v_i^{\rm{e}}} \right)}^2}} } $ | (27) |
共采用3种图像序列与Horn算法[1]、Weickert算法[3]、Hossen[15]提出的Lucas并行光流算法和Grauer-Gray等人[16]提出的马尔可夫并行光流算法进行对比实验。
3.1 旋转球图像序列实验
本实验采用合成旋转小球图像序列的第19帧和20帧进行实验,以验证变分光流算法对单一的旋转运动物体的处理能力。图像大小为200×200像素,其图像、真实光流及计算光流如图 7所示,计算误差见表 1。
表 1
旋转小球图像序列计算结果误差对比
Table 1
The optical flow errors of different methods on rotary sphere image sequence
方法 | AAE | AEE | TIME/s |
Horn | 3.90 | 0.14 | 0.4 |
Weickert | 7.11 | 0.21 | 6 |
Hossen | 4.48 | 0.15 | 0.01 |
Grauer-Gray | 4.40 | 0.15 | 0.68 |
本文 | 3.80 | 0.13 | 0.27(并行)85(串行) |
图 7(c)为Horn算法计算得到的光流场结果,在球的内部光流矢量在出现了较明显的偏移, 其原因在于这些区域并不满足灰度守恒假设;图 7(d)为Weickert算法计算得到的光流场结果,在球的外部出现了数值非零的光流矢量,导致计算误差较大,其原因在于此区域较为平滑,梯度较小,梯度守恒假设难以满足;图 7(e)为Hossen算法计算得到的光流场结果,其计算时间最少,有些点出现较大误差,其原因在于Lucas算法在利用矩阵求逆计算这些区域的光流时,特征矩阵的行列式过小,导致计算结果错误,说明Lucas算法稳定性不佳。图 7(f)为Grauer-Gray算法计算得到的光流场结果,其计算时间小于1 s,结果中有较大的误差,其原因在于数据插值引起的误差;图 7(g)为本文算法计算得到的光流场结果,虽然由于MRF的平滑作用,在球的顶部有少许小光流矢量丢失,但是仍得到了最低的计算误差,由于对并行计算进行了优化,计算时间是Grauer-Gray算法的一半。表 1中还列出了串行和并行计算时间,可以看出采用并行算法,计算效率提高了314倍。
3.2 Yosemite山谷图像序列实验
本实验采用Yosemite山谷真实图像序列的第10帧和11帧进行实验,以验证本文算法对有光照变化的运动图像的光流场计算精度。图像大小为316×252像素,其图像、真实光流及计算光流如图 8所示,计算误差见表 2。
表 2
Yosemite山谷图像序列计算结果误差对比
Table 2
The optical flow errors of different methods on Yosemite Valley image sequence
方法 | AAE | AEE | TIME/s |
Horn | 19.39 | 1.10 | 0.5 |
Weickert | 10.80 | 0.57 | 17.7 |
Hossen | 12.02 | 0.64 | 0.03 |
Grauer-Gray | 14.13 | 0.61 | 1.16 |
本文 | 12.41 | 0.55 | 0.50 |
图 8(c)为Horn算法计算得到的光流场结果,Horn光流场算法误差较大,虽然对物体的大致运动有着正确的判断,但在光照变化区域出现了比较大的误差,这说明采用灰度守恒假设的Horn算法对光照变化敏感;图 8(d)为Weickert算法计算得到的光流场结果,由于Weickert算法中采用了梯度守恒假设,对光照变化不敏感,故能正确反映图像中的物体运动情况,得到的误差较小。图 8(e)为Hossen算法计算得到的光流场结果,计算时间最少,同样由于Lucas算法的稳定性问题,在光照变化处有较大误差;图 8(f)为Grauer-Gray算法计算得到的光流场结果,由于仅采用了灰度信息,故在光照变化处有较大角度误差。图 8(g)为本文算法计算得到的光流场结果,由于既采用了灰度信息又采用了梯度信息,虽然在光照变化区域出现了一定的误差,但是计算误差比Horn算法要小很多,得到最小的AEE, AAE也仅略大于Weickert和Hossen算法。
3.3 RubberWhale图像序列实验
本实验采用来自Hydrangea图像序列(http://vision.middlebury.edu/flow/data/)的第10帧和第11帧进行实验,以验证变分光流算法处理多物体复杂运动图像序列的计算能力。图像大小为584×388像素,其图像、真实光流及计算光流如图 9所示,计算误差见表 3。
表 3
RubberWhale图像序列计算结果误差对比
Table 3
The optical flow errors of different methods on RubberWhale image sequence
方法 | AAE | AEE | TIME/s |
Horn | 12.04 | 0.42 | 1.67 |
Weickert | 24.94 | 0.71 | 88.1 |
Hossen | 9.19 | 0.35 | 0.08 |
Grauer-Gray | 12.75 | 0.43 | 1.95 |
本文 | 10.70 | 0.34 | 1.62 |
一般情况下,不同物体之间的遮挡处可能既不满足灰度守恒也不满足梯度守恒,故在处理多运动图像时,图 9(c)中Horn算法计算得到的光流场结果和图 9(d)中Weickert算法计算得到的光流场结果误差较大。图 9(e)为Hossen算法计算得到的光流场结果,其计算时间最少,由于稳定性问题,其中有些点出现较大误差。图 9(f)为Grauer-Gray算法计算得到的光流场结果,在遮挡处存在较大误差。图 9(g)为本文算法计算得到的光流场结果,从光流图上可以看出,在遮挡处由于采用了非平方惩罚函数通过平滑运动矢量,本方法具有更好的效果,得到最小的AEE,AAE也仅略大于Hossen算法。
3.4 不同参数实验
本文提出的光流计算模型中最重要的参数是式(1)中的
图 10中列出了6组不同参数下对Yosemite山谷真实图像序列的第10帧和11帧进行实验的结果。可以看到当
4 结论
本文提出了一种基于马尔可夫随机场的并行变分光流计算方法,从实验结果来看,其计算时间接近Horn算法,远远小于Weickert算法,快于常规并行马尔可夫光流计算方法(Grauer-Gray算法),仅比并行Lucas光流计算方法(Hossen算法)慢。可见本文实现了MRF并行变分光流的高效计算。从3个实验结果来看,Horn算法和Grauer-Gray算法仅采用了灰度信息进行光流计算,对光照变化敏感,对多运动目标之间的遮挡处理能力弱;Weickert算法采用了梯度信息进行光流计算,对光照变化不敏感,但是在运动边界常出现大的误差;Lucas算法在3个实验中的某些区域均会出现较大误差,存在稳定性问题。本文算法无论是处理旋转运动、多运动目标和光照变化情况,均取得最小的AEE误差。可见提出的马尔可夫并行变分光流计算模型具备一定的鲁棒性。虽然本文方法取得了很高的计算效率和较好的精度,但是本文方法对内存需求巨大,在处理高分辨率图像时,限制了其采样点数,难以计算大位移。故需对MRF光流计算方法做进一步研究,解决高分辨率图像大位移计算问题。
参考文献
-
[1] Horn B K P, Schunck B G. Determining optical flow[J]. Artificial Intelligence, 1981, 17(1-3): 185–203. [DOI:10.1016/0004-3702(81)90024-2]
-
[2] Lucas B D, Kanade T. An iterative imge registration technique with an application to stereo vision[C]//Proceedings of the 7th International Joint Conference on Artificial Intelligence. Vancouvcr BC, Canada: Morgan Kaufmann Publishers Inc., 1981, 2: 674-679.
-
[3] Zimmer H, Bruhn A, Weickert J. Optic flow in harmony[J]. International Journal of Computer Vision, 2011, 93(3): 368–388. [DOI:10.1007/s11263-011-0422-6]
-
[4] Papenberg N, Bruhn A, Brox T, et al. Highly accurate optic flow computation with theoretically justified warping[J]. International Journal of Computer Vision, 2006, 67(2): 141–158. [DOI:10.1007/s11263-005-3960-y]
-
[5] Heitz D, Mémin E, Schnörr C. Variational fluid flow measurements from image sequences:synopsis and perspectives[J]. Experiments in Fluids, 2010, 48(3): 369–393. [DOI:10.1007/s00348-009-0778-3]
-
[6] Werlberger M, Trobin W, Pock T, et al. Anisotropic Huber-L1 optical flow[C]//Proceedings of the British Machine Vision Conference. London, UK: BMVA Press, 2009: 1-11.[DOI: 10.5244/c.23.108]
-
[7] Zimmer H, Bruhn A, Weickert J. Optic flow in harmony[J]. International Journal of Computer Vision, 2011, 93(3): 368–388. [DOI:10.1007/s11263-011-0422-6]
-
[8] Felzenszwalb P F, Huttenlocher D P. Efficient belief propagation for early vision[J]. International Journal of Computer Vision, 2006, 70(1): 41–54. [DOI:10.1007/s11263-006-7899-4]
-
[9] Boykov Y, Veksler O, Zabih R. Fast approximate energy minimization via graph cuts[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2001, 23(11): 1222–1239. [DOI:10.1109/34.969114]
-
[10] Weiss Y, Freeman W T. On the optimality of solutions of the max-product belief-propagation algorithm in arbitrary graphs[J]. IEEE Transactions on Information Theory, 2001, 47(2): 736–744. [DOI:10.1109/18.910585]
-
[11] Feng C L, Zhao D Z, Huang M. Image segmentation using CUDA accelerated non-local means denoising and bias correction embedded fuzzy c-means (BCEFCM)[J]. Signal Processing, 2016, 122: 164–189. [DOI:10.1016/j.sigpro.2015.12.007]
-
[12] Fluck O, Vetter C, Wein W, et al. A survey of medical image registration on graphics hardware[J]. Computer Methods and Programs in Biomedicine, 2011, 104(3). [DOI:10.1016/j.cmpb.2010.10.009]
-
[13] Awan A A, Hamidouche K, Hashmi J M, et al. S-Caffe: co-designing MPI runtimes and Caffe for scalable deep learning on modern GPU clusters[C]//Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. Austin, Texas, USA: ACM, 2017: 193-205.[DOI: 10.1145/3018743.3018769]
-
[14] Cuomo S, Galletti A, Giunta G, et al. Toward a multi-level parallel framework on GPU cluster with PetSC-CUDA for PDE-based optical flow computation[J]. Procedia Computer Science, 2015, 51: 170–179. [DOI:10.1016/j.procs.2015.05.220]
-
[15] Hossen K, Mahmud H. Parallel optical flow detection using CUDA[D]. Dhaka, Bangladesh: BRAC University, 2014.
-
[16] Grauer-Gray S, Kambhamettu C, Palaniappan K. GPU implementation of belief propagation using CUDA for cloud tracking and reconstruction[C]//Proceedings of 2008 IAPR Workshop on Pattern Recognition in Remote Sensing. Tampa, Florida, USA: IEEE, 2008: 1-4.[DOI: 10.1109/prrs.2008.4783169]
-
[17] Felzenszwalb P F, Huttenlocher D P. Distance transforms of sampled functions[J]. Theory of Computing, 2012, 8(19): 415–428. [DOI:10.4086/toc.2012.v008a019]
-
[18] Jiang S F, Yang S H, Chen Z, et al. Parallel computing of signed distance function in level set based on dimension reduction[J]. Journal of Image and Graphics, 2018, 23(2): 174–181. [江少锋, 杨素华, 陈震, 等. 水平集中符号距离函数并行降维计算[J]. 中国图象图形学报, 2018, 23(2): 174–181. ] [DOI:10.11834/jig.170348]
-
[19] Barron J L, Fleet D J, Beauchemin S S. Performance of optical flow techniques[J]. International Journal of Computer Vision, 1994, 12(1): 43–77. [DOI:10.1007/bf01420984]