calculating the neighbour values
Show older comments
i have a matrix
A=[1 2 3
4 5 6
7 8 9 ]
please tell how to calculate the neighbour values of centre pixel
Accepted Answer
More Answers (2)
Matt J
on 30 Sep 2012
If you have the center pixel as a subscript index (m,n), then do
B=A((-1:1)+m,(-1:1)+n);
B(5)=[];
If you have the center pixel as a linear index, you can do as in the following example:
A =
0.3380 0.3042 0.2004 0.3071
0.8604 0.1598 0.5558 0.2813
0.7002 0.6425 0.9985 0.5409
0.2507 0.7799 0.2056 0.7081
jumps=bsxfun(@plus,[0;1;2],[0 1 2]*size(A,2));
jumps=jumps-jumps(5);
jumps(5)=[];
Now, Suppose I want the neighbourhood of A(6)=0.1598. Then I would do
>> A(jumps+6)
ans =
0.3380 0.8604 0.7002 0.3042 0.6425 0.2004 0.5558 0.9985
5 Comments
kash
on 30 Sep 2012
Matt J
on 30 Sep 2012
Note that the method only works for pixels with 8 neighbours. You haven't said how you want to handle pixels on the edge of the matrix.
kash
on 30 Sep 2012
Image Analyst
on 30 Sep 2012
Let me repeat Matt's statement, which you just seemed to ignore: "You haven't said how you want to handle pixels on the edge of the matrix." In fact, if you just think about this, write down numbers near the edge of your matrix so you can visualize it, I think you'd be able to figure it out yourself.
Matt J
on 30 Sep 2012
"i need only 8 neighbours"
You mean you think the error is triggered by a non-boundary pixel? Show us the larger code that you're using. Also, use DBSTOP to see the center pixel coordinates that are generating the error.
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!