# I want to take R, G, B color components of an pixel by logical indexing, check channel values, and create new binary image but error occures at the command related with logical indexing

2 views (last 30 days)
denisa on 8 Apr 2020
Commented: denisa on 8 Apr 2020
I want to take a RGB image, read it and hold it as an matrix, extract color components R, G, B as R=arr(:,:,1), G=arr(:,:,2) and B=arr(:,:,3). Then I want to create new matrix -image- by pay attention to channel values. For example; if R value is greater than 50 and G value is lower than 20 and B value is lower than 165 I make the pixel value at this location to 1, otherwise 0. And I want to access pixels by logical indexing. To achieve this, I run the command given below. But at the third command -logical indexing related- an error occurs "Operands to the || and && operators must be convertible to logical scalar values. " How can I fix this problem friends, thank you in advance.
binaryImage = zeros(size(arr,1),size(arr,2));
binaryImage( (arr(:,:,1)>50) && (arr(:,:,2)<20) && (arr(:,:,3)<165)) = 1;

Mehmed Saad on 8 Apr 2020
Replace && with &
binaryImage( (arr(:,:,1)>50) & (arr(:,:,2)<20) & (arr(:,:,3)<165)) = 1

#### 1 Comment

denisa on 8 Apr 2020
Thank you very much @Muhammad Saad This solves the problem, it works !