MATLAB Answers

0

Array function for ranges

Asked by Azura Hashim on 7 Feb 2017
Latest activity Edited by Jan
on 15 Feb 2017
Hi,
I have a binary image in a matrix, call it binarymage. I then want to determine whether various areas in the image are white pixels only. The boundaries for the areas of interest are defined in as follows:
left=[1]; right=[11]; top=[5,6,7,8]; bottom=[15,16,17,18];
So in this example I have 4 boxes. How can get a result that tells me which boxes are white only. Example: whiteboxes=[1,0,1,0].
I think I need arrayfun but have not been successful after several attempts. Appreciate any help please. Thank you.

  0 Comments

Sign in to comment.

2 Answers

Answer by Saurabh Gupta on 15 Feb 2017
 Accepted Answer

You should be able to do it using a combination of not and any commands. One example could be as follows.
tempBox = binarymage(top(1):bottom(1), left(1):right(1));
whiteboxes(1) = not(any(tempBox(:)));

  0 Comments

Sign in to comment.


Jan
Answer by Jan
on 15 Feb 2017
Edited by Jan
on 15 Feb 2017

A simple loop is a good point to start from:
left = 1;
right = 11;
top = [5,6,7,8];
bottom = [15,16,17,18];
whiteboxes = false(1, 4);
for k = 1:4
whiteboxes(k) = all(binarymage(left:right, top(k):bottom(k)));
end
What exactly is a "white" pixel? Does it have the value 1 or 0? Here I assume, that white mean 1. If 0 is meant, replace all() by ~any().

  0 Comments

Sign in to comment.