Как можно нарисовать линию линейной регрессии на моем исходном изображении в MATLAB? - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу нарисовать красную линию на краю этого изображения, я хотел сделать это с помощью линейной регрессии, и я уже получил точки края и нарисовал лучшую линию через точки на графике, но Я не мог понять, как использовать информацию, чтобы нарисовать ту же линию на моем исходном изображении.

enter image description here


Image = imread('55-1_a.jpg');

imshow(Image)

binary_Image = imbinarize(Image);

[PIC_X, PIC_Y] = size(binary_Image);

imshow(binary_Image)



% i creat a matrix with two columns and PIC_X-1 rows  
black_pixel_on_edge = zeros(PIC_Y , 2); % in each row i will save the lowest black point to use it later in the linear regression





 for k = 1 : PIC_Y % i go through the columns of the image
     black_pixel_on_edge(k, 1) = k;

     for k2 = 1000 : 2000% i o through the rows
         if( binary_Image(k2, k) == 0)%if the pixel is black i should save it in my array(WIDTH)

             black_pixel_on_edge(k, 2) = k2;
         end

     end



 end


 %draw all the points from my Matrix
 scatter(black_pixel_on_edge(:,1),black_pixel_on_edge(:,2));
  axis equal tight;


 h1 = lsline;% draw a line with linear regression
 h1.Color = 'r';


%save the data of the red line
 p2 = polyfit(get(h1,'xdata'),get(h1,'ydata'),1);


 Slope_Of_Line = p2(1, 1);
 Hight_Of_Line = p2(1, 2);

 % here i just want to draw the same red line on my original 'Image'



...