0

我正在尝试从(PDF)图形重建曲线。这些包括曲线的轮廓(“笔划”)。显示了一个典型示例(X、Y 单调增加,然后下降)。原始笔画宽度似乎约为 1.0,但这是次要的。

描边轮廓

我包括下面的 SVG 表示。目前,我相当粗略的尝试是填充曲线并尝试变薄,直到获得中线。然而,这似乎很脆弱。鉴于我们有分析轮廓(如线条和三次贝塞尔曲线?),是否有更好的算法?

<svg xmlns="http://www.w3.org/2000/svg" >
  <g transform="scale(25., 25.)">
    <g transform="translate(-110., -235.)">
      <path fill="none" stroke="red" stroke-width=".05" 
        d="M114.06 242.46 L114.12 242.28 L114.18 242.16 L114.3 242.04 C114.36 241.98 114.36 241.92 114.42 241.92 
L114.48 241.86 C114.54 241.8 114.66 241.74 114.72 241.74 L114.78 241.74 C114.9 241.68 115.02 241.68 115.08 241.74 
L115.2 241.8 C115.26 241.8 115.32 241.8 115.38 241.86 L115.44 241.92 L115.5 241.92 L115.2 241.86 L115.38 241.86 
C115.44 241.86 115.5 241.86 115.56 241.86 L115.62 241.92 C115.74 241.92 115.8 241.92 115.86 241.98 L115.92 242.04 
C115.98 242.04 116.04 242.1 116.1 242.22 L116.16 242.22 C116.16 242.28 116.16 242.34 116.22 242.4 L116.28 242.52 
L116.34 242.7 L116.34 242.94 L116.4 243.18 L116.52 243.66 C116.58 244.02 116.34 244.32 116.04 244.44 
C115.68 244.5 115.32 244.26 115.26 243.9 L115.2 243.48 L115.14 243.24 L115.08 243.06 L115.08 242.94 
L115.02 242.82 L115.08 242.94 L115.02 242.88 L115.2 243.06 L115.14 243.0 L115.38 243.12 L115.26 243.12 
L115.5 243.12 L115.2 243.12 C115.08 243.12 115.02 243.12 114.9 243.06 L114.78 242.94 L114.66 242.88 
L114.84 243.0 L114.72 242.94 L115.08 242.94 L115.02 242.94 L115.26 242.88 L115.2 242.88 L115.32 242.76 
L115.32 242.82 L115.2 243.0 C115.08 243.3 114.72 243.42 114.36 243.3 C114.06 243.18 113.94 242.82 114.06 242.46 Z
      "/>
    </g>
  </g>
</svg>
4

1 回答 1

0

[回答自己的问题,因为没有评论或答案]

我最好的猜测是这条曲线是用“斜体”笔“绘制”的,它总是垂直于基本曲线的方向。这是来自 inkscape 的圆形大写字母版本

线上的圆形大写字母

我现在的策略是:

  1. 找到两个将方向改变 180 的曲线段(我有代码可以做到这一点)
  2. 计算直径并将其作为原始曲线的笔画宽度
  3. 从一个半圆开始,沿两条线延伸
  4. 将线解释为 (i) 矩形 (ii) 左弧 (iii) 右弧或 (iv) 两条线上的弧(更复杂)
  5. 重复直到分析完所有成分

我不知道它是否会起作用,但我相当有信心。为了好玩,我将在飞机旅行中写下这篇文章。

于 2013-02-14T23:49:40.833 回答