How to detect and separate pixels in an image
8 次查看(过去 30 天)
显示 更早的评论
I want to take an image and detect pixels that are green, which I've accomplished. But I also want to keep their color and seprate them such that I can then take the rest of the image and convert it to greyscale. Here is the code I have currently that detects the green pixels:
function [ result ] = detectGreen( rgbimage )
%set the threshold of green in the hue channel
GREEN_THRESHOLD = [65,170]/360;
INTENSITY = .1;
%convert image to HSV color space
hsv = rgb2hsv(rgbimage);
%find pixels in the relevent area that are in the range in H and V channels
greenMask = hsv(:,:,1)>GREEN_THRESHOLD(1) & hsv(:,:,1)<GREEN_THRESHOLD(2) & hsv(:,:,3) > INTENSITY;
%return the green pixels
result = greenMask;
end
Currently, this takes the color image and processes it to be like the second image:
Is there a way that I can keep the green color of those detected pixels such that I can then convert the whole image to grey scale and overlay the detected white on top so that the only thing in color is the green of the field?
0 个评论
采纳的回答
Subhadeep Koley
2021-5-6
rgbImg = imread('image.png');
grayImg = rgb2gray(rgbImg);
greenMask = detectGreen(rgbImg);
figure
imshow(rgbImg);
hold on
han = imshow(grayImg);
hold off
set(han, 'AlphaData', ~greenMask);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!