Page 466 - 《软件学报》2024年第6期
P. 466

3042                                                       软件学报  2024  年第  35  卷第  6  期


                 令任意节点在水平方向上实现如图            5(c) 所示的三邻域有向连通, 在充分建立邻域关系的基础上能够极大地提升遍
                 历图的效率. 本文将端到端分割网络与图搜索算法相结合, 通过神经网络得到概率图后, 采用改进的图搜索算法对
                 层边界进行搜索, 使得整体分割框架在充分提取和利用视网膜                     OCT  图像的全局特征和边界强相关信息的能够同
                 时考虑连续性约束, 从而实现更精确的视网膜层边界分割.
                    图搜索算法整体流程如算法          1  所示, 算法主要包括以下      4  个步骤.
                    Step 1. 转换候选边界. 将粗分割结果中的边界像素定义为对应边界的候选像素, 如图                       5(b) 所示. 对于粗分割
                 结果中的任一像素, 若其与下方像素对应的视网膜层类别不一致时, 则该像素被认为是候选边界的组成部分.
                    Step 2. 构造有向图模型. 将转换候选边界后的图像构建为如图                5(c) 所示的由节点和连接节点的边组成的一个
                 三邻域连通有向图模型, 其中         1  个节点即为   1  个像素, 每个节点都有其对应的权值.
                    Step 3. 计算有向图中各节点的权值和连接权值. 将            Step 1  中的候选边界像素    (节点) 的权值设为     1, 其余为  0.
                 有向图的节点的连接权值计算如下:
                                                                                                      (1)
                                                    w ij = 2−(p i + p j )+w min
                 其中, p i 和  p j 分别表示节点  i 和  j 的权值, w i 表示节点  i 到  j 间的有向边的权重, w mi 为一个小正数, 以防止连接权
                                                                                 n
                                                  j
                 11.   u ⇐minDistance(E, V) // 从边集合中选择出与节点
                 值为  0. 对于有向图中的任意一条边, 其权重的大小与其连接的两个节点所对应的候选像素的多少成反比.
                    Step 4. 最短路径算法搜索有向图. 利用        Dijkstra 最短路径算法从所确定的有向图中选定顶点出发, 遍历整个
                 图并更新层边界的路径, 最后得到细分割结果.
                    图搜索算法本身具有最短路径算法的连续性, 能够弥补粗分割结果中存在的视网膜层边界不连续的问题. 本
                 文的图搜索方法的优点在于对边界的优化过程中, 令最短路径尽可能多地包含候选像素, 从而在有效继承神经网
                 络的分割结果的同时使得最终得到的视网膜层边界与真值图更接近.

                 算法  1. 图搜索算法.
                 输入: 粗分割阶段输出的像素集          V  及边界点集   C (候选像素).
                 初始化:
                 1. 图像像素集合    V = {v 1 , v 2 , ..., v k } n×m
                 2. 候选像素集合    C = {c 1 , c 2 , ..., c s }
                 3. 构建三邻域连通有向图       G = (V, E), E ={w ij }, i, j ∈ {1, 2, ..., k}
                 4. 节点权值集合    P = {p 1 , p 2 , ..., p k }, 其中  p 1  = p 2  = ... = p k  = 0
                 图搜索:
                 5. Initial(P) : P = {p i  = 1 | 1 ≤ i ≤ k, V i  ∈ C}
                 6. For i = 1 → k and j = 1 → k Do
                 7.  w ij  ⇐ 2 − (p i  + p j  ) + w min
                 8. End For
                 9. S = Ø // 已经确定路径的节点集合
                 10. While V ≠ Ø
                                                             V 最小距离的顶点      u
                 12.   S ⇐S ∪ {u} // 将顶点  u  加入  S
                 13. For each vertex v ∈ Neighbor(u) Do
                 14.  Update(u, v, e) // 对每一个与顶点  u  相邻的节点更新一次路径, 更新最短路径

                 15. End For
                 16. End While
                 输出: Path(G, S).
   461   462   463   464   465   466   467   468   469   470   471