首页 > 解决方案 > matlab - 找到离我的线最近的点并用它们创建一条新线

问题描述

我有下面显示的图像(图 1),我想找到我的线附近最近的像素。如您所见,在图 2 中,红色十字是我图像中的白色像素,绿色是我线条中的点。该线以蓝色显示。所以我想找出哪个红色像素更接近绿色像素。之后我想创建一条穿过最近点的新线。

图 1 图 2

所以我有一个数组,其中包含我的线点的坐标,另一个数组包含我的图像的所有白色像素(红十字)的坐标

我写了下面的代码,但它在我的线上找到了 100 个随机点(带有青色圆圈的那个),它们不是最接近的,例如在 A2 位置。

lineCoord 是一个带有数组的单元格,可以说每个 100x2:(x1,y1) 是我的线的起点,(x2,y2) 是终点

图3

x1 = lineCoord{1}(1,1);
x2 = lineCoord{1}(end,1);

y1 = lineCoord{1}(1,2);
y2 = lineCoord{1}(end,2);

n = 100;

x0 = linspace(x1,x2,n);
x0 = round(x0);     

y0 = linspace(y1,y2,n);         
y0 = round(y0);

for i=1:length(x0)
plot(x0(i),y0(i),'o','LineWidth',1.5,'Color','c');
end

标签: matlabimage-processingpointclosest

解决方案


推荐阅读