编辑: 5天午托 | 2018-07-11 |
8 个节点和节点之间连线方向 予以确定;
通过确定第一步的搜索方向, 可以很方便地将下一步的零水平集节点用模板内的
8 个节点来加以控制 (图3), 而不是窄带内的所有像素点, 从而大大提高算法的速度. 图1中, Q(x, y) 为水平集函数 ? = c 上点 P(x, y) 到零水平集 ? =
0 的最短距离节点;
这里用 3*3 模板, 其中
0 为中心点, V1 ? V8 为其相邻的
8 个节点. 图3中的 V1 和V2 为模板节点,
0 为零 水平集上的一个节点;
假设 V1 和V2 的水平集函数值分别为 ?1 和?2;
α1 和α2 为参数, 且α1 = ?2 ?2 ? ?1 , α2 =
1 ? α1, 从而可得 α1?1 + α2?2 = 0. 该算法的另一个优点是无需设定窄带重置次数, 因为每次对邻域 节点的近似求解过程已包含有重置零水平集过程. No.
4 付金明等: 基于小波多分辨率分析和改进窄带法的 C-V 水平集图像分割模型
871 图1: 这是第一个子图 图2: 这是第二个子图 图3: 零水平集节点的确定 4.2 模型的数值实现 上述的水平集演化方程可以使用有限差分法 [7] 来实现数值求解, 即将所有空间域上 的的偏导数用中心差分来实现, 所有时域上的偏导数用向前差分来实现, 具体表示如下: ?? ?t = ?n+1 i,j ? ?n i,j ?t , 其中 ?t 是时间步长. 演化方程中的曲率 div( ?? |??| ) 可以使用二阶中心差 分来进行求解 div( ?? |??| ) = ?xx?2 y ? 2?xy?x?y + ?yy?2 x (?2 x + ?2 y)
3 2 , 其中 ?x , ?y, ?xx, ?xy, ?yy 可用如下所给公式进行计算 ?x =
1 2h (?i+1,j ? ?i?1,j), ?y =
1 2h (?i,j+1 ? ?i,j?1), ?xx =
1 h2 (?i+1,j + ?i?1,j ? 2?i,j), ?yy =
1 h2 (?i,j+1 + ?i,j?1 ? 2?i,j), ?xy =
1 h2 (?i+1,j+1 ? ?i?1,j+1 ? ?i+1,j?1 + ?i?1,j?1, 其中 h 是离散网格的间隔, 演化方程中的 c1, c2 可按上式 (2.1) 求解. 水平集演化终止准则: 当曲线长度变化的绝对值在给定的迭代次数 (n) 里一直小于某个事先给定的阈值 η, 水平集 演化终止 [8] . 在本文的实验里, 固定 n=8, η=4. 该算法流程如下:
872 数学杂志Vol.
36 1) 输入原始图像 u0. 2) 对u0 作二维离散小波变换提取其可能的边缘点, 将集中的可能边缘点进行链接, 作 为初始轮廓曲线 C, 并设置如下相应的参数值: 时间步长 ?t, 网格间隔 h, 以及 α, β, ? 的值. 3) 利用
3 *
3 模板在初始轮廓曲线附近设置窄带并按 (2) 式演化水平集函数 ?. 4) 从水平集函数 ? 中提取零水平集即演化曲线. 5) 判断水平集演化是否终止, 如果是, 算法结束, 否则转第三步.
5 实验结果及其讨论 下面的实验均使用 Matlab7 进行编程仿真, 实验所用的计算机配置为: Intel Core4 处理 器, 10G 内存, Windows7 操作系统. 模型的参数设置为: α = β = 1, ? = 0.01 ?
2552 , 时间步 长?t = 0.1, 网格间隔 h = 1, 正则化参数 ε = 1. 实验1为C-V 模型和改进的 C-V 模型以及 本文方法 (改进的 C-V 模型和窄带法) 分别对一副随机生成的图像分割实验对比. 图4为原 始图像及初始轮廓, 图5为C-V 模型分割结果, 图6为改进后 C-V 模型分割结果, 图7为本 文方法分割结果;
其中 C-V 模型需要迭代
95 次, 用时 7.634s 完成分割;
改进的 C-V 模型需 要迭代
40 次, 用时 3.022s;
而本文方法只需迭代
32 次, 用时 1.037s 即可收敛. 实验
2 是对一 幅SAR 卫星云图像分别用 C-V 模型、 改进的 C-V 模型以及本文方法进行分割. 图8位原始 图形和初始轮廓, 结果 C-V 模型迭代了