版权声明:本文为博主原创文章,未经博主允许不得转载:https://blog.youkuaiyun.com/broccoli_lian/article/details/79739299
这里总结了二维random walk 算法和其在图像分割领域的应用,并列出了自己在学习过程中遇到的问题,欢迎指正和讨论。
这里是random walk的MATLAB代码: https://download.youkuaiyun.com/download/broccoli_lian/10347425
很好的参考资料:http://www.cnblogs.com/pinard/p/6221564.html
基于随机游走的图像分割算法
随机游走的基本思想是将图像看成由固定的顶点和边组成的连通带权无向图,RandomWalk从未标记顶点开始随机漫步,首次到达各类标记顶点的概率代表了未标记点归属于标记类的可能性,把最大的概率所在类的标签赋给未标记顶点,完成分割。
如图所示,图中小圆圈代表图像上的每个像素点,像素点间的折线可看为权重。L1,L2,L3三个种子点分别由用户交互输入,作为标记的种子点。现要把图像分割成对应的三部分。
1 RandomWalks算法
首先,定义一个连通无向图G=(V,E),用图G给图像建模。其中V是顶点集合,E是图中任意两个顶点的无向边集合,对应图像像素的连接关系。连接两个顶点vi和的边vj用表示。带权图要为每条边赋权值,边eij的权值要用wij表示。
求解首达概率问题可转化为求解Dirichlet问题,Dirichlet问题即就是寻找一个满足边界条件的调和函数。
调和函数是满足Laplace方程(3)的函数:
(3)
当Dirichlet积分达到最小值时的解为所求调和函数,Dirichlet积分为:
(4)
RandomWalk图像分割算法分为三个步骤:A.图模型的建立;B.根据随机游走模型计算unseededpixels到达目标区域的线性方程组;C.利用迭代法求解线性方程组,这里通常采用共轭梯度法进行求解(conjugategradient)。
A.图模型的建立
计算图中任意一点vi与其各个邻接顶点连接边的权重:
(5)
其中,gi表示在像素点的图像强度,B是自由参数。
B.随机游走模型的建立
(1)构建Laplace矩阵
图G的Laplace矩阵
(6)
其中di为顶点vi的度,是连接顶点的所有边权值之和,表示如下
(7)
L通过以下方式构建:
(8)
其中,A是边-顶点的m*m关联矩阵,有
(9)
其中,C是图G的本构矩阵,定义为对角矩阵,对角元素是相应边的权值。
(2) 求解Dirichlet问题
基于以上定义,Dirichlet积分的离散形式表示为:
(10)
所求解为使式(10)最小化的离散调和函数。由于L半正定,故D[x]存在唯一的极小值点。
将图像顶点分为两个集合,Vm(标记点)与Vu(未标记点),则式(10)可分解为:
(11)
通过对D[xu]求关于xu的微分来寻找其极值点:
(12)
假设表示顶点vi属于标签s的概率,标记点的标签集合定义为,
,k为标签总数。因此:
(13)
则求解离散Dirichlet问题即求解:
C.模型的求解
对上述稀疏矩阵线性方程组的求解,最长用的是共轭梯度法。
2 问题
1、如何求解。
2、证明:求解首达概率问题可转化为求解Dirichlet问题。
3、已知,如何理解L半正定,故D[x]存在唯一的极小值点。
4、本构矩阵如何理解?
5、中的B如何理解?
6、种子点和标签的区别?
7、怎么样理解对矩阵转置求导结果为1
这些问题的求解的答案后续更新,请随时关注
认真学习CV第五天。。。去年从开始做图像分割方面的本科毕业设计开始接触CV,到现在真正认真学习CV没几天,很遗憾自己错过那么多该努力奋斗的日子。但是什么时候开始都不晚,庆幸自己早早反省,也谢谢我的导师。这两天自己过得很踏实,虽然在random walk里面还有很多问题不会,但是感受到努力会有回报的。我记得我高中最喜欢的一句话就是 Your efforts will be pay off!!
参考文献:
[1]Random Walks for ImageSegmentation
[2]基于RandomWalk算法的CT图像肺实质自动分割