finding index inside a region
1 次查看(过去 30 天)
显示 更早的评论
suppose I have a matrix I.
I =
4 4 4 4 4 4 4
4 1 1 1 1 3 0
4 1 3 3 1 3 0
4 1 3 3 1 3 0
4 1 1 1 1 3 0
4 4 4 4 4 4 4
idx is the index of 1's in the matrix including all 3's inside 1;
I need to find the index of those 3s those are inside 1s.
I tried with the following code.Perhaps this is not the correct one.
idx1=find(I(idx)==3);
How can I get that? can any body help?
Thanks
0 个评论
采纳的回答
Image Analyst
2011-7-26
This will work to get ONLY the 3's inside, not any old number.
binaryImage = I==1
filledImage = imfill(binaryImage, 'holes')
maskedImage = I .* filledImage
justThe3s = ismember(maskedImage, 3)
[rows cols] = find(justThe3s)
You could use either the logical indexes "justThe3s" or the rows and cols variables, whichever you mean by "indexes."
5 个评论
Nick Ward
2021-4-23
Thanks for the reply.
I think this is what I'm looking for although I get these errors. Any ideas?
Image Analyst
2021-4-23
@Nick Ward, attach your image/matrix, and m-file in a new question after reading this:
更多回答(1 个)
Andrei Bobrov
2011-7-26
BW = I==1;
[~,L] = bwboundaries(BW);
idx = find(L==2)
1 个评论
Image Analyst
2011-7-26
This will get any collection of numbers inside a contiguous perimeter of 1's, not just the 3's. For example it would also find 4's, 42's, and 18's - whatever happened to be inside. Mohammad, see my answer if you want something that is more "tunable" to just one single number, if that is what you want.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!