Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Edges between pixels
Replies: 5   Last Post: Mar 14, 2013 3:38 PM

 Messages: [ Previous | Next ]
 Shaun VanWeelden Posts: 15 Registered: 2/23/12
Re: Edges between pixels
Posted: Mar 13, 2013 4:14 PM

"Lee ZY" <kk_yin@hotmail.com> wrote in message <khppb1\$5dc\$1@newscl01ah.mathworks.com>...
> Hi,
> I would like to generate the edges between all the pixels in an image. For instance, a 3*3 image (pixel 1 to 9), the edges = [1 2;1 3; 1 4; 1 5; 1 6; 1 7; 1 8; 1 9; 2 3; 2 4; 2 5;..;2 9;..;9 7; 9 8].
>
> One way i could think of is by replicating the values as follows,
> n=3 ;
> x=(1:3)';
> r=repmat(x,1,n)';
> r=r(:)
>
> x2=[1:3];
> r2=repmat(x2,1,n)'
> edges=[r,r2]
>
> and the output:
> edges =
>
> 1 1
> 1 2
> 1 3
> 1 4
> 1 5
> 1 6
> 1 7
> 1 8
> 1 9
> 2 1
> 2 2
> 2 3
> 2 4
> 2 5
> .
> .
> 8 9
> 9 1
> 9 2
> 9 3
> 9 4
> 9 5
> 9 6
> 9 7
> 9 8
> 9 9
>
> However when i tried on a relatively big image, i got this error,
> ??? Maximum variable size allowed by the program is exceeded.
>
> Wondering if there is a more effective way of generating the edges. Thanks in advance!

I would seriously question why you are doing this because I have a feeling you will find that MATLAB has MANY built in functions to do things that would generally require you to know the edges.

That being said, I would advise you loop through each pixel in your image and get the edges for that one pixel instead of making a large list. For large images, you can very easily get lists with millions and millions of elements, which is not something you usually want.

Also, each pixel can only have 4 edges, and 8 surrounding pixels, but never 9 so keep that in mind.

Date Subject Author
3/13/13 Lee ZY
3/13/13 Shaun VanWeelden
3/13/13 Lee ZY
3/13/13 Lee ZY
3/14/13 Shaun VanWeelden
3/14/13 Shaun VanWeelden