Hello, I want to plot these red lines between each blue line, like the one all the way at the bottom but all the way up (like the red diagonals connecting the blue lines in the second picture). Any help appreciated!
img = double(mat2gray(imread('071318.bmp')));mask_size=[5 5];sigma=4;Gaussian_filter = fspecial('gaussian',mask_size,sigma);A=conv2(img, Gaussian_filter, 'same');Gx = [-1, 0, 1; -2, 0, 2; -1, 0, 1];Gy = [1, 2, 1; 0, 0, 0; -1, -2, -1];SobelX = conv2(A, Gx, 'same');SobelY = conv2(A, Gy, 'same');gradient_direction = (atan2(SobelY, SobelX))*180/pi;gradient_magnitude = sqrt((SobelX.^2) + (SobelY.^2));Threshold_High = min(min(gradient_magnitude))+max(max(gradient_magnitude))*.09;Threshold_Low = Threshold_High/2;rows=size(A,1);columns=size(A,2);for i=1:rows for j=1:columns if (gradient_direction(i,j)<0) gradient_direction(i,j)=360+gradient_direction(i,j); end endendedge_direction=zeros(rows,columns);for i = 1 : rows for j = 1 : columns if ((gradient_direction(i,j)>=0)&&(gradient_direction(i,j)<22.5)||(gradient_direction(i,j)>=157.5)&&(gradient_direction(i,j)<202.5)||(gradient_direction(i,j)>=337.5)&&(gradient_direction(i,j)<=360)) edge_direction(i,j)=0; elseif((gradient_direction(i,j)>=22.5)&&(gradient_direction(i,j)<67.5)||(gradient_direction(i,j)>=202.5)&&(gradient_direction(i,j)< 247.5)) edge_direction(i,j)=45; elseif((gradient_direction(i,j)>=67.5&&gradient_direction(i,j)<112.5)||(gradient_direction(i,j)>=247.5&&gradient_direction(i,j)<292.5)) edge_direction(i,j)=90; elseif((gradient_direction(i,j)>=112.5&&gradient_direction(i,j)<157.5)||(gradient_direction(i,j)>=292.5&&gradient_direction(i,j)<337.5)) edge_direction(i,j)=135; end endendedge1 = zeros (rows, columns);for i=2:rows-1 for j=2:columns-1 if (edge_direction(i,j)==0) edge1(i,j)=(gradient_magnitude(i,j)==max([gradient_magnitude(i,j),gradient_magnitude(i,j+1),gradient_magnitude(i,j-1)])); elseif (edge_direction(i,j)==45) edge1(i,j)=(gradient_magnitude(i,j)==max([gradient_magnitude(i,j),gradient_magnitude(i+1,j-1),gradient_magnitude(i-1,j+1)])); elseif (edge_direction(i,j)==90) edge1(i,j)=(gradient_magnitude(i,j)==max([gradient_magnitude(i,j),gradient_magnitude(i+1,j),gradient_magnitude(i-1,j)])); elseif (edge_direction(i,j)==135) edge1(i,j)=(gradient_magnitude(i,j)==max([gradient_magnitude(i,j),gradient_magnitude(i+1,j+1),gradient_magnitude(i-1,j-1)])); end endendedge2 = edge1.*gradient_magnitude;Threshold_Low = Threshold_Low * max(max(edge2));Threshold_High = Threshold_High * max(max(edge2));edge_binary = zeros (rows, columns);for i = 1 : rows for j = 1 : columns if (edge2(i, j) < Threshold_Low) edge_binary(i, j) = 0; elseif (edge2(i, j) > Threshold_High) edge_binary(i, j) = 1; elseif(edge2(i+1,j)>Threshold_High||edge2(i-1,j)>Threshold_High||edge2(i,j+1)>Threshold_High||edge2(i,j-1)>Threshold_High||edge2(i-1,j-1)>Threshold_High||edge2(i-1,j+1)>Threshold_High||edge2(i+1,j+1)>Threshold_High||edge2(i+1,j-1)>Threshold_High) edge_binary(i,j)=1; end endendedge = (edge_binary.*255);edge(1600:2054,:)=[];edge(:,1:300)=[];edge=flipud(edge);[y,x]= find(edge==255);T= table(x,y,'VariableNames',{'x','y'}); %table of (x,y) points of bubble edge
x0=mean(x(y==min(T.y)));T(T.x>x0,:)=[];hold onaxis equaltitle('Captive Bubble Air-Liquid Interface')xlabel('x')ylabel('y')e=contour(edge,'k');y_axis=xline(x0);for n=0:50:max(y) %delta y small
m=min(y); %starting y value of R lines at lowest bubble edge point
x1=x(y==m+n);delete=x1>x0;x1(delete)=[];x1=mean(x1);plot([x0 x1],[m+n m+n],'b'); %R line
R=x0-x1; for o=m:100:max(y) %delta y big
plot([x0 x1],[m m+n],'r'); endend
Best Answer