找到构成四边形边界的一组像素的角点

Find the corner points of a set of pixels that make up a quadrilateral boundary

我有一种情况,我有一组像素构成四边形(非常接近正方形)的边界。我正在尝试尽可能确定角落的位置并且现在已经苦苦挣扎了一段时间。我的第一个想法是确定边界的直线,然后计算角点,但不幸的是我无法访问 OpenCV 或其他图像处理库。

以下三种情况,黑色轮廓为图像边界,红色轮廓为四边形边界。我有一个构成红色边界的所有像素的列表,红色边界的厚度可能会有所不同。

我最初的想法是我可以找到最接近四个图像边界的像素,但是对于第一种内部四边形不倾斜的情况,这不太适用。

任何关于如何解决这个问题的想法都会很棒。我正在用 dart 编码,但我正在寻找一个我可以自己实现的伪代码答案。

(我看过这个 post,这与我的问题类似,但我认为应该有一个更简单的解决方案来解决我的问题,因为我可以访问四边形的所有边界点)

有了所有矩形边界像素的列表,您可以使用像这样的简单方法:

计算矩形的重心(只需将像素的 X 和 Y 坐标相加并除以它们的数量)- 它是对角线交点。

找到最远的像素 - 它们是角点。


如果数据集质量差(空位、过多像素),中心计算可能不准确。所以你可以应用霍夫变换来提取边(作为线)并计算它们的交点。