问题标签 [douglas-peucker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
205 浏览

r - 在 R 语言中找不到“DouglasPeuckerEpsilon”

我正在尝试在 R 中使用 Douglas Peucker 算法。通过执行以下代码,我收到以下错误:

这是因为我没有安装DP包吗?

0 投票
1 回答
395 浏览

geometry - 粗化 2.5D 三角剖分

我有一个 2D-delaunay-triangulation,其中每个顶点都标有高程。我现在想从三角剖分中删除顶点,而不对形状进行大的更改(类似于折线的 douglas-peucker)。

2.5D delaunay三角剖分

3D 网格有很多网格粗化算法。但是我的任务没有更简单的东西吗?

0 投票
1 回答
309 浏览

algorithm - 增量线简化

网上有很多关于普通线路简化的资料,

https://www.jasondavies.com/simplify/

https://bost.ocks.org/mike/simplify/

http://geomalgorithms.com/a16-_decimate-1.html

http://mourner.github.io/simplify-js/

即当简化点预先知道时。Visvalingam 的算法,Douglas-Peucker 算法,但是如果容差参数是固定的并且预先不知道点怎么办。我有很多点,我不想运行 N * Log(N) 算法 M 千次,而是希望它逐步处理我的集合,交点无关紧要,重点只是减少具有最小视觉影响的数据集的大小是否有一些聪明的方法来处理这个问题?

0 投票
2 回答
162 浏览

algorithm - 如何减少 10k 数据点并在较小的显示器上显示它们?阿杜诺

我正在为我的 DMM 开发一个可视数据记录器,它将每个测量值写入 RS232 接口。在那里我连接了一个 Teensy 3.6 并收集数据点。对于每个点,我都有时间戳和测量值。我将收集 10.000 个读数。我想以两种方式在显示器(800x480)上显示测量数据。首先作为滚动图,从右到左滚动并显示最后一分钟左右。这工作正常。

其次,我想总共显示所有收集的测量值(最多 10k 点)。所以我必须缩小或压缩数据,但我想保留曲线的形状。为了让您了解它的外观,请观看 Dave 在 YT 上关于 EEV 的视频 ( https://youtu.be/SObqPuUozNo ) 并跳至 41:20。在那里,您可以看到另一个 DMM 如何缩小传入数据并显示它。大约在 1:01:05 10k 测量值显示在仅 400 像素宽的显示区域上。

问题是,这是怎么做到的?我听说过 Douglas-Pucker 算法,但不知道这是否是正确的方法以及如何在 Arduino/Teensy 平台上使用它。

非常欢迎任何帮助,谢谢......

0 投票
1 回答
1045 浏览

python - 带 GPS 的 Ramer-Douglas-Peucker 算法

我有 GPS 数据,可以靠近北极/南极并且可以移动数千公里。

如果我建立一个距离矩阵,例如:

我可以在上面应用 Ramer-Douglas-Peucker 算法吗?

我总是将一组 x,y 坐标作为 RDP 算法的输入,但在我的情况下,不存在保留距离的转换。

0 投票
1 回答
512 浏览

c# - 查找形状上的角/边(可以定义该形状的最小顶点)

我正在尝试获得以下形状的角:

在此处输入图像描述

我所说的角落是指这个(红点):

在此处输入图像描述

可以定义此形状的最小点数。

我已经实现了以下内容:

这适用于矩形形状,但旋转后的形状非常清晰,因此,此代码效果不佳:

在此处输入图像描述

  • 蓝色像素(在这张照片和下面的照片中)是方法vertices处理的变量Optimize
  • 绿色像素是检测到的角/边缘(在两张照片上)。

但是形状的锐度只定义了侧倾,那么我该怎么做才能改善呢?

另外,我已经测试了 Accord.NET BaseCornersDetector 继承的类,但是使用HarrisCornersDetector获得了最好的结果,但是:

在此处输入图像描述

许多边缘/角落是不必要的,它们不在需要的地方(见第一张照片)。

0 投票
1 回答
83 浏览

c# - 沿路径螺旋绘制点

好吧,我正在尝试优化我在这里所做的(平滑不同幅度的噪声(第 2 部分))。

因此,我从头开始(https://youtu.be/o7pVEXhh3TI)做了一个新的实现来绘制路径:

这就是 DrawLines 的实际作用:

这是Bresenham 算法的一个实现。

这个实现更好,因为我已经将迭代从 280k 降低到 6k,但是有一个问题,你可以看到这是不准确的......

首先工作的方式是获取形状上每个段的垂直线(绿色像素),然后在该段的起点和终点之间画线。使用Ramer-Douglas-Peucker 算法获得分段。

所以我想画出螺旋状的“橙色”路径。我不知道如何解释这一点,基本上,获得相同的路径,但是有一个比例(翻译/转换?从其中心开始的点列表,带有偏移/距离),但我认为我会有同样的错误。

任何指南将不胜感激。我可以使用什么算法来绘制带有“层”的路径?

0 投票
1 回答
471 浏览

javascript - 有没有办法减少复杂封闭 SVG 路径中的坐标数?

我想做的是采用封闭路径(在本例中为地图区域)绘制的 SVG 形状,并减少点数以创建更简单的形状。

我尝试实施 Ramer-Douglas-Peucker 算法来减少点数。例如,这是一个使用 simple.js 库的小提琴:

https://jsfiddle.net/0t3n8762/

在阅读了这个问题之后,如果我理解正确的话,似乎该算法并不是真正设计用于封闭形状而是开放式路径。我尝试将每条路径分成两部分(因此有两条线共同构成整个形状)并在重新组合它们之前在每条路径上运行算法,尽管结果看起来基本相同:

https://jsfiddle.net/caqwL3t7/

可能(并且确实很可能)我只是没有掌握算法应该如何工作并且正在错误地实现它。或者也许我应该尝试一种完全不同的方法。

我想要制作的是一条更简单的路径,它仍然保留原始的整体形状,用更少的点绘制。实际结果是扭曲的形状,与原始形状几乎没有共同之处。

0 投票
1 回答
112 浏览

go - Golang 简化折线数据

我正在使用 golang 拉取巨大的geojson数据集,我想知道 golang 是否有类似 simple.js 的东西这会减少折线中的点数同时保持其形状?

https://mourner.github.io/simplify-js/

0 投票
0 回答
109 浏览

python - 图像处理:量化形状与平滑形状相比的粗糙度

我试图找出图像中形状的粗糙度。我找到了轮廓并用于simplification.cutil.simplify_coords_vwp(contour,1000)计算我想用作“平滑”形状的多边形(这类似于更常用的“Douglas-Peuker”算法)。这些形状有大约 13 个点,可以为任何弯曲留出余地。这是针对完整图像中存在的所有形状完成的。

下面的图像显示了我想要粗糙度的完整图像和显示我正在尝试计算的放大图像。我想量化线条内部的黑色和线条外部的白色,给出粗糙度的数量。我没有发布代码,因为这将是很多额外的信息,我只是在寻求帮助概念化哪些模块在这里可能有用。

全尺寸图片

放大