index out of bounds
78 views (last 30 days)
I have passed a matrix "p" to some function. In that function, I want to check the four neighbourhoods of some pixel.
For that, I got the following error:
Attempted to access p(1,51); index out of bounds because size(p)=[50,50].
How can I workaround this issue?
Mischa Kim on 27 Feb 2014
Edited: Mischa Kim on 27 Feb 2014
As the message implies you are trying to access an element that does not exist. Pixel (1,50) only has 3 neighbours.
... (1,48) (1,49) (1,50)
... (2,48) (2,49) (2,50)
... (3,48) (3,49) (3,50)
The solution would be to define the neighbourhood of a pixel depending on its location. If that approach allows you to even consistently do the comparision, that is.
the cyclist on 27 Feb 2014
What do you mean be work around?
When you are at the edge of your array (index=50), you have to put something in your code to define the "neighborhood" differently, because you cannot access an element at index=51. (That element does not exist in a 50x50 array.)
Andy on 27 Feb 2014
I assume you have two variables which you are indexing to loop through the image i.e.
for x = 1:50
for y = 1:50
% Code to check condition of neighbouring pixel above
% Code to check condition of neighbouring pixel below
% Code to check condition of neighbouring pixel left
% Code to check condition of neighbouring pixel right
The first part of the code in each section should be to check if the value of X±1 and Y±1 is still valid. i.e For the first check
% code to check pixel x+1,y+1
% return dummy value or ignore