Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

How to use "gplot" function?

Asked by Mariam Sheha on 5 Jul 2013

Hey Every body;

I want to graph a matrix using "gplot" function, i had get the each object boundary in the image using the following:

[B L N A]=bwboundaries(bw,'noholes');

through that function i got 4 output: L for label matrix / N is no. of object found/ A is adjacent matrix...

To graph that labeled image i have 2 thoughts :

1- consider each boundray as a separate matrix a get it's coordinates and plot

as follow

               [i j]=find(cell2mat(B(2,:));
               gplot(B(2,:), [i j]);

but the result is a separate straight line!!

2- consider each connected component in the labeled matrix as anode then get it's coordinate and plot graph connecting those nodes

(i think that the second option is more reliable but i don't know how to implement regarding my poor )

Thanks A lot

0 Comments

Mariam Sheha

Products

1 Answer

Answer by Kelly Kearney on 5 Jul 2013
Accepted answer

I assume you want to plot based on the adjacency matrix A? You'll have to figure out exactly how to define an objects coordinates... an edge point? The centroid?

In the example below, I've just chosen the first point of each boundary. Is this similar to what you're looking for?

 BW = imread('blobs.png');
 [B, L, N, A] = bwboundaries(BW,'noholes');
 xy = cell2mat(cellfun(@(x) [x(1,2) x(1,1)], B, 'uni', 0));
 figure;
 imshow(BW) 
 hold on
 plot(xy(:,1), xy(:,2), 'b.')
 gplot(A, xy, 'r');

2 Comments

Mariam Sheha on 6 Jul 2013

yes it's very near to what i am looking for,thanks alo0ot

but unfortunately their is still problem that i can't apply to the target point, where that way I link the boundries to each other , but what i mainly have to implement is considering the connected component whatever using boundary or not (i.e: each boundary may have no. of connected components ) and represent it as a node.. brief explanation is listed below.

Regarding the binary image of the connected components (the edges of the images) :

1- Each pixel in the connected component is a node of Gi . (How can i annotate that connected component to be a node?)

2- Each node has a unique label according to its coordinate. (That coardinate is suppose to be used for the gplot function i think)..

I think i am too near but i can't reach...

if you do understand what i miss, please repot me..

Thanks in advance

Kelly Kearney on 8 Jul 2013

Sorry, I really don't understand what you're trying to do. Are you trying to identify a single object in a binary image, and then graph the connectivity of the pixels that make up that single object (i.e. 4-way or 8-way connectedness used to identify an object)? Or are you looking for the connectivity of multiple object in an image, as returned by bwboundaries (i.e. whether one object is within another)?

Kelly Kearney

Contact us