zoukankan      html  css  js  c++  java
  • 可视化中的边捆绑算法----控制网格

    使用控制网格的思路

    源自于论文Geometry-Based Edge Clustering for Graph Visualization

    作者:

    Weiwei Cui, Hong Zhou, Student Member, IEEE, Huamin Qu, Member, IEEE, Pak Chung Wong, and Xiaoming Li

    1、控制网格生成

        本文的一个核心思路是控制网格的生成算法,对于一张图:

        首先来获得这个图的边界框架,如图a是一个原的图,图b最外层的红色边框就是获得到的边界框架;

        接下来,将边界框架中按照小的正方形单元来划分成一个个的小格子,格子的大小可以由用户通过参数来进行设定。对于每个小格,都会计算落在这个格子里的定点的数量以及通过这个格子边的数量。然后通过一个特征向量来标识这个边。

        然后通过论文Kernel Density Estimator中提到的方法,来检测这些特征向量是否有一个很强的聚类特性。如果有的话,聚类后的方向就定为了这个小格的初始方向,如果没有的话,将舍弃这个小格。

        接着,将小格与相邻的同方向格子进行融合,形成大的区域,不断融合直到角度差超过15度。每个小格方向的带权均值为融合后区域的方向,这时就会形成一个个区域,如图b所示,在每个区域中,我们希望能够得到一个聚类的线,与其他线的平均距离最小,并且能够与原始方向一致。因此,我们使控制网格的边穿过聚类后的线,并垂直与初始方向,边个边的定点都在原先区域的边上,这样,就能够得到一组离散的边和这些边的顶点,接下来,将距离较近的点融合为一个,也可以通过珀松取样,生成一些必要的点。这样,就会得到一个完整的控制网络了

       

    2、通过控制点进行边的聚类

        每条控制网格边上的控制点都应该是该边上所有交点的中点,而所有的原始边都必须通过相应的控制点。通过使用k-means算法,为每个边找到相应的控制点(??)。

       

    3、对于边的平滑优化,

    上面提到的边聚类方法,可能对于一个变可能会通过很多个控制点,使其看上去折线非常多,并不美观。在此,本文提出了一个平滑算法:

      首先,指定一个量度标准来测量折线对于原来直线的拟合的程度。这个度量标准包括折线的曲率,转点的个数,以及折线与原来线条的距离,

        通过这个公式,我们能够对一个折线的“质量”进行判断,优化折线的基本思路就是通过将其与另一条路径或者另一组控制点。根据之前的工作,得到的控制网格都是三角形格子。我们在这一步中,将一条折线穿过的三角格以及相邻的格共同定义为一个搜索区域,在搜索区域中,将要找到所有满足的路径,并根据上述公式选择一条质量最好的路径

  • 相关阅读:
    js 技巧 (八)JS代码判断集锦(之二)
    js 技巧 (七)JS代码判断集锦(之一)
    js 技巧 (六)弹窗代码汇总
    js 技巧 (六)JavaScript[对象.属性]集锦
    js 技巧 (五)
    js 技巧 (四)
    1.7.7释放锁的不良后果
    1.7.6方法stop()与java.lang.threadDeath异常
    1.7.5能停止的线程-暴力停止
    1.7.4在沉睡中停止
  • 原文地址:https://www.cnblogs.com/Joy06/p/3368949.html
Copyright © 2011-2022 走看看