像素化几何图元

时间:2012-02-02 09:41:44

标签: algorithm pixel computational-geometry

必须具有几何图元集的矩阵表示(即,线,曲线,圆,矩形,以及它们的填充形式)。为简单起见,您可能认为我们只处理行,因此答案已经在[SO]。因此,矩形可以很容易地像素化。然而,对于其他原语,我会看到两个问题:

  

1)如何对包含圆形的曲线进行像素化(〜闭合曲线)?
  2)如何对填充的简单/复杂形状(矩形,多贴片)进行像素化?

最简单的方法(目前正在使用)可能是利用可视化库(例如MatPlotLib Python)将结果(几何图元的地图)保存为磁盘上的像素化​​图像(或RAM),然后为了感兴趣的目的重复使用它。显然,这种方法可以处理任何复杂性,因为在背景中无论它(可视化器)输出是2D image,即2D matrix。然而,在这个应用程序中出现了一些严重的问题:

  

1)程序很慢!
   2)该过程不是标准的,但在很大程度上取决于可视化器的设置,通常情况下,低级配置不可能或难以为可视化器设置。换句话说,正在使用的黑匣子缺乏对程序的控制。

1 个答案:

答案 0 :(得分:3)

您正在做的事情被称为几何图元的“扫描转换”。

对于细分细分,您已经了解the Bresenham algorithm

圈子有一个类似的,有点棘手(关于端点的处理)。

一般曲线是一个更广泛的主题。你可以想到圆锥曲线,样条曲线或手绘。一种方法是用折线近似它们。

要填充多边形,可以使用扫描线算法(考虑扫描水平线并在具有多边形轮廓的交叉点之间填充)。

要填充任意形状,可以选择绘制轮廓并使用种子填充(从给定的内部点开始)。

您可以在http://www.cse.ohio-state.edu/~gurari/course/cis681/cis681Ch5.html

找到相关资料