calculating the neighbour values
Mostra commenti meno recenti
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
Risposta accettata
Più risposte (2)
Matt J
il 30 Set 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 Commenti
kash
il 30 Set 2012
Matt J
il 30 Set 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
il 30 Set 2012
Image Analyst
il 30 Set 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
il 30 Set 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.
Categorie
Scopri di più su Matrix Indexing in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!