how to adress neighbours in matrix

1 visualización (últimos 30 días)
Jakub
Jakub el 4 de Nov. de 2013
Comentada: Jakub el 4 de Nov. de 2013
Imagine I have matrix A=ones(5). I want to change center of the matrix to 17, A(3,3)=17; In next iteration I want to change all points that are next to this 20 to 5. i will have:
1 1 1 1 1
1 5 5 5 1
1 5 17 5 1
1 5 5 5 1
1 1 1 1 1
In next step i want to change all ones to 10. And so on...
10 10 10 10 10
10 5 5 5 10
10 5 17 5 10
10 5 5 5 10
10 10 10 10 10
Any idea how to do this to large matrix? How to adress only the neighbours but not the points "inside"?

Respuesta aceptada

Image Analyst
Image Analyst el 4 de Nov. de 2013
This works for any size matrix, large or not, as long as it's bigger than 5x5. Also you can't get a center element if there is an even number of rows or columns.
A = ones(9)
centerRow = ceil(size(A, 1)/2)
centerCol = ceil(size(A, 2)/2)
A(centerRow-2:centerRow+2, centerCol-2:centerCol+2) = 20;
A(centerRow-1:centerRow+1, centerCol-1:centerCol+1) = 10;
A(centerRow, centerCol) = 17
  5 comentarios
Image Analyst
Image Analyst el 4 de Nov. de 2013
Editada: Image Analyst el 4 de Nov. de 2013
You'd have to set the 4 "sides" one at a time. For example to set the outlines at 2 away from the middle:
A(centerRow-2, centerCol-2:centerCol+2) = 20; % Top line
A(centerRow+2, centerCol-2:centerCol+2) = 20; % Bottom line
A(centerRow-2:centerRow+2, centerCol-2) = 20; % Left line
A(centerRow-2:centerRow+2, centerCol+2) = 20; % Right line
If they're not perfect rectangles, but irregular shapes, or if you want the dot to expand out to an octagon or something, then you'd have to use mathematical morphological dilation with a structuring element of the desired shape. See bwmorph() in the Image Processing Toolbox.
Or you could do it by computing the distance transform with bwdist() and then thresholding.
Jakub
Jakub el 4 de Nov. de 2013
Thank you very much.

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by