EPIC flow

来源:互联网 发布:人工智能威胁知乎 编辑:程序博客网 时间:2024/05/06 10:05

来自阿尔卑斯山人的杰作:EpicFlow: Edge-Preserving Interpolation of Correspondences for Optical Flow


主要思想,先用Deepflow和He博士的NNF方法算sparse的robust点之flow,再用合适的插补修改至dense field


细节包括:

1)用SED检测边界,即每个pixel的边界属性

2)计算每个点到其他所有点的geodesic distance,同layer的两个点GS会较低,如果两个点被边界隔开,GS会高(resistance,爬过去累)

3)找出geodesic distance最近的点们来插补,概念类似于layer grouping

其中,寻找最近点时,用的是Dijkstra算法

https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

参考:http://blog.csdn.net/u012856866/article/details/38724617

弱弱感想:用此算法来进行同layer的OF归类是很合理的,但是要是没有这种知识面(Dijkstra算法),估计想不到这么来用,功夫啊~


优点:可以保留很多物体边缘的细节,但是效果和之前的Local Grouping for Optical Flow相比,又更好(那个作者被嫌弃了,其实也是牛牛,最近刚换了新的坑)


Matlab open source 用来实现Dijkstra算法的函数

http://www.mathworks.com/matlabcentral/fileexchange/20025-dijkstra-s-minimum-cost-path-algorithm


[costs,paths] = dijkstra( A, C, SID, FID)

假设有1000个点

A: 1000 x 1000 表示每两个点之间的连接性,1表示有连线,0表示无联系

C: 1000 x 1000, cost map, 每个点C(i,j),代表从i到j的cost (resistance), 注意从i到j,和j到i,可以是不同的,这里使用的值来自于SED边缘相应  

SID: 开始的点,default为所有点,如果标记1就表示第1个点,可以写[1 3 4],1:100

FID: 结束的点,default为所有点,如果标记1000就表示第1000个点,也可以写1:1000,[3 5 7]


costs: 最短路径长度

paths: (每一条路径)所经节点编号


原创粉丝点击