MATLAB: Edge direction

directionedge

Is there a function to check if an edge changes direction?
I have used bwlabel to work on connected edges, but now I only want to work on the ones that do not follow around corners. More clearly, they can be vertical, horizontal, or diagonal, but they cannot be a mixture of 2 or more…

Best Answer

Hi,
to extract edges of any direction, you just need to choose the right structuring element for a morphological opening. E.g. to extract vertical edges:
BWv = imopen(BW,[1 1 1]');
horizontal:
BWh = imopen(BW,[1 1 1]);
top left to lower right
BWd = imopen(BW,[1 0 0; 0 1 0; 0 0 1]);
and so on.
Hope this helps, W.