calculating the neighbour values
이전 댓글 표시
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
채택된 답변
추가 답변 (2개)
Matt J
2012년 9월 30일
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
kash
2012년 9월 30일
Matt J
2012년 9월 30일
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
2012년 9월 30일
Image Analyst
2012년 9월 30일
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
2012년 9월 30일
"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.
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!