首页 > 解决方案 > Voronoi 图的等高线坐标

问题描述

我目前正在做一个项目。对于形状为 1000*1000 的图像中给定的一组点坐标,我想计算与这些点相关的 Voronoi 域边界上的像素坐标。

https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Voronoi.html

在此处输入图像描述 就像 scipy 中给出的示例一样。

如何获取那些黑线和虚线的坐标列表(在 (0,0) 到 (2, 2) 的区域内)。

比如(0, 0.5), (0.5, 0.5), (1.0, 0.5), (1.5, 0.5), (2.0, 0.5)。也许它还需要一些后期处理,因为这些坐标代表图像中的像素位置。

标签: pythonopencvcomputer-vision

解决方案


如果您可以摆脱纯 OpenCV 中的实现,则可以通过在点云z = (x - px)^2 + (y - py)^2的每个点处渲染(例如,在 OpenGL 或 DirectX 中)抛物面,(px, py)打开 z 缓冲,并使用每个抛物面都有不同的颜色。这是有效的,因为根据定义,每个 Voronoi 域的点都用它们最接近的顶点的颜色着色,并z = (x - px)^2 + (y - py)^2准确地表示该距离(平方)。因此,您在整个图像上渲染所有抛物面,并让 z 缓冲区告诉您哪个在哪个前面,因此最接近每个顶点。

一旦你渲染了图像,通过它来查找哪些像素位于不同颜色区域的边界上会产生你的答案。


推荐阅读