matlab - найти ближайшие точки к моей линии и создать новую линию с ними - PullRequest
0 голосов
/ 12 мая 2019

У меня есть изображение, показанное ниже (изображение 1), и я хочу найти ближайшие пиксели рядом с моей линией. На изображении 2, как вы можете видеть, красные крестики - это белые пиксели на моем изображении, а зеленые - это точки на моей линии. Линия отображается синим цветом. Поэтому я хочу найти, какой красный пиксель ближе к зеленому. И после этого я хочу создать новую линию, которая проходит через ближайшие точки.

image 1 image 2

Итак, у меня есть массив с координатами точек моей линии и еще один массив с координатами всех белых пикселей (красные крестики) моего изображения

Я написал код ниже, но он находит 100 случайных точек на моей линии (та, что с голубыми кругами), которые они не являются самыми близкими, например, в A2 A2.

lineCoord - это ячейка с массивами, скажем, 100x2 каждая: (x1, y1) - начальные точки моей линии, (x2, y2) - конечные точки

image3

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
...