Hej Charles,

in the future please only post in one place. A lot of the people who answer 
on SO are also here.

You can use the label_components function in 
Images.jl 
https://github.com/timholy/Images.jl/blob/master/doc/function_reference.md#label_components
To get the the list of coordinates for each components you then would have 
to do something along the line of.

for c in 1:maximum(labels)
   find(x-> x == c, labels)
end 

Not very efficient but that should get you started.

On Friday, 25 September 2015 07:56:20 UTC+9, Charles Santana wrote:
>
> Assume I have the following matrix:
>
>     mat = [1 1 0 0 0 ; 1 1 0 0 0 ; 0 0 0 0 1 ; 0 0 0 1 1]
>
> Considering as a "component" a group of neighbour elements that have value 
> '1', how to identify that this matrix has 2 components and which vertices 
> compose each one?
>
> For the matrix *mat* above I would like to find the following result:
>
> Component 1 is composed by the following elements of the matrix 
> (row,column):
>
>     (1,1)
>     (1,2)
>     (2,1)
>     (2,2)
>
> Component 2 is composed by the following elements:
>
>     (3,5)
>     (4,4)
>     (4,5)
>
> I can use Graph algorithms like this 
> <http://graphsjl-docs.readthedocs.org/en/latest/algorithms.html#connected-components>
>  
> to identify components in square matrices. However such algorithms can not 
> be used for non-square matrices like the one I present here.
>
> Any idea will be much appreciated.
>
> I am open if your suggestion involves the use of a Python library + PyCall 
> for example. Although I would prefer to use a pure Julia solution. 
>
> Regards
> Charles
> P.S.: Just asked the same question in Stackoverflow: 
> https://stackoverflow.com/questions/32772190/how-to-find-connected-components-in-a-matrix-using-julia
>
> -- 
> Um axé! :)
>
> --
> Charles Novaes de Santana, PhD
> http://www.imedea.uib-csic.es/~charles
>

Reply via email to