#matlab #image-processing #matlab-figure
#matlab #обработка изображений #matlab-рисунок
Вопрос:
У меня есть скрипт MATLAB, который дает мне граничные линии изображения, используя bwboundaries()
.
Теперь, после построения этого изображения, я получаю полное изображение, сформированное из различных сегментов прямой линии.
Я хотел бы получить координаты или показать отдельные сегменты линии, которые образуют границу.
Я думаю, что этот метод называется цифровой прямолинейностью линий, но я хочу знать, как применить его здесь в этом случае.
[B,L,N] = bwboundaries(z,'noholes');
for k=1:length(B),
boundary = B{k};
if(k > N)
figure, plot(boundary(:,2),boundary(:,1),'g','LineWidth',2);
else
figure, plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);
end
end
Ответ №1:
Согласно моему пониманию вашего вопроса, моя идея состоит в том, чтобы использовать bwtraceboundary() .
BW = imread('image.png');
imshow(BW,[]);
r = 165; % you can get the r and c for your image using "impixelinfo"
c = 43;
contour = bwtraceboundary(BW,[r c],'W',4,Inf,'counterclockwise');
hold on;
plot(contour(:,2),contour(:,1),'g','LineWidth',2);
x=contour(:,2)'
y=contour(:,2)'
Я отвечаю на ваш вопрос?
Ответ №2:
Используйте regionprops('desired feature')
на помеченном изображении.
Для создания помеченного изображения используйте
bwlabel(Img)
(высокое использование памяти)
или
bw=bwconncomp(Img,conn)
(низкое использование памяти)
затем
labelmatrix(bw)
Вероятно, лучшим способом продолжения было бы использовать a Hough Transform
, чтобы сначала получить представление о линиях, присутствующих на изображении. Вы можете поиграть с Hough Transform
извлечением конечных точек линий.
Комментарии:
1. У меня уже есть граничное изображение.
regionprops()
здесь не помогло бы, поскольку мне нужно сегментировать граничное изображение на составляющие его линейные сегменты.2. @KanishkaGanguly Прошу прощения за мой плохой ответ. Поскольку ваши границы были прямыми отрезками, я предполагаю, что они
regionprops('ConvexHull')
дадут вам требуемые координаты. Я попробовал и обнаружил, что заданы только приблизительные граничные координаты.3. @KanishkaGanguly Я отредактировал свой ответ, надеюсь, это поможет.