Transform raster image (points) to vector line

8 views (last 30 days)
I have a raster image. In this image black points form a line.
Which matlab function help me to transform this points(raster) to line( vector)?
Unit point in line.
Thanks for answer!
  3 Comments
Iryna Goriainova
Iryna Goriainova on 18 Jan 2020
Yes. I have binary image (left image). I want to transform image to vector. I want to select linian object.
I used this function
I = imread('pdfplan_trans_bw.png');
BW = edge(I(:,:,1));
[H,T,R] = hough(BW);
imshow(H,[],'XData',T,'YData',R,...
'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
P = houghpeaks(H,50,'threshold',1);
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');
% Find lines and plot them
lines = houghlines(BW,T,R,P,'FillGap',10,'MinLength',20);
figure, imshow(I), hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
% Plot beginnings and ends of lines
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
% Determine the endpoints of the longest line segment
len = norm(lines(k).point1 - lines(k).point2);
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
As a result i get this(rigth image):
I can not find a good paramerets to build all lines.
Maybe, can I manual add unfinished lines? Or excist enouther methods?
image3.png
Sergey Kasyanov
Sergey Kasyanov on 20 Jan 2020
Edited: Sergey Kasyanov on 20 Jan 2020
You should try to rotate the image on some angle and get some frames with the Hough transform and choose the best.
Also try to run another implementations of transormation [1, 2, 3].

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!