Finding x,y coordinates of pixel by RGB color value
10 次查看(过去 30 天)
显示 更早的评论
Hi, Is there a reverse impixel function? I want to find the x and y coordinates of pixels in a color image by searching for them only with a RGB color value. I have tried converting into a binary image and searching for the '1' values by using
BW = im2bw(RGB, level)
and then [rows,cols] = find(BW==1);
but I am confused on how to set a level to implement an RGB value so that only my specific color pixels will show up as white in the binary image.
Is there a better way to find the coordinates of pixels only by using RGB value?
thanks!
0 个评论
采纳的回答
Image Analyst
2017-5-5
Try this:
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Find where each color plane is your exact desired color value.
mask = redChannel == desiredRedValue && ...
greenChannel == desiredGreenValue & ...
blueChannel == desiredBlueChannel;
[rows, columns] = find(mask); % Note [rows, columns] = [y, x], NOT [x, y]
WHY do you want to do this. You probably don't need to and there is a better way if I just knew what you were going to do after this.
4 个评论
Image Analyst
2017-5-6
I don't know what a "false range" is.
If you want to know what coordinates have x between 10 and 20 and y between 90 and 100, then do
indexes = columns >= 10 & columns <= 20 & rows >= 90 & rows <= 100;
% Extract only those in the range
c2 = columns(indexes);
r2 = rows(indexes);
更多回答(1 个)
Franklin Prashanth C
2018-1-22
编辑:Image Analyst
2018-1-23
How can I get these xy coordinate values, so that I can use it.?
[rows, cols] = find(BW==1); or
[rows, columns] = find(mask);
1 个评论
Image Analyst
2018-1-23
It just depends on whether you want the columns called "col" or "columns" and whether your binary image is called BW or mask. The ==1 is not necessary and can get deleted.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!