Selecting specific region around the known indices of a matrix.

조회 수: 2 (최근 30일)
Hi,
I have a path around which I want to select 3 points above and 3 points below to acheive something similar to the picture. Basically I want to select the points that lie within 3 radius points. I have attached the MAT file which includes the indices locations around which I want to select points. It also has the matrix from which the figure can be ploted. Orginal matrix has the same dimensions. untitled.png

채택된 답변

Thiago Henrique Gomes Lobato
Thiago Henrique Gomes Lobato 2019년 11월 3일
편집: Thiago Henrique Gomes Lobato 2019년 11월 3일
You can dilate the image with a disk kernel and then take the difference to get the indexes:
A = load('matlab.mat');
h = fspecial('disk',3 ); % Disk element for dilatation
ADilatated = imdilate(A.crack,h); %
PointsAround = ADilatated-A.crack; % Difference to get the new points
IndexAroud = find(PointsAround~=0); % This is the array with the indexes around it
figure
subplot(1,3,1)
imshow(A.crack)
title('Original Image')
subplot(1,3,2)
imshow(ADilatated)
title('Dilated Image')
subplot(1,3,3)
imshow(PointsAround)
title('Points in a 3-pixel radius')
In case you don't want a disk (radius) but rather a horizontal/vertical line you can just change the kernel, some examples can be founded here https://de.mathworks.com/help/images/ref/imdilate.html
  댓글 수: 7
waqas
waqas 2019년 11월 4일
Is it possible to give different h value from upper and lower region for disk? I mean taking a different value like [4,3] in fspecial ?
Thiago Henrique Gomes Lobato
Thiago Henrique Gomes Lobato 2019년 11월 4일
Not in fspecial as far as I know, but you can achieve a similar effect using a radius 4 and then setting the first row from h to zero, like the example I gave you in the last comment. If I were to convert my example with your notation what I did would be a [3,1].

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by